aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordalao <dalao@tutanota.com>2019-10-27 17:08:34 +0800
committerPatrick Georgi <pgeorgi@google.com>2020-04-14 09:50:10 +0000
commit56a25a98db1835d02bf6936085073be685a2e10d (patch)
treee73eb060a0b8ce7ad961caf85628ae57e896aefa
parent65535332db1f94bbe08928f7c0e52f01cb26c1c1 (diff)
mainboard/lenovo: Use the original hardware ids for keyboard/pointing
Currently coreboot is using the compatible ID PNP0303 for all keyboards and PNP0F13 for all pointing devices, which causes some problems. On Windows, the touchpad driver can't be automatically matched and installed through Windows Update. On Linux, there are some strange issues. So it's better to use the original hardware IDs for each model. The hardware IDs for the following models can be found By searching for dmesg logs on vendor BIOS: T60: https://mail.gnome.org/archives/networkmanager-list/2012-January/msg00110.html Keyboard: PNP0303 Pointing: IBM0057 R60: https://openbenchmarking.org/system/1202279-AR-COMPRESS715/Lenovo%20R60/dmesg Keyboard: PNP0303 Pointing: IBM0057 X60: https://github.com/pavelmachek/missy/blob/master/db/notebook/lenovo/thinkpad/x60/pavel/2018.3648803539788/dmesg.out Keyboard: PNP0303 Pointing: IBM3780 X200: https://ubuntuforums.org/showthread.php?t=1833248&page=2 Keyboard: LEN0010 Pointing: IBM3780 T400: https://github.com/heradon/libreboot-fork/blob/master/docs/future/dumps/logs-t400-bios2.02-ec1.01/dmesg.log Keyboard: LEN0010 Pointing: IBM3780 T510: https://bbs.archlinux.org/viewtopic.php?id=120287 Keyboard: PNP0303 Pointing: LEN0015 T410: https://forum.ubuntuusers.de/topic/kein-sound-109/ Keyboard: PNP0303 Pointing: LEN0015 T420: https://linux-hardware.org/index.php?probe=e6a094ade5&log=dmesg Keyboard: PNP0303 Pointing: LEN0015 T420s: https://bbs.archlinux.org/viewtopic.php?id=191510 Keyboard: PNP0303 Pointing: LEN0015 T520: https://bbs.archlinux.org/viewtopic.php?id=195636 Keyboard: PNP0303 Pointing: LEN0015 W520: https://linux-hardware.org/index.php?probe=9306cac54c&log=dmesg Keyboard: PNP0303 Pointing: LEN0015 T430: https://github.com/farjump/fwtr/blob/master/lenovo/thinkpad-t430/2347ds2/lenovo/g1et73ww-2.09/fwts/20160218_174223/dmesg.log Keyboard: PNP0303 Pointing: LEN0015 T430s: https://linux-hardware.org/index.php?probe=01545dc8fb&log=dmesg Keyboard: PNP0303 Pointing: LEN0015 T530: https://forums.fedoraforum.org/showthread.php?316640-Fedora-27-High-CPU Keyboard: LEN0071 Pointing: LEN0015 W530: https://bugs.freedesktop.org/attachment.cgi?id=115557 Keyboard: LEN0071 Pointing: LEN0015 L520: https://pastebin.com/U6MaBAY3 Keyboard: PNP0303 Pointing: LEN0017 X201: https://linux-hardware.org/index.php?probe=d7085ee4c8&log=dmesg.1 Keyboard: PNP0303 Pointing: LEN0018 X220: https://bbs.archlinux.org/viewtopic.php?id=237669 Keyboard: PNP0303 Pointing: LEN0020 X230: https://forums.bunsenlabs.org/viewtopic.php?id=2460 Keyboard: PNP0303 Pointing: LEN0020 X131e: https://linux-hardware.org/index.php?probe=d765880811&log=dmesg Keyboard: MSF0001 Pointing: LEN0026 X1 Carbon Gen 1: https://bugzilla.kernel.org/show_bug.cgi?id=85851 Keyboard: LEN0071 Pointing: LEN0030 s230u: https://launchpadlibrarian.net/147231958/dmesg-reboot.txt Keyboard: PTL0001 Pointing: LEN0031 T540p: https://linux-hardware.org/index.php?probe=da766a30bc&log=dmesg Keyboard: LEN0071 Pointing: LEN0034 X240: https://linux-hardware.org/index.php?probe=fa7155b0e4&log=dmesg Keyboard: LEN0071 Pointing: LEN0035 T440p: https://bugzilla.kernel.org/show_bug.cgi?id=91541 Keyboard: LEN0071 Pointing: LEN0036 T440s: https://bugzilla.kernel.org/show_bug.cgi?id=91541 Keyboard: LEN0071 Pointing: LEN0036 T450: https://gist.github.com/kzar/1c38630eb22e4bf5b976 Keyboard: LEN0071 Pointing: LEN200e Others: https://github.com/torvalds/linux/blob/master/drivers/input/mouse/synaptics.c Test result: This can make Windows automatically install the Lenovo touchpad driver. It also fixes the T440p touchpad issue. Change-Id: Ifb635da99c5e05f987aaf4f172108d788dcc2932 Signed-off-by: dalao <dalao@tutanota.com> Signed-off-by: Iru Cai <mytbk920423@gmail.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/36371 Reviewed-by: Nico Huber <nico.h@gmx.de> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
-rw-r--r--Documentation/mainboard/lenovo/t440p.md2
-rw-r--r--src/drivers/pc80/pc/Kconfig12
-rw-r--r--src/drivers/pc80/pc/ps2_controller.asl5
-rw-r--r--src/mainboard/lenovo/l520/Kconfig6
-rw-r--r--src/mainboard/lenovo/s230u/Kconfig6
-rw-r--r--src/mainboard/lenovo/t400/Kconfig6
-rw-r--r--src/mainboard/lenovo/t410/Kconfig6
-rw-r--r--src/mainboard/lenovo/t420/Kconfig6
-rw-r--r--src/mainboard/lenovo/t420s/Kconfig6
-rw-r--r--src/mainboard/lenovo/t430/Kconfig7
-rw-r--r--src/mainboard/lenovo/t430s/Kconfig6
-rw-r--r--src/mainboard/lenovo/t440p/Kconfig6
-rw-r--r--src/mainboard/lenovo/t520/Kconfig6
-rw-r--r--src/mainboard/lenovo/t530/Kconfig6
-rw-r--r--src/mainboard/lenovo/t60/Kconfig8
-rw-r--r--src/mainboard/lenovo/x131e/Kconfig6
-rw-r--r--src/mainboard/lenovo/x1_carbon_gen1/Kconfig6
-rw-r--r--src/mainboard/lenovo/x200/Kconfig6
-rw-r--r--src/mainboard/lenovo/x201/Kconfig6
-rw-r--r--src/mainboard/lenovo/x220/Kconfig6
-rw-r--r--src/mainboard/lenovo/x230/Kconfig6
-rw-r--r--src/mainboard/lenovo/x60/Kconfig6
22 files changed, 132 insertions, 4 deletions
diff --git a/Documentation/mainboard/lenovo/t440p.md b/Documentation/mainboard/lenovo/t440p.md
index fb0187075c..08df76fdca 100644
--- a/Documentation/mainboard/lenovo/t440p.md
+++ b/Documentation/mainboard/lenovo/t440p.md
@@ -31,8 +31,6 @@ the laptop able to power on.
## Known Issues
- No audio output when using a headphone
-- The touchpad is misconfigured, the 3 keys on top are all identified
- as left button
- Cannot get the mainboard serial number from the mainboard: the OEM
UEFI firmware gets the serial number from an "emulated EEPROM" via
I/O port 0x1630/0x1634, but it's still unknown how to make it work
diff --git a/src/drivers/pc80/pc/Kconfig b/src/drivers/pc80/pc/Kconfig
index 68138575ba..455ac2bee1 100644
--- a/src/drivers/pc80/pc/Kconfig
+++ b/src/drivers/pc80/pc/Kconfig
@@ -19,3 +19,15 @@ config DRIVERS_PS2_KEYBOARD
Otherwise say Y.
endif
+
+config PS2K_EISAID
+ string
+ default "PNP0303"
+ help
+ Mainboards can override the default to match vendor drivers and quirks.
+
+config PS2M_EISAID
+ string
+ default "PNP0F13"
+ help
+ Mainboards can override the default to match vendor drivers and quirks.
diff --git a/src/drivers/pc80/pc/ps2_controller.asl b/src/drivers/pc80/pc/ps2_controller.asl
index 210a687681..d37ea2e7fd 100644
--- a/src/drivers/pc80/pc/ps2_controller.asl
+++ b/src/drivers/pc80/pc/ps2_controller.asl
@@ -2,7 +2,7 @@
/* This file is part of the coreboot project. */
Device (PS2K) // Keyboard
{
- Name(_HID, EISAID("PNP0303"))
+ Name(_HID, EISAID(CONFIG_PS2K_EISAID))
Name(_CID, EISAID("PNP030B"))
Name(_CRS, ResourceTemplate()
@@ -20,7 +20,8 @@
Device (PS2M) // Mouse
{
- Name(_HID, EISAID("PNP0F13"))
+ Name(_HID, EISAID(CONFIG_PS2M_EISAID))
+ Name(_CID, EISAID("PNP0F13"))
Name(_CRS, ResourceTemplate()
{
IRQ (Edge, ActiveHigh, Exclusive) { 0x0c } // IRQ 12
diff --git a/src/mainboard/lenovo/l520/Kconfig b/src/mainboard/lenovo/l520/Kconfig
index 6716606ee4..5b9344a437 100644
--- a/src/mainboard/lenovo/l520/Kconfig
+++ b/src/mainboard/lenovo/l520/Kconfig
@@ -46,4 +46,10 @@ config USBDEBUG_HCD_INDEX
int
default 2
+config PS2K_EISAID
+ default "PNP0303"
+
+config PS2M_EISAID
+ default "LEN0017"
+
endif
diff --git a/src/mainboard/lenovo/s230u/Kconfig b/src/mainboard/lenovo/s230u/Kconfig
index 1248906630..64f4b29200 100644
--- a/src/mainboard/lenovo/s230u/Kconfig
+++ b/src/mainboard/lenovo/s230u/Kconfig
@@ -52,4 +52,10 @@ config VGA_BIOS_ID
string
default "8086,0166"
+config PS2K_EISAID
+ default "PTL0001"
+
+config PS2M_EISAID
+ default "LEN0031"
+
endif # BOARD_LENOVO_S230U
diff --git a/src/mainboard/lenovo/t400/Kconfig b/src/mainboard/lenovo/t400/Kconfig
index deb6c8e4bd..e6f56310a8 100644
--- a/src/mainboard/lenovo/t400/Kconfig
+++ b/src/mainboard/lenovo/t400/Kconfig
@@ -79,4 +79,10 @@ config CBFS_SIZE
hex
default 0x200000
+config PS2K_EISAID
+ default "LEN0010"
+
+config PS2M_EISAID
+ default "IBM3780"
+
endif # BOARD_LENOVO_T400
diff --git a/src/mainboard/lenovo/t410/Kconfig b/src/mainboard/lenovo/t410/Kconfig
index 86cfce8dfc..ee79f11e61 100644
--- a/src/mainboard/lenovo/t410/Kconfig
+++ b/src/mainboard/lenovo/t410/Kconfig
@@ -63,4 +63,10 @@ config DRAM_RESET_GATE_GPIO
int
default 10
+config PS2K_EISAID
+ default "PNP0303"
+
+config PS2M_EISAID
+ default "LEN0015"
+
endif
diff --git a/src/mainboard/lenovo/t420/Kconfig b/src/mainboard/lenovo/t420/Kconfig
index 7c715ed843..dfc8ed1d61 100644
--- a/src/mainboard/lenovo/t420/Kconfig
+++ b/src/mainboard/lenovo/t420/Kconfig
@@ -75,4 +75,10 @@ config VGA_BIOS_ID
string
default "8086,0126"
+config PS2K_EISAID
+ default "PNP0303"
+
+config PS2M_EISAID
+ default "LEN0015"
+
endif # BOARD_LENOVO_T420
diff --git a/src/mainboard/lenovo/t420s/Kconfig b/src/mainboard/lenovo/t420s/Kconfig
index 6af93ac887..f29d50fe96 100644
--- a/src/mainboard/lenovo/t420s/Kconfig
+++ b/src/mainboard/lenovo/t420s/Kconfig
@@ -74,4 +74,10 @@ config VGA_BIOS_ID
string
default "8086,0126"
+config PS2K_EISAID
+ default "PNP0303"
+
+config PS2M_EISAID
+ default "LEN0015"
+
endif # BOARD_LENOVO_T420S
diff --git a/src/mainboard/lenovo/t430/Kconfig b/src/mainboard/lenovo/t430/Kconfig
index 009377d78f..45c7ae307a 100644
--- a/src/mainboard/lenovo/t430/Kconfig
+++ b/src/mainboard/lenovo/t430/Kconfig
@@ -68,4 +68,11 @@ config MAX_CPUS
config USBDEBUG_HCD_INDEX
int
default 2
+
+config PS2K_EISAID
+ default "PNP0303"
+
+config PS2M_EISAID
+ default "LEN0015"
+
endif
diff --git a/src/mainboard/lenovo/t430s/Kconfig b/src/mainboard/lenovo/t430s/Kconfig
index 3ed0d0ecde..15b0912d44 100644
--- a/src/mainboard/lenovo/t430s/Kconfig
+++ b/src/mainboard/lenovo/t430s/Kconfig
@@ -84,4 +84,10 @@ config ONBOARD_VGA_IS_PRIMARY
bool
default y
+config PS2K_EISAID
+ default "PNP0303"
+
+config PS2M_EISAID
+ default "LEN0015"
+
endif # BOARD_LENOVO_T430S || BOARD_LENOVO_T431S
diff --git a/src/mainboard/lenovo/t440p/Kconfig b/src/mainboard/lenovo/t440p/Kconfig
index 95cb1dc607..e6785488df 100644
--- a/src/mainboard/lenovo/t440p/Kconfig
+++ b/src/mainboard/lenovo/t440p/Kconfig
@@ -70,4 +70,10 @@ config DRIVER_LENOVO_SERIALS
bool
default n
+config PS2K_EISAID
+ default "LEN0071"
+
+config PS2M_EISAID
+ default "LEN0036"
+
endif
diff --git a/src/mainboard/lenovo/t520/Kconfig b/src/mainboard/lenovo/t520/Kconfig
index a628adc646..aebb2dee46 100644
--- a/src/mainboard/lenovo/t520/Kconfig
+++ b/src/mainboard/lenovo/t520/Kconfig
@@ -84,4 +84,10 @@ config VGA_BIOS_FILE
string
default "pci8086,0126.rom"
+config PS2K_EISAID
+ default "PNP0303"
+
+config PS2M_EISAID
+ default "LEN0015"
+
endif
diff --git a/src/mainboard/lenovo/t530/Kconfig b/src/mainboard/lenovo/t530/Kconfig
index 0f8d3267f3..2a0e3ea039 100644
--- a/src/mainboard/lenovo/t530/Kconfig
+++ b/src/mainboard/lenovo/t530/Kconfig
@@ -85,4 +85,10 @@ config VGA_BIOS_ID
string
default "8086,0166"
+config PS2K_EISAID
+ default "LEN0071"
+
+config PS2M_EISAID
+ default "LEN0015"
+
endif
diff --git a/src/mainboard/lenovo/t60/Kconfig b/src/mainboard/lenovo/t60/Kconfig
index 58d41a6b57..57172ca25c 100644
--- a/src/mainboard/lenovo/t60/Kconfig
+++ b/src/mainboard/lenovo/t60/Kconfig
@@ -46,4 +46,12 @@ config MAX_CPUS
int
default 2
+config PS2K_EISAID
+ default "PNP0303" if BOARD_LENOVO_T60
+ default "PNP0303" if BOARD_LENOVO_R60
+
+config PS2M_EISAID
+ default "IBM0057" if BOARD_LENOVO_T60
+ default "IBM0057" if BOARD_LENOVO_R60
+
endif # BOARD_LENOVO_T60 || BOARD_LENOVO_Z61T || BOARD_LENOVO_R60
diff --git a/src/mainboard/lenovo/x131e/Kconfig b/src/mainboard/lenovo/x131e/Kconfig
index 29fda105f2..06c5d83737 100644
--- a/src/mainboard/lenovo/x131e/Kconfig
+++ b/src/mainboard/lenovo/x131e/Kconfig
@@ -56,4 +56,10 @@ config USBDEBUG_HCD_INDEX
int
default 2
+config PS2K_EISAID
+ default "MSF0001"
+
+config PS2M_EISAID
+ default "LEN0026"
+
endif # BOARD_LENOVO_X131E
diff --git a/src/mainboard/lenovo/x1_carbon_gen1/Kconfig b/src/mainboard/lenovo/x1_carbon_gen1/Kconfig
index 830ace427d..246e1db5aa 100644
--- a/src/mainboard/lenovo/x1_carbon_gen1/Kconfig
+++ b/src/mainboard/lenovo/x1_carbon_gen1/Kconfig
@@ -73,4 +73,10 @@ config VGA_BIOS_ID
string
default "8086,0166"
+config PS2K_EISAID
+ default "LEN0071"
+
+config PS2M_EISAID
+ default "LEN0030"
+
endif # BOARD_LENOVO_X1_CARBON_GEN1
diff --git a/src/mainboard/lenovo/x200/Kconfig b/src/mainboard/lenovo/x200/Kconfig
index 432c805078..731f4cb142 100644
--- a/src/mainboard/lenovo/x200/Kconfig
+++ b/src/mainboard/lenovo/x200/Kconfig
@@ -72,4 +72,10 @@ config CBFS_SIZE
hex
default 0x200000
+config PS2K_EISAID
+ default "LEN0010" if BOARD_LENOVO_X200
+
+config PS2M_EISAID
+ default "IBM3780" if BOARD_LENOVO_X200
+
endif # BOARD_LENOVO_X200 || BOARD_LENOVO_X301
diff --git a/src/mainboard/lenovo/x201/Kconfig b/src/mainboard/lenovo/x201/Kconfig
index 42cf8f956e..d73eac3c7d 100644
--- a/src/mainboard/lenovo/x201/Kconfig
+++ b/src/mainboard/lenovo/x201/Kconfig
@@ -68,4 +68,10 @@ config ME_CLEANER_ARGS
string
default "-S -w EFFS"
+config PS2K_EISAID
+ default "PNP0303"
+
+config PS2M_EISAID
+ default "LEN0018"
+
endif
diff --git a/src/mainboard/lenovo/x220/Kconfig b/src/mainboard/lenovo/x220/Kconfig
index 7c4754dbbd..33e15a81cc 100644
--- a/src/mainboard/lenovo/x220/Kconfig
+++ b/src/mainboard/lenovo/x220/Kconfig
@@ -87,4 +87,10 @@ config VGA_BIOS_ID
default "8086,0116" if BOARD_LENOVO_X220I
default "8086,0126"
+config PS2K_EISAID
+ default "PNP0303"
+
+config PS2M_EISAID
+ default "LEN0020"
+
endif # BOARD_LENOVO_X220 || BOARD_LENOVO_X220I || BOARD_LENOVO_X1
diff --git a/src/mainboard/lenovo/x230/Kconfig b/src/mainboard/lenovo/x230/Kconfig
index b25d7cf858..7d563efb2b 100644
--- a/src/mainboard/lenovo/x230/Kconfig
+++ b/src/mainboard/lenovo/x230/Kconfig
@@ -75,4 +75,10 @@ config VGA_BIOS_ID
string
default "8086,0166"
+config PS2K_EISAID
+ default "PNP0303"
+
+config PS2M_EISAID
+ default "LEN0020"
+
endif # BOARD_LENOVO_X230 || BOARD_LENOVO_X230T
diff --git a/src/mainboard/lenovo/x60/Kconfig b/src/mainboard/lenovo/x60/Kconfig
index 1815892d4a..994a071fa3 100644
--- a/src/mainboard/lenovo/x60/Kconfig
+++ b/src/mainboard/lenovo/x60/Kconfig
@@ -42,4 +42,10 @@ config MAX_CPUS
int
default 2
+config PS2K_EISAID
+ default "PNP0303"
+
+config PS2M_EISAID
+ default "IBM3780"
+
endif