diff options
author | Kyösti Mälkki <kyosti.malkki@gmail.com> | 2022-12-02 17:59:35 +0200 |
---|---|---|
committer | Kyösti Mälkki <kyosti.malkki@gmail.com> | 2022-12-07 04:51:39 +0000 |
commit | 791f7a4f63fe80dd64da69164143808343c025d5 (patch) | |
tree | 0abc6d3f720bb4a9942ca918fcb88898d2467cba /src/mainboard/lenovo/t60 | |
parent | dbbbb8f5c139e190e8b8cdf0564d34b07ceacd83 (diff) |
mb/lenovo/t60,x60: Split dock_(dis)connect() function
Avoid calling a function named mainboard_io_trap_handler() when
the dock (dis)connect is not triggered from IO trap.
Change-Id: Idc258a390f2de2c32d38a0e35fcce896d058d1b9
Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/70363
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
Reviewed-by: Arthur Heymans <arthur@aheymans.xyz>
Diffstat (limited to 'src/mainboard/lenovo/t60')
-rw-r--r-- | src/mainboard/lenovo/t60/smihandler.c | 52 |
1 files changed, 31 insertions, 21 deletions
diff --git a/src/mainboard/lenovo/t60/smihandler.c b/src/mainboard/lenovo/t60/smihandler.c index 12a1e53be0..e87362bd92 100644 --- a/src/mainboard/lenovo/t60/smihandler.c +++ b/src/mainboard/lenovo/t60/smihandler.c @@ -45,32 +45,42 @@ static void mainboard_smi_brightness_up(void) *(bar+LVTMA_BL_MOD_LEVEL) += 0x10; } +static void mainboard_smi_dock_connect(void) +{ + /* If there's an legacy I/O module present, we're not + * allowed to connect the Docking LPC Bus, as both Super I/O + * chips are using 0x2e as base address. + */ + if (legacy_io_present()) + return; + + if (!dock_connect()) { + /* set dock LED to indicate status */ + ec_write(0x0c, 0x08); + ec_write(0x0c, 0x89); + } else { + /* blink dock LED to indicate failure */ + ec_write(0x0c, 0xc8); + ec_write(0x0c, 0x09); + } +} + +static void mainboard_smi_dock_disconnect(void) +{ + dock_disconnect(); + ec_write(0x0c, 0x09); + ec_write(0x0c, 0x08); +} + int mainboard_io_trap_handler(int smif) { switch (smif) { case SMI_DOCK_CONNECT: - /* If there's an legacy I/O module present, we're not - * allowed to connect the Docking LPC Bus, as both Super I/O - * chips are using 0x2e as base address. - */ - if (legacy_io_present()) - break; - - if (!dock_connect()) { - /* set dock LED to indicate status */ - ec_write(0x0c, 0x08); - ec_write(0x0c, 0x89); - } else { - /* blink dock LED to indicate failure */ - ec_write(0x0c, 0xc8); - ec_write(0x0c, 0x09); - } + mainboard_smi_dock_connect(); break; case SMI_DOCK_DISCONNECT: - dock_disconnect(); - ec_write(0x0c, 0x09); - ec_write(0x0c, 0x08); + mainboard_smi_dock_disconnect(); break; case SMI_BRIGHTNESS_UP: @@ -116,11 +126,11 @@ static void mainboard_smi_handle_ec_sci(void) case 0x27: /* undock event */ case 0x50: - mainboard_io_trap_handler(SMI_DOCK_DISCONNECT); + mainboard_smi_dock_disconnect(); break; /* dock event */ case 0x37: - mainboard_io_trap_handler(SMI_DOCK_CONNECT); + mainboard_smi_dock_connect(); break; default: break; |