summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichał Żygowski <michal.zygowski@3mdeb.com>2021-11-25 21:49:28 +0100
committerMichał Żygowski <michal.zygowski@3mdeb.com>2021-11-27 14:23:08 +0000
commit5aba2aeead1aba0484ec55d5cd2a13146bd8068e (patch)
tree95466e40135df5ea39e80ab470be395bbecf0578
parent3b1d1ce1af684f5a94376a023980d6d94cb7972a (diff)
superio/smsc/sch5545: Disable PS/2 lines isolation during init
Disable PS/2 data and clock isolation in order to properly initialize the PS/2 keyboard and mouse in payload/OS. These bits are set by OS via ACPI and can survive S5 state. It is necessary to clear them after an ungraceful shutdown in order to perform PS/2 controller initialization e.g. in SeaBIOS. TEST=PS/2 keyboard can always be successfully initialized in SeaBIOS on Dell OptiPlex 9010 Signed-off-by: Michał Żygowski <michal.zygowski@3mdeb.com> Change-Id: Iac6be095c996b357b5d4e8d75199f94a89bf73e9 Reviewed-on: https://review.coreboot.org/c/coreboot/+/59673 Reviewed-by: Angel Pons <th3fanbus@gmail.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
-rw-r--r--src/superio/smsc/sch5545/superio.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/superio/smsc/sch5545/superio.c b/src/superio/smsc/sch5545/superio.c
index b6e5308f3c..2fe5d035bf 100644
--- a/src/superio/smsc/sch5545/superio.c
+++ b/src/superio/smsc/sch5545/superio.c
@@ -62,6 +62,12 @@ static void sch5545_init(struct device *dev)
switch (dev->path.pnp.device) {
case SCH5545_LDN_KBC:
+ pnp_enter_conf_mode(dev);
+ pnp_set_logical_device(dev);
+ /* Disable PS/2 clock and data isolation */
+ pnp_unset_and_set_config(dev, 0xf0,
+ SCH5545_KBD_ISOLATION | SCH5545_MOUSE_ISOLATION, 0);
+ pnp_exit_conf_mode(dev);
pc_keyboard_init(NO_AUX_DEVICE);
break;
case SCH5545_LDN_LPC: