From 8b50b56ec90b44ea1255878d2640a361d6f03efa Mon Sep 17 00:00:00 2001 From: Tim Wawrzynczak Date: Mon, 10 Feb 2020 13:14:36 -0700 Subject: hatch: Add check for convertible SKUs in lid_angle_peripheral_enable Check for a convertible SKU before turning off the keyboard in the switch to tablet mode. See go/hatch-skus for the list. BUG=b:125936966 BRANCH=firmware-hatch-12672.B TEST=On Kohaku, artificially force SKU to both convertible and non-convertible SKUs, switch to tablet mode, and then check whether Alt-Volup-R reboots the EC. Change-Id: Id29644c4e050705203b860324f14b1b87bc4ccf4 Signed-off-by: Tim Wawrzynczak Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2047630 Reviewed-by: Paul Fagerburg (cherry picked from commit b6adca6689753bdbe798cd1e0a56f8a4df749445) Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2062854 --- baseboard/hatch/baseboard.c | 9 +++++---- baseboard/hatch/baseboard.h | 1 + board/akemi/board.c | 8 ++++++++ board/hatch/board.c | 7 +++++++ board/helios/board.c | 7 +++++++ board/jinlon/board.c | 8 ++++++++ board/kindred/board.c | 2 +- board/kohaku/board.c | 7 +++++++ board/stryke/board.c | 7 +++++++ 9 files changed, 51 insertions(+), 5 deletions(-) diff --git a/baseboard/hatch/baseboard.c b/baseboard/hatch/baseboard.c index 7b0456ab8d..09c69a10dd 100644 --- a/baseboard/hatch/baseboard.c +++ b/baseboard/hatch/baseboard.c @@ -342,10 +342,11 @@ void baseboard_mst_enable_control(enum mst_source src, int level) #ifndef TEST_BUILD void lid_angle_peripheral_enable(int enable) { - /* TODO(b/125936966): Need to add SKU dependency for convertibles */ - if (chipset_in_state(CHIPSET_STATE_ANY_OFF)) - enable = 0; - keyboard_scan_enable(enable, KB_SCAN_DISABLE_LID_ANGLE); + if (board_is_convertible()) { + if (chipset_in_state(CHIPSET_STATE_ANY_OFF)) + enable = 0; + keyboard_scan_enable(enable, KB_SCAN_DISABLE_LID_ANGLE); + } } #endif diff --git a/baseboard/hatch/baseboard.h b/baseboard/hatch/baseboard.h index 200480e152..09ea0056a7 100644 --- a/baseboard/hatch/baseboard.h +++ b/baseboard/hatch/baseboard.h @@ -200,6 +200,7 @@ unsigned char get_board_sku(void); unsigned char get_board_id(void); void board_reset_pd_mcu(void); void baseboard_mst_enable_control(enum mst_source, int level); +bool board_is_convertible(void); /* Check with variant about battery presence. */ enum battery_present variant_battery_present(void); diff --git a/board/akemi/board.c b/board/akemi/board.c index 3c5235456d..42a817c84c 100644 --- a/board/akemi/board.c +++ b/board/akemi/board.c @@ -432,3 +432,11 @@ static void board_chipset_shutdown(void) sb_quick_charge_mode(SB_QUICK_CHARGE_ENABLE); } DECLARE_HOOK(HOOK_CHIPSET_SHUTDOWN, board_chipset_shutdown, HOOK_PRIO_DEFAULT); + +bool board_is_convertible(void) +{ + const uint8_t sku = get_board_sku(); + + return (sku == 255) || (sku == 1) || (sku == 2) || (sku == 3) || + (sku == 4); +} diff --git a/board/hatch/board.c b/board/hatch/board.c index bf1bca7291..ed074f92cb 100644 --- a/board/hatch/board.c +++ b/board/hatch/board.c @@ -492,3 +492,10 @@ void board_overcurrent_event(int port, int is_overcurrented) /* Note that the level is inverted because the pin is active low. */ gpio_set_level(GPIO_USB_C_OC_ODL, !is_overcurrented); } + +bool board_is_convertible(void) +{ + const uint8_t sku = get_board_sku(); + + return (sku == 255); +} diff --git a/board/helios/board.c b/board/helios/board.c index 5d4c658618..c6e6ceacff 100644 --- a/board/helios/board.c +++ b/board/helios/board.c @@ -409,3 +409,10 @@ int board_tcpc_post_init(int port) return rv; } + +bool board_is_convertible(void) +{ + const uint8_t sku = get_board_sku(); + + return (sku == 255) || (sku == 1); +} diff --git a/board/jinlon/board.c b/board/jinlon/board.c index 64ea23dddc..41e99d8d6a 100644 --- a/board/jinlon/board.c +++ b/board/jinlon/board.c @@ -431,3 +431,11 @@ const int keyboard_factory_scan_pins[][2] = { const int keyboard_factory_scan_pins_used = ARRAY_SIZE(keyboard_factory_scan_pins); #endif + +bool board_is_convertible(void) +{ + const uint8_t sku = get_board_sku(); + + return (sku == 255) || (sku == 1) || (sku == 2) || (sku == 21) || + (sku == 22); +} diff --git a/board/kindred/board.c b/board/kindred/board.c index 8c768e2575..2fb1690914 100644 --- a/board/kindred/board.c +++ b/board/kindred/board.c @@ -411,7 +411,7 @@ static void board_gpio_set_pp5000(void) } -static bool board_is_convertible(void) +bool board_is_convertible(void) { uint8_t sku_id = get_board_sku(); /* SKU ID of Kled : 1, 2, 3, 4 */ diff --git a/board/kohaku/board.c b/board/kohaku/board.c index 144c316806..8fa6931b45 100644 --- a/board/kohaku/board.c +++ b/board/kohaku/board.c @@ -480,3 +480,10 @@ void board_overcurrent_event(int port, int is_overcurrented) /* Note that the level is inverted because the pin is active low. */ gpio_set_level(GPIO_USB_C_OC_ODL, !is_overcurrented); } + +bool board_is_convertible(void) +{ + const uint8_t sku = get_board_sku(); + + return (sku == 255) || (sku == 1); +} diff --git a/board/stryke/board.c b/board/stryke/board.c index f7df3b6989..5eda65612f 100644 --- a/board/stryke/board.c +++ b/board/stryke/board.c @@ -408,3 +408,10 @@ void board_overcurrent_event(int port, int is_overcurrented) /* Note that the level is inverted because the pin is active low. */ gpio_set_level(GPIO_USB_C_OC_ODL, !is_overcurrented); } + +bool board_is_convertible(void) +{ + const uint8_t sku = get_board_sku(); + + return (sku == 255); +} -- cgit v1.2.1