drivers/pc80: Add PS/2 mouse presence detect
On certain Winbond SuperIO devices, when a PS/2 mouse is not
present on the auxiliary channel both channels will cease to
function if the auxiliary channel is probed while the primary
channel is active. Therefore, knowledge of mouse presence
must be gathered by coreboot during early boot, and used to
enable or disable the auxiliary PS/2 port before control is
passed to the operating system.
Add auxiliary channel PS/2 device presence detect, and update
the Winbond W83667HG-A driver to flag the auxiliary channel as
disabled if no device was detected.
Change-Id: I76274493dacc9016ac6d0dff8548d1dc931c6266
Signed-off-by: Timothy Pearson <tpearson@raptorengineeringinc.com>
Reviewed-on: https://review.coreboot.org/13165
Tested-by: build bot (Jenkins)
Tested-by: Raptor Engineering Automated Test Stand <noreply@raptorengineeringinc.com>
Reviewed-by: Martin Roth <martinroth@google.com>
diff --git a/src/superio/smsc/dme1737/superio.c b/src/superio/smsc/dme1737/superio.c
index 23f2c7d..802735b 100644
--- a/src/superio/smsc/dme1737/superio.c
+++ b/src/superio/smsc/dme1737/superio.c
@@ -35,7 +35,7 @@
switch(dev->path.pnp.device) {
case DME1737_KBC:
- pc_keyboard_init();
+ pc_keyboard_init(NO_AUX_DEVICE);
break;
}
}
diff --git a/src/superio/smsc/fdc37n972/fdc37n972.c b/src/superio/smsc/fdc37n972/fdc37n972.c
index 0c6b517..f2218f1 100644
--- a/src/superio/smsc/fdc37n972/fdc37n972.c
+++ b/src/superio/smsc/fdc37n972/fdc37n972.c
@@ -31,7 +31,7 @@
case FDC37N972_PP: /* TODO. */
break;
case FDC37N972_KBDC:
- pc_keyboard_init();
+ pc_keyboard_init(NO_AUX_DEVICE);
break;
// [..] The rest: TODO
}
diff --git a/src/superio/smsc/kbc1100/superio.c b/src/superio/smsc/kbc1100/superio.c
index 81fb394..aa17473 100644
--- a/src/superio/smsc/kbc1100/superio.c
+++ b/src/superio/smsc/kbc1100/superio.c
@@ -68,7 +68,7 @@
case KBC1100_KBC:
res0 = find_resource(dev, PNP_IDX_IO0);
res1 = find_resource(dev, PNP_IDX_IO1);
- pc_keyboard_init();
+ pc_keyboard_init(NO_AUX_DEVICE);
break;
}
}
diff --git a/src/superio/smsc/lpc47b272/superio.c b/src/superio/smsc/lpc47b272/superio.c
index 6cc4823..00df880 100644
--- a/src/superio/smsc/lpc47b272/superio.c
+++ b/src/superio/smsc/lpc47b272/superio.c
@@ -46,7 +46,7 @@
switch(dev->path.pnp.device) {
case LPC47B272_KBC:
- pc_keyboard_init();
+ pc_keyboard_init(NO_AUX_DEVICE);
break;
}
}
diff --git a/src/superio/smsc/lpc47b397/superio.c b/src/superio/smsc/lpc47b397/superio.c
index 6270d92..a4ab46a 100644
--- a/src/superio/smsc/lpc47b397/superio.c
+++ b/src/superio/smsc/lpc47b397/superio.c
@@ -45,7 +45,7 @@
switch(dev->path.pnp.device) {
case LPC47B397_KBC:
- pc_keyboard_init();
+ pc_keyboard_init(NO_AUX_DEVICE);
break;
}
}
diff --git a/src/superio/smsc/lpc47m10x/superio.c b/src/superio/smsc/lpc47m10x/superio.c
index c3c7feb..1fc56d4 100644
--- a/src/superio/smsc/lpc47m10x/superio.c
+++ b/src/superio/smsc/lpc47m10x/superio.c
@@ -44,7 +44,7 @@
switch(dev->path.pnp.device) {
case LPC47M10X2_KBC:
- pc_keyboard_init();
+ pc_keyboard_init(NO_AUX_DEVICE);
break;
}
}
diff --git a/src/superio/smsc/lpc47m15x/superio.c b/src/superio/smsc/lpc47m15x/superio.c
index 166f383..7486938 100644
--- a/src/superio/smsc/lpc47m15x/superio.c
+++ b/src/superio/smsc/lpc47m15x/superio.c
@@ -66,7 +66,7 @@
switch(dev->path.pnp.device) {
case LPC47M15X_KBC:
- pc_keyboard_init();
+ pc_keyboard_init(NO_AUX_DEVICE);
break;
}
}
diff --git a/src/superio/smsc/lpc47n227/superio.c b/src/superio/smsc/lpc47n227/superio.c
index 3885ef32..787aeab 100644
--- a/src/superio/smsc/lpc47n227/superio.c
+++ b/src/superio/smsc/lpc47n227/superio.c
@@ -131,7 +131,7 @@
switch (dev->path.pnp.device) {
case LPC47N227_KBDC:
printk(BIOS_DEBUG, "LPC47N227: Initializing keyboard.\n");
- pc_keyboard_init();
+ pc_keyboard_init(NO_AUX_DEVICE);
break;
}
}
diff --git a/src/superio/smsc/mec1308/superio.c b/src/superio/smsc/mec1308/superio.c
index 2beeec6..fe2135f 100644
--- a/src/superio/smsc/mec1308/superio.c
+++ b/src/superio/smsc/mec1308/superio.c
@@ -34,7 +34,7 @@
switch(dev->path.pnp.device) {
case MEC1308_KBC:
- pc_keyboard_init();
+ pc_keyboard_init(NO_AUX_DEVICE);
break;
}
}
diff --git a/src/superio/smsc/sch4037/superio.c b/src/superio/smsc/sch4037/superio.c
index 0f09914..26fdba2 100644
--- a/src/superio/smsc/sch4037/superio.c
+++ b/src/superio/smsc/sch4037/superio.c
@@ -33,7 +33,7 @@
switch(dev->path.pnp.device) {
case SCH4037_KBC:
- pc_keyboard_init();
+ pc_keyboard_init(NO_AUX_DEVICE);
break;
}
}
diff --git a/src/superio/smsc/sio10n268/sio10n268.c b/src/superio/smsc/sio10n268/sio10n268.c
index 5892f0c..590f66d 100644
--- a/src/superio/smsc/sio10n268/sio10n268.c
+++ b/src/superio/smsc/sio10n268/sio10n268.c
@@ -31,7 +31,7 @@
break;
case SIO10N268_KBDC:
/* TODO: This is still hardcoded. */
- pc_keyboard_init();
+ pc_keyboard_init(NO_AUX_DEVICE);
break;
// [..] The rest: TODO
}
diff --git a/src/superio/smsc/smscsuperio/superio.c b/src/superio/smsc/smscsuperio/superio.c
index b3238de..69eceb1 100644
--- a/src/superio/smsc/smscsuperio/superio.c
+++ b/src/superio/smsc/smscsuperio/superio.c
@@ -163,7 +163,7 @@
/* A Super I/O was found, so initialize the respective device. */
ld = dev->path.pnp.device;
if (ld == logical_device_table[i].devs[LD_KBC]) {
- pc_keyboard_init();
+ pc_keyboard_init(NO_AUX_DEVICE);
}
}