Patrick Georgi has submitted this change. ( https://review.coreboot.org/c/coreboot/+/35864 )
Change subject: mb/lenovo/{t60,r60}: Add ThinkPad R60 support as variant board ......................................................................
mb/lenovo/{t60,r60}: Add ThinkPad R60 support as variant board
- This port should be Reclaim Your Freedom compliant (not certified yet). - Untested on boards with external Radeon graphics adapter. - Some columns on the left-most side of display are completely black on 1400x1050 IPS display[1]. Display works fine on Linux. I don't know why it appears like that. So far it has been observed only with native graphics initialization. - Only GRUB2 and SeaBIOS payloads tested for now. - 2504 docking station USB doesn't work under Linux. Can detect pendrive in GRUB2 payload. - Sometimes it takes 20s of "pretending it's powered off" to run coreboot code. Issue is payload agnostic. Probably caused by missing one capacitor on my unit.
[1] https://imgur.com/a/0wpMGsm
Change-Id: Ibd9208a5eafd228f8eedbc8fb4f4eb9ed1932a14 Signed-off-by: Maciej Matuszczyk maccraft123mc@gmail.com Reviewed-on: https://review.coreboot.org/c/coreboot/+/35864 Tested-by: build bot (Jenkins) no-reply@coreboot.org Reviewed-by: Arthur Heymans arthur@aheymans.xyz --- M Documentation/mainboard/index.md A Documentation/mainboard/lenovo/r60.md A Documentation/mainboard/lenovo/r60_chip.jpg M src/mainboard/lenovo/t60/Kconfig M src/mainboard/lenovo/t60/Kconfig.name M src/mainboard/lenovo/t60/board_info.txt M src/mainboard/lenovo/t60/gpio.c M src/mainboard/lenovo/t60/variants/t60/board_info.txt 8 files changed, 81 insertions(+), 17 deletions(-)
Approvals: build bot (Jenkins): Verified Arthur Heymans: Looks good to me, approved
diff --git a/Documentation/mainboard/index.md b/Documentation/mainboard/index.md index 2aa2763..4c9d08c 100644 --- a/Documentation/mainboard/index.md +++ b/Documentation/mainboard/index.md @@ -65,6 +65,7 @@
- [Mainboard codenames](lenovo/codenames.md) - [Hardware Maintenance Manual of ThinkPads](lenovo/thinkpad_hmm.md) +- [R60](lenovo/r60.md) - [T4xx common](lenovo/t4xx_series.md) - [X2xx common](lenovo/x2xx_series.md)
diff --git a/Documentation/mainboard/lenovo/r60.md b/Documentation/mainboard/lenovo/r60.md new file mode 100644 index 0000000..91854fb --- /dev/null +++ b/Documentation/mainboard/lenovo/r60.md @@ -0,0 +1,44 @@ +# Lenovo Thinkpad R60 + +Untested on boards with external Radeon graphics adapter. If you have such +board, proceed at your own risk and document if it does work. + +## Flashing instructions + +### External flashing + +The flash IC is located at the bottom center of the mainboard. Access to +the flash chip is blocked by the magnesium frame, so you need to disassemble +the entire laptop and remove the mainboard. The flash chip is referenced as U49 in +the schematics and in the boardview. + +![](r60_chip.jpg) + +To disassemble the laptop, follow the [Hardware Maintenance Manual](https://thinkpads.com/support/hmm/hmm_pdf/42x3749_02.pdf). + +### Internal flashing on Vendor BIOS + +This [method](https://gist.github.com/ArthurHeymans/c5ef494ada01af372735f237f6c6adbe) describes a way to install coreboot with vendor firmware still +installed on the Lenovo Thinkpad X60. It is reported to also work in Thinkpad +R60, with the only difference being the board target you build coreboot for. + +### Flashing on coreboot + +Default configuration of coreboot doesn't feature any flash restrictions +like the vendor firmware, therefore flashrom is able to flash any rom without problems. + +## Things tested and working in Linux 5.3: + +- Intel WiFi card +- Suspend and resume +- Native graphics initialization. Both legacy VGA and linear framebuffer work +- GRUB2 2.04 and SeaBIOS 1.12.1 payloads +- Reflashing with flashrom (use flashrom-git as of 17.09.2019) +- 2G+1G memory configuration working +- 2504 dock USB ports if not hotplugged + +## Things tested and not working: + +- 2504 dock hotplugging +- Black bar at the left side of the screen. Doesn't appear in Linux. See picture at top +- Sometimes it takes several second to run coreboot. Just wait for it diff --git a/Documentation/mainboard/lenovo/r60_chip.jpg b/Documentation/mainboard/lenovo/r60_chip.jpg new file mode 100644 index 0000000..94d26a1 --- /dev/null +++ b/Documentation/mainboard/lenovo/r60_chip.jpg Binary files differ diff --git a/src/mainboard/lenovo/t60/Kconfig b/src/mainboard/lenovo/t60/Kconfig index ad74f63..bc8fa29 100644 --- a/src/mainboard/lenovo/t60/Kconfig +++ b/src/mainboard/lenovo/t60/Kconfig @@ -1,4 +1,4 @@ -if BOARD_LENOVO_T60 || BOARD_LENOVO_Z61T +if BOARD_LENOVO_T60 || BOARD_LENOVO_Z61T || BOARD_LENOVO_R60
config BOARD_SPECIFIC_OPTIONS def_bool y @@ -30,7 +30,7 @@
config VARIANT_DIR string - default "t60" if BOARD_LENOVO_T60 + default "t60" if BOARD_LENOVO_T60 || BOARD_LENOVO_R60 default "z61t" if BOARD_LENOVO_Z61T
config OVERRIDE_DEVICETREE @@ -41,9 +41,10 @@ string default "ThinkPad T60" if BOARD_LENOVO_T60 default "ThinkPad Z61t" if BOARD_LENOVO_Z61T + default "ThinkPad R60" if BOARD_LENOVO_R60
config MAX_CPUS int default 2
-endif # BOARD_LENOVO_T60 || BOARD_LENOVO_Z61T +endif # BOARD_LENOVO_T60 || BOARD_LENOVO_Z61T || BOARD_LENOVO_R60 diff --git a/src/mainboard/lenovo/t60/Kconfig.name b/src/mainboard/lenovo/t60/Kconfig.name index 4cf8def..454ac52 100644 --- a/src/mainboard/lenovo/t60/Kconfig.name +++ b/src/mainboard/lenovo/t60/Kconfig.name @@ -3,3 +3,6 @@
config BOARD_LENOVO_Z61T bool "ThinkPad Z61t" + +config BOARD_LENOVO_R60 + bool "ThinkPad R60" diff --git a/src/mainboard/lenovo/t60/board_info.txt b/src/mainboard/lenovo/t60/board_info.txt index 19e2d1e..3b7137a 100644 --- a/src/mainboard/lenovo/t60/board_info.txt +++ b/src/mainboard/lenovo/t60/board_info.txt @@ -1,5 +1,5 @@ Vendor name: Lenovo -Board name: ThinkPad T60/T60p/Z61t baseboard +Board name: ThinkPad R60/T60/T60p/Z61t baseboard Category: laptop ROM package: SOIC-8 ROM protocol: SPI diff --git a/src/mainboard/lenovo/t60/gpio.c b/src/mainboard/lenovo/t60/gpio.c index f220b2b..2ddeb04 100644 --- a/src/mainboard/lenovo/t60/gpio.c +++ b/src/mainboard/lenovo/t60/gpio.c @@ -2,6 +2,7 @@ * This file is part of the coreboot project. * * Copyright (C) 2016 Arthur Heymans arthur@aheymans.xyz + * Copyright (C) 2019 Maciej Matuszczyk * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -16,21 +17,24 @@ #include <southbridge/intel/common/gpio.h>
static const struct pch_gpio_set1 pch_gpio_set1_mode = { - .gpio1 = GPIO_MODE_GPIO, + .gpio1 = GPIO_MODE_GPIO, /* DASP_BAY# */ .gpio6 = GPIO_MODE_GPIO, /* LEGACYIO# */ .gpio7 = GPIO_MODE_GPIO, /* BDC_PRESENCE# */ .gpio8 = GPIO_MODE_GPIO, /* H8_WAKE# */ - .gpio9 = GPIO_MODE_GPIO, + .gpio9 = GPIO_MODE_GPIO, /* Pulled Up */ .gpio10 = GPIO_MODE_GPIO, /* MDI_DETECT */ .gpio12 = GPIO_MODE_GPIO, /* H8SCI# */ - .gpio13 = GPIO_MODE_GPIO, + .gpio13 = GPIO_MODE_GPIO, /* Pulled Up */ .gpio14 = GPIO_MODE_GPIO, /* CPUSB# */ .gpio15 = GPIO_MODE_GPIO, /* CPPE# */ - .gpio19 = GPIO_MODE_GPIO, - .gpio22 = GPIO_MODE_GPIO, - .gpio24 = GPIO_MODE_GPIO, + .gpio19 = GPIO_MODE_GPIO, /* GBE_RS# */ +#if CONFIG(BOARD_LENOVO_R60) + .gpio21 = GPIO_MODE_GPIO, /* LCD_PRESENCE# */ +#endif + .gpio22 = GPIO_MODE_GPIO, /* FWH_WP# */ + .gpio24 = GPIO_MODE_GPIO, /* Pulled Down */ .gpio25 = GPIO_MODE_GPIO, /* MDC_KILL# */ - .gpio26 = GPIO_MODE_GPIO, + .gpio26 = GPIO_MODE_GPIO, /* Pulled Down */ .gpio27 = GPIO_MODE_GPIO, /* EXC_PWR_CTRL */ .gpio28 = GPIO_MODE_GPIO, /* EXC_AUX_CTRL */ }; @@ -47,7 +51,12 @@ .gpio14 = GPIO_DIR_INPUT, .gpio15 = GPIO_DIR_INPUT, .gpio19 = GPIO_DIR_OUTPUT, +#if CONFIG(BOARD_LENOVO_R60) + .gpio21 = GPIO_DIR_INPUT, + .gpio22 = GPIO_DIR_OUTPUT, +#else .gpio22 = GPIO_DIR_INPUT, +#endif .gpio24 = GPIO_DIR_OUTPUT, .gpio25 = GPIO_DIR_OUTPUT, .gpio26 = GPIO_DIR_OUTPUT, @@ -77,14 +86,20 @@ };
static const struct pch_gpio_set2 pch_gpio_set2_mode = { - .gpio36 = GPIO_MODE_GPIO, /*PLANARID0 */ - .gpio37 = GPIO_MODE_GPIO, /*PLANARID1 */ - .gpio38 = GPIO_MODE_GPIO, /*PLANARID2 */ - .gpio39 = GPIO_MODE_GPIO, /*PLANARID3 */ - .gpio48 = GPIO_MODE_GPIO, +#if CONFIG(BOARD_LENOVO_R60) + .gpio34 = GPIO_MODE_GPIO, /* SMB_3B_EN */ +#endif + .gpio36 = GPIO_MODE_GPIO, /* PLANARID0 */ + .gpio37 = GPIO_MODE_GPIO, /* PLANARID1 */ + .gpio38 = GPIO_MODE_GPIO, /* PLANARID2 */ + .gpio39 = GPIO_MODE_GPIO, /* PLANARID3 */ + .gpio48 = GPIO_MODE_GPIO, /* FWH_TBL# */ };
static const struct pch_gpio_set2 pch_gpio_set2_direction = { +#if CONFIG(BOARD_LENOVO_R60) + .gpio34 = GPIO_DIR_INPUT, +#endif .gpio36 = GPIO_DIR_INPUT, .gpio37 = GPIO_DIR_INPUT, .gpio38 = GPIO_DIR_INPUT, diff --git a/src/mainboard/lenovo/t60/variants/t60/board_info.txt b/src/mainboard/lenovo/t60/variants/t60/board_info.txt index 9ba2f57..d7c759c 100644 --- a/src/mainboard/lenovo/t60/variants/t60/board_info.txt +++ b/src/mainboard/lenovo/t60/variants/t60/board_info.txt @@ -1,5 +1,5 @@ Vendor name: Lenovo -Board name: ThinkPad T60/T60p +Board name: ThinkPad R60/T60/T60p Category: laptop ROM package: SOIC-8 ROM protocol: SPI