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;
}