diff --git a/src/chipset/umc_8886.c b/src/chipset/umc_8886.c index 0ed062450..26e70f3de 100644 --- a/src/chipset/umc_8886.c +++ b/src/chipset/umc_8886.c @@ -419,6 +419,10 @@ umc_8886_init(const device_t *info) device_add(&ide_um8673f_device); } + if (machine_get_kbc_device(machine) == NULL) + device_add(machine_has_bus(machine, MACHINE_BUS_PS2) ? + &kbc_ps2_umc_device : &kbc_at_umc_device); + umc_8886_reset(dev); return dev; diff --git a/src/include/86box/machine.h b/src/include/86box/machine.h index fe679775d..a2a90d39c 100644 --- a/src/include/86box/machine.h +++ b/src/include/86box/machine.h @@ -8,15 +8,15 @@ * * Handling of the emulated machines. * - * - * * Authors: Sarah Walker, * Miran Grca, * Fred N. van Kempen, + * Jasmine Iwanek, * * Copyright 2008-2020 Sarah Walker. - * Copyright 2016-2020 Miran Grca. + * Copyright 2016-2025 Miran Grca. * Copyright 2017-2020 Fred N. van Kempen. + * Copyright 2025 Jasmine Iwanek. */ #ifndef EMU_MACHINE_H @@ -338,7 +338,7 @@ typedef struct _machine_ { uint32_t type; uintptr_t chipset; int (*init)(const struct _machine_ *); - uint8_t (*p1_handler)(uint8_t write, uint8_t val); + uint8_t (*p1_handler)(void); uint32_t (*gpio_handler)(uint8_t write, uint32_t val); uintptr_t available_flag; uint32_t (*gpio_acpi_handler)(uint8_t write, uint32_t val); @@ -424,13 +424,19 @@ extern void machine_close(void); extern int machine_has_mouse(void); extern int machine_is_sony(void); +extern uint8_t machine_compaq_p1_handler(void); +extern uint8_t machine_generic_p1_handler(void); +extern uint8_t machine_ncr_p1_handler(void); +extern uint8_t machine_ps1_p1_handler(void); +extern uint8_t machine_t3100e_p1_handler(void); + extern uint8_t machine_get_p1_default(void); -extern uint8_t machine_get_p1(void); extern void machine_set_p1_default(uint8_t val); extern void machine_set_p1(uint8_t val); extern void machine_and_p1(uint8_t val); extern void machine_init_p1(void); extern uint8_t machine_handle_p1(uint8_t write, uint8_t val); +extern uint8_t machine_get_p1(uint8_t kbc_p1); extern uint32_t machine_get_gpio_default(void); extern uint32_t machine_get_gpio(void); extern void machine_set_gpio_default(uint32_t val); diff --git a/src/machine/m_at_286.c b/src/machine/m_at_286.c index dda2e822f..8de94b575 100644 --- a/src/machine/m_at_286.c +++ b/src/machine/m_at_286.c @@ -136,7 +136,7 @@ machine_at_ibm_common_init(const machine_t *model) { machine_at_common_init_ex(model, 1); - device_add(&kbc_at_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); mem_remap_top(384); @@ -358,7 +358,7 @@ machine_at_mr286_init(const machine_t *model) return ret; machine_at_common_ide_init(model); - device_add(&kbc_at_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); @@ -366,6 +366,23 @@ machine_at_mr286_init(const machine_t *model) return ret; } +uint8_t +machine_ncr_p1_handler(void) +{ + /* switch settings + * bit 7: keyboard disable + * bit 6: display type (0 color, 1 mono) + * bit 5: power-on default speed (0 high, 1 low) + * bit 4: sense RAM size (0 unsupported, 1 512k on system board) + * bit 3: coprocessor detect + * bit 2: unused + * bit 1: high/auto speed + * bit 0: dma mode + */ + /* (B0 or F0) | 0x04 | (display on bit 6) | (fpu on bit 3) */ + return (video_is_mda() ? 0x40 : 0x00) | (hasfpu ? 0x08 : 0x00) | 0x90; +} + /* * Current bugs: * - ctrl-alt-del produces an 8042 error @@ -383,7 +400,7 @@ machine_at_pc8_init(const machine_t *model) return ret; machine_at_common_init(model); - device_add(&kbc_at_ncr_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); @@ -411,7 +428,7 @@ machine_at_m290_init(const machine_t *model) if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); - device_add(&kbc_at_olivetti_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); return ret; } @@ -524,7 +541,7 @@ machine_at_siemens_init(const machine_t *model) machine_at_common_init_ex(model, 1); - device_add(&kbc_at_siemens_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); mem_remap_top(384); @@ -578,7 +595,7 @@ machine_at_super286c_init(const machine_t *model) machine_at_common_init(model); - device_add(&kbc_at_ami_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); @@ -652,7 +669,7 @@ machine_at_quadt286_init(const machine_t *model) return ret; machine_at_common_init(model); - device_add(&kbc_at_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); @@ -665,7 +682,7 @@ machine_at_quadt286_init(const machine_t *model) void machine_at_headland_common_init(const machine_t *model, int type) { - device_add(&kbc_at_ami_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); if ((type != 2) && (fdc_current[0] == FDC_INTERNAL)) device_add(&fdc_at_device); @@ -741,7 +758,7 @@ machine_at_neat_ami_init(const machine_t *model) if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); - device_add(&kbc_at_ami_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); return ret; } @@ -771,7 +788,7 @@ machine_at_3302_init(const machine_t *model) if (gfxcard[0] == VID_INTERNAL) device_add(machine_get_vid_device(machine)); - device_add(&kbc_at_ncr_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); return ret; } @@ -788,7 +805,7 @@ machine_at_px286_init(const machine_t *model) return ret; machine_at_common_init(model); - device_add(&kbc_at_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); @@ -829,17 +846,7 @@ machine_at_scat_init(const machine_t *model, int is_v4, int is_ami) { machine_at_common_init(model); - if ((machines[machine].bus_flags & MACHINE_BUS_PS2) && (strcmp(machine_get_internal_name(), "pc5286"))) { - if (is_ami) - device_add(&kbc_ps2_ami_device); - else - device_add(&kbc_ps2_device); - } else { - if (is_ami) - device_add(&kbc_at_ami_device); - else - device_add(&kbc_at_device); - } + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); if (is_v4) device_add(&scat_4_device); diff --git a/src/machine/m_at_386dx.c b/src/machine/m_at_386dx.c index 0d7d8d507..6501c1818 100644 --- a/src/machine/m_at_386dx.c +++ b/src/machine/m_at_386dx.c @@ -51,6 +51,12 @@ #include <86box/sound.h> /* ISA */ +uint8_t +machine_compaq_p1_handler(void) +{ + return machine_generic_p1_handler() | (hasfpu ? 0x00 : 0x04); +} + static void machine_at_deskpro386_common_init(const machine_t *model) { @@ -62,7 +68,8 @@ machine_at_deskpro386_common_init(const machine_t *model) device_add(&compaq_386_device); machine_at_common_init(model); - device_add(&kbc_at_compaq_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); } int @@ -122,7 +129,8 @@ machine_at_portableiii386_init(const machine_t *model) device_add(&compaq_386_device); machine_at_common_init(model); - device_add(&kbc_at_compaq_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); return ret; } @@ -140,6 +148,7 @@ machine_at_micronics386_init(const machine_t *model) return ret; machine_at_init(model); + device_add(&port_92_device); if (fdc_current[0] == FDC_INTERNAL) @@ -161,6 +170,7 @@ machine_at_micronics386px_init(const machine_t *model) return ret; machine_at_init(model); + device_add(&port_92_device); if (fdc_current[0] == FDC_INTERNAL) @@ -182,8 +192,10 @@ machine_at_acc386_init(const machine_t *model) return ret; machine_at_common_init(model); + device_add(&acc2168_device); - device_add(&kbc_at_ami_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); @@ -205,12 +217,13 @@ machine_at_ecs386_init(const machine_t *model) return ret; machine_at_common_init(model); + device_add(&cs8230_device); if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); - device_add(&kbc_at_ami_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); return ret; } @@ -228,12 +241,13 @@ machine_at_spc6000a_init(const machine_t *model) return ret; machine_at_common_init_ex(model, 1); + device_add(&cs8230_device); if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); - device_add(&kbc_at_ami_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); return ret; } @@ -250,8 +264,10 @@ machine_at_tandy4000_init(const machine_t *model) return ret; machine_at_common_init(model); + device_add(&cs8230_device); - device_add(&kbc_at_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); @@ -269,11 +285,13 @@ machine_at_ecs386v_init(const machine_t *model) 0x000f0000, 65536, 0); if (bios_only || !ret) - return ret; + return ret; machine_at_common_init(model); + device_add(&ali1429_device); - device_add(&kbc_ps2_intel_ami_pci_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); @@ -296,7 +314,8 @@ machine_at_dataexpert386wb_init(const machine_t *model) machine_at_common_init(model); device_add(&opti391_device); - device_add(&kbc_at_ami_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); @@ -320,7 +339,7 @@ machine_at_opti495_init(const machine_t *model) device_add(&opti495slc_device); - device_add(&kbc_at_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); @@ -341,7 +360,9 @@ machine_at_asus3863364k_init(const machine_t *model) return ret; machine_at_common_init(model); + device_add(&rabbit_device); + device_add(&kbc_at_ami_device); if (fdc_current[0] == FDC_INTERNAL) @@ -362,8 +383,10 @@ machine_at_asus386_init(const machine_t *model) return ret; machine_at_common_init(model); + device_add(&rabbit_device); - device_add(&kbc_at_ami_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); diff --git a/src/machine/m_at_386dx_486.c b/src/machine/m_at_386dx_486.c index b20fc3502..61d3f00d0 100644 --- a/src/machine/m_at_386dx_486.c +++ b/src/machine/m_at_386dx_486.c @@ -63,10 +63,12 @@ machine_at_exp4349_init(const machine_t *model) machine_at_common_init(model); device_add(&ali1429g_device); - device_add(&kbc_at_ami_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); + return ret; } @@ -92,6 +94,7 @@ machine_at_c747_init(const machine_t *model) desired behavior: command A9 does absolutely nothing. */ device_add(&kbc_at_siemens_device); + device_add_params(&um866x_device, (void *) (UM82C862F | UM866X_IDE_PRI)); return ret; @@ -104,7 +107,7 @@ machine_at_opti495_ami_common_init(const machine_t *model) device_add(&opti495sx_device); - device_add(&kbc_at_ami_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); diff --git a/src/machine/m_at_386sx.c b/src/machine/m_at_386sx.c index 82ae3b79d..6b7a38311 100644 --- a/src/machine/m_at_386sx.c +++ b/src/machine/m_at_386sx.c @@ -62,7 +62,7 @@ machine_at_pc916sx_init(const machine_t *model) machine_at_common_init(model); - device_add(&kbc_at_ncr_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); mem_remap_top(384); if (fdc_current[0] == FDC_INTERNAL) @@ -84,7 +84,7 @@ machine_at_quadt386sx_init(const machine_t *model) return ret; machine_at_common_init(model); - device_add(&kbc_at_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); @@ -178,7 +178,8 @@ machine_at_arb1374_init(const machine_t *model) device_add(&ali1217_device); device_add(&ide_isa_device); device_add_params(&w83877_device, (void *) (W83877F | W83877_3F0 | W83XX7_IDE_PRI)); - device_add(&kbc_ps2_ami_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); return ret; } @@ -199,7 +200,8 @@ machine_at_sbc350a_init(const machine_t *model) device_add(&ali1217_device); device_add(&ide_isa_device); device_add_params(&fdc37c6xx_device, (void *) (FDC37C665 | FDC37C6XX_IDE_PRI)); - device_add(&kbc_ps2_ami_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); return ret; } @@ -224,7 +226,7 @@ machine_at_flytech386_init(const machine_t *model) if (gfxcard[0] == VID_INTERNAL) device_add(&tvga8900d_device); - device_add(&kbc_at_ami_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); return ret; } @@ -244,7 +246,8 @@ machine_at_325ax_init(const machine_t *model) device_add(&ali1217_device); device_add(&fdc_at_device); - device_add(&kbc_at_ami_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); return ret; } @@ -264,7 +267,8 @@ machine_at_mr1217_init(const machine_t *model) device_add(&ali1217_device); device_add(&fdc_at_device); - device_add(&kbc_at_ami_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); return ret; } @@ -284,6 +288,8 @@ machine_at_acer100t_init(const machine_t *model) machine_at_ps2_ide_init(model); device_add(&ali1409_device); + device_add(&ali5105_device); + if (gfxcard[0] == VID_INTERNAL) device_add(&oti077_acer100t_device); @@ -333,7 +339,7 @@ machine_at_adi386sx_init(const machine_t *model) device_add(&amstrad_megapc_nvr_device); /* NVR that is initialized to all 0x00's. */ device_add(&intel_82335_device); - device_add(&kbc_at_ami_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); @@ -356,7 +362,7 @@ machine_at_shuttle386sx_init(const machine_t *model) machine_at_common_init(model); device_add(&intel_82335_device); - device_add(&kbc_at_ami_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); @@ -379,7 +385,7 @@ machine_at_cmdsl386sx16_init(const machine_t *model) machine_at_common_init(model); - device_add(&kbc_ps2_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); @@ -524,10 +530,7 @@ machine_at_scamp_common_init(const machine_t *model, int is_ps2) { machine_at_common_ide_init(model); - if (is_ps2) - device_add(&kbc_ps2_ami_device); - else - device_add(&kbc_at_ami_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); @@ -645,7 +648,7 @@ machine_at_scatsx_init(const machine_t *model) { machine_at_common_init(model); - device_add(&kbc_at_ami_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); @@ -687,7 +690,7 @@ machine_at_wd76c10_init(const machine_t *model) if (gfxcard[0] == VID_INTERNAL) device_add(¶dise_wd90c11_megapc_device); - device_add(&kbc_ps2_quadtel_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); device_add(&wd76c10_device); diff --git a/src/machine/m_at_common.c b/src/machine/m_at_common.c index 8d97533c5..9526c7749 100644 --- a/src/machine/m_at_common.c +++ b/src/machine/m_at_common.c @@ -93,7 +93,7 @@ machine_at_init(const machine_t *model) { machine_at_common_init(model); - device_add(&kbc_at_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); } void @@ -101,7 +101,7 @@ machine_at_ps2_init(const machine_t *model) { machine_at_common_init(model); - device_add(&kbc_ps2_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); } void diff --git a/src/machine/m_at_m6117.c b/src/machine/m_at_m6117.c index 9558dacf3..2d8116b12 100644 --- a/src/machine/m_at_m6117.c +++ b/src/machine/m_at_m6117.c @@ -59,7 +59,7 @@ machine_at_pja511m_init(const machine_t *model) device_add_inst_params(&fdc37c669_device, 1, (void *) FDC37C6XX_IDE_PRI); device_add_inst_params(&fdc37c669_device, 2, (void *) 0); - device_add(&kbc_ps2_ami_pci_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); device_add(&ali6117d_device); device_add(&sst_flash_29ee010_device); @@ -80,7 +80,7 @@ machine_at_prox1332_init(const machine_t *model) machine_at_common_init(model); device_add_params(&fdc37c669_device, (void *) FDC37C6XX_370); - device_add(&kbc_ps2_ami_pci_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); device_add(&ali6117d_device); device_add(&sst_flash_29ee010_device); diff --git a/src/machine/m_at_socket1.c b/src/machine/m_at_socket1.c index 960bbce07..f79bcd03a 100644 --- a/src/machine/m_at_socket1.c +++ b/src/machine/m_at_socket1.c @@ -61,8 +61,10 @@ machine_at_cs4031_init(const machine_t *model) return ret; machine_at_common_init(model); + device_add(&cs4031_device); - device_add(&kbc_at_ami_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); @@ -83,8 +85,10 @@ machine_at_ga486l_init(const machine_t *model) return ret; machine_at_common_init(model); + device_add(&opti381_device); - device_add(&kbc_at_ami_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); @@ -130,7 +134,7 @@ machine_at_mvi486_init(const machine_t *model) device_add(&opti498_device); - device_add(&kbc_at_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); device_add(&ide_isa_device); device_add_params(&pc873xx_device, (void *) (PCX73XX_IDE_PRI | PCX730X_398)); @@ -143,8 +147,10 @@ static void machine_at_sis401_common_init(const machine_t *model) { machine_at_common_init(model); + device_add(&sis_85c401_device); - device_add(&kbc_at_ami_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); @@ -195,8 +201,10 @@ machine_at_av4_init(const machine_t *model) return ret; machine_at_common_init(model); + device_add(&sis_85c460_device); - device_add(&kbc_at_ami_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); @@ -267,7 +275,8 @@ machine_at_486vchd_init(const machine_t *model) machine_at_common_init(model); device_add(&via_vt82c49x_device); - device_add(&kbc_at_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); @@ -410,7 +419,7 @@ machine_at_genoa486_init(const machine_t *model) device_add(&compaq_genoa_device); device_add(&port_92_key_device); - device_add(&kbc_at_ami_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); diff --git a/src/machine/m_at_socket2.c b/src/machine/m_at_socket2.c index 2ddbd288c..809d1e651 100644 --- a/src/machine/m_at_socket2.c +++ b/src/machine/m_at_socket2.c @@ -62,7 +62,7 @@ machine_at_pb410a_init(const machine_t *model) machine_at_ibm_common_ide_init(model); - device_add(&kbc_ps2_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); device_add(&acc3221_device); device_add(&acc2168_device); @@ -93,7 +93,7 @@ machine_at_acera1g_init(const machine_t *model) if (gfxcard[0] == VID_INTERNAL) device_add(&gd5428_onboard_device); - device_add(&kbc_ps2_acer_pci_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); device_add_params(&pc87310_device, (void *) (PC87310_ALI)); device_add(&ide_ali5213_device); @@ -111,7 +111,7 @@ machine_at_ali1429_common_init(const machine_t *model, int is_green) else device_add(&ali1429_device); - device_add(&kbc_at_ami_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); @@ -170,8 +170,11 @@ machine_at_pci400ca_init(const machine_t *model) pci_register_slot(0x04, PCI_CARD_NORMAL, 2, 3, 4, 1); pci_register_slot(0x05, PCI_CARD_NORMAL, 3, 4, 1, 2); pci_register_slot(0x02, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); - device_add(&kbc_at_ami_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + device_add(&sio_device); + device_add(&intel_flash_bxt_ami_device); device_add(&i420tx_device); @@ -203,7 +206,8 @@ machine_at_g486ip_init(const machine_t *model) pci_register_slot(0x0F, PCI_CARD_NORMAL, 3, 4, 1, 2); /* 03 = Slot 1 */ pci_register_slot(0x0E, PCI_CARD_NORMAL, 2, 3, 4, 1); /* 04 = Slot 2 */ pci_register_slot(0x0D, PCI_CARD_NORMAL, 1, 2, 3, 4); /* 05 = Slot 3 */ - device_add(&kbc_ps2_ami_pci_device); /* AMI Megakey 1993 stanalone ('P') */ + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); device_add(&ims8848_device); @@ -257,7 +261,7 @@ machine_at_cougar_init(const machine_t *model) device_add(&opti499_device); device_add_params(&fdc37c6xx_device, (void *) (FDC37C665 | FDC37C6XX_IDE_PRI)); - device_add(&kbc_at_ami_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); @@ -284,7 +288,7 @@ machine_at_decpclpv_init(const machine_t *model) if (gfxcard[0] == VID_INTERNAL) device_add(machine_get_vid_device(machine)); - device_add(&kbc_ps2_phoenix_pci_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); device_add(&ide_isa_2ch_device); device_add_params(&fdc37c6xx_device, (void *) (FDC37C663 | FDC37C6XX_IDE_PRI)); @@ -340,7 +344,8 @@ machine_at_valuepoint433_init(const machine_t *model) // hangs without the PS/2 device_add(&et4000w32_onboard_device); device_add_params(&fdc37c6xx_device, (void *) (FDC37C661 | FDC37C6XX_IDE_PRI)); - device_add(&kbc_ps2_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); diff --git a/src/machine/m_at_socket3.c b/src/machine/m_at_socket3.c index ca45064b1..1d46ebe18 100644 --- a/src/machine/m_at_socket3.c +++ b/src/machine/m_at_socket3.c @@ -62,7 +62,8 @@ machine_at_atc1762_init(const machine_t *model) machine_at_common_init(model); device_add(&ali1429g_device); - device_add(&kbc_ps2_ami_pci_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); @@ -84,7 +85,8 @@ machine_at_ecsal486_init(const machine_t *model) machine_at_common_init(model); device_add(&ali1429g_device); - device_add(&kbc_ps2_ami_pci_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); @@ -107,7 +109,9 @@ machine_at_ap4100aa_init(const machine_t *model) device_add(&ami_1994_nvr_device); device_add(&ali1429g_device); - device_add(&kbc_ps2_ami_pci_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + device_add(&ide_vlb_device); device_add_params(&um866x_device, (void *) UM8663BF); @@ -133,7 +137,7 @@ machine_at_4gpv5_init(const machine_t *model) device_add(&contaq_82c596a_device); - device_add(&kbc_at_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); return ret; } @@ -157,7 +161,7 @@ machine_at_greenb_init(const machine_t *model) device_add(&contaq_82c597_device); - device_add(&kbc_at_ami_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); return ret; } @@ -174,7 +178,7 @@ machine_at_403tg_common_init(const machine_t *model, int nvr_hack) device_add(&opti895_device); - device_add(&kbc_at_ami_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); @@ -243,7 +247,9 @@ machine_at_acerv10_init(const machine_t *model) machine_at_common_init(model); device_add(&sis_85c461_device); - device_add(&kbc_ps2_acer_pci_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + device_add(&ide_isa_device); if (fdc_current[0] == FDC_INTERNAL) @@ -276,7 +282,8 @@ machine_at_win471_init(const machine_t *model) return ret; machine_at_sis_85c471_common_init(model); - device_add(&kbc_at_ami_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); return ret; } @@ -293,7 +300,8 @@ machine_at_vi15g_init(const machine_t *model) return ret; machine_at_sis_85c471_common_init(model); - device_add(&kbc_at_ami_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); return ret; } @@ -310,7 +318,8 @@ machine_at_vli486sv2g_init(const machine_t *model) return ret; machine_at_sis_85c471_common_init(model); - device_add(&kbc_ps2_ami_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); return ret; } @@ -330,7 +339,8 @@ machine_at_dvent4xx_init(const machine_t *model) device_add(&sis_85c471_device); device_add(&ide_cmd640_vlb_pri_device); device_add_params(&fdc37c6xx_device, (void *) (FDC37C665 | FDC37C6XX_IDE_SEC)); - device_add(&kbc_ps2_phoenix_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); if (gfxcard[0] == VID_INTERNAL) device_add(machine_get_vid_device(machine)); @@ -350,7 +360,8 @@ machine_at_dtk486_init(const machine_t *model) return ret; machine_at_sis_85c471_common_init(model); - device_add(&kbc_at_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); return ret; } @@ -367,7 +378,8 @@ machine_at_ami471_init(const machine_t *model) return ret; machine_at_sis_85c471_common_init(model); - device_add(&kbc_at_ami_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); return ret; } @@ -384,8 +396,10 @@ machine_at_px471_init(const machine_t *model) return ret; machine_at_sis_85c471_common_init(model); + device_add(&ide_vlb_device); - device_add(&kbc_at_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); return ret; } @@ -406,7 +420,8 @@ machine_at_tg486g_init(const machine_t *model) device_add(&sis_85c471_device); device_add(&ide_isa_device); device_add_params(&fdc37c6xx_device, (void *) (FDC37C651 | FDC37C6XX_IDE_PRI)); - device_add(&kbc_ps2_tg_ami_pci_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); if (gfxcard[0] != VID_INTERNAL) { for (uint16_t i = 0; i < 32768; i++) diff --git a/src/machine/m_at_socket3_pci.c b/src/machine/m_at_socket3_pci.c index 3803e486f..c63caf9d9 100644 --- a/src/machine/m_at_socket3_pci.c +++ b/src/machine/m_at_socket3_pci.c @@ -78,7 +78,7 @@ machine_at_ms4134_init(const machine_t *model) device_add(&ali1435_device); device_add(&sst_flash_29ee010_device); - device_add(&kbc_ps2_ami_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); return ret; } @@ -111,7 +111,7 @@ machine_at_tg486gp_init(const machine_t *model) device_add(&ali1435_device); device_add(&sst_flash_29ee010_device); - device_add(&kbc_ps2_tg_ami_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); return ret; } @@ -143,7 +143,9 @@ machine_at_sbc490_init(const machine_t *model) device_add(&ali1489_device); device_add_params(&fdc37c6xx_device, (void *) FDC37C665); - device_add(&kbc_ps2_ami_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + device_add(&sst_flash_29ee010_device); return ret; @@ -170,7 +172,7 @@ machine_at_abpb4_init(const machine_t *model) device_add(&ali1489_device); device_add_params(&w837x7_device, (void *) (W83787F | W837X7_KEY_89)); - device_add(&kbc_at_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); device_add(&sst_flash_29ee010_device); return ret; @@ -193,7 +195,9 @@ machine_at_arb1476_init(const machine_t *model) device_add(&ali1489_device); device_add_params(&fdc37c669_device, (void *) 0); - device_add(&kbc_ps2_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + device_add(&sst_flash_29ee010_device); return ret; @@ -243,7 +247,9 @@ machine_at_tf486_init(const machine_t *model) pci_register_slot(0x0C, PCI_CARD_NORMAL, 1, 2, 3, 4); device_add(&ali1489_device); - device_add(&kbc_at_phoenix_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + device_add_params(&w83977_device, (void *) (W83977EF | W83977_NO_NVR)); device_add(&sst_flash_29ee010_device); @@ -272,7 +278,9 @@ machine_at_ms4145_init(const machine_t *model) device_add(&ali1489_device); device_add_params(&w837x7_device, (void *) (W83787F | W837X7_KEY_89)); - device_add(&kbc_at_ami_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + device_add(&sst_flash_29ee010_device); return ret; @@ -301,7 +309,9 @@ machine_at_pc330_6573_common_init(const machine_t *model) device_add(&opti602_device); device_add(&opti802g_device); device_add(&opti822_device); - device_add(&kbc_ps2_ami_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + device_add_params(&fdc37c6xx_device, (void *) (FDC37C665 | FDC37C6XX_IDE_SEC)); device_add(&ide_opti611_vlb_device); device_add(&intel_flash_bxt_device); @@ -410,7 +420,7 @@ machine_at_pb450_init(const machine_t *model) device_add(&opti895_device); device_add(&opti602_device); device_add(&opti822_device); - device_add(&kbc_ps2_phoenix_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); device_add_params(&fdc37c6xx_device, (void *) (FDC37C665 | FDC37C6XX_IDE_SEC)); device_add(&ide_opti611_vlb_device); device_add(&intel_flash_bxt_device); @@ -439,7 +449,8 @@ machine_at_486pi_init(const machine_t *model) pci_register_slot(0x13, PCI_CARD_NORMAL, 2, 1, 2, 1); pci_register_slot(0x14, PCI_CARD_NORMAL, 1, 2, 1, 2); - device_add(&kbc_ps2_ami_pci_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + device_add_params(&fdc37c6xx_device, (void *) FDC37C665); device_add(&i420ex_device); @@ -467,7 +478,9 @@ machine_at_bat4ip3e_init(const machine_t *model) pci_register_slot(0x0a, PCI_CARD_NORMAL, 1, 2, 1, 2); device_add(&phoenix_486_jumper_pci_device); - device_add(&kbc_ps2_pci_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + device_add(&i420ex_device); device_add(&ide_cmd640_pci_device); device_add_params(&fdc37c6xx_device, (void *) FDC37C665); @@ -495,7 +508,8 @@ machine_at_486ap4_init(const machine_t *model) pci_register_slot(0x0a, PCI_CARD_NORMAL, 2, 3, 4, 1); /* 0a = Slot 2 */ pci_register_slot(0x0b, PCI_CARD_NORMAL, 3, 4, 1, 2); /* 0b = Slot 3 */ pci_register_slot(0x0c, PCI_CARD_NORMAL, 4, 1, 2, 3); /* 0c = Slot 4 */ - device_add(&kbc_ps2_ami_pci_device); /* Uses the AMIKEY KBC */ + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); @@ -524,7 +538,9 @@ machine_at_ninja_init(const machine_t *model) pci_register_slot(0x11, PCI_CARD_NORMAL, 1, 2, 1, 2); pci_register_slot(0x13, PCI_CARD_NORMAL, 2, 1, 2, 1); pci_register_slot(0x0B, PCI_CARD_NORMAL, 2, 1, 2, 1); - device_add(&kbc_ps2_phoenix_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + device_add(&intel_flash_bxt_ami_device); device_add(&i420ex_device); @@ -551,7 +567,8 @@ machine_at_sb486p_init(const machine_t *model) pci_register_slot(0x14, PCI_CARD_NORMAL, 1, 2, 1, 2); pci_register_slot(0x13, PCI_CARD_NORMAL, 2, 1, 2, 1); - device_add(&kbc_ps2_ami_pci_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + device_add_params(&i82091aa_device, (void *) I82091AA_022); device_add(&i420ex_device); @@ -577,7 +594,9 @@ machine_at_amis76_init(const machine_t *model) pci_register_slot(0x0E, PCI_CARD_NORMAL, 1, 2, 3, 4); pci_register_slot(0x0F, PCI_CARD_NORMAL, 2, 3, 4, 1); pci_register_slot(0x02, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); - device_add(&kbc_ps2_ami_pci_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + device_add(&sio_device); device_add_params(&fdc37c6xx_device, (void *) FDC37C665); device_add(&intel_flash_bxt_ami_device); @@ -611,7 +630,9 @@ machine_at_486sp3_init(const machine_t *model) pci_register_slot(0x05, PCI_CARD_NORMAL, 3, 4, 1, 2); /* 05 = Slot 3 */ pci_register_slot(0x06, PCI_CARD_NORMAL, 4, 1, 2, 3); /* 06 = Slot 4 */ pci_register_slot(0x02, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); - device_add(&kbc_at_ami_device); /* Uses the AMIKEY KBC */ + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + device_add(&sio_device); device_add_params(&fdc37c6xx_device, (void *) (FDC37C663 | FDC37C6XX_IDE_PRI)); device_add(&sst_flash_29ee010_device); @@ -645,7 +666,9 @@ machine_at_alfredo_init(const machine_t *model) pci_register_slot(0x0E, PCI_CARD_NORMAL, 2, 1, 3, 4); pci_register_slot(0x0C, PCI_CARD_NORMAL, 1, 3, 2, 4); pci_register_slot(0x02, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); - device_add(&kbc_ps2_phoenix_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + device_add(&sio_device); device_add_params(&fdc37c6xx_device, (void *) FDC37C663); device_add(&intel_flash_bxt_ami_device); @@ -677,7 +700,9 @@ machine_at_486sp3g_init(const machine_t *model) pci_register_slot(0x05, PCI_CARD_NORMAL, 2, 3, 4, 1); /* 05 = Slot 2 */ pci_register_slot(0x04, PCI_CARD_NORMAL, 3, 4, 1, 2); /* 04 = Slot 3 */ pci_register_slot(0x02, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0); - device_add(&kbc_ps2_ami_pci_device); /* Uses the AMIKEY KBC */ + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + device_add(&sio_zb_device); device_add_params(&pc873xx_device, (void *) (PC87332 | PCX73XX_IDE_PRI | PCX730X_398)); device_add(&sst_flash_29ee010_device); @@ -790,8 +815,8 @@ machine_at_pci400cb_init(const machine_t *model) pci_register_slot(0x0E, PCI_CARD_NORMAL, 3, 4, 1, 2); /* 0E = Slot 2 */ pci_register_slot(0x0D, PCI_CARD_NORMAL, 2, 3, 4, 1); /* 0D = Slot 3 */ pci_register_slot(0x0C, PCI_CARD_NORMAL, 1, 2, 3, 4); /* 0C = Slot 4 */ - device_add(&kbc_ps2_ami_pci_device); /* Assume AMI Megakey 1993 standalone ('P') - because of the Tekram machine below. */ + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); device_add(&ims8848_device); @@ -814,6 +839,8 @@ machine_at_sis_85c496_common_init(UNUSED(const machine_t *model)) pci_set_irq_routing(PCI_INTB, PCI_IRQ_DISABLED); pci_set_irq_routing(PCI_INTC, PCI_IRQ_DISABLED); pci_set_irq_routing(PCI_INTD, PCI_IRQ_DISABLED); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); } int @@ -1166,7 +1193,8 @@ machine_at_ecs486_init(const machine_t *model) device_add(&ide_cmd640_pci_legacy_only_device); device_add_params(&fdc37c6xx_device, (void *) FDC37C665); device_add(&intel_flash_bxt_device); - device_add(&kbc_ps2_ami_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); return ret; } @@ -1195,7 +1223,8 @@ machine_at_actionpc2600_init(const machine_t *model) device_add(&umc_8886bf_device); device_add_params(&fdc37c6xx_device, (void *) FDC37C665); device_add(&intel_flash_bxt_device); - device_add(&kbc_ps2_tg_ami_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); if (gfxcard[0] == VID_INTERNAL) device_add(machine_get_vid_device(machine)); @@ -1228,7 +1257,9 @@ machine_at_actiontower8400_init(const machine_t *model) device_add_params(&fdc37c6xx_device, (void *) FDC37C665); device_add(&ide_cmd640_pci_device); device_add(&intel_flash_bxt_device); // The ActionPC 2600 has this so I'm gonna assume this does too. - device_add(&kbc_ps2_ami_pci_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + if (gfxcard[0] == VID_INTERNAL) device_add(machine_get_vid_device(machine)); @@ -1403,7 +1434,7 @@ machine_at_g486vpa_init(const machine_t *model) device_add(&via_vt82c49x_pci_ide_device); device_add(&via_vt82c505_device); device_add_params(&pc873xx_device, (void *) (PC87332 | PCX73XX_IDE_SEC | PCX730X_398)); - device_add(&kbc_ps2_ami_pci_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); device_add(&sst_flash_29ee010_device); return ret; @@ -1432,7 +1463,9 @@ machine_at_486vipio2_init(const machine_t *model) device_add(&via_vt82c49x_pci_ide_device); device_add(&via_vt82c505_device); device_add_params(&w837x7_device, (void *) (W83787F | W837X7_KEY_89)); - device_add(&kbc_ps2_ami_pci_device); + + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + device_add(&winbond_flash_w29c010_device); return ret; diff --git a/src/machine/m_at_t3100e.c b/src/machine/m_at_t3100e.c index fb9676d5c..0b52c5c0f 100644 --- a/src/machine/m_at_t3100e.c +++ b/src/machine/m_at_t3100e.c @@ -794,6 +794,12 @@ upper_write_raml(uint32_t addr, uint32_t val, void *priv) *(uint32_t *) &ram[addr] = val; } +uint8_t +machine_t3100e_p1_handler(void) +{ + return (t3100e_mono_get() & 1) ? 0xff : 0xbf; +} + int machine_at_t3100e_init(const machine_t *model) { diff --git a/src/machine/m_ps1.c b/src/machine/m_ps1.c index cce0b9d00..c8973cbb1 100644 --- a/src/machine/m_ps1.c +++ b/src/machine/m_ps1.c @@ -395,13 +395,22 @@ ps1_common_init(const machine_t *model) dma16_init(); pic2_init(); - device_add(&kbc_ps2_ps1_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); device_add(&port_6x_device); /* Audio uses ports 200h and 202-207h, so only initialize gameport on 201h. */ standalone_gameport_type = &gameport_201_device; } +uint8_t +machine_ps1_p1_handler(void) +{ + const uint8_t current_drive = fdc_get_current_drive(); + + /* (B0 or F0) | (fdd_is_525(current_drive) on bit 6) */ + return 0xb0 | (fdd_is_525(current_drive) ? 0x40 : 0x00); +} + int machine_ps1_m2011_init(const machine_t *model) { diff --git a/src/machine/m_ps2_isa.c b/src/machine/m_ps2_isa.c index b8114622b..d768975d5 100644 --- a/src/machine/m_ps2_isa.c +++ b/src/machine/m_ps2_isa.c @@ -201,7 +201,7 @@ ps2_isa_common_init(const machine_t *model) dma16_init(); pic2_init(); - device_add(&kbc_ps2_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); device_add(&port_6x_ps2_device); } diff --git a/src/machine/m_ps2_mca.c b/src/machine/m_ps2_mca.c index 42fe64cf8..631a3fe9c 100644 --- a/src/machine/m_ps2_mca.c +++ b/src/machine/m_ps2_mca.c @@ -1160,7 +1160,6 @@ ps2_mca_board_model_50_init(void) mem_remap_top(384); mca_init(4); - device_add(&kbc_ps2_mca_2_device); ps2.planar_read = model_50_read; ps2.planar_write = model_50_write; @@ -1181,7 +1180,6 @@ ps2_mca_board_model_60_init(void) mem_remap_top(384); mca_init(8); - device_add(&kbc_ps2_mca_2_device); ps2.planar_read = model_50_read; ps2.planar_write = model_50_write; @@ -1241,7 +1239,6 @@ ps2_mca_board_model_55sx_init(int has_sec_nvram, int slots) } mca_init(slots); - device_add(&kbc_ps2_mca_1_device); if (has_sec_nvram) device_add(&ps2_nvr_55ls_device); @@ -1420,7 +1417,6 @@ ps2_mca_board_model_70_type34_init(int is_type4, int slots) ps2.split_addr = mem_size * 1024; mca_init(slots); - device_add(&kbc_ps2_mca_1_device); ps2.planar_read = model_70_type3_read; ps2.planar_write = model_70_type3_write; @@ -1513,7 +1509,6 @@ ps2_mca_board_model_80_type2_init(void) ps2.split_addr = mem_size * 1024; mca_init(8); - device_add(&kbc_ps2_mca_1_device); ps2.planar_read = model_80_read; ps2.planar_write = model_80_write; @@ -1628,6 +1623,8 @@ machine_ps2_model_50_init(const machine_t *model) ps2.planar_id = 0xfbff; ps2_mca_board_model_50_init(); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + return ret; } @@ -1651,6 +1648,8 @@ machine_ps2_model_60_init(const machine_t *model) ps2.planar_id = 0xf7ff; ps2_mca_board_model_60_init(); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + return ret; } @@ -1671,6 +1670,8 @@ machine_ps2_model_55sx_init(const machine_t *model) ps2.planar_id = 0xfbff; ps2_mca_board_model_55sx_init(0, 4); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + return ret; } @@ -1691,6 +1692,8 @@ machine_ps2_model_65sx_init(const machine_t *model) ps2.planar_id = 0xe3ff; ps2_mca_board_model_55sx_init(1, 8); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + return ret; } @@ -1711,6 +1714,8 @@ machine_ps2_model_70_type3_init(const machine_t *model) ps2.planar_id = 0xf9ff; ps2_mca_board_model_70_type34_init(0, 4); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + return ret; } @@ -1731,6 +1736,8 @@ machine_ps2_model_80_init(const machine_t *model) ps2.planar_id = 0xfdff; ps2_mca_board_model_80_type2_init(); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + return ret; } @@ -1751,6 +1758,8 @@ machine_ps2_model_80_axx_init(const machine_t *model) ps2.planar_id = 0xfff9; ps2_mca_board_model_70_type34_init(0, 8); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + return ret; } @@ -1771,6 +1780,8 @@ machine_ps2_model_70_type4_init(const machine_t *model) ps2.planar_id = 0xf9ff; ps2_mca_board_model_70_type34_init(1, 4); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); + return ret; } diff --git a/src/machine/m_xt_xi8088.c b/src/machine/m_xt_xi8088.c index 0e70893fb..756432405 100644 --- a/src/machine/m_xt_xi8088.c +++ b/src/machine/m_xt_xi8088.c @@ -204,7 +204,7 @@ machine_xt_xi8088_init(const machine_t *model) if (fdc_current[0] == FDC_INTERNAL) device_add(&fdc_at_device); - device_add(&kbc_ps2_xi8088_device); + device_add_params(machine_get_kbc_device(machine), (void *) model->kbc_params); device_add(&port_6x_xi8088_device); nmi_init(); device_add(&ibmat_nvr_device); diff --git a/src/machine/machine_table.c b/src/machine/machine_table.c index aaf156102..79d3b5634 100644 --- a/src/machine/machine_table.c +++ b/src/machine/machine_table.c @@ -235,6 +235,7 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = &kbc_pc_device, + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, @@ -277,6 +278,7 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = &kbc_pc82_device, + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, @@ -319,6 +321,7 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = NULL, /* TODO: No specific kbd_device yet */ + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, @@ -361,6 +364,7 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = &kbc_xt_device, + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, @@ -403,6 +407,7 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = &kbc_xt86_device, + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, @@ -445,6 +450,7 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = &kbc_xtclone_device, + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, @@ -487,6 +493,7 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = &kbc_xtclone_device, + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, @@ -529,6 +536,7 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = &kbc_xtclone_device, + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, @@ -571,6 +579,7 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = &kbc_xtclone_device, + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, @@ -613,6 +622,7 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = &kbc_pc82_device, + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, @@ -655,6 +665,7 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = &kbc_xt_compaq_device, + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, @@ -697,6 +708,7 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = &kbc_xtclone_device, + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, @@ -739,6 +751,7 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = &kbc_pc82_device, + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, @@ -781,6 +794,7 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = &kbc_xt_device, + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, @@ -823,6 +837,7 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = &kbc_xt_device, + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, @@ -855,7 +870,7 @@ const machine_t machines[] = { .max_multi = 0 }, .bus_flags = MACHINE_PC, - .flags = MACHINE_FLAGS_NONE, /* Machine has internal video: Paradise PVC2 */ + .flags = MACHINE_FDC, /* Machine has internal video: Paradise PVC2 */ .ram = { .min = 128, .max = 640, @@ -865,12 +880,13 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = &kbc_xtclone_device, + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, .kbd_device = &keyboard_pc_xt_device, - .fdc_device = NULL, + .fdc_device = &fdc_xt_device, .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, @@ -897,7 +913,7 @@ const machine_t machines[] = { .max_multi = 0 }, .bus_flags = MACHINE_PC, - .flags = MACHINE_FLAGS_NONE, + .flags = MACHINE_FDC, .ram = { .min = 128, .max = 640, @@ -907,12 +923,13 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = &kbc_xtclone_device, + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, .kbd_device = &keyboard_pc_xt_device, - .fdc_device = NULL, + .fdc_device = &fdc_xt_device, .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, @@ -939,7 +956,7 @@ const machine_t machines[] = { .max_multi = 0 }, .bus_flags = MACHINE_PC, - .flags = MACHINE_FLAGS_NONE, + .flags = MACHINE_FDC, .ram = { .min = 128, .max = 640, @@ -949,12 +966,13 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = &kbc_xtclone_device, + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, .kbd_device = &keyboard_pc_xt_device, - .fdc_device = NULL, + .fdc_device = &fdc_xt_device, .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, @@ -991,6 +1009,7 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = &kbc_xtclone_device, + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, @@ -1033,6 +1052,7 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = &kbc_xtclone_device, + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, @@ -1075,6 +1095,7 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = &kbc_xt_device, + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, @@ -1117,6 +1138,7 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = &kbc_pc_device, + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, @@ -1159,6 +1181,7 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = &kbc_pc_device, + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, @@ -1201,6 +1224,7 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = &kbc_xtclone_device, + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, @@ -1243,6 +1267,7 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = &kbc_xt_olivetti_device, + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, @@ -1285,6 +1310,7 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = &kbc_xtclone_device, + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, @@ -1327,6 +1353,7 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = &kbc_pc_device, + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, @@ -1369,6 +1396,7 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = &kbc_xtclone_device, + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, @@ -1411,6 +1439,7 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = &kbc_pravetz_device, + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, @@ -1453,6 +1482,7 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = &kbc_xt_device, + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, @@ -1495,6 +1525,7 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = &kbc_xtclone_device, + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, @@ -1527,7 +1558,7 @@ const machine_t machines[] = { .max_multi = 0 }, .bus_flags = MACHINE_PC, - .flags = MACHINE_FLAGS_NONE, + .flags = MACHINE_FDC, .ram = { .min = 256, .max = 640, @@ -1537,12 +1568,13 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = &kbc_xtclone_device, + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, .kbd_device = &keyboard_pc_xt_device, - .fdc_device = NULL, + .fdc_device = &fdc_xt_device, .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, @@ -1579,6 +1611,7 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = &kbc_xt_device, + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, @@ -1621,6 +1654,7 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = &kbc_xtclone_device, + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, @@ -1663,6 +1697,7 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = &kbc_tandy_device, + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, @@ -1705,6 +1740,7 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = &kbc_tandy_device, + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, @@ -1747,6 +1783,7 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = &kbc_xt_t1x00_device, + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, @@ -1779,7 +1816,7 @@ const machine_t machines[] = { .max_multi = 0 }, .bus_flags = MACHINE_PC, - .flags = MACHINE_FLAGS_NONE, + .flags = MACHINE_FDC, .ram = { .min = 256, .max = 768, @@ -1789,12 +1826,13 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = &kbc_xtclone_device, + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = &vendex_device, .kbd_device = &keyboard_pc_xt_device, - .fdc_device = NULL, + .fdc_device = &fdc_xt_device, .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, @@ -1831,6 +1869,7 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = &kbc_xt_device, + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, @@ -1849,7 +1888,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_8088, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_xt_xi8088_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -1874,7 +1913,7 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = &kbc_ps2_xi8088_device, - .kbc_p1 = 0xff, + .kbc_p1 = 0x00400cf0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = &xi8088_device, @@ -1916,6 +1955,7 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = &kbc_xtclone_device, + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, @@ -1958,6 +1998,7 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = &kbc_xt_zenith_device, + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, @@ -2000,6 +2041,7 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = &kbc_xt_zenith_device, + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, @@ -2042,6 +2084,7 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = &kbc_xt_zenith_device, + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, @@ -2084,6 +2127,7 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = &kbc_pc_device, + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, @@ -2126,6 +2170,7 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = &kbc_xtclone_device, + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, @@ -2168,6 +2213,7 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = &kbc_xtclone_device, + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, @@ -2212,6 +2258,7 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = NULL /* TODO: No specific kbd_device yet */, + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, @@ -2254,6 +2301,7 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = NULL /* TODO: No specific kbd_device yet */, + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, @@ -2296,6 +2344,7 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = NULL /* TODO: No specific kbd_device yet */, + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, @@ -2338,6 +2387,7 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = NULL /* TODO: No specific kbd_device yet */, + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, @@ -2380,6 +2430,7 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = NULL /* TODO: No specific kbd_device yet */, + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, @@ -2422,6 +2473,7 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = &kbc_xt_device, + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, @@ -2464,6 +2516,7 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = NULL /* TODO: No specific kbd_device yet */, + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, @@ -2506,6 +2559,7 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = &kbc_xt_compaq_device, + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, @@ -2548,6 +2602,7 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = &kbc_xt_device, + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, @@ -2632,6 +2687,7 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = NULL /* TODO: No specific kbd_device yet */, + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, @@ -2675,6 +2731,7 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = NULL /* TODO: No specific kbd_device yet */, + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, @@ -2717,6 +2774,7 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = &kbc_xtclone_device, + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, @@ -2759,6 +2817,7 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = NULL /* TODO: No specific kbd_device yet */, + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, @@ -2801,6 +2860,7 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = &kbc_xt_t1x00_device, + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, @@ -2843,6 +2903,7 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = &kbc_xt_device, + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, @@ -2885,6 +2946,7 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = &kbc_xt_lxt3_device, + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, @@ -2905,7 +2967,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_at_ibmat_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -2930,7 +2992,8 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = &ibmat_device, @@ -2948,7 +3011,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_ps1_m2011_init, - .p1_handler = NULL, + .p1_handler = machine_ps1_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -2972,8 +3035,9 @@ const machine_t machines[] = { .nvrmask = 63, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_ps2_ps1_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = &ps1_2011_device, @@ -2991,7 +3055,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_ps2_m30_286_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -3015,8 +3079,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_ps2_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -3034,7 +3099,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_at_ibmxt286_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -3058,8 +3123,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = &ibmxt286_device, @@ -3077,7 +3143,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_at_ibmatami_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -3101,12 +3167,12 @@ const machine_t machines[] = { .nvrmask = 63, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, - .kbd_device = NULL, .fdc_device = NULL, .sio_device = NULL, .vid_device = NULL, @@ -3121,7 +3187,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_PROPRIETARY, /* Machine has chipset: Faraday FE3400B */ .init = machine_at_cmdpc_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -3145,8 +3211,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -3164,7 +3231,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_at_portableii_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -3188,8 +3255,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -3207,7 +3275,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_at_portableiii_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -3231,8 +3299,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -3249,7 +3318,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_PROPRIETARY, /* Machine has chipset: Faraday FE3400B */ .init = machine_at_grid1520_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -3274,6 +3343,7 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = NULL, + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, @@ -3292,7 +3362,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_at_mr286_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -3316,8 +3386,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -3335,7 +3406,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_at_pc8_init, - .p1_handler = NULL, + .p1_handler = machine_ncr_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -3359,8 +3430,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_ncr_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000004df, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -3378,7 +3450,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_PROPRIETARY, /* Yes, it's M290 with 98/86 gate array, not M290-30 with VLSI TOPCAT chipset. */ .init = machine_at_m290_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -3402,8 +3474,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_olivetti_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -3421,7 +3494,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_at_ibmatpx_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -3445,8 +3518,9 @@ const machine_t machines[] = { .nvrmask = 63, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -3464,7 +3538,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_at_ibmatquadtel_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -3488,8 +3562,9 @@ const machine_t machines[] = { .nvrmask = 63, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_quadtel_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -3508,7 +3583,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_at_pb286_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -3533,6 +3608,7 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = NULL, + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, @@ -3551,7 +3627,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_at_mbc17_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -3576,6 +3652,7 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = NULL, + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, @@ -3594,7 +3671,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_at_ax286_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -3619,6 +3696,7 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = NULL, + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, @@ -3637,7 +3715,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_at_siemens_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -3661,8 +3739,9 @@ const machine_t machines[] = { .nvrmask = 63, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_siemens_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -3680,7 +3759,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_at_t3100e_init, - .p1_handler = NULL, + .p1_handler = machine_t3100e_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -3704,8 +3783,9 @@ const machine_t machines[] = { .nvrmask = 63, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_toshiba_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x0000bfff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -3724,7 +3804,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_CT_AT, .init = machine_at_dells200_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -3749,6 +3829,7 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = NULL, + .kbc_params = 0x00000000, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, @@ -3762,12 +3843,12 @@ const machine_t machines[] = { }, /* has an Award-branded KBC controller */ { - .name = "[C&T PC/AT] Hyundai Super-286C", + .name = "[NEAT] Hyundai Super-286C", .internal_name = "super286c", .type = MACHINE_TYPE_286, - .chipset = MACHINE_CHIPSET_CT_AT, + .chipset = MACHINE_CHIPSET_NEAT, .init = machine_at_super286c_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -3791,12 +3872,12 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_award_device, + .kbc_params = 0x00424600, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, - .kbd_device = NULL, .fdc_device = NULL, .sio_device = NULL, .vid_device = NULL, @@ -3811,7 +3892,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_CT_AT, .init = machine_at_at122_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -3855,7 +3936,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_CT_AT, .init = machine_at_tuliptc7_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -3898,7 +3979,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_CT_AT, .init = machine_at_wellamerastar_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -3922,8 +4003,9 @@ const machine_t machines[] = { .nvrmask = 63, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_chips_device, + .kbc_params = 0x0000a600, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -3941,7 +4023,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_GC103, .init = machine_at_quadt286_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -3965,8 +4047,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_quadtel_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -3977,14 +4060,14 @@ const machine_t machines[] = { .snd_device = NULL, .net_device = NULL }, - /* Most likely has AMI 'F' KBC firmware. */ + /* Has AMI 'B' KBC firmware. */ { .name = "[GC103] TriGem 286M", .internal_name = "tg286m", .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_GC103, .init = machine_at_tg286m_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -4008,8 +4091,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_ami_device, + .kbc_params = 0x00004200, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -4026,7 +4110,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_NEAT, .init = machine_at_ataripc4_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -4062,14 +4146,14 @@ const machine_t machines[] = { .snd_device = NULL, .net_device = NULL }, - /* This has "AMI KEYBOARD BIOS", most likely 'F'. */ + /* This has an AMIKey-2, which is 'H'. */ { .name = "[NEAT] DataExpert 286", .internal_name = "ami286", .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_NEAT, .init = machine_at_neat_ami_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -4093,8 +4177,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_ami_device, + .kbc_params = 0x00004800, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -4105,14 +4190,14 @@ const machine_t machines[] = { .snd_device = NULL, .net_device = NULL }, - /* Has IBM AT KBC firmware. */ + /* Has NCR KBC firmware. */ { .name = "[NEAT] NCR 3302", .internal_name = "3302", .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_NEAT, .init = machine_at_3302_init, - .p1_handler = NULL, + .p1_handler = machine_ncr_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -4136,8 +4221,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_ncr_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000004df, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -4148,14 +4234,14 @@ const machine_t machines[] = { .snd_device = NULL, .net_device = NULL }, - /* Has IBM AT KBC firmware. */ + /* Has Phoenix MultiKey/42 KBC firmware. */ { .name = "[NEAT] Arche AMA-2010", .internal_name = "px286", .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_NEAT, .init = machine_at_px286_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -4179,12 +4265,13 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_phoenix_device, + /* The version number is a guess - we have no probe of this machine's controller. */ + .kbc_params = 0x00010500, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, - .kbd_device = NULL, .fdc_device = NULL, .sio_device = NULL, .vid_device = NULL, @@ -4198,7 +4285,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_VLSI_SCAMP, .init = machine_at_pc7286_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -4241,7 +4328,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_SCAT, .init = machine_at_pc5286_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -4284,7 +4371,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_SCAT, .init = machine_at_gw286ct_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -4308,8 +4395,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_chips_device, + .kbc_params = 0x0000a600, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = &f82c710_device, @@ -4320,14 +4408,16 @@ const machine_t machines[] = { .snd_device = NULL, .net_device = NULL }, - /* Has IBM PS/2 Type 1 KBC firmware. */ + /* Has IBM PS/2 Type 1 KBC firmware - that's actually a guess since we + do not currently have a picture of the motherboard. + In the code, we actually give it the AMI PS/2 controller. */ { .name = "[SCAT] Goldstar GDC-212M", .internal_name = "gdc212m", .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_SCAT, .init = machine_at_gdc212m_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -4351,8 +4441,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_ps2_ami_device, + .kbc_params = 0x00004600, + .kbc_p1 = 0x00000cf0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -4370,7 +4461,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_SCAT, .init = machine_at_award286_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -4394,8 +4485,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_via_device, + .kbc_params = 0x00424600, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -4413,7 +4505,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_SCAT, .init = machine_at_super286tr_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -4437,8 +4529,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_via_device, + .kbc_params = 0x00424600, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -4455,7 +4548,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_SCAT, .init = machine_at_drsm35286_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -4498,7 +4591,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_SCAT, .init = machine_at_deskmaster286_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -4522,8 +4615,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_ps2_ami_device, + .kbc_params = 0x00004600, + .kbc_p1 = 0x00000cf0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -4534,14 +4628,15 @@ const machine_t machines[] = { .snd_device = NULL, .net_device = NULL }, - /* Has IBM PS/2 Type 1 KBC firmware. */ + /* Has a Samsung (SEC) V1.4 KBC firmware. */ + /* TODO: Do kbc_at.c logging to see if the BIOS sends any proprietary commands. */ { .name = "[SCAT] Samsung SPC-4200P", .internal_name = "spc4200p", .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_SCAT, .init = machine_at_spc4200p_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -4565,8 +4660,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_ps2_ami_device, + .kbc_params = 0x00004600, + .kbc_p1 = 0x00000cf0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -4577,14 +4673,14 @@ const machine_t machines[] = { .snd_device = NULL, .net_device = NULL }, - /* Has IBM PS/2 Type 1 KBC firmware. */ + /* Most likely has a Samsung (SEC) V1.4 KBC firmware like the SPC-4200P above. */ { .name = "[SCAT] Samsung SPC-4216P", .internal_name = "spc4216p", .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_SCAT, .init = machine_at_spc4216p_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -4608,8 +4704,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_ps2_ami_device, + .kbc_params = 0x00004600, + .kbc_p1 = 0x00000cf0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -4620,14 +4717,14 @@ const machine_t machines[] = { .snd_device = NULL, .net_device = NULL }, - /* Has IBM PS/2 Type 1 KBC firmware. */ + /* Most likely has a Samsung (SEC) V1.4 KBC firmware like the SPC-4200P above. */ { .name = "[SCAT] Samsung SPC-4620P", .internal_name = "spc4620p", .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_SCAT, .init = machine_at_spc4620p_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -4651,8 +4748,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_ps2_ami_device, + .kbc_params = 0x00004600, + .kbc_p1 = 0x00000cf0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -4663,13 +4761,14 @@ const machine_t machines[] = { .snd_device = NULL, .net_device = NULL }, + /* Has AMI '8' KBC firmware. */ { .name = "[SCAT] Senor Science Co. SCAT-286-003", .internal_name = "senorscat286", .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_SCAT, .init = machine_at_senor_scat286_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -4693,8 +4792,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_ami_device, + .kbc_params = 0x00003800, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -4713,7 +4813,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_ps2_model_50_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -4737,8 +4837,9 @@ const machine_t machines[] = { .nvrmask = 63, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_ps2_mca_2_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -4756,7 +4857,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_286, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_ps2_model_60_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -4780,8 +4881,9 @@ const machine_t machines[] = { .nvrmask = 63, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_ps2_mca_2_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -4802,7 +4904,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_ps1_m2121_init, - .p1_handler = NULL, + .p1_handler = machine_ps1_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -4826,26 +4928,26 @@ const machine_t machines[] = { .nvrmask = 63, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_ps2_ps1_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, - .kbd_device = NULL, .fdc_device = NULL, .sio_device = NULL, .vid_device = NULL, .snd_device = NULL, .net_device = NULL }, - /* Has IBM AT KBC firmware. */ + /* Has NCR KBC firmware. */ { .name = "[ISA] NCR PC916SX", .internal_name = "pc916sx", .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_DISCRETE, /* Machine has chipset: TI TACT82000 */ .init = machine_at_pc916sx_init, - .p1_handler = NULL, + .p1_handler = machine_ncr_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -4869,8 +4971,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_ncr_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000004df, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -4888,7 +4991,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_DISCRETE, /* Machine has chipset: VLSI TOPCAT */ .init = machine_at_quadt386sx_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -4912,8 +5015,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_quadtel_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -4931,7 +5035,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_ACC_2036, .init = machine_at_pbl300sx_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -4967,14 +5071,14 @@ const machine_t machines[] = { .snd_device = NULL, .net_device = NULL }, - /* This has an AMIKey-2, which is an updated version of type 'H'. */ + /* This has a Holtek keyboard controller which clones AMI 'H'. */ { .name = "[ALi M1217] Acrosser AR-B1374", .internal_name = "arb1374", .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_ALI_M1217, .init = machine_at_arb1374_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -4998,8 +5102,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_ps2_holtek_device, + .kbc_params = 0x00004800, + .kbc_p1 = 0x00000cf0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -5010,14 +5115,15 @@ const machine_t machines[] = { .snd_device = NULL, .net_device = NULL }, - /* Has the AMIKey-2 KBC. */ + /* Has the AMIKey-2 KBC - that's actually a guess since we + do not currently have a picture of the motherboard. */ { .name = "[ALi M1217] AAEON SBC-350A", .internal_name = "sbc350a", .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_ALI_M1217, .init = machine_at_sbc350a_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -5041,8 +5147,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = MACHINE_DMA_3, .default_jumpered_ecp_dma = 3, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_ami_device, + .kbc_params = 0x00004800, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -5060,7 +5167,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_ALI_M1217, .init = machine_at_flytech386_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -5084,8 +5191,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_ps2_via_device, + .kbc_params = 0x00424600, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -5096,14 +5204,14 @@ const machine_t machines[] = { .snd_device = NULL, .net_device = NULL }, - /* Has a JetKey KBC without version, shows up as a 'H'. */ + /* Has a JetKey KBC without version, which is a clone of AMI '8'. */ { .name = "[ALi M1217] Chaintech 325AX", .internal_name = "325ax", .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_ALI_M1217, .init = machine_at_325ax_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -5127,8 +5235,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_ami_device, + .kbc_params = 0x00003800, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -5139,14 +5248,14 @@ const machine_t machines[] = { .snd_device = NULL, .net_device = NULL }, - /* Has a JetKey KBC without version, shows up as a 'H'. */ + /* Has a JetKey KBC without version, which is a clone of AMI '8'. */ { .name = "[ALi M1217] Chaintech 325AX (MR BIOS)", .internal_name = "mr1217", .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_ALI_M1217, .init = machine_at_mr1217_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -5170,8 +5279,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_ami_device, + .kbc_params = 0x00003800, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -5182,13 +5292,15 @@ const machine_t machines[] = { .snd_device = NULL, .net_device = NULL }, + /* Uses a NEC/Acer 90M002A. + This is a strange one - it has command AF but it returns 0x00. */ { .name = "[ALi M1409] Acer 100T", .internal_name = "acer100t", .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_ALI_M1409, .init = machine_at_acer100t_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -5201,7 +5313,6 @@ const machine_t machines[] = { .max_voltage = 0, .min_multi = 0, .max_multi = 0, - }, .bus_flags = MACHINE_PS2, .flags = MACHINE_IDE | MACHINE_VIDEO , /* Machine has internal OTI 077 Video card*/ @@ -5213,8 +5324,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_ps2_acer_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000008f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -5234,7 +5346,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_HT18, .init = machine_at_ama932j_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -5258,8 +5370,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_ami_device, + .kbc_params = 0x00004600, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -5270,16 +5383,14 @@ const machine_t machines[] = { .snd_device = NULL, .net_device = NULL }, - /* Has an unknown KBC firmware with commands B8 and BB in the style of - Phoenix MultiKey and AMIKey-3(!), but also commands E1 and EA with - unknown functions. */ + /* Most likely has a Phoenix MultiKey/42 keyboard controller. */ { .name = "[Intel 82335] ADI 386SX", .internal_name = "adi386sx", .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_INTEL_82335, .init = machine_at_adi386sx_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -5303,8 +5414,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_phoenix_device, + .kbc_params = 0x00010500, /* Guess. */ + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -5321,7 +5433,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_INTEL_82335, .init = machine_at_shuttle386sx_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -5345,8 +5457,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_ami_device, + .kbc_params = 0x00004400, /* Guess. */ + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -5366,7 +5479,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_NEAT, .init = machine_at_cmdsl386sx16_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -5381,7 +5494,7 @@ const machine_t machines[] = { .max_multi = 0 }, .bus_flags = MACHINE_PS2, - .flags = MACHINE_FLAGS_NONE, + .flags = MACHINE_IDE, .ram = { .min = 1024, .max = 8192, @@ -5390,8 +5503,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_ps2_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -5409,7 +5523,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_NEAT, .init = machine_at_neat_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -5433,8 +5547,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -5450,7 +5565,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_NEAT_SX, .init = machine_at_if386sx_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -5493,7 +5608,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_OPTI_283, .init = machine_at_svc386sxp1_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -5536,7 +5651,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_OPTI_291, .init = machine_at_awardsx_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -5560,8 +5675,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -5581,7 +5697,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_VLSI_SCAMP, .init = machine_at_cmdsl386sx25_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -5605,8 +5721,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = NULL, /* The keyboard controller is part of the VL82c113. */ + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -5626,7 +5743,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_VLSI_SCAMP, .init = machine_at_dataexpert386sx_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -5650,8 +5767,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_ami_device, + .kbc_params = 0x00004400, /* Guess. */ + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -5670,7 +5788,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_VLSI_SCAMP, .init = machine_at_dells333sl_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -5706,14 +5824,15 @@ const machine_t machines[] = { .snd_device = NULL, .net_device = NULL }, - /* Has IBM PS/2 Type 1 KBC firmware. */ + /* The only photo we have is too blurry to read the marking on the + the keyboard controller, but it's possibly a Phoenix. */ { .name = "[SCAMP] Samsung SPC-6033P", .internal_name = "spc6033p", .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_VLSI_SCAMP, .init = machine_at_spc6033p_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -5737,8 +5856,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_ps2_phoenix_device, /* Possibly. */ + .kbc_params = 0x00012900, /* Guess. */ + .kbc_p1 = 0x00000cf0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -5757,7 +5877,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_SCAT_SX, .init = machine_at_kmxc02_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -5781,8 +5901,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_ami_device, /* Possibly. */ + .kbc_params = 0x00004600, /* Guess. */ + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -5800,7 +5921,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_WD76C10, .init = machine_at_wd76c10_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -5824,8 +5945,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_ps2_quadtel_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -5845,7 +5967,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_ps2_model_55sx_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -5869,8 +5991,9 @@ const machine_t machines[] = { .nvrmask = 63, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_ps2_mca_1_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -5888,7 +6011,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386SX, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_ps2_model_65sx_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -5910,14 +6033,12 @@ const machine_t machines[] = { .step = 1024 }, .nvrmask = 63, - .jumpered_ecp_dma = 0, - .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_ps2_mca_1_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, - .kbd_device = NULL, .fdc_device = NULL, .sio_device = NULL, .vid_device = NULL, @@ -5933,7 +6054,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_M6117, .chipset = MACHINE_CHIPSET_ALI_M6117, .init = machine_at_pja511m_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -5957,8 +6078,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &keyboard_ps2_ami_device, + .kbc_params = 0x00004800, + .kbc_p1 = 0x00000cf0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -5976,7 +6098,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_M6117, .chipset = MACHINE_CHIPSET_ALI_M6117, .init = machine_at_prox1332_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -6000,8 +6122,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &keyboard_ps2_ami_device, + .kbc_params = 0x00004800, + .kbc_p1 = 0x00000cf0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -6022,7 +6145,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486SLC, .chipset = MACHINE_CHIPSET_OPTI_283, .init = machine_at_rycleopardlx_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -6046,8 +6169,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_ami_device, + .kbc_params = 0x00004800, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -6067,7 +6191,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386DX, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_at_deskpro386_init, - .p1_handler = NULL, + .p1_handler = machine_compaq_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -6091,8 +6215,9 @@ const machine_t machines[] = { .nvrmask = 63, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_compaq_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000000f4, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -6103,13 +6228,14 @@ const machine_t machines[] = { .snd_device = NULL, .net_device = NULL }, + /* Uses Compaq KBC firmware. */ { .name = "[ISA] Compaq Deskpro 386 (May 1988)", .internal_name = "deskpro386_05_1988", .type = MACHINE_TYPE_386DX, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_at_deskpro386_05_1988_init, - .p1_handler = NULL, + .p1_handler = machine_compaq_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -6133,8 +6259,9 @@ const machine_t machines[] = { .nvrmask = 63, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_compaq_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000000f4, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -6145,13 +6272,14 @@ const machine_t machines[] = { .snd_device = NULL, .net_device = NULL }, + /* Uses Compaq KBC firmware. */ { .name = "[ISA] Compaq Portable III (386)", .internal_name = "portableiii386", .type = MACHINE_TYPE_386DX, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_at_portableiii386_init, - .p1_handler = NULL, + .p1_handler = machine_compaq_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -6175,8 +6303,9 @@ const machine_t machines[] = { .nvrmask = 63, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_compaq_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000000f4, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -6187,14 +6316,14 @@ const machine_t machines[] = { .snd_device = NULL, .net_device = NULL }, - /* Has IBM AT KBC firmware. */ + /* Has Phoenix MultiKey/42 KBC firmware. */ { .name = "[ISA] Micronics 09-00021 (Tandon BIOS)", .internal_name = "micronics386", .type = MACHINE_TYPE_386DX, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_at_micronics386_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -6218,8 +6347,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_phoenix_device, + .kbc_params = 0x00012900, /* Guess. */ + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -6237,7 +6367,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386DX, .chipset = MACHINE_CHIPSET_DISCRETE, .init = machine_at_micronics386px_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -6273,14 +6403,15 @@ const machine_t machines[] = { .snd_device = NULL, .net_device = NULL }, - /* Has a Jetkey V3, which identifies as a 'B'. */ + /* Has a Jetkey V3, which we currently lack a probe of, but an + old test by Carlos showed it as being 'F'. */ { .name = "[ACC 2168] Juko AT046DX3", .internal_name = "acc386", .type = MACHINE_TYPE_386DX, .chipset = MACHINE_CHIPSET_ACC_2168, .init = machine_at_acc386_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -6304,8 +6435,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_ami_device, + .kbc_params = 0x00004600, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -6323,7 +6455,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386DX, .chipset = MACHINE_CHIPSET_CT_386, .init = machine_at_ecs386_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -6347,8 +6479,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_ami_device, + .kbc_params = 0x00003800, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -6359,14 +6492,14 @@ const machine_t machines[] = { .snd_device = NULL, .net_device = NULL }, - /* Has IBM AT KBC firmware. */ + /* Unknown - we give it an AT Award keyboard controller. */ { .name = "[C&T 386/AT] Samsung SPC-6000A", .internal_name = "spc6000a", .type = MACHINE_TYPE_386DX, .chipset = MACHINE_CHIPSET_CT_386, .init = machine_at_spc6000a_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -6390,8 +6523,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_award_device, + .kbc_params = 0x00424600, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -6402,14 +6536,15 @@ const machine_t machines[] = { .snd_device = NULL, .net_device = NULL }, - /* Has IBM AT KBC firmware. */ + /* I found one board picture of it and I can't really read the + keyboard controller markings from it, but it may be Phoenix. */ { .name = "[C&T 386/AT] Tandy 4000", .internal_name = "tandy4000", .type = MACHINE_TYPE_386DX, .chipset = MACHINE_CHIPSET_CT_386, .init = machine_at_tandy4000_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -6433,8 +6568,9 @@ const machine_t machines[] = { .nvrmask = 63, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_phoenix_device, + .kbc_params = 0x00012900, /* Guess. */ + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -6445,14 +6581,14 @@ const machine_t machines[] = { .snd_device = NULL, .net_device = NULL }, - /* Has a Lance LT38C41 with AMI Megakey P KBC firmware */ + /* Has a Lance LT38C41 that clones an AMIKEY ('F'). */ { .name = "[ALi M1429] ECS Panda 386V", .internal_name = "ecs386v", .type = MACHINE_TYPE_386DX, .chipset = MACHINE_CHIPSET_ALI_M1429, .init = machine_at_ecs386v_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -6476,8 +6612,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_ami_device, /* TODO: Lance LT38C41. */ + .kbc_params = 0x00004600, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -6492,7 +6629,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386DX, .chipset = MACHINE_CHIPSET_OPTI_391, .init = machine_at_dataexpert386wb_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -6516,8 +6653,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_ami_device, /* TODO: Lance LT38C41. */ + .kbc_params = 0x00004600, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -6537,7 +6675,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386DX, .chipset = MACHINE_CHIPSET_OPTI_495SLC, .init = machine_at_opti495_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -6561,8 +6699,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_phoenix_device, + .kbc_params = 0x00012900, /* Guess. */ + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -6580,7 +6719,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386DX, .chipset = MACHINE_CHIPSET_SIS_310, .init = machine_at_asus3863364k_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -6623,7 +6762,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386DX, .chipset = MACHINE_CHIPSET_SIS_310, .init = machine_at_asus386_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -6647,8 +6786,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_ami_device, + .kbc_params = 0x00004600, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -6668,7 +6808,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386DX, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_ps2_model_80_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -6692,8 +6832,9 @@ const machine_t machines[] = { .nvrmask = 63, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_ps2_mca_1_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -6711,7 +6852,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386DX, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_ps55_model_50t_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -6754,7 +6895,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386DX, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_ps55_model_50v_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -6792,14 +6933,14 @@ const machine_t machines[] = { }, /* 386DX/486 machines */ - /* Winbond W83C42 with unknown firmware. */ + /* Winbond W83C42 - ASIC that clones AMI 'F'. */ { .name = "[ALi M1429G] DataExpert EXP4349", .internal_name = "exp4349", .type = MACHINE_TYPE_386DX_486, .chipset = MACHINE_CHIPSET_ALI_M1429G, .init = machine_at_exp4349_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -6823,8 +6964,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_ami_device, /* TODO: Winbond W83C42. */ + .kbc_params = 0x00004600, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -6878,14 +7020,15 @@ const machine_t machines[] = { .snd_device = NULL, .net_device = NULL }, - /* Has AMIKey F KBC firmware. */ + /* Has AMIKey 'F' or MR BIOS 'M' KBC firmware, we give it the latter + for the sake of keyboard controller diversity. */ { .name = "[OPTi 495SX] DataExpert SX495", .internal_name = "ami495", .type = MACHINE_TYPE_386DX_486, .chipset = MACHINE_CHIPSET_OPTI_495SX, .init = machine_at_opti495_ami_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -6909,8 +7052,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_ami_device, + .kbc_params = 0x00004d00, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -6921,14 +7065,15 @@ const machine_t machines[] = { .snd_device = NULL, .net_device = NULL }, - /* Has AMIKey F KBC firmware (it's just the MR BIOS for the above machine). */ + /* Has AMIKey 'F' or MR BIOS 'M' KBC firmware + (it's just the MR BIOS for the above machine). */ { .name = "[OPTi 495SX] DataExpert SX495 (MR BIOS)", .internal_name = "mr495", .type = MACHINE_TYPE_386DX_486, .chipset = MACHINE_CHIPSET_OPTI_495SX, .init = machine_at_opti495_mr_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -6952,8 +7097,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_ami_device, + .kbc_params = 0x00004d00, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -6971,7 +7117,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386DX_486, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_ps2_model_70_type3_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -6995,8 +7141,9 @@ const machine_t machines[] = { .nvrmask = 63, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_ps2_mca_1_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -7014,7 +7161,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_386DX_486, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_ps2_model_80_axx_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -7038,8 +7185,9 @@ const machine_t machines[] = { .nvrmask = 63, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_ps2_mca_1_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -7052,16 +7200,15 @@ const machine_t machines[] = { }, /* 486 machines - Socket 1 */ - /* Has JetKey 5 KBC Firmware - but the BIOS string ends in a hardcoded -F, and - the BIOS also explicitly expects command A1 to return a 'F', so it looks like - the JetKey 5 is a clone of AMIKey type F. */ + /* Has JetKey V5 KBC Firmware - we now have a photo of the board and its POST + screen, so we can match JetKey V5 to 'F'. */ { .name = "[CS4031] AMI 486 CS4031", .internal_name = "cs4031", .type = MACHINE_TYPE_486, .chipset = MACHINE_CHIPSET_CT_CS4031, .init = machine_at_cs4031_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -7085,8 +7232,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_ami_device, + .kbc_params = 0x00004600, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -7104,7 +7252,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486, .chipset = MACHINE_CHIPSET_OPTI_381, .init = machine_at_ga486l_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -7128,8 +7276,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_ami_device, + .kbc_params = 0x00004600, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -7147,7 +7296,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486, .chipset = MACHINE_CHIPSET_OPTI_493, .init = machine_at_svc486wb_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -7191,7 +7340,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486, .chipset = MACHINE_CHIPSET_OPTI_498, .init = machine_at_mvi486_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -7215,8 +7364,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_phoenix_device, + .kbc_params = 0x00012900, /* Guess. */ + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -7234,7 +7384,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486, .chipset = MACHINE_CHIPSET_SIS_401, .init = machine_at_isa486_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -7258,8 +7408,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_ami_device, + .kbc_params = 0x00004600, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -7270,14 +7421,15 @@ const machine_t machines[] = { .snd_device = NULL, .net_device = NULL }, - /* Has AMIKey H KBC firmware, per the screenshot in "How computers & MS-DOS work". */ + /* Has AMIKey H KBC firmware, per the screenshot in "How computers & MS-DOS work". + Also seen with an AMI 'F'. */ { .name = "[SiS 401] Chaintech 433SC", .internal_name = "sis401", .type = MACHINE_TYPE_486, .chipset = MACHINE_CHIPSET_SIS_401, .init = machine_at_sis401_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -7301,8 +7453,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_ami_device, + .kbc_params = 0x00004800, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -7313,15 +7466,14 @@ const machine_t machines[] = { .snd_device = NULL, .net_device = NULL }, - /* Has AMIKey F KBC firmware, per a photo of a monitor with the BIOS screen on - eBay. */ + /* Seen with both AMIKey F and AMIKey-2 H KBC firmwares. */ { .name = "[SiS 460] ABIT AV4", .internal_name = "av4", .type = MACHINE_TYPE_486, .chipset = MACHINE_CHIPSET_SIS_460, .init = machine_at_av4_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -7345,8 +7497,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_ami_device, + .kbc_params = 0x00004600, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -7364,7 +7517,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486, .chipset = MACHINE_CHIPSET_SIS_471, .init = machine_at_advantage40xxd_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -7407,7 +7560,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486, .chipset = MACHINE_CHIPSET_SYMPHONY_SL82C460, .init = machine_at_dtk461_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -7446,14 +7599,15 @@ const machine_t machines[] = { /* The chip is a Lance LT38C41, a clone of the Intel 8041, and the BIOS sends commands BC, BD, and C9 which exist on both AMIKey and Phoenix MultiKey/42, but it does not write a byte after C9, which is consistent with AMIKey, so - this must have some form of AMIKey. */ + this must have some form of AMIKey. + This is also seen with a genuine AMI 'F' (one of the photos on TheRetroWeb). */ { .name = "[VIA VT82C495] FIC 486-VC-HD", .internal_name = "486vchd", .type = MACHINE_TYPE_486, .chipset = MACHINE_CHIPSET_VIA_VT82C495, .init = machine_at_486vchd_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -7477,8 +7631,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_ami_device, + .kbc_params = 0x00004600, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -7496,7 +7651,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486, .chipset = MACHINE_CHIPSET_VLSI_VL82C480, .init = machine_at_vect486vl_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -7520,8 +7675,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = NULL, /* The keyboard controller is part of the VL82c113. */ + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -7532,14 +7688,14 @@ const machine_t machines[] = { .snd_device = NULL, .net_device = NULL }, - /* Has a VLSI VL82C114 Combination I/O which holds the KBC. */ + /* Has a standard IBM PS/2 KBC firmware or a clone thereof. */ { .name = "[VLSI 82C481] Siemens Nixdorf D824", .internal_name = "d824", .type = MACHINE_TYPE_486, .chipset = MACHINE_CHIPSET_VLSI_VL82C481, .init = machine_at_d824_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -7563,8 +7719,9 @@ const machine_t machines[] = { .nvrmask = 255, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_ps2_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -7582,7 +7739,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486, .chipset = MACHINE_CHIPSET_VLSI_VL82C486, .init = machine_at_tuliptc38_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -7625,7 +7782,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486, .chipset = MACHINE_CHIPSET_ZYMOS_POACH, .init = machine_at_isa486c_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -7668,7 +7825,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486, .chipset = MACHINE_CHIPSET_ZYMOS_POACH, .init = machine_at_genoa486_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -7692,8 +7849,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_ami_device, + .kbc_params = 0x00004600, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -7711,7 +7869,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486, .chipset = MACHINE_CHIPSET_PROPRIETARY, .init = machine_ps2_model_70_type4_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -7735,8 +7893,9 @@ const machine_t machines[] = { .nvrmask = 63, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_ps2_mca_1_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -7757,7 +7916,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S2, .chipset = MACHINE_CHIPSET_ACC_2168, .init = machine_at_pb410a_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -7781,8 +7940,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_ps2_phoenix_device, + .kbc_params = 0x00012900 /* Guess. */, + .kbc_p1 = 0x00000cf0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -7800,7 +7960,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S2, .chipset = MACHINE_CHIPSET_ALI_M1429G, .init = machine_at_acera1g_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -7824,8 +7984,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_ps2_acer_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000008f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -7843,7 +8004,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S2, .chipset = MACHINE_CHIPSET_ALI_M1429G, .init = machine_at_winbios1429_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -7867,8 +8028,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_ami_device, + .kbc_params = 0x00004800, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -7879,18 +8041,15 @@ const machine_t machines[] = { .snd_device = NULL, .net_device = NULL }, - /* Has JetKey 5 KBC Firmware which looks like it is a clone of AMIKey type F. - It also has those Ex commands also seen on the VIA VT82C42N (the BIOS - supposedly sends command EF. - The board was also seen in 2003 with a -H string - perhaps someone swapped - the KBC? */ + /* Has JetKey V5.0 KBC Firmware which clones an AMI 'H'. + The board was also seen 2003 with a -F string. */ { .name = "[ALi M1429] Olystar LIL1429", .internal_name = "ali1429", .type = MACHINE_TYPE_486_S2, .chipset = MACHINE_CHIPSET_ALI_M1429, .init = machine_at_ali1429_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -7914,8 +8073,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_ami_device, + .kbc_params = 0x00004800, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -7926,14 +8086,14 @@ const machine_t machines[] = { .snd_device = NULL, .net_device = NULL }, - /* Has AMI MegaKey KBC. */ + /* Has AMI 'H' KBC. */ { .name = "[i420TX] J-Bond PCI400C-A", .internal_name = "pci400ca", .type = MACHINE_TYPE_486_S2, .chipset = MACHINE_CHIPSET_INTEL_420TX, .init = machine_at_pci400ca_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -7958,7 +8118,8 @@ const machine_t machines[] = { .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, .kbc_device = &kbc_at_ami_device, - .kbc_p1 = 0xff, + .kbc_params = 0x00004800, + .kbc_p1 = 0x00000cf0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -7976,7 +8137,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S2, .chipset = MACHINE_CHIPSET_IMS_8848, .init = machine_at_g486ip_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -8000,8 +8161,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_ami_device, + .kbc_params = 0x00005000, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -8018,7 +8180,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S2, .chipset = MACHINE_CHIPSET_OPTI_499, .init = machine_at_cobalt_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -8061,7 +8223,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S2, .chipset = MACHINE_CHIPSET_OPTI_499, .init = machine_at_cougar_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -8085,8 +8247,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3, .default_jumpered_ecp_dma = 3, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_ami_device, + .kbc_params = 0x00004800, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -8104,7 +8267,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S2, .chipset = MACHINE_CHIPSET_SIS_461, .init = machine_at_decpclpv_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -8128,8 +8291,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_ps2_phoenix_device, + .kbc_params = 0x00012900, /* Guess. */ + .kbc_p1 = 0x00000cf0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -8147,7 +8311,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S2, .chipset = MACHINE_CHIPSET_SIS_461, .init = machine_at_dell466np_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -8191,7 +8355,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S2, .chipset = MACHINE_CHIPSET_SIS_461, .init = machine_at_valuepoint433_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -8215,8 +8379,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_ps2_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -8234,7 +8399,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S2, .chipset = MACHINE_CHIPSET_VLSI_VL82C480, .init = machine_at_martin_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -8280,7 +8445,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_ALI_M1429G, .init = machine_at_atc1762_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -8304,8 +8469,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_ami_device, /* TODO: JetKey. */ + .kbc_params = 0x00004800, + .kbc_p1 = 0x00000cf0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -8323,7 +8489,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_ALI_M1429G, .init = machine_at_ecsal486_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -8347,8 +8513,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_ami_device, + .kbc_params = 0x00004800, + .kbc_p1 = 0x00000cf0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -8359,14 +8526,15 @@ const machine_t machines[] = { .snd_device = NULL, .net_device = NULL }, - /* This uses a VIA VT82C42N KBC, which is a clone of type 'F' with additional commands */ + /* This uses a VIA VT82C42N KBC, which is a clone of type 'F' with additional commands. + It's really an ASIC clone of the Award KBC, which is itself an extended clone of AMI 'F'. */ { .name = "[ALi M1429G] Lanner Electronics AP-4100AA", .internal_name = "ap4100aa", .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_ALI_M1429G, .init = machine_at_ap4100aa_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -8390,8 +8558,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3, .default_jumpered_ecp_dma = 3, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_via_device, + .kbc_params = 0x00424600, + .kbc_p1 = 0x00000cf0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -8409,7 +8578,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_CONTAQ_82C596, .init = machine_at_4gpv5_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -8433,8 +8602,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -8445,14 +8615,14 @@ const machine_t machines[] = { .snd_device = NULL, .net_device = NULL }, - /* Has AMI MegaKey KBC firmware. */ + /* Has AMI MegaKey 'P' KBC firmware. */ { .name = "[Contaq 82C597] Visionex Green-B", .internal_name = "greenb", .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_CONTAQ_82C597, .init = machine_at_greenb_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -8476,8 +8646,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_ami_device, + .kbc_params = 0x00005000, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -8495,7 +8666,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_OPTI_895_802G, .init = machine_at_403tg_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -8519,8 +8690,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_ami_device, + .kbc_params = 0x00004800, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -8531,14 +8703,14 @@ const machine_t machines[] = { .snd_device = NULL, .net_device = NULL }, - /* Has JetKey 5 KBC Firmware which looks like it is a clone of AMIKey type F. */ + /* This is Version 2.0 - it has a VIA VT82C42N KBC. */ { .name = "[OPTi 895] Jetway J-403TG Rev D", .internal_name = "403tg_d", .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_OPTI_895_802G, .init = machine_at_403tg_d_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -8562,8 +8734,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_via_device, + .kbc_params = 0x00424600, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -8581,7 +8754,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_OPTI_895_802G, .init = machine_at_403tg_d_mr_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -8605,8 +8778,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_via_device, + .kbc_params = 0x00424600, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -8617,14 +8791,15 @@ const machine_t machines[] = { .snd_device = NULL, .net_device = NULL }, - /* Uses an NEC 90M002A (UPD82C42C, 8042 clone) with unknown firmware. */ + /* Uses an Acer 90M002A. + This is a strange one - it has command AF but it returns 0x00. */ { .name = "[SiS 461] Acer V10", .internal_name = "acerv10", .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_SIS_461, .init = machine_at_acerv10_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -8648,8 +8823,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_ps2_acer_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x000008f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -8669,7 +8845,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_SIS_471, .init = machine_at_win471_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -8693,8 +8869,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_ami_device, + .kbc_params = 0x00004600, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -8712,7 +8889,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_SIS_471, .init = machine_at_vi15g_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -8736,8 +8913,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_ami_device, + .kbc_params = 0x00004800, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -8755,7 +8933,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_SIS_471, .init = machine_at_vli486sv2g_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -8779,8 +8957,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_ami_device, + .kbc_params = 0x00004800, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -8791,14 +8970,14 @@ const machine_t machines[] = { .snd_device = NULL, .net_device = NULL }, - /* Unknown revision phoenix 1993 multikey */ + /* Has an Intel 82C42PE with Phoenix MultiKey/C42 KBC firmware, copyrighted 1993. */ { .name = "[SiS 471] DEC Venturis 4xx", .internal_name = "dvent4xx", .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_SIS_471, .init = machine_at_dvent4xx_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -8822,8 +9001,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = MACHINE_DMA_DISABLED, .default_jumpered_ecp_dma = 4, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_ps2_phoenix_device, + .kbc_params = 0x00021400, /* Guess. */ + .kbc_p1 = 0x00000cf0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -8834,14 +9014,14 @@ const machine_t machines[] = { .snd_device = NULL, .net_device = NULL }, - /* Has JetKey 5 KBC Firmware which looks like it is a clone of AMIKey type F. */ + /* Has JetKey v5.0G KBC Firmware which is a clone of AMIKey type F. */ { .name = "[SiS 471] DTK PKM-0038S E-2", .internal_name = "dtk486", .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_SIS_471, .init = machine_at_dtk486_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -8865,8 +9045,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_ami_device, /* TODO: JetKey. */ + .kbc_params = 0x00004600, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -8884,7 +9065,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_SIS_471, .init = machine_at_ami471_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -8908,8 +9089,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_ami_device, /* TODO: Lance. */ + .kbc_params = 0x00004600, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -8920,14 +9102,14 @@ const machine_t machines[] = { .snd_device = NULL, .net_device = NULL }, - /* Has MR (!) KBC firmware, which is a clone of the standard IBM PS/2 KBC firmware. */ + /* Has MR BIOS V307UT KBC firmware, which, bizarrely enough, is actually a genuine AMI 'H'. */ { .name = "[SiS 471] SiS VL-BUS 471 REV. A1", .internal_name = "px471", .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_SIS_471, .init = machine_at_px471_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -8951,8 +9133,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_ami_device, + .kbc_params = 0x00004800, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -8970,7 +9153,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3, .chipset = MACHINE_CHIPSET_SIS_471, .init = machine_at_tg486g_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -8994,8 +9177,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_ps2_tg_ami_device, + .kbc_params = 0x00005a00, + .kbc_p1 = 0x00000cf0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -9007,16 +9191,17 @@ const machine_t machines[] = { .net_device = NULL }, + /* 486 machines - Socket 3 PCI */ /* 486 machines which utilize the PCI bus */ /* Machine with ALi M1429G chipset and M1435 southbridge */ - /* Has an AMIKEY-2 KBC. */ + /* Has an AMIKEY-2 KBC which is type 'H'. */ { .name = "[ALi M1429G] MSI MS-4134", .internal_name = "ms4134", .type = MACHINE_TYPE_486_S3_PCI, .chipset = MACHINE_CHIPSET_ALI_M1429G, .init = machine_at_ms4134_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -9040,8 +9225,9 @@ const machine_t machines[] = { .nvrmask = 255, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_ami_device, + .kbc_params = 0x00004800, + .kbc_p1 = 0x00000cf0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -9059,7 +9245,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3_PCI, .chipset = MACHINE_CHIPSET_ALI_M1429G, .init = machine_at_tg486gp_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -9083,8 +9269,9 @@ const machine_t machines[] = { .nvrmask = 255, .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3, .default_jumpered_ecp_dma = 3, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_ps2_tg_ami_device, + .kbc_params = 0x00005a00, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -9102,7 +9289,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3_PCI, .chipset = MACHINE_CHIPSET_ALI_M1489, .init = machine_at_sbc490_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -9126,8 +9313,9 @@ const machine_t machines[] = { .nvrmask = 255, .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_0 | MACHINE_DMA_1 | MACHINE_DMA_3, .default_jumpered_ecp_dma = 3, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_ps2_ami_device, + .kbc_params = 0x00004800, + .kbc_p1 = 0x00000cf0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -9146,7 +9334,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3_PCI, .chipset = MACHINE_CHIPSET_ALI_M1489, .init = machine_at_abpb4_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -9170,8 +9358,9 @@ const machine_t machines[] = { .nvrmask = 255, .jumpered_ecp_dma = MACHINE_DMA_3, .default_jumpered_ecp_dma = 3, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_ami_device, /* TODO: ALi M148x KBC. */ + .kbc_params = 0x00004600, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -9189,7 +9378,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3_PCI, .chipset = MACHINE_CHIPSET_ALI_M1489, .init = machine_at_arb1476_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -9213,8 +9402,9 @@ const machine_t machines[] = { .nvrmask = 255, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_ps2_phoenix_device, + .kbc_params = 0x00014000, /* Guess. */ + .kbc_p1 = 0x00000cf0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -9236,7 +9426,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3_PCI, .chipset = MACHINE_CHIPSET_ALI_M1489, .init = machine_at_win486pci_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -9279,7 +9469,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3_PCI, .chipset = MACHINE_CHIPSET_ALI_M1489, .init = machine_at_tf486_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -9303,8 +9493,9 @@ const machine_t machines[] = { .nvrmask = 255, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_ps2_phoenix_device, + .kbc_params = 0x00014000, + .kbc_p1 = 0x00000cf0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -9326,7 +9517,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3_PCI, .chipset = MACHINE_CHIPSET_ALI_M1489, .init = machine_at_ms4145_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -9350,8 +9541,9 @@ const machine_t machines[] = { .nvrmask = 255, .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3, .default_jumpered_ecp_dma = 3, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_ami_device, /* TODO: ALi M148x KBC. */ + .kbc_params = 0x00004600, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -9369,7 +9561,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3_PCI, .chipset = MACHINE_CHIPSET_OPTI_895_802G, .init = machine_at_aptiva510_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -9393,8 +9585,9 @@ const machine_t machines[] = { .nvrmask = 255, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_ps2_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -9412,7 +9605,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3_PCI, .chipset = MACHINE_CHIPSET_OPTI_895_802G, .init = machine_at_pc330_6573_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -9436,8 +9629,9 @@ const machine_t machines[] = { .nvrmask = 255, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_ps2_device, + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -9455,7 +9649,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3_PCI, .chipset = MACHINE_CHIPSET_OPTI_895_802G, .init = machine_at_pb450_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -9479,8 +9673,9 @@ const machine_t machines[] = { .nvrmask = 255, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_ps2_phoenix_device, + .kbc_params = 0x00021400, /* Guess. */ + .kbc_p1 = 0x00000cf0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = &pb450_device, @@ -9498,7 +9693,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3_PCI, .chipset = MACHINE_CHIPSET_INTEL_420EX, .init = machine_at_486pi_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -9522,8 +9717,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_ami_device, + .kbc_params = 0x00004800, + .kbc_p1 = 0x00000cf0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -9541,7 +9737,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3_PCI, .chipset = MACHINE_CHIPSET_INTEL_420EX, .init = machine_at_bat4ip3e_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -9565,8 +9761,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3, .default_jumpered_ecp_dma = 3, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_ps2_phoenix_device, + .kbc_params = 0x00021400, /* Guess. */ + .kbc_p1 = 0x00000cf0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -9584,7 +9781,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3_PCI, .chipset = MACHINE_CHIPSET_INTEL_420EX, .init = machine_at_486ap4_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -9608,8 +9805,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_ps2_ami_device, + .kbc_params = 0x00004800, + .kbc_p1 = 0x00000cf0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -9627,7 +9825,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3_PCI, .chipset = MACHINE_CHIPSET_INTEL_420EX, .init = machine_at_ninja_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -9651,8 +9849,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = MACHINE_DMA_DISABLED, .default_jumpered_ecp_dma = 4, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_phoenix_device, + .kbc_params = 0x00012900, /* Guess. */ + .kbc_p1 = 0x00000cf0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -9670,7 +9869,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3_PCI, .chipset = MACHINE_CHIPSET_INTEL_420EX, .init = machine_at_sb486p_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -9694,8 +9893,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_ami_device, /* Guess. */ + .kbc_params = 0x00005200, /* Guess. */ + .kbc_p1 = 0x00000cf0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -9713,7 +9913,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3_PCI, .chipset = MACHINE_CHIPSET_INTEL_420TX, .init = machine_at_amis76_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -9737,8 +9937,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_ami_device, + .kbc_params = 0x00004800, + .kbc_p1 = 0x00000cf0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -9759,7 +9960,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3_PCI, .chipset = MACHINE_CHIPSET_INTEL_420TX, .init = machine_at_486sp3_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -9783,8 +9984,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_ami_device, /* Guess. */ + .kbc_params = 0x00004800, /* Guess. */ + .kbc_p1 = 0x00000cf0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -9802,7 +10004,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3_PCI, .chipset = MACHINE_CHIPSET_INTEL_420TX, .init = machine_at_alfredo_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -9826,8 +10028,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_ps2_phoenix_device, + .kbc_params = 0x00012900, /* Guess. */ + .kbc_p1 = 0x00000cf0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -9846,7 +10049,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3_PCI, .chipset = MACHINE_CHIPSET_INTEL_420ZX, .init = machine_at_486sp3g_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -9870,8 +10073,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3, .default_jumpered_ecp_dma = 3, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_ps2_ami_device, + .kbc_params = 0x00004800, + .kbc_p1 = 0x00000cf0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -9889,7 +10093,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3_PCI, .chipset = MACHINE_CHIPSET_INTEL_420ZX, .init = machine_at_sb486pv_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -9933,7 +10137,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3_PCI, .chipset = MACHINE_CHIPSET_IMS_8848, .init = machine_at_pci400cb_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -9957,8 +10161,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_ami_device, + .kbc_params = 0x00005000, /* Guess. */ + .kbc_p1 = 0x00000cf0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -9975,7 +10180,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3_PCI, .chipset = MACHINE_CHIPSET_SIS_496, .init = machine_at_acerp3_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -10018,7 +10223,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3_PCI, .chipset = MACHINE_CHIPSET_SIS_496, .init = machine_at_486sp3c_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -10042,8 +10247,9 @@ const machine_t machines[] = { .nvrmask = 255, .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3, .default_jumpered_ecp_dma = 3, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_ps2_ami_device, + .kbc_params = 0x00004800, + .kbc_p1 = 0x00000cf0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -10061,7 +10267,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3_PCI, .chipset = MACHINE_CHIPSET_SIS_496, .init = machine_at_ls486e_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -10085,8 +10291,9 @@ const machine_t machines[] = { .nvrmask = 255, .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3, .default_jumpered_ecp_dma = 3, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_ami_device, + .kbc_params = 0x00004800, + .kbc_p1 = 0x00000cf0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -10104,7 +10311,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3_PCI, .chipset = MACHINE_CHIPSET_SIS_496, .init = machine_at_m4li_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -10128,8 +10335,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3, .default_jumpered_ecp_dma = 3, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_ps2_via_device, + .kbc_params = 0x00424600, + .kbc_p1 = 0x00000cf0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -10147,7 +10355,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3_PCI, .chipset = MACHINE_CHIPSET_SIS_496, .init = machine_at_ms4144_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -10171,8 +10379,9 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3, .default_jumpered_ecp_dma = 3, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_ami_device, + .kbc_params = 0x00004800, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -10183,14 +10392,15 @@ const machine_t machines[] = { .snd_device = NULL, .net_device = NULL }, - /* Revision 1 has a Lance LT38C41L, revision 2 has a Holtek HT6542B. Another variant with a Bestkey KBC might exist as well. */ + /* Revision 1 has a Lance LT38C41L, revision 2 has a Holtek HT6542B. + Another variant with a Bestkey KBC might exist as well. */ { .name = "[SiS 496] Rise Computer R418", .internal_name = "r418", .type = MACHINE_TYPE_486_S3_PCI, .chipset = MACHINE_CHIPSET_SIS_496, .init = machine_at_r418_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -10214,8 +10424,9 @@ const machine_t machines[] = { .nvrmask = 255, .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3, .default_jumpered_ecp_dma = 3, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_holtek_device, + .kbc_params = 0x00004800, + .kbc_p1 = 0x00000cf0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -10226,15 +10437,15 @@ const machine_t machines[] = { .snd_device = NULL, .net_device = NULL }, - /* This has a Holtek HT6542B KBC and the BIOS does not send a single non-standard KBC command, so it - must be an ASIC that clones the standard IBM PS/2 KBC. */ + /* This has a Holtek HT6542B KBC and the BIOS does not send a single non-standard KBC command. + The Holtek is an ASIC clone of AMI 'H' with a Holtek copyright string. */ { .name = "[SiS 496] Soyo 4SAW2", .internal_name = "4saw2", .type = MACHINE_TYPE_486_S3_PCI, .chipset = MACHINE_CHIPSET_SIS_496, .init = machine_at_4saw2_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -10258,8 +10469,9 @@ const machine_t machines[] = { .nvrmask = 255, .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3, .default_jumpered_ecp_dma = 3, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_ps2_holtek_device, + .kbc_params = 0x00004800, + .kbc_p1 = 0x00000cf0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -10278,7 +10490,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3_PCI, .chipset = MACHINE_CHIPSET_SIS_496, .init = machine_at_4dps_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -10302,8 +10514,9 @@ const machine_t machines[] = { .nvrmask = 255, .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3, .default_jumpered_ecp_dma = 3, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_ps2_ami_device, + .kbc_params = 0x00004800, + .kbc_p1 = 0x00000cf0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -10321,7 +10534,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3_PCI, .chipset = MACHINE_CHIPSET_UMC_UM8881, .init = machine_at_atc1415_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -10345,8 +10558,9 @@ const machine_t machines[] = { .nvrmask = 255, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = NULL, /* UMC UM8886 on-chip KBC. */ + .kbc_params = 0x00000000, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -10365,7 +10579,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3_PCI, .chipset = MACHINE_CHIPSET_UMC_UM8881, .init = machine_at_84xxuuda_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -10409,7 +10623,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3_PCI, .chipset = MACHINE_CHIPSET_UMC_UM8881, .init = machine_at_pl4600c_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -10452,7 +10666,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3_PCI, .chipset = MACHINE_CHIPSET_UMC_UM8881, .init = machine_at_ecs486_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -10476,8 +10690,9 @@ const machine_t machines[] = { .nvrmask = 255, .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3, .default_jumpered_ecp_dma = 3, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_ami_device, + .kbc_params = 0x00004800, + .kbc_p1 = 0x00000cf0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -10495,7 +10710,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3_PCI, .chipset = MACHINE_CHIPSET_UMC_UM8881, .init = machine_at_actionpc2600_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -10519,8 +10734,9 @@ const machine_t machines[] = { .nvrmask = 255, .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3, .default_jumpered_ecp_dma = 3, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_ps2_tg_ami_device, + .kbc_params = 0x00005a00, + .kbc_p1 = 0x00000cf0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -10539,7 +10755,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3_PCI, .chipset = MACHINE_CHIPSET_UMC_UM8881, .init = machine_at_actiontower8400_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -10563,8 +10779,9 @@ const machine_t machines[] = { .nvrmask = 255, .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3, .default_jumpered_ecp_dma = 3, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_ps2_tg_ami_device, /* Guess. */ + .kbc_params = 0x00005a00, /* Guess. */ + .kbc_p1 = 0x00000cf0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -10583,7 +10800,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3_PCI, .chipset = MACHINE_CHIPSET_UMC_UM8881, .init = machine_at_m919_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -10607,8 +10824,9 @@ const machine_t machines[] = { .nvrmask = 255, .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3, .default_jumpered_ecp_dma = 3, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = NULL, /* UMC UM8886 on-chip KBC. */ + .kbc_params = 0x00000000, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -10626,7 +10844,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3_PCI, .chipset = MACHINE_CHIPSET_UMC_UM8881, .init = machine_at_spc7700plw_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -10650,8 +10868,9 @@ const machine_t machines[] = { .nvrmask = 255, .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3, .default_jumpered_ecp_dma = 3, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = NULL, /* UMC UM8886 on-chip KBC. */ + .kbc_params = 0x00000000, + .kbc_p1 = 0x00000cf0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -10669,7 +10888,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3_PCI, .chipset = MACHINE_CHIPSET_UMC_UM8881, .init = machine_at_hot433a_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -10693,8 +10912,9 @@ const machine_t machines[] = { .nvrmask = 255, .jumpered_ecp_dma = 0, .default_jumpered_ecp_dma = -1, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_at_holtek_device, + .kbc_params = 0x00004800, + .kbc_p1 = 0x000004f0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = &hot433a_device, @@ -10712,7 +10932,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3_PCI, .chipset = MACHINE_CHIPSET_VIA_VT82C496G, .init = machine_at_g486vpa_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -10736,8 +10956,9 @@ const machine_t machines[] = { .nvrmask = 255, .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3, .default_jumpered_ecp_dma = 3, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_ps2_via_device, + .kbc_params = 0x00424600, + .kbc_p1 = 0x00000cf0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -10755,7 +10976,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_S3_PCI, .chipset = MACHINE_CHIPSET_VIA_VT82C496G, .init = machine_at_486vipio2_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -10779,8 +11000,9 @@ const machine_t machines[] = { .nvrmask = 255, .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3, .default_jumpered_ecp_dma = 3, - .kbc_device = NULL, - .kbc_p1 = 0xff, + .kbc_device = &kbc_ps2_via_device, + .kbc_params = 0x00424600, + .kbc_p1 = 0x00000cf0, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, .device = NULL, @@ -10802,7 +11024,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_MISC, .chipset = MACHINE_CHIPSET_STPC_CLIENT, .init = machine_at_itoxstar_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -10846,7 +11068,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_MISC, .chipset = MACHINE_CHIPSET_STPC_CONSUMER_II, .init = machine_at_arb1423c_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -10890,7 +11112,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_MISC, .chipset = MACHINE_CHIPSET_STPC_CONSUMER_II, .init = machine_at_arb1479_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -10934,7 +11156,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_MISC, .chipset = MACHINE_CHIPSET_STPC_CONSUMER_II, .init = machine_at_iach488_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -10978,7 +11200,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_MISC, .chipset = MACHINE_CHIPSET_STPC_ELITE, .init = machine_at_pcm9340_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -11022,7 +11244,7 @@ const machine_t machines[] = { .type = MACHINE_TYPE_486_MISC, .chipset = MACHINE_CHIPSET_STPC_ATLAS, .init = machine_at_pcm5330_init, - .p1_handler = NULL, + .p1_handler = machine_generic_p1_handler, .gpio_handler = NULL, .available_flag = MACHINE_AVAILABLE, .gpio_acpi_handler = NULL, @@ -11484,7 +11706,7 @@ const machine_t machines[] = { .nvrmask = 127, .jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3, .default_jumpered_ecp_dma = 3, - .kbc_device = NULL, + .kbc_device = &kbc_ps2_phoenix_device, .kbc_p1 = 0xff, .gpio = 0xffffffff, .gpio_acpi = 0xffffffff, @@ -11495,7 +11717,7 @@ const machine_t machines[] = { .vid_device = NULL, .snd_device = NULL, .net_device = NULL - }, + }, /* This has the Phoenix MultiKey KBC firmware. */ { .name = "[i430LX] Packard Bell PB520R", @@ -12089,7 +12311,7 @@ const machine_t machines[] = { .max_voltage = 3520, .min_multi = 1.5, .max_multi = 2.0 - }, + }, .bus_flags = MACHINE_PS2_PCI, .flags = MACHINE_IDE_DUAL | MACHINE_APM, /* Machine has onboard video: TLI ET4000/w32p */ .ram = { @@ -14710,9 +14932,9 @@ const machine_t machines[] = { /* Has a SM(S)C FDC37C932FR Super I/O chip with on-chip KBC with AMI MegaKey (revision '5') KBC firmware. */ { - .name = "[i430VX] Gateway 2000 Hitman", + .name = "[i430VX] Gateway 2000 Tigereye", .internal_name = "gw2kte", - .type = MACHINE_TYPE_SOCKET7, + .type = MACHINE_TYPE_SOCKET7_3V, .chipset = MACHINE_CHIPSET_INTEL_430VX, .init = machine_at_gw2kte_init, .p1_handler = NULL, @@ -14721,17 +14943,16 @@ const machine_t machines[] = { .gpio_acpi_handler = NULL, .cpu = { .package = CPU_PKG_SOCKET5_7, - .block = CPU_BLOCK(CPU_K5, CPU_5K86, CPU_K6, CPU_K6_2, CPU_K6_2C, CPU_K6_3, CPU_K6_2P, - CPU_K6_3P, CPU_Cx6x86, CPU_Cx6x86MX, CPU_Cx6x86L), + .block = CPU_BLOCK_NONE, .min_bus = 50000000, .max_bus = 66666667, - .min_voltage = 2200, + .min_voltage = 3380, .max_voltage = 3520, .min_multi = 1.5, .max_multi = 3.0 }, .bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, - .flags = MACHINE_IDE_DUAL | MACHINE_SOUND | MACHINE_APM | MACHINE_GAMEPORT | MACHINE_USB, /* Machine has internal video: S3 Trio64V+ */ + .flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_GAMEPORT | MACHINE_USB, .ram = { .min = 8192, .max = 131072, @@ -14749,7 +14970,7 @@ const machine_t machines[] = { .fdc_device = NULL, .sio_device = NULL, .vid_device = NULL, - .snd_device = &sb_vibra16c_onboard_device, + .snd_device = NULL, .net_device = NULL }, /* Has a SM(S)C FDC37C935 Super I/O chip with on-chip KBC with Phoenix @@ -19362,12 +19583,6 @@ machine_get_p1_default(void) return machine_p1_default; } -uint8_t -machine_get_p1(void) -{ - return machine_p1; -} - void machine_set_p1_default(uint8_t val) { @@ -19387,18 +19602,26 @@ machine_and_p1(uint8_t val) } uint8_t -machine_handle_p1(uint8_t write, uint8_t val) +machine_generic_p1_handler(void) +{ + return video_is_mda() ? 0xf0 : 0xb0; +} + +uint8_t +machine_get_p1(uint8_t kbc_p1) { uint8_t ret = 0xff; if (machines[machine].p1_handler) - ret = machines[machine].p1_handler(write, val); - else { - if (write) - machine_p1 = machine_p1_default & val; - else - ret = machine_p1; - } + ret = machines[machine].p1_handler(); + + ret &= (machine_p1 & 0xff); + + ret |= ((machine_p1 >> 8) & 0xff); + + ret ^= ((machine_p1 >> 16) & 0xff); + + ret &= kbc_p1; return ret; }