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>
This commit is contained in:
Michał Żygowski 2021-11-25 21:49:28 +01:00
parent 3b1d1ce1af
commit 5aba2aeead
1 changed files with 6 additions and 0 deletions

View File

@ -62,6 +62,12 @@ static void sch5545_init(struct device *dev)
switch (dev->path.pnp.device) { switch (dev->path.pnp.device) {
case SCH5545_LDN_KBC: 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); pc_keyboard_init(NO_AUX_DEVICE);
break; break;
case SCH5545_LDN_LPC: case SCH5545_LDN_LPC: