Some SM(S)C fixes and the PC87306 now handles its own keyboard controller.
This commit is contained in:
@@ -45,27 +45,27 @@ extern const device_t fdc37c666_device;
|
|||||||
extern const device_t fdc37c669_device;
|
extern const device_t fdc37c669_device;
|
||||||
extern const device_t fdc37c669_370_device;
|
extern const device_t fdc37c669_370_device;
|
||||||
|
|
||||||
extern const device_t fdc37c67x_device;
|
|
||||||
|
|
||||||
#define FDC37C93X_NORMAL 0x0002
|
#define FDC37C93X_NORMAL 0x0002
|
||||||
#define FDC37C93X_FR 0x0003
|
#define FDC37C93X_FR 0x0003
|
||||||
#define FDC37C93X_APM 0x0030
|
#define FDC37C93X_APM 0x0030
|
||||||
#define FDC37C93X_CHIP_ID 0x00ff
|
#define FDC37C93X_CHIP_ID 0x00ff
|
||||||
|
|
||||||
#define FDC37C931 0x0100 /* Compaq KBC firmware and configuration registers on GPIO ports. */
|
#define FDC37XXX1 0x0100 /* Compaq KBC firmware and configuration registers on GPIO ports. */
|
||||||
#define FDC37C932 0x0200 /* AMI '5' Megakey KBC firmware. */
|
#define FDC37XXX2 0x0200 /* AMI '5' Megakey KBC firmware. */
|
||||||
#define FDC37C933 0x0300 /* IBM KBC firmware. */
|
#define FDC37XXX3 0x0300 /* IBM KBC firmware. */
|
||||||
#define FDC37C935 0x0500 /* Phoenix Multikey/42 1.38 KBC firmware. */
|
#define FDC37XXX5 0x0500 /* Phoenix Multikey/42 1.38 KBC firmware. */
|
||||||
#define FDC37C937 0x0700 /* Phoenix Multikey/42i 4.16 KBC firmware. */
|
#define FDC37XXX7 0x0700 /* Phoenix Multikey/42i 4.16 KBC firmware. */
|
||||||
#define FDC37C93X_KBC 0x0f00
|
#define FDC37XXXX_KBC 0x0f00
|
||||||
|
|
||||||
#define FDC37C93X_NO_NVR 0x1000
|
#define FDC37C93X_NO_NVR 0x1000
|
||||||
#define FDC37C93X_370 0x2000
|
#define FDC37XXXX_370 0x2000
|
||||||
|
|
||||||
extern const device_t fdc37c93x_device;
|
extern const device_t fdc37c93x_device;
|
||||||
|
|
||||||
extern const device_t fdc37m60x_device;
|
extern const device_t fdc37m60x_device;
|
||||||
|
|
||||||
|
extern const device_t fdc37c67x_device;
|
||||||
|
|
||||||
/* ITE */
|
/* ITE */
|
||||||
extern const device_t it8661f_device;
|
extern const device_t it8661f_device;
|
||||||
extern const device_t it8671f_device;
|
extern const device_t it8671f_device;
|
||||||
@@ -84,7 +84,13 @@ extern const device_t i82091aa_ide_device;
|
|||||||
extern const device_t pc87310_device;
|
extern const device_t pc87310_device;
|
||||||
|
|
||||||
/* National Semiconductors */
|
/* National Semiconductors */
|
||||||
|
#define PC8730X_AMI_MEGAKEY FDC37XXX2
|
||||||
|
#define PC8730X_PHOENIX_42 FDC37XXX5
|
||||||
|
#define PC8730X_PHOENIX_42I FDC37XXX7
|
||||||
|
#define PC8730X_KBC FDC37XXXX_KBC
|
||||||
|
|
||||||
extern const device_t pc87306_device;
|
extern const device_t pc87306_device;
|
||||||
|
|
||||||
extern const device_t pc87311_device;
|
extern const device_t pc87311_device;
|
||||||
extern const device_t pc87311_ide_device;
|
extern const device_t pc87311_ide_device;
|
||||||
extern const device_t pc87332_device;
|
extern const device_t pc87332_device;
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ machine_at_acerv62x_init(const machine_t *model)
|
|||||||
pci_register_slot(0x0D, PCI_CARD_NORMAL, 2, 3, 4, 1);
|
pci_register_slot(0x0D, PCI_CARD_NORMAL, 2, 3, 4, 1);
|
||||||
device_add(&i440fx_device);
|
device_add(&i440fx_device);
|
||||||
device_add(&piix3_device);
|
device_add(&piix3_device);
|
||||||
device_add_params(&fdc37c93x_device, (void *) (FDC37C935 | FDC37C93X_APM));
|
device_add_params(&fdc37c93x_device, (void *) (FDC37XXX5 | FDC37C93X_APM));
|
||||||
device_add(&sst_flash_29ee020_device);
|
device_add(&sst_flash_29ee020_device);
|
||||||
spd_register(SPD_TYPE_SDRAM, 0x7, 128);
|
spd_register(SPD_TYPE_SDRAM, 0x7, 128);
|
||||||
|
|
||||||
@@ -208,7 +208,7 @@ machine_at_spitfire_init(const machine_t *model)
|
|||||||
pci_register_slot(0x01, PCI_CARD_AGPBRIDGE, 1, 2, 3, 4);
|
pci_register_slot(0x01, PCI_CARD_AGPBRIDGE, 1, 2, 3, 4);
|
||||||
device_add(&i440lx_device);
|
device_add(&i440lx_device);
|
||||||
device_add(&piix4e_device);
|
device_add(&piix4e_device);
|
||||||
device_add_params(&fdc37c93x_device, (void *) (FDC37C935 | FDC37C93X_NORMAL | FDC37C93X_NO_NVR));
|
device_add_params(&fdc37c93x_device, (void *) (FDC37XXX5 | FDC37C93X_NORMAL | FDC37C93X_NO_NVR));
|
||||||
device_add(&intel_flash_bxt_device);
|
device_add(&intel_flash_bxt_device);
|
||||||
spd_register(SPD_TYPE_SDRAM, 0xF, 256);
|
spd_register(SPD_TYPE_SDRAM, 0xF, 256);
|
||||||
device_add(&lm78_device); /* no reporting in BIOS */
|
device_add(&lm78_device); /* no reporting in BIOS */
|
||||||
@@ -244,7 +244,7 @@ machine_at_ma30d_init(const machine_t *model)
|
|||||||
device_add(&i440lx_device);
|
device_add(&i440lx_device);
|
||||||
device_add(&piix4e_device);
|
device_add(&piix4e_device);
|
||||||
device_add(&nec_mate_unk_device);
|
device_add(&nec_mate_unk_device);
|
||||||
device_add_params(&fdc37c67x_device, (void *) (FDC37C932 | FDC37C93X_370));
|
device_add_params(&fdc37c67x_device, (void *) (FDC37XXX2 | FDC37XXXX_370));
|
||||||
device_add(&intel_flash_bxt_device);
|
device_add(&intel_flash_bxt_device);
|
||||||
spd_register(SPD_TYPE_SDRAM, 0x7, 256);
|
spd_register(SPD_TYPE_SDRAM, 0x7, 256);
|
||||||
|
|
||||||
@@ -797,7 +797,7 @@ machine_at_vei8_init(const machine_t *model)
|
|||||||
pci_register_slot(0x01, PCI_CARD_AGPBRIDGE, 1, 2, 3, 4);
|
pci_register_slot(0x01, PCI_CARD_AGPBRIDGE, 1, 2, 3, 4);
|
||||||
device_add(&i440zx_device);
|
device_add(&i440zx_device);
|
||||||
device_add(&piix4e_device);
|
device_add(&piix4e_device);
|
||||||
device_add_params(&fdc37m60x_device, (void *) (FDC37C932 | FDC37C93X_370));
|
device_add_params(&fdc37m60x_device, (void *) (FDC37XXX2 | FDC37XXXX_370));
|
||||||
device_add(ics9xxx_get(ICS9250_08));
|
device_add(ics9xxx_get(ICS9250_08));
|
||||||
device_add(&sst_flash_39sf020_device);
|
device_add(&sst_flash_39sf020_device);
|
||||||
spd_register(SPD_TYPE_SDRAM, 0x3, 512);
|
spd_register(SPD_TYPE_SDRAM, 0x3, 512);
|
||||||
|
|||||||
@@ -407,10 +407,9 @@ machine_at_zappa_init(const machine_t *model)
|
|||||||
pci_register_slot(0x0E, PCI_CARD_NORMAL, 3, 4, 1, 2);
|
pci_register_slot(0x0E, PCI_CARD_NORMAL, 3, 4, 1, 2);
|
||||||
pci_register_slot(0x0F, PCI_CARD_NORMAL, 2, 3, 4, 1);
|
pci_register_slot(0x0F, PCI_CARD_NORMAL, 2, 3, 4, 1);
|
||||||
pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0);
|
pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0);
|
||||||
device_add(&kbc_ps2_intel_ami_pci_device);
|
|
||||||
device_add(&i430fx_device);
|
device_add(&i430fx_device);
|
||||||
device_add(&piix_device);
|
device_add(&piix_device);
|
||||||
device_add(&pc87306_device);
|
device_add_params(&pc87306_device, (void *) PC8730X_AMI_MEGAKEY);
|
||||||
device_add(&intel_flash_bxt_ami_device);
|
device_add(&intel_flash_bxt_ami_device);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
|||||||
@@ -79,7 +79,7 @@ machine_at_acerv35n_init(const machine_t *model)
|
|||||||
device_add(&i430hx_device);
|
device_add(&i430hx_device);
|
||||||
device_add(&piix3_device);
|
device_add(&piix3_device);
|
||||||
/* The chip is not marked FR but the BIOS accesses register 06h of GPIO. */
|
/* The chip is not marked FR but the BIOS accesses register 06h of GPIO. */
|
||||||
device_add_params(&fdc37c93x_device, (void *) (FDC37C935 | FDC37C93X_FR));
|
device_add_params(&fdc37c93x_device, (void *) (FDC37XXX5 | FDC37C93X_FR));
|
||||||
device_add(&sst_flash_29ee010_device);
|
device_add(&sst_flash_29ee010_device);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
@@ -170,7 +170,7 @@ machine_at_m7shi_init(const machine_t *model)
|
|||||||
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
|
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
|
||||||
device_add(&i430hx_device);
|
device_add(&i430hx_device);
|
||||||
device_add(&piix3_device);
|
device_add(&piix3_device);
|
||||||
device_add_params(&fdc37c93x_device, (void *) (FDC37C935 | FDC37C93X_NORMAL));
|
device_add_params(&fdc37c93x_device, (void *) (FDC37XXX5 | FDC37C93X_NORMAL));
|
||||||
device_add(&intel_flash_bxt_device);
|
device_add(&intel_flash_bxt_device);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
@@ -244,8 +244,7 @@ machine_at_tc430hx_init(const machine_t *model)
|
|||||||
|
|
||||||
device_add(&i430hx_device);
|
device_add(&i430hx_device);
|
||||||
device_add(&piix3_device);
|
device_add(&piix3_device);
|
||||||
device_add(&kbc_ps2_ami_pci_device);
|
device_add_params(&pc87306_device, (void *) PC8730X_AMI_MEGAKEY);
|
||||||
device_add(&pc87306_device);
|
|
||||||
device_add(&intel_flash_bxt_ami_device);
|
device_add(&intel_flash_bxt_ami_device);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
@@ -283,8 +282,7 @@ machine_at_infinia7200_init(const machine_t *model)
|
|||||||
|
|
||||||
device_add(&i430hx_device);
|
device_add(&i430hx_device);
|
||||||
device_add(&piix3_device);
|
device_add(&piix3_device);
|
||||||
device_add(&kbc_ps2_ami_pci_device);
|
device_add_params(&pc87306_device, (void *) PC8730X_AMI_MEGAKEY);
|
||||||
device_add(&pc87306_device);
|
|
||||||
device_add(&intel_flash_bxt_ami_device);
|
device_add(&intel_flash_bxt_ami_device);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
@@ -342,8 +340,7 @@ machine_at_cu430hx_common_init(const machine_t *model)
|
|||||||
|
|
||||||
device_add(&i430hx_device);
|
device_add(&i430hx_device);
|
||||||
device_add(&piix3_device);
|
device_add(&piix3_device);
|
||||||
device_add(&kbc_ps2_ami_pci_device);
|
device_add_params(&pc87306_device, (void *) PC8730X_AMI_MEGAKEY);
|
||||||
device_add(&pc87306_device);
|
|
||||||
device_add(&intel_flash_bxt_ami_device);
|
device_add(&intel_flash_bxt_ami_device);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -415,8 +412,7 @@ machine_at_pcv90_init(const machine_t *model)
|
|||||||
pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0);
|
pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0);
|
||||||
device_add(&i430hx_device);
|
device_add(&i430hx_device);
|
||||||
device_add(&piix3_device);
|
device_add(&piix3_device);
|
||||||
device_add(&kbc_ps2_ami_pci_device);
|
device_add_params(&pc87306_device, (void *) PC8730X_AMI_MEGAKEY);
|
||||||
device_add(&pc87306_device);
|
|
||||||
device_add(&intel_flash_bxt_ami_device);
|
device_add(&intel_flash_bxt_ami_device);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
@@ -578,7 +574,7 @@ machine_at_presario2240_init(const machine_t *model)
|
|||||||
|
|
||||||
device_add(&i430vx_device);
|
device_add(&i430vx_device);
|
||||||
device_add(&piix3_device);
|
device_add(&piix3_device);
|
||||||
device_add_params(&fdc37c93x_device, (void *) (FDC37C932 | FDC37C93X_NORMAL));
|
device_add_params(&fdc37c93x_device, (void *) (FDC37XXX2 | FDC37C93X_NORMAL));
|
||||||
device_add(&sst_flash_29ee020_device);
|
device_add(&sst_flash_29ee020_device);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
@@ -608,7 +604,7 @@ machine_at_presario4500_init(const machine_t *model)
|
|||||||
|
|
||||||
device_add(&i430vx_device);
|
device_add(&i430vx_device);
|
||||||
device_add(&piix3_device);
|
device_add(&piix3_device);
|
||||||
device_add_params(&fdc37c93x_device, (void *) (FDC37C931 | FDC37C93X_APM));
|
device_add_params(&fdc37c93x_device, (void *) (FDC37XXX1 | FDC37C93X_APM));
|
||||||
device_add(&sst_flash_29ee020_device);
|
device_add(&sst_flash_29ee020_device);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
@@ -641,7 +637,7 @@ machine_at_dellhannibalp_init(const machine_t *model)
|
|||||||
pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 4);
|
pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 4);
|
||||||
device_add(&i430vx_device);
|
device_add(&i430vx_device);
|
||||||
device_add(&piix3_device);
|
device_add(&piix3_device);
|
||||||
device_add_params(&fdc37c93x_device, (void *) (FDC37C932 | FDC37C93X_FR));
|
device_add_params(&fdc37c93x_device, (void *) (FDC37XXX2 | FDC37C93X_FR));
|
||||||
device_add(&intel_flash_bxt_ami_device);
|
device_add(&intel_flash_bxt_ami_device);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
@@ -669,7 +665,7 @@ machine_at_p55va_init(const machine_t *model)
|
|||||||
pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0);
|
pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0);
|
||||||
device_add(&i430vx_device);
|
device_add(&i430vx_device);
|
||||||
device_add(&piix3_device);
|
device_add(&piix3_device);
|
||||||
device_add_params(&fdc37c93x_device, (void *) (FDC37C932 | FDC37C93X_FR));
|
device_add_params(&fdc37c93x_device, (void *) (FDC37XXX2 | FDC37C93X_FR));
|
||||||
device_add(&intel_flash_bxt_device);
|
device_add(&intel_flash_bxt_device);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
@@ -697,7 +693,7 @@ machine_at_brio80xx_init(const machine_t *model)
|
|||||||
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
|
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
|
||||||
device_add(&i430vx_device);
|
device_add(&i430vx_device);
|
||||||
device_add(&piix3_device);
|
device_add(&piix3_device);
|
||||||
device_add_params(&fdc37c93x_device, (void *) (FDC37C935 | FDC37C93X_NORMAL | FDC37C93X_370));
|
device_add_params(&fdc37c93x_device, (void *) (FDC37XXX5 | FDC37C93X_NORMAL | FDC37XXXX_370));
|
||||||
device_add(&sst_flash_29ee020_device);
|
device_add(&sst_flash_29ee020_device);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
@@ -734,8 +730,7 @@ machine_at_pb680_init(const machine_t *model)
|
|||||||
|
|
||||||
device_add(&i430vx_device);
|
device_add(&i430vx_device);
|
||||||
device_add(&piix3_device);
|
device_add(&piix3_device);
|
||||||
device_add(&kbc_ps2_ami_pci_device);
|
device_add_params(&pc87306_device, (void *) PC8730X_AMI_MEGAKEY);
|
||||||
device_add(&pc87306_device);
|
|
||||||
device_add(&intel_flash_bxt_ami_device);
|
device_add(&intel_flash_bxt_ami_device);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
@@ -766,7 +761,7 @@ machine_at_pb810_init(const machine_t *model)
|
|||||||
|
|
||||||
device_add(&i430vx_device);
|
device_add(&i430vx_device);
|
||||||
device_add(&piix3_device);
|
device_add(&piix3_device);
|
||||||
device_add_params(&fdc37c93x_device, (void *) (FDC37C935 | FDC37C93X_NORMAL | FDC37C93X_370));
|
device_add_params(&fdc37c93x_device, (void *) (FDC37XXX5 | FDC37C93X_NORMAL | FDC37XXXX_370));
|
||||||
device_add(&intel_flash_bxt_device);
|
device_add(&intel_flash_bxt_device);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
@@ -861,7 +856,7 @@ machine_at_gw2kte_init(const machine_t *model)
|
|||||||
|
|
||||||
device_add(&i430vx_device);
|
device_add(&i430vx_device);
|
||||||
device_add(&piix3_device);
|
device_add(&piix3_device);
|
||||||
device_add_params(&fdc37c93x_device, (void *) (FDC37C932 | FDC37C93X_FR));
|
device_add_params(&fdc37c93x_device, (void *) (FDC37XXX2 | FDC37C93X_FR));
|
||||||
device_add(&intel_flash_bxt_ami_device);
|
device_add(&intel_flash_bxt_ami_device);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
@@ -890,7 +885,7 @@ machine_at_ma23c_init(const machine_t *model)
|
|||||||
device_add(&i430tx_device);
|
device_add(&i430tx_device);
|
||||||
device_add(&piix4_device);
|
device_add(&piix4_device);
|
||||||
device_add(&nec_mate_unk_device);
|
device_add(&nec_mate_unk_device);
|
||||||
device_add_params(&fdc37c67x_device, (void *) (FDC37C932 | FDC37C93X_370));
|
device_add_params(&fdc37c67x_device, (void *) (FDC37XXX2 | FDC37XXXX_370));
|
||||||
device_add(&intel_flash_bxt_device);
|
device_add(&intel_flash_bxt_device);
|
||||||
spd_register(SPD_TYPE_SDRAM, 0x7, 256);
|
spd_register(SPD_TYPE_SDRAM, 0x7, 256);
|
||||||
|
|
||||||
@@ -1234,7 +1229,7 @@ machine_at_tomahawk_init(const machine_t *model)
|
|||||||
pci_register_slot(0x08, PCI_CARD_NORMAL, 3, 4, 1, 2);
|
pci_register_slot(0x08, PCI_CARD_NORMAL, 3, 4, 1, 2);
|
||||||
device_add(&i430tx_device);
|
device_add(&i430tx_device);
|
||||||
device_add(&piix4_device);
|
device_add(&piix4_device);
|
||||||
device_add_params(&fdc37c67x_device, (void *) (FDC37C932 | FDC37C93X_370));
|
device_add_params(&fdc37c67x_device, (void *) (FDC37XXX2 | FDC37XXXX_370));
|
||||||
device_add(&amd_flash_29f020a_device);
|
device_add(&amd_flash_29f020a_device);
|
||||||
spd_register(SPD_TYPE_SDRAM, 0x3, 128);
|
spd_register(SPD_TYPE_SDRAM, 0x3, 128);
|
||||||
device_add(&lm78_device); /* fans: Thermal, CPU, Chassis; temperature: unused */
|
device_add(&lm78_device); /* fans: Thermal, CPU, Chassis; temperature: unused */
|
||||||
@@ -1632,7 +1627,7 @@ machine_at_thunderbolt_init(const machine_t *model)
|
|||||||
pci_register_slot(0x14, PCI_CARD_NORMAL, 3, 0, 1, 2);
|
pci_register_slot(0x14, PCI_CARD_NORMAL, 3, 0, 1, 2);
|
||||||
device_add(&i430tx_device);
|
device_add(&i430tx_device);
|
||||||
device_add(&piix4_device);
|
device_add(&piix4_device);
|
||||||
device_add_params(&fdc37c93x_device, (void *) (FDC37C935 | FDC37C93X_NORMAL | FDC37C93X_NO_NVR));
|
device_add_params(&fdc37c93x_device, (void *) (FDC37XXX5 | FDC37C93X_NORMAL | FDC37C93X_NO_NVR));
|
||||||
device_add(&intel_flash_bxt_device);
|
device_add(&intel_flash_bxt_device);
|
||||||
spd_register(SPD_TYPE_SDRAM, 0x3, 128);
|
spd_register(SPD_TYPE_SDRAM, 0x3, 128);
|
||||||
|
|
||||||
|
|||||||
@@ -106,10 +106,9 @@ machine_at_thor_common_init(const machine_t *model, int has_video)
|
|||||||
if (has_video && (gfxcard[0] == VID_INTERNAL))
|
if (has_video && (gfxcard[0] == VID_INTERNAL))
|
||||||
device_add(machine_get_vid_device(machine));
|
device_add(machine_get_vid_device(machine));
|
||||||
|
|
||||||
device_add(&kbc_ps2_intel_ami_pci_device);
|
|
||||||
device_add(&i430fx_device);
|
device_add(&i430fx_device);
|
||||||
device_add(&piix_device);
|
device_add(&piix_device);
|
||||||
device_add(&pc87306_device);
|
device_add_params(&pc87306_device, (void *) PC8730X_AMI_MEGAKEY);
|
||||||
device_add(&intel_flash_bxt_ami_device);
|
device_add(&intel_flash_bxt_ami_device);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -359,10 +358,9 @@ machine_at_endeavor_init(const machine_t *model)
|
|||||||
if (sound_card_current[0] == SOUND_INTERNAL)
|
if (sound_card_current[0] == SOUND_INTERNAL)
|
||||||
machine_snd = device_add(machine_get_snd_device(machine));
|
machine_snd = device_add(machine_get_snd_device(machine));
|
||||||
|
|
||||||
device_add(&kbc_ps2_intel_ami_pci_device);
|
|
||||||
device_add(&i430fx_device);
|
device_add(&i430fx_device);
|
||||||
device_add(&piix_device);
|
device_add(&piix_device);
|
||||||
device_add(&pc87306_device);
|
device_add_params(&pc87306_device, (void *) PC8730X_AMI_MEGAKEY);
|
||||||
device_add(&intel_flash_bxt_ami_device);
|
device_add(&intel_flash_bxt_ami_device);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
@@ -457,8 +455,7 @@ machine_at_pb640_init(const machine_t *model)
|
|||||||
if (gfxcard[0] == VID_INTERNAL)
|
if (gfxcard[0] == VID_INTERNAL)
|
||||||
device_add(machine_get_vid_device(machine));
|
device_add(machine_get_vid_device(machine));
|
||||||
|
|
||||||
device_add(&kbc_ps2_intel_ami_pci_device);
|
device_add_params(&pc87306_device, (void *) PC8730X_AMI_MEGAKEY);
|
||||||
device_add(&pc87306_device);
|
|
||||||
device_add(&intel_flash_bxt_ami_device);
|
device_add(&intel_flash_bxt_ami_device);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
@@ -546,7 +543,7 @@ machine_at_acerm3a_init(const machine_t *model)
|
|||||||
pci_register_slot(0x10, PCI_CARD_VIDEO, 4, 0, 0, 0);
|
pci_register_slot(0x10, PCI_CARD_VIDEO, 4, 0, 0, 0);
|
||||||
device_add(&i430hx_device);
|
device_add(&i430hx_device);
|
||||||
device_add(&piix3_device);
|
device_add(&piix3_device);
|
||||||
device_add_params(&fdc37c93x_device, (void *) (FDC37C935 | FDC37C93X_NORMAL));
|
device_add_params(&fdc37c93x_device, (void *) (FDC37XXX5 | FDC37C93X_NORMAL));
|
||||||
|
|
||||||
device_add(&sst_flash_29ee010_device);
|
device_add(&sst_flash_29ee010_device);
|
||||||
|
|
||||||
@@ -718,8 +715,7 @@ machine_at_p55t2s_init(const machine_t *model)
|
|||||||
pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0);
|
pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0);
|
||||||
device_add(&i430hx_device);
|
device_add(&i430hx_device);
|
||||||
device_add(&piix3_device);
|
device_add(&piix3_device);
|
||||||
device_add(&kbc_ps2_ami_pci_device);
|
device_add_params(&pc87306_device, (void *) PC8730X_AMI_MEGAKEY);
|
||||||
device_add(&pc87306_device);
|
|
||||||
device_add(&intel_flash_bxt_device);
|
device_add(&intel_flash_bxt_device);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
@@ -784,7 +780,7 @@ machine_at_gw2kma_init(const machine_t *model)
|
|||||||
|
|
||||||
device_add(&i430vx_device);
|
device_add(&i430vx_device);
|
||||||
device_add(&piix3_device);
|
device_add(&piix3_device);
|
||||||
device_add_params(&fdc37c93x_device, (void *) (FDC37C932 | FDC37C93X_FR));
|
device_add_params(&fdc37c93x_device, (void *) (FDC37XXX2 | FDC37C93X_FR));
|
||||||
device_add(&intel_flash_bxt_ami_device);
|
device_add(&intel_flash_bxt_ami_device);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
@@ -945,7 +941,7 @@ machine_at_vectra54_init(const machine_t *model)
|
|||||||
|
|
||||||
device_add(&i430fx_device);
|
device_add(&i430fx_device);
|
||||||
device_add(&piix_device);
|
device_add(&piix_device);
|
||||||
device_add_params(&fdc37c93x_device, (void *) (FDC37C932 | FDC37C93X_NORMAL));
|
device_add_params(&fdc37c93x_device, (void *) (FDC37XXX2 | FDC37C93X_NORMAL));
|
||||||
device_add(&sst_flash_29ee010_device);
|
device_add(&sst_flash_29ee010_device);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
|||||||
@@ -188,7 +188,7 @@ machine_at_acerv60n_init(const machine_t *model)
|
|||||||
pci_register_slot(0x0C, PCI_CARD_NORMAL, 2, 3, 4, 1);
|
pci_register_slot(0x0C, PCI_CARD_NORMAL, 2, 3, 4, 1);
|
||||||
device_add(&i440fx_device);
|
device_add(&i440fx_device);
|
||||||
device_add(&piix3_device);
|
device_add(&piix3_device);
|
||||||
device_add_params(&fdc37c93x_device, (void *) (FDC37C935 | FDC37C93X_NORMAL));
|
device_add_params(&fdc37c93x_device, (void *) (FDC37XXX5 | FDC37C93X_NORMAL));
|
||||||
device_add(&sst_flash_29ee010_device);
|
device_add(&sst_flash_29ee010_device);
|
||||||
spd_register(SPD_TYPE_SDRAM, 0x7, 128);
|
spd_register(SPD_TYPE_SDRAM, 0x7, 128);
|
||||||
|
|
||||||
@@ -421,7 +421,7 @@ machine_at_m6mi_init(const machine_t *model)
|
|||||||
pci_register_slot(0x0F, PCI_CARD_NORMAL, 4, 1, 2, 3);
|
pci_register_slot(0x0F, PCI_CARD_NORMAL, 4, 1, 2, 3);
|
||||||
device_add(&i440fx_device);
|
device_add(&i440fx_device);
|
||||||
device_add(&piix3_device);
|
device_add(&piix3_device);
|
||||||
device_add_params(&fdc37c93x_device, (void *) (FDC37C935 | FDC37C93X_NORMAL));
|
device_add_params(&fdc37c93x_device, (void *) (FDC37XXX5 | FDC37C93X_NORMAL));
|
||||||
device_add(&intel_flash_bxt_device);
|
device_add(&intel_flash_bxt_device);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
|||||||
@@ -743,11 +743,11 @@ fdc37c67x_init(const device_t *info)
|
|||||||
|
|
||||||
dev->lpt = device_add_inst(&lpt_port_device, 1);
|
dev->lpt = device_add_inst(&lpt_port_device, 1);
|
||||||
|
|
||||||
dev->kbc_type = info->local & FDC37C93X_KBC;
|
dev->kbc_type = info->local & FDC37XXXX_KBC;
|
||||||
|
|
||||||
dev->is_compaq = (dev->kbc_type == FDC37C931);
|
dev->is_compaq = (dev->kbc_type == FDC37XXX1);
|
||||||
|
|
||||||
dev->port_370 = !!(info->local & FDC37C93X_370);
|
dev->port_370 = !!(info->local & FDC37XXXX_370);
|
||||||
|
|
||||||
dev->max_ld = 8;
|
dev->max_ld = 8;
|
||||||
|
|
||||||
@@ -759,20 +759,20 @@ fdc37c67x_init(const device_t *info)
|
|||||||
}
|
}
|
||||||
|
|
||||||
switch (dev->kbc_type) {
|
switch (dev->kbc_type) {
|
||||||
case FDC37C931:
|
case FDC37XXX1:
|
||||||
dev->kbc = device_add(&kbc_ps2_compaq_device);
|
dev->kbc = device_add(&kbc_ps2_compaq_device);
|
||||||
break;
|
break;
|
||||||
case FDC37C932:
|
case FDC37XXX2:
|
||||||
dev->kbc = device_add(&kbc_ps2_intel_ami_pci_device);
|
dev->kbc = device_add(&kbc_ps2_intel_ami_pci_device);
|
||||||
break;
|
break;
|
||||||
case FDC37C933:
|
case FDC37XXX3:
|
||||||
default:
|
default:
|
||||||
dev->kbc = device_add(&kbc_ps2_pci_device);
|
dev->kbc = device_add(&kbc_ps2_pci_device);
|
||||||
break;
|
break;
|
||||||
case FDC37C935:
|
case FDC37XXX5:
|
||||||
dev->kbc = device_add(&kbc_ps2_phoenix_device);
|
dev->kbc = device_add(&kbc_ps2_phoenix_device);
|
||||||
break;
|
break;
|
||||||
case FDC37C937:
|
case FDC37XXX7:
|
||||||
dev->kbc = device_add(&kbc_ps2_phoenix_pci_device);
|
dev->kbc = device_add(&kbc_ps2_phoenix_pci_device);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1877,13 +1877,13 @@ fdc37c93x_init(const device_t *info)
|
|||||||
dev->lpt = device_add_inst(&lpt_port_device, 1);
|
dev->lpt = device_add_inst(&lpt_port_device, 1);
|
||||||
|
|
||||||
dev->chip_id = info->local & FDC37C93X_CHIP_ID;
|
dev->chip_id = info->local & FDC37C93X_CHIP_ID;
|
||||||
dev->kbc_type = info->local & FDC37C93X_KBC;
|
dev->kbc_type = info->local & FDC37XXXX_KBC;
|
||||||
|
|
||||||
dev->is_apm = (dev->chip_id == FDC37C93X_APM);
|
dev->is_apm = (dev->chip_id == FDC37C93X_APM);
|
||||||
dev->is_compaq = (dev->kbc_type == FDC37C931);
|
dev->is_compaq = (dev->kbc_type == FDC37XXX1);
|
||||||
|
|
||||||
dev->has_nvr = !(info->local & FDC37C93X_NO_NVR);
|
dev->has_nvr = !(info->local & FDC37C93X_NO_NVR);
|
||||||
dev->port_370 = !!(info->local & FDC37C93X_370);
|
dev->port_370 = !!(info->local & FDC37XXXX_370);
|
||||||
|
|
||||||
if (dev->has_nvr) {
|
if (dev->has_nvr) {
|
||||||
dev->nvr = device_add(&amstrad_megapc_nvr_device);
|
dev->nvr = device_add(&amstrad_megapc_nvr_device);
|
||||||
@@ -1912,20 +1912,20 @@ fdc37c93x_init(const device_t *info)
|
|||||||
}
|
}
|
||||||
|
|
||||||
switch (dev->kbc_type) {
|
switch (dev->kbc_type) {
|
||||||
case FDC37C931:
|
case FDC37XXX1:
|
||||||
dev->kbc = device_add(&kbc_ps2_compaq_device);
|
dev->kbc = device_add(&kbc_ps2_compaq_device);
|
||||||
break;
|
break;
|
||||||
case FDC37C932:
|
case FDC37XXX2:
|
||||||
dev->kbc = device_add(&kbc_ps2_intel_ami_pci_device);
|
dev->kbc = device_add(&kbc_ps2_intel_ami_pci_device);
|
||||||
break;
|
break;
|
||||||
case FDC37C933:
|
case FDC37XXX3:
|
||||||
default:
|
default:
|
||||||
dev->kbc = device_add(&kbc_ps2_pci_device);
|
dev->kbc = device_add(&kbc_ps2_pci_device);
|
||||||
break;
|
break;
|
||||||
case FDC37C935:
|
case FDC37XXX5:
|
||||||
dev->kbc = device_add(&kbc_ps2_phoenix_device);
|
dev->kbc = device_add(&kbc_ps2_phoenix_device);
|
||||||
break;
|
break;
|
||||||
case FDC37C937:
|
case FDC37XXX7:
|
||||||
dev->kbc = device_add(&kbc_ps2_phoenix_pci_device);
|
dev->kbc = device_add(&kbc_ps2_phoenix_pci_device);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -634,11 +634,11 @@ fdc37m60x_init(const device_t *info)
|
|||||||
|
|
||||||
dev->lpt = device_add_inst(&lpt_port_device, 1);
|
dev->lpt = device_add_inst(&lpt_port_device, 1);
|
||||||
|
|
||||||
dev->kbc_type = info->local & FDC37C93X_KBC;
|
dev->kbc_type = info->local & FDC37XXXX_KBC;
|
||||||
|
|
||||||
dev->is_compaq = (dev->kbc_type == FDC37C931);
|
dev->is_compaq = (dev->kbc_type == FDC37XXX1);
|
||||||
|
|
||||||
dev->port_370 = !!(info->local & FDC37C93X_370);
|
dev->port_370 = !!(info->local & FDC37XXXX_370);
|
||||||
|
|
||||||
dev->max_ld = 8;
|
dev->max_ld = 8;
|
||||||
|
|
||||||
@@ -650,20 +650,20 @@ fdc37m60x_init(const device_t *info)
|
|||||||
}
|
}
|
||||||
|
|
||||||
switch (dev->kbc_type) {
|
switch (dev->kbc_type) {
|
||||||
case FDC37C931:
|
case FDC37XXX1:
|
||||||
dev->kbc = device_add(&kbc_ps2_compaq_device);
|
dev->kbc = device_add(&kbc_ps2_compaq_device);
|
||||||
break;
|
break;
|
||||||
case FDC37C932:
|
case FDC37XXX2:
|
||||||
dev->kbc = device_add(&kbc_ps2_intel_ami_pci_device);
|
dev->kbc = device_add(&kbc_ps2_intel_ami_pci_device);
|
||||||
break;
|
break;
|
||||||
case FDC37C933:
|
case FDC37XXX3:
|
||||||
default:
|
default:
|
||||||
dev->kbc = device_add(&kbc_ps2_pci_device);
|
dev->kbc = device_add(&kbc_ps2_pci_device);
|
||||||
break;
|
break;
|
||||||
case FDC37C935:
|
case FDC37XXX5:
|
||||||
dev->kbc = device_add(&kbc_ps2_phoenix_device);
|
dev->kbc = device_add(&kbc_ps2_phoenix_device);
|
||||||
break;
|
break;
|
||||||
case FDC37C937:
|
case FDC37XXX7:
|
||||||
dev->kbc = device_add(&kbc_ps2_phoenix_pci_device);
|
dev->kbc = device_add(&kbc_ps2_phoenix_pci_device);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,6 +23,7 @@
|
|||||||
#include <86box/io.h>
|
#include <86box/io.h>
|
||||||
#include <86box/timer.h>
|
#include <86box/timer.h>
|
||||||
#include <86box/device.h>
|
#include <86box/device.h>
|
||||||
|
#include <86box/keyboard.h>
|
||||||
#include <86box/lpt.h>
|
#include <86box/lpt.h>
|
||||||
#include <86box/mem.h>
|
#include <86box/mem.h>
|
||||||
#include <86box/nvr.h>
|
#include <86box/nvr.h>
|
||||||
@@ -42,8 +43,10 @@ typedef struct pc87306_t {
|
|||||||
uint8_t regs[29];
|
uint8_t regs[29];
|
||||||
uint8_t gpio[2];
|
uint8_t gpio[2];
|
||||||
uint16_t gpioba;
|
uint16_t gpioba;
|
||||||
|
uint16_t kbc_type;
|
||||||
int cur_reg;
|
int cur_reg;
|
||||||
fdc_t *fdc;
|
fdc_t *fdc;
|
||||||
|
void *kbc;
|
||||||
serial_t *uart[2];
|
serial_t *uart[2];
|
||||||
lpt_t *lpt;
|
lpt_t *lpt;
|
||||||
nvr_t *nvr;
|
nvr_t *nvr;
|
||||||
@@ -245,6 +248,15 @@ serial_handler(pc87306_t *dev, int uart)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
kbc_handler(pc87306_t *dev)
|
||||||
|
{
|
||||||
|
kbc_at_handler(0, 0x0060, dev->kbc);
|
||||||
|
|
||||||
|
if (dev->regs[0x05] & 0x01)
|
||||||
|
kbc_at_handler(1, 0x0060, dev->kbc);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
pc87306_write(uint16_t port, uint8_t val, void *priv)
|
pc87306_write(uint16_t port, uint8_t val, void *priv)
|
||||||
{
|
{
|
||||||
@@ -350,6 +362,8 @@ pc87306_write(uint16_t port, uint8_t val, void *priv)
|
|||||||
nvr_lock_set(0x00, 256, !!(val & 0x80), dev->nvr);
|
nvr_lock_set(0x00, 256, !!(val & 0x80), dev->nvr);
|
||||||
break;
|
break;
|
||||||
case 0x05:
|
case 0x05:
|
||||||
|
if (valxor & 0x01)
|
||||||
|
kbc_handler(dev);
|
||||||
if (valxor & 0x08)
|
if (valxor & 0x08)
|
||||||
nvr_at_handler(!!(val & 0x08), 0x0070, dev->nvr);
|
nvr_at_handler(!!(val & 0x08), 0x0070, dev->nvr);
|
||||||
if (valxor & 0x20)
|
if (valxor & 0x20)
|
||||||
@@ -495,6 +509,8 @@ pc87306_init(UNUSED(const device_t *info))
|
|||||||
{
|
{
|
||||||
pc87306_t *dev = (pc87306_t *) calloc(1, sizeof(pc87306_t));
|
pc87306_t *dev = (pc87306_t *) calloc(1, sizeof(pc87306_t));
|
||||||
|
|
||||||
|
dev->kbc_type = info->local & PC8730X_KBC;
|
||||||
|
|
||||||
dev->fdc = device_add(&fdc_at_nsc_device);
|
dev->fdc = device_add(&fdc_at_nsc_device);
|
||||||
|
|
||||||
dev->uart[0x00] = device_add_inst(&ns16550_device, 1);
|
dev->uart[0x00] = device_add_inst(&ns16550_device, 1);
|
||||||
@@ -504,6 +520,19 @@ pc87306_init(UNUSED(const device_t *info))
|
|||||||
|
|
||||||
dev->nvr = device_add(&at_mb_nvr_device);
|
dev->nvr = device_add(&at_mb_nvr_device);
|
||||||
|
|
||||||
|
switch (dev->kbc_type) {
|
||||||
|
case PC8730X_AMI_MEGAKEY:
|
||||||
|
default:
|
||||||
|
dev->kbc = device_add(&kbc_ps2_intel_ami_pci_device);
|
||||||
|
break;
|
||||||
|
case PC8730X_PHOENIX_42:
|
||||||
|
dev->kbc = device_add(&kbc_ps2_phoenix_device);
|
||||||
|
break;
|
||||||
|
case PC8730X_PHOENIX_42I:
|
||||||
|
dev->kbc = device_add(&kbc_ps2_phoenix_pci_device);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
dev->gpio[0] = dev->gpio[1] = 0xff;
|
dev->gpio[0] = dev->gpio[1] = 0xff;
|
||||||
|
|
||||||
pc87306_reset_common(dev);
|
pc87306_reset_common(dev);
|
||||||
|
|||||||
Reference in New Issue
Block a user