From 8e6cbfe9da81862da48c250737cb9e77d175b2b3 Mon Sep 17 00:00:00 2001 From: Ting Shen Date: Fri, 2 Aug 2019 20:29:30 +0800 Subject: kukui: fix tcpc_init failed on kukui Calling board_pogo_charge_init() when DEDICATED_CHARGE_PORT disabled causes buffer overflow inside charge manager, move the function to a suitable place to fix the issue. BUG=b:138741956 TEST=flash and verify that kukui is bootable BRANCH=master Change-Id: I43d8aabf8fd21ed62a37671ba7cd471c8c188b9f Signed-off-by: Ting Shen Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1731212 Tested-by: Ting Shen Commit-Queue: Yilun Lin Reviewed-by: Yilun Lin --- board/kukui/base_detect_krane.c | 11 +++++++++++ board/kukui/board.c | 13 ++----------- board/kukui/board.h | 2 ++ 3 files changed, 15 insertions(+), 11 deletions(-) (limited to 'board/kukui') diff --git a/board/kukui/base_detect_krane.c b/board/kukui/base_detect_krane.c index 2ec9fa7d2e..13f0fc6744 100644 --- a/board/kukui/base_detect_krane.c +++ b/board/kukui/base_detect_krane.c @@ -159,3 +159,14 @@ static void base_init(void) hook_call_deferred(&base_detect_deferred_data, 0); } DECLARE_HOOK(HOOK_INIT, base_init, HOOK_PRIO_INIT_ADC + 1); + +static void board_pogo_charge_init(void) +{ + int i; + + /* Initialize all charge suppliers to 0 */ + for (i = 0; i < CHARGE_SUPPLIER_COUNT; i++) + charge_manager_update_charge(i, CHARGE_PORT_POGO, NULL); +} +DECLARE_HOOK(HOOK_INIT, board_pogo_charge_init, + HOOK_PRIO_CHARGE_MANAGER_INIT + 1); diff --git a/board/kukui/board.c b/board/kukui/board.c index 3f6fa326a4..2f6315426b 100644 --- a/board/kukui/board.c +++ b/board/kukui/board.c @@ -117,17 +117,6 @@ uint16_t tcpc_get_alert_status(void) return status; } -static void board_pogo_charge_init(void) -{ - int i; - - /* Initialize all charge suppliers to 0 */ - for (i = 0; i < CHARGE_SUPPLIER_COUNT; i++) - charge_manager_update_charge(i, CHARGE_PORT_POGO, NULL); -} -DECLARE_HOOK(HOOK_INIT, board_pogo_charge_init, - HOOK_PRIO_CHARGE_MANAGER_INIT + 1); - static int force_discharge; int board_set_active_charge_port(int charge_port) @@ -146,10 +135,12 @@ int board_set_active_charge_port(int charge_port) gpio_set_level(GPIO_EN_POGO_CHARGE_L, 1); gpio_set_level(GPIO_EN_USBC_CHARGE_L, 0); break; +#if CONFIG_DEDICATED_CHARGE_PORT_COUNT > 0 case CHARGE_PORT_POGO: gpio_set_level(GPIO_EN_USBC_CHARGE_L, 1); gpio_set_level(GPIO_EN_POGO_CHARGE_L, 0); break; +#endif case CHARGE_PORT_NONE: /* * To ensure the fuel gauge (max17055) is always powered diff --git a/board/kukui/board.h b/board/kukui/board.h index 2b03844cb2..b6561b13f1 100644 --- a/board/kukui/board.h +++ b/board/kukui/board.h @@ -114,7 +114,9 @@ enum sensor_id { enum charge_port { CHARGE_PORT_USB_C, +#if CONFIG_DEDICATED_CHARGE_PORT_COUNT > 0 CHARGE_PORT_POGO, +#endif }; #include "ec_commands.h" -- cgit v1.2.1