Patrick Georgi has submitted this change. ( https://review.coreboot.org/c/coreboot/+/36371 )
Change subject: mainboard/lenovo: Use the original hardware ids for keyboard/pointing ......................................................................
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.ht... Keyboard: PNP0303 Pointing: IBM0057
R60: https://openbenchmarking.org/system/1202279-AR-COMPRESS715/Lenovo%20R60/dmes... Keyboard: PNP0303 Pointing: IBM0057
X60: https://github.com/pavelmachek/missy/blob/master/db/notebook/lenovo/thinkpad... 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... 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/len... 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....
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 --- M Documentation/mainboard/lenovo/t440p.md M src/drivers/pc80/pc/Kconfig M src/drivers/pc80/pc/ps2_controller.asl M src/mainboard/lenovo/l520/Kconfig M src/mainboard/lenovo/s230u/Kconfig M src/mainboard/lenovo/t400/Kconfig M src/mainboard/lenovo/t410/Kconfig M src/mainboard/lenovo/t420/Kconfig M src/mainboard/lenovo/t420s/Kconfig M src/mainboard/lenovo/t430/Kconfig M src/mainboard/lenovo/t430s/Kconfig M src/mainboard/lenovo/t440p/Kconfig M src/mainboard/lenovo/t520/Kconfig M src/mainboard/lenovo/t530/Kconfig M src/mainboard/lenovo/t60/Kconfig M src/mainboard/lenovo/x131e/Kconfig M src/mainboard/lenovo/x1_carbon_gen1/Kconfig M src/mainboard/lenovo/x200/Kconfig M src/mainboard/lenovo/x201/Kconfig M src/mainboard/lenovo/x220/Kconfig M src/mainboard/lenovo/x230/Kconfig M src/mainboard/lenovo/x60/Kconfig 22 files changed, 132 insertions(+), 4 deletions(-)
Approvals: build bot (Jenkins): Verified Nico Huber: Looks good to me, approved
diff --git a/Documentation/mainboard/lenovo/t440p.md b/Documentation/mainboard/lenovo/t440p.md index fb01870..08df76f 100644 --- a/Documentation/mainboard/lenovo/t440p.md +++ b/Documentation/mainboard/lenovo/t440p.md @@ -31,8 +31,6 @@ ## 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 6813857..455ac2b 100644 --- a/src/drivers/pc80/pc/Kconfig +++ b/src/drivers/pc80/pc/Kconfig @@ -19,3 +19,15 @@ 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 210a687..d37ea2e 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 6716606..5b9344a 100644 --- a/src/mainboard/lenovo/l520/Kconfig +++ b/src/mainboard/lenovo/l520/Kconfig @@ -46,4 +46,10 @@ 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 1248906..64f4b29 100644 --- a/src/mainboard/lenovo/s230u/Kconfig +++ b/src/mainboard/lenovo/s230u/Kconfig @@ -52,4 +52,10 @@ 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 deb6c8e..e6f5631 100644 --- a/src/mainboard/lenovo/t400/Kconfig +++ b/src/mainboard/lenovo/t400/Kconfig @@ -79,4 +79,10 @@ 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 86cfce8..ee79f11 100644 --- a/src/mainboard/lenovo/t410/Kconfig +++ b/src/mainboard/lenovo/t410/Kconfig @@ -63,4 +63,10 @@ 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 7c715ed..dfc8ed1 100644 --- a/src/mainboard/lenovo/t420/Kconfig +++ b/src/mainboard/lenovo/t420/Kconfig @@ -75,4 +75,10 @@ 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 6af93ac..f29d50f 100644 --- a/src/mainboard/lenovo/t420s/Kconfig +++ b/src/mainboard/lenovo/t420s/Kconfig @@ -74,4 +74,10 @@ 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 009377d..45c7ae3 100644 --- a/src/mainboard/lenovo/t430/Kconfig +++ b/src/mainboard/lenovo/t430/Kconfig @@ -68,4 +68,11 @@ 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 3ed0d0e..15b0912 100644 --- a/src/mainboard/lenovo/t430s/Kconfig +++ b/src/mainboard/lenovo/t430s/Kconfig @@ -84,4 +84,10 @@ 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 95cb1dc..e678548 100644 --- a/src/mainboard/lenovo/t440p/Kconfig +++ b/src/mainboard/lenovo/t440p/Kconfig @@ -70,4 +70,10 @@ 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 a628adc..aebb2de 100644 --- a/src/mainboard/lenovo/t520/Kconfig +++ b/src/mainboard/lenovo/t520/Kconfig @@ -84,4 +84,10 @@ 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 0f8d326..2a0e3ea 100644 --- a/src/mainboard/lenovo/t530/Kconfig +++ b/src/mainboard/lenovo/t530/Kconfig @@ -85,4 +85,10 @@ 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 58d41a6..57172ca 100644 --- a/src/mainboard/lenovo/t60/Kconfig +++ b/src/mainboard/lenovo/t60/Kconfig @@ -46,4 +46,12 @@ 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 29fda10..06c5d83 100644 --- a/src/mainboard/lenovo/x131e/Kconfig +++ b/src/mainboard/lenovo/x131e/Kconfig @@ -56,4 +56,10 @@ 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 830ace4..246e1db 100644 --- a/src/mainboard/lenovo/x1_carbon_gen1/Kconfig +++ b/src/mainboard/lenovo/x1_carbon_gen1/Kconfig @@ -73,4 +73,10 @@ 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 432c805..731f4cb 100644 --- a/src/mainboard/lenovo/x200/Kconfig +++ b/src/mainboard/lenovo/x200/Kconfig @@ -72,4 +72,10 @@ 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 42cf8f9..d73eac3 100644 --- a/src/mainboard/lenovo/x201/Kconfig +++ b/src/mainboard/lenovo/x201/Kconfig @@ -68,4 +68,10 @@ 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 7c4754d..33e15a8 100644 --- a/src/mainboard/lenovo/x220/Kconfig +++ b/src/mainboard/lenovo/x220/Kconfig @@ -87,4 +87,10 @@ 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 b25d7cf..7d563ef 100644 --- a/src/mainboard/lenovo/x230/Kconfig +++ b/src/mainboard/lenovo/x230/Kconfig @@ -75,4 +75,10 @@ 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 1815892..994a071 100644 --- a/src/mainboard/lenovo/x60/Kconfig +++ b/src/mainboard/lenovo/x60/Kconfig @@ -42,4 +42,10 @@ int default 2
+config PS2K_EISAID + default "PNP0303" + +config PS2M_EISAID + default "IBM3780" + endif