Hook up Bidirectional LPT, EPP, and ECP to all Super I/O chips (missing is vendor-specific Configuration Register B behavior but that's next on my list), fixed Super I/O chip mistakes for a number of machines, split 286/386SX/M6117D machines into three separate files and reordered them as well.

This commit is contained in:
OBattler
2025-08-11 16:36:30 +02:00
parent 42fa1dbe54
commit dbd748636e
51 changed files with 5062 additions and 4463 deletions

View File

@@ -29,36 +29,35 @@ extern const device_t f82c710_device;
extern const device_t f82c710_pc5086_device;
/* SM(S)C */
extern const device_t fdc37c651_device;
extern const device_t fdc37c651_ide_device;
extern const device_t fdc37c661_device;
extern const device_t fdc37c661_ide_device;
extern const device_t fdc37c661_ide_sec_device;
extern const device_t fdc37c663_device;
extern const device_t fdc37c663_ide_device;
extern const device_t fdc37c665_device;
extern const device_t fdc37c665_ide_device;
extern const device_t fdc37c665_ide_pri_device;
extern const device_t fdc37c665_ide_sec_device;
extern const device_t fdc37c666_device;
#define FDC37C651 0x00051
#define FDC37C661 0x00061
#define FDC37C663 0x00063
#define FDC37C665 0x00065
#define FDC37C666 0x00066
#define FDC37C6XX_IDE_PRI 0x00100
#define FDC37C6XX_IDE_SEC 0x00200
#define FDC37C6XX_370 0x00400
extern const device_t fdc37c6xx_device;
extern const device_t fdc37c669_device;
extern const device_t fdc37c669_370_device;
#define FDC37C93X_NORMAL 0x0002
#define FDC37C93X_FR 0x0003
#define FDC37C93X_APM 0x0030
#define FDC37C93X_CHIP_ID 0x00ff
#define FDC37C93X_NORMAL 0x00002
#define FDC37C93X_FR 0x00003
#define FDC37C93X_APM 0x00030
#define FDC37C93X_CHIP_ID 0x000ff
#define FDC37XXX1 0x0100 /* Compaq KBC firmware and configuration registers on GPIO ports. */
#define FDC37XXX2 0x0200 /* AMI '5' Megakey KBC firmware. */
#define FDC37XXX3 0x0300 /* IBM KBC firmware. */
#define FDC37XXX5 0x0500 /* Phoenix Multikey/42 1.38 KBC firmware. */
#define FDC37XXX7 0x0700 /* Phoenix Multikey/42i 4.16 KBC firmware. */
#define FDC37XXXX_KBC 0x0f00
#define FDC37XXX1 0x00100 /* Compaq KBC firmware and configuration registers on GPIO ports. */
#define FDC37XXX2 0x00200 /* AMI '5' Megakey KBC firmware. */
#define FDC37XXX3 0x00300 /* IBM KBC firmware. */
#define FDC37XXX5 0x00500 /* Phoenix Multikey/42 1.38 KBC firmware. */
#define FDC37XXX7 0x00700 /* Phoenix Multikey/42i 4.16 KBC firmware. */
#define FDC37XXXX_KBC 0x00f00
#define FDC37C93X_NO_NVR 0x1000
#define FDC37XXXX_370 0x2000
#define FDC37C93X_NO_NVR 0x01000
#define FDC37XXXX_370 0x02000
extern const device_t fdc37c93x_device;
@@ -71,42 +70,52 @@ extern const device_t it8661f_device;
extern const device_t it8671f_device;
/* Intel */
#define I82091AA_022 0x00000 /* Default. */
#define I82091AA_024 0x00008
#define I82091AA_26E 0x00100
#define I82091AA_398 0x00108
#define I82091AA_IDE_PRI 0x00200
#define I82091AA_IDE_SEC 0x00400
extern const device_t i82091aa_device;
extern const device_t i82091aa_26e_device;
extern const device_t i82091aa_398_device;
extern const device_t i82091aa_ide_pri_device;
extern const device_t i82091aa_ide_device;
/* National Semiconductors PC87310 / ALi M5105 */
#define PC87310_IDE 0x0001
#define PC87310_ALI 0x0002
#define PCX73XX_IDE 0x00001
#define PCX73XX_IDE_PRI PCX73XX_IDE
#define PCX73XX_IDE_SEC 0x00002
#define PCX73XX_FDC_ON 0x10000
#define PC87310_ALI 0x00004
#define PC87332 PC87310_ALI
extern const device_t pc87310_device;
/* National Semiconductors */
#define PCX7307_PC87307 0x00c0
#define PCX7307_PC97307 0x00cf
#define PCX7307_PC87307 0x000c0
#define PCX7307_PC97307 0x000cf
#define PC87309_PC87309 0x00e0
#define PC87309_PC87309 0x000e0
#define PCX730X_CHIP_ID 0x00ff
#define PCX730X_CHIP_ID 0x000ff
#define PCX730X_AMI 0x0200 /* AMI '5' Megakey KBC firmware. */
#define PCX730X_PHOENIX_42 0x0500 /* Phoenix Multikey/42 1.37 KBC firmware. */
#define PCX730X_PHOENIX_42I 0x0700 /* Phoenix Multikey/42i 4.16 KBC firmware. */
#define PCX730X_KBC 0x0f00
#define PCX730X_AMI 0x00200 /* AMI '5' Megakey KBC firmware. */
#define PCX730X_PHOENIX_42 0x00500 /* Phoenix Multikey/42 1.37 KBC firmware. */
#define PCX730X_PHOENIX_42I 0x00700 /* Phoenix Multikey/42i 4.16 KBC firmware. */
#define PCX730X_KBC 0x00f00
#define PCX730X_15C 0x2000
#define PCX730X_398 0x00000
#define PCX730X_26E 0x01000
#define PCX730X_15C 0x02000
#define PCX730X_02E 0x03000
#define PCX730X_BADDR 0x03000
#define PCX730X_BADDR_SHIFT 12
extern const device_t pc87306_device;
extern const device_t pc87311_device;
extern const device_t pc87311_ide_device;
extern const device_t pc87332_device;
extern const device_t pc87332_398_device;
extern const device_t pc87332_398_ide_device;
extern const device_t pc87332_398_ide_sec_device;
extern const device_t pc87332_398_ide_fdcon_device;
extern const device_t pc873xx_device;
/* National Semiconductors PC87307 / PC87309 */
extern const device_t pc87307_device;
@@ -114,10 +123,15 @@ extern const device_t pc87307_device;
extern const device_t pc87309_device;
/* LG Prime */
extern const device_t prime3b_device;
extern const device_t prime3b_ide_device;
extern const device_t prime3c_device;
extern const device_t prime3c_ide_device;
#define GM82C803A 0x00000
#define GM82C803B 0x00001
#define GM82C803_IDE_PRI 0x00100
#define GM82C803_IDE_SEC 0x00200
extern const device_t gm82c803ab_device;
extern const device_t gm82c803c_device;
/* IBM PS/1 */
extern const device_t ps1_m2133_sio;
@@ -128,20 +142,17 @@ extern const device_t sio_detect_device;
#endif /* USE_SIO_DETECT */
/* UMC */
extern const device_t um82c862f_device;
extern const device_t um82c862f_ide_device;
extern const device_t um82c863f_device;
extern const device_t um82c863f_ide_device;
extern const device_t um8663af_device;
extern const device_t um8663af_ide_device;
extern const device_t um8663af_sec_device;
extern const device_t um8663bf_device;
extern const device_t um8663bf_ide_device;
extern const device_t um8663bf_sec_device;
#define UM82C862F 0x00000
#define UM82C863F 0x0c100
#define UM8663AF 0x0c300
#define UM8663BF 0x0c400
#define UM866X_IDE_PRI 0x00001
#define UM866X_IDE_SEC 0x00002
extern const device_t um866x_device;
extern const device_t um8669f_device;
extern const device_t um8669f_ide_device;
extern const device_t um8669f_ide_sec_device;
/* VIA */
extern void vt82c686_sio_write(uint8_t addr, uint8_t val, void *priv);
@@ -152,26 +163,43 @@ extern const device_t via_vt82c686_sio_device;
extern const device_t vl82c113_device;
/* Winbond */
extern const device_t w83787f_88h_device;
extern const device_t w83787f_device;
extern const device_t w83787f_ide_device;
extern const device_t w83787f_ide_en_device;
extern const device_t w83787f_ide_sec_device;
#define W83777F 0x00007
#define W83787F 0x00008
#define W83787IF 0x00009
extern const device_t w83877f_device;
extern const device_t w83877f_president_device;
extern const device_t w83877tf_device;
extern const device_t w83877tf_acorp_device;
#define W837X7_KEY_88 0x00000
#define W837X7_KEY_89 0x00020
#define TYPE_W83977EF 0x52F0
#define TYPE_W83977F 0x9771
#define TYPE_W83977TF 0x9773
#define TYPE_W83977ATF 0x9774
#define W837X7_IDE_START 0x00040
extern const device_t w83977f_device;
extern const device_t w83977f_370_device;
extern const device_t w83977tf_device;
extern const device_t w83977ef_device;
extern const device_t w83977ef_370_device;
#define W83XX7_IDE_PRI 0x10000
#define W83XX7_IDE_SEC 0x20000
extern const device_t w837x7_device;
#define W83877F 0x00a00
#define W83877TF 0x00c00
#define W83877_3F0 0x00005
#define W83877_250 0x00004
extern const device_t w83877_device;
#define W83977F 0x977100
#define W83977TF 0x977300
#define W83977EF 0x52f000
#define W83977_TYPE 0xffff00
#define W83977_TYPE_SHIFT 8
#define W83977_3F0 0x00000
#define W83977_370 0x00001
#define W83977_NO_NVR 0x00002
#define W83977_AMI 0x00010 /* AMI 'H' KBC firmware. */
#define W83977_PHOENIX 0x00020 /* Unknown Phoenix Multikey KBC firmware. */
#define W83977_KBC 0x000f0
extern const device_t w83977_device;
#endif /*EMU_SIO_H*/