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>
This commit is contained in:
dalao 2019-10-27 17:08:34 +08:00 committed by Patrick Georgi
parent 65535332db
commit 56a25a98db
22 changed files with 132 additions and 4 deletions

View File

@ -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

View File

@ -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.

View File

@ -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

View File

@ -46,4 +46,10 @@ config USBDEBUG_HCD_INDEX
int
default 2
config PS2K_EISAID
default "PNP0303"
config PS2M_EISAID
default "LEN0017"
endif

View File

@ -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

View File

@ -79,4 +79,10 @@ config CBFS_SIZE
hex
default 0x200000
config PS2K_EISAID
default "LEN0010"
config PS2M_EISAID
default "IBM3780"
endif # BOARD_LENOVO_T400

View File

@ -63,4 +63,10 @@ config DRAM_RESET_GATE_GPIO
int
default 10
config PS2K_EISAID
default "PNP0303"
config PS2M_EISAID
default "LEN0015"
endif

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -70,4 +70,10 @@ config DRIVER_LENOVO_SERIALS
bool
default n
config PS2K_EISAID
default "LEN0071"
config PS2M_EISAID
default "LEN0036"
endif

View File

@ -84,4 +84,10 @@ config VGA_BIOS_FILE
string
default "pci8086,0126.rom"
config PS2K_EISAID
default "PNP0303"
config PS2M_EISAID
default "LEN0015"
endif

View File

@ -85,4 +85,10 @@ config VGA_BIOS_ID
string
default "8086,0166"
config PS2K_EISAID
default "LEN0071"
config PS2M_EISAID
default "LEN0015"
endif

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -68,4 +68,10 @@ config ME_CLEANER_ARGS
string
default "-S -w EFFS"
config PS2K_EISAID
default "PNP0303"
config PS2M_EISAID
default "LEN0018"
endif

View File

@ -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

View File

@ -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

View File

@ -42,4 +42,10 @@ config MAX_CPUS
int
default 2
config PS2K_EISAID
default "PNP0303"
config PS2M_EISAID
default "IBM3780"
endif