Port ES1371 and ICS fixes from VFIO branch

This commit is contained in:
RichardG867
2021-10-19 12:29:06 -03:00
parent 6fc0890f23
commit 9f0d240c7a
4 changed files with 14 additions and 12 deletions

View File

@@ -124,7 +124,7 @@ static const ics9xxx_model_t ics9xxx_models[] = {
.hw_select = {0, 3}, .hw_select = {0, 3},
.frequencies_ref = ICS9250_08 .frequencies_ref = ICS9250_08
ICS9xxx_MODEL_END() ICS9xxx_MODEL_END()
#if 0 #ifdef ENABLE_ICS9xxx_DETECT
ICS9xxx_MODEL(ICS9248_81) ICS9xxx_MODEL(ICS9248_81)
.max_reg = 5, .max_reg = 5,
.regs = {0x82, 0xfe, 0x7f, 0xff, 0xff, 0xb7}, .regs = {0x82, 0xfe, 0x7f, 0xff, 0xff, 0xb7},
@@ -522,7 +522,7 @@ static const ics9xxx_model_t ics9xxx_models[] = {
ICS9xxx_MODEL(ICS9250_08) ICS9xxx_MODEL(ICS9250_08)
.max_reg = 5, .max_reg = 5,
.regs = {0x00, 0xff, 0xff, 0xff, 0x6d, 0xbf}, .regs = {0x00, 0xff, 0xff, 0xff, 0x6d, 0xbf},
.fs_regs = {{0, 4, 4, 7}, {0, 5, 4, 4}, {0, 6, 5, 6}, {0, 7, 4, 1}, {-1, -1, -1, -1}}, .fs_regs = {{0, 4, 4, 7}, {0, 5, 4, 4}, {0, 6, 5, 6}, {0, 2, 4, 1}, {-1, -1, -1, -1}},
.hw_select = {0, 3}, .hw_select = {0, 3},
.frequencies = (const ics9xxx_frequency_t[]) { .frequencies = (const ics9xxx_frequency_t[]) {
{.bus = 12400, .pci_div = 3}, {.bus = 12400, .pci_div = 3},
@@ -544,7 +544,7 @@ static const ics9xxx_model_t ics9xxx_models[] = {
{0} {0}
} }
ICS9xxx_MODEL_END() ICS9xxx_MODEL_END()
#if 0 #ifdef ENABLE_ICS9xxx_DETECT
ICS9xxx_MODEL(ICS9250_10) ICS9xxx_MODEL(ICS9250_10)
.max_reg = 5, .max_reg = 5,
.regs = {0x1f, 0xff, 0xfe, 0x00, 0x00, 0x06}, .regs = {0x1f, 0xff, 0xfe, 0x00, 0x00, 0x06},
@@ -703,7 +703,7 @@ static const ics9xxx_model_t ics9xxx_models[] = {
{0} {0}
} }
ICS9xxx_MODEL_END() ICS9xxx_MODEL_END()
#if 0 #ifdef ENABLE_ICS9xxx_DETECT
ICS9xxx_MODEL(ICS9250_19) ICS9xxx_MODEL(ICS9250_19)
.max_reg = 5, .max_reg = 5,
.regs = {0x02, 0xff, 0xff, 0xff, 0x6d, 0xbf}, .regs = {0x02, 0xff, 0xff, 0xff, 0x6d, 0xbf},
@@ -1199,7 +1199,7 @@ ics9xxx_init(const device_t *info)
uint8_t i; uint8_t i;
#ifdef ENABLE_ICS9xxx_DETECT #ifdef ENABLE_ICS9xxx_DETECT
for (i = 0; i < ICS9xxx_MAX; i++) { for (i = ICS9xxx_xx + 1; i < ICS9xxx_MAX; i++) {
if (ics9xxx_models[i].frequencies_ref || !ics9xxx_models[i].name) if (ics9xxx_models[i].frequencies_ref || !ics9xxx_models[i].name)
continue; continue;
for (uint8_t j = 0; j < i; j++) { for (uint8_t j = 0; j < i; j++) {

View File

@@ -22,7 +22,6 @@ enum {
ICS9xxx_xx, ICS9xxx_xx,
ICS9150_08, ICS9150_08,
ICS9248_39, ICS9248_39,
#if 0
ICS9248_81, ICS9248_81,
ICS9248_95, ICS9248_95,
ICS9248_98, ICS9248_98,
@@ -35,16 +34,12 @@ enum {
ICS9248_143, ICS9248_143,
ICS9248_151, ICS9248_151,
ICS9248_192, ICS9248_192,
#endif
ICS9250_08, ICS9250_08,
#if 0
ICS9250_10, ICS9250_10,
ICS9250_13, ICS9250_13,
ICS9250_14, ICS9250_14,
ICS9250_16, ICS9250_16,
#endif
ICS9250_18, ICS9250_18,
#if 0
ICS9250_19, ICS9250_19,
ICS9250_23, ICS9250_23,
ICS9250_25, ICS9250_25,
@@ -56,7 +51,6 @@ enum {
ICS9250_32, ICS9250_32,
ICS9250_38, ICS9250_38,
ICS9250_50, ICS9250_50,
#endif
ICS9xxx_MAX ICS9xxx_MAX
}; };

View File

@@ -9,7 +9,8 @@
* Implementation of Slot 2 machines. * Implementation of Slot 2 machines.
* *
* Slot 2 is quite a rare type of Slot. Used mostly by Pentium II & III Xeons * Slot 2 is quite a rare type of Slot. Used mostly by Pentium II & III Xeons
* These boards were also capable to take Slot 1 CPU's using Slot 2 to 1 adapters. *
*
* *
* Authors: Miran Grca, <mgrca8@gmail.com> * Authors: Miran Grca, <mgrca8@gmail.com>
* *
@@ -35,6 +36,7 @@
#include <86box/hwm.h> #include <86box/hwm.h>
#include <86box/spd.h> #include <86box/spd.h>
#include <86box/video.h> #include <86box/video.h>
#include <86box/clock.h>
#include "cpu.h" #include "cpu.h"
#include <86box/machine.h> #include <86box/machine.h>
@@ -140,6 +142,7 @@ machine_at_fw6400gx_init(const machine_t *model)
device_add(&piix4e_device); device_add(&piix4e_device);
device_add(&keyboard_ps2_ami_pci_device); device_add(&keyboard_ps2_ami_pci_device);
device_add(&pc87309_15c_device); device_add(&pc87309_15c_device);
device_add(ics9xxx_get(ICS9250_08));
device_add(&sst_flash_29ee020_device); device_add(&sst_flash_29ee020_device);
spd_register(SPD_TYPE_SDRAM, 0xF, 512); spd_register(SPD_TYPE_SDRAM, 0xF, 512);
device_add(&w83781d_device); /* fans: Chassis, Power, CPU; temperatures: System, CPU, unused */ device_add(&w83781d_device); /* fans: Chassis, Power, CPU; temperatures: System, CPU, unused */

View File

@@ -145,6 +145,8 @@ typedef struct {
#define INT_DAC2_EN (1<<5) #define INT_DAC2_EN (1<<5)
#define INT_UART_EN (1<<3) #define INT_UART_EN (1<<3)
#define SI_P2_PAUSE (1<<12)
#define SI_P1_PAUSE (1<<11)
#define SI_P2_INTR_EN (1<<9) #define SI_P2_INTR_EN (1<<9)
#define SI_P1_INTR_EN (1<<8) #define SI_P1_INTR_EN (1<<8)
@@ -1507,6 +1509,9 @@ es1371_pci_write(int func, int addr, uint8_t val, void *p)
static void static void
es1371_fetch(es1371_t *dev, int dac_nr) es1371_fetch(es1371_t *dev, int dac_nr)
{ {
if (dev->si_cr & (dac_nr ? SI_P2_PAUSE : SI_P1_PAUSE))
return;
int format = dac_nr ? ((dev->si_cr >> 2) & 3) : (dev->si_cr & 3); int format = dac_nr ? ((dev->si_cr >> 2) & 3) : (dev->si_cr & 3);
int pos = dev->dac[dac_nr].buffer_pos & 63; int pos = dev->dac[dac_nr].buffer_pos & 63;
int c; int c;