From 196289d6e50c1f2f76fd220030117e61290775a3 Mon Sep 17 00:00:00 2001 From: OBattler Date: Sun, 18 May 2025 08:17:04 +0200 Subject: [PATCH] AT KBC fixes for the Dell. --- src/device/kbc_at.c | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/src/device/kbc_at.c b/src/device/kbc_at.c index a8a8c51cc..58aab476c 100644 --- a/src/device/kbc_at.c +++ b/src/device/kbc_at.c @@ -1088,12 +1088,24 @@ write64_generic(void *priv, uint8_t val) /* (B0 or F0) | (0x04 or 0x0c) */ kbc_delay_to_ob(dev, dev->p1 | fixed_bits, 0, 0x00); } else if (((dev->flags & KBC_TYPE_MASK) >= KBC_TYPE_PS2_1) && ((dev->flags & KBC_TYPE_MASK) < KBC_TYPE_GREEN)) { - /* (B0 or F0) | (0x08 or 0x0c) */ - uint8_t p1_out = ((dev->p1 | fixed_bits) & 0xf0) | - (((dev->flags & KBC_VEN_MASK) == KBC_VEN_ACER) ? 0x08 : 0x0c); - if (!strcmp(machine_get_internal_name(), "alfredo")) - p1_out &= 0xef; - kbc_delay_to_ob(dev, p1_out, 0, 0x00); + if (!strcmp(machine_get_internal_name(), "dell466np")) { + /* + Dell 466/NP: + - Bit 2: Keyboard fuse (must be set); + - Bit 4: Password disable jumper (must be clear); + - Bit 5: Manufacturing jumper (must be set); + */ + uint8_t p1 = 0x24; + kbc_delay_to_ob(dev, p1, 0, 0x01); + } else { + /* (B0 or F0) | (0x08 or 0x0c) */ + uint8_t p1_out = ((dev->p1 | fixed_bits) & 0xf0) | + (((dev->flags & KBC_VEN_MASK) == KBC_VEN_ACER) ? 0x08 : 0x0c); + if (!strcmp(machine_get_internal_name(), "alfredo")) + p1_out &= 0xef; + + kbc_delay_to_ob(dev, p1_out, 0, 0x00); + } } else if (kbc_ven == KBC_VEN_COMPAQ) kbc_delay_to_ob(dev, dev->p1 | (hasfpu ? 0x00 : 0x04), 0, 0x00); else