mb/lenovo/x200: Fix boot-time docking state

The X200 would undock itself when waking up from S3, requiring a
physical reconnection before the dock would work again.

Similar to 4611ad8, this reintroduces h8_mb_init() for the X200. A hook
function h8_mb_init() will be called at the end of h8_enable(), in place
of the ancient h8_mainboard_init_dock().

This should fix the regression the X201 and T410 also suffered from for
the X200.

Change-Id: Icb6dd145e56b90e0e04133810c5e9ac7b641ad68
Signed-off-by: Kevin Keijzer <kevin@quietlife.nl>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/51123
Reviewed-by: Alexander Couzens <lynxis@fe80.eu>
Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
Reviewed-by: Arthur Heymans <arthur@aheymans.xyz>
Reviewed-by: Nico Huber <nico.h@gmx.de>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
Kevin Keijzer 2021-03-01 00:37:35 +01:00 committed by Nico Huber
parent da12ca98c9
commit 51b1b2a0c4
2 changed files with 3 additions and 4 deletions

View File

@ -17,8 +17,6 @@ static void mainboard_enable(struct device *dev)
GMA_INT15_BOOT_DISPLAY_DEFAULT, 2); GMA_INT15_BOOT_DISPLAY_DEFAULT, 2);
dev->ops->acpi_fill_ssdt = fill_ssdt; dev->ops->acpi_fill_ssdt = fill_ssdt;
if (CONFIG(BOARD_LENOVO_X200))
init_dock();
} }
struct chip_operations mainboard_ops = { struct chip_operations mainboard_ops = {

View File

@ -8,13 +8,14 @@
#include "../../dock.h" #include "../../dock.h"
void init_dock(void) void h8_mb_init(void)
{ {
if (dock_present()) { if (dock_present()) {
printk(BIOS_DEBUG, "dock is connected\n"); printk(BIOS_DEBUG, "dock is connected\n");
dock_connect(); dock_connect();
} else } else {
printk(BIOS_DEBUG, "dock is not connected\n"); printk(BIOS_DEBUG, "dock is not connected\n");
}
} }
void dock_connect(void) void dock_connect(void)