From 8a768a06bc876f83427691d27b4e572418406875 Mon Sep 17 00:00:00 2001 From: Edward Hill Date: Fri, 28 Aug 2020 11:35:51 -0600 Subject: zork: Enable CONFIG_CHARGE_RAMP_SW We would prefer to use CONFIG_CHARGE_RAMP_HW to enable legacy BC1.2 charging but that feature of ISL9241 is broken (b/160287056) so we have to use CONFIG_CHARGE_RAMP_SW instead. BUG=b:163864475 BRANCH=zork TEST=ramp up to 1.5A from legacy charger Signed-off-by: Edward Hill Change-Id: Iec0a4b82f42fd388d738362ce9a8de4d31c61054 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2382635 --- baseboard/zork/baseboard.c | 22 ++++++++++++++++++++++ baseboard/zork/baseboard.h | 6 ++++++ board/berknip/ec.tasklist | 1 + board/dalboz/ec.tasklist | 1 + board/dirinboz/ec.tasklist | 1 + board/ezkinil/ec.tasklist | 1 + board/morphius/ec.tasklist | 1 + board/trembyle/ec.tasklist | 1 + board/vilboz/ec.tasklist | 1 + board/woomax/ec.tasklist | 1 + 10 files changed, 36 insertions(+) diff --git a/baseboard/zork/baseboard.c b/baseboard/zork/baseboard.c index 4a482a42cb..c4715a943a 100644 --- a/baseboard/zork/baseboard.c +++ b/baseboard/zork/baseboard.c @@ -10,6 +10,7 @@ #include "button.h" #include "cbi_ec_fw_config.h" #include "charge_manager.h" +#include "charge_ramp.h" #include "charge_state.h" #include "charge_state_v2.h" #include "common.h" @@ -46,6 +47,13 @@ #define SAFE_RESET_VBUS_MV 5000 +/* + * For legacy BC1.2 charging with CONFIG_CHARGE_RAMP_SW, ramp up input current + * until voltage drops to 4.5V. Don't go lower than this to be kind to the + * charger (see b/67964166). + */ +#define BC12_MIN_VOLTAGE 4500 + const enum gpio_signal hibernate_wake_pins[] = { GPIO_LID_OPEN, GPIO_AC_PRESENT, @@ -348,3 +356,17 @@ void board_pwrbtn_to_pch(int level) } gpio_set_level(GPIO_PCH_PWRBTN_L, level); } + +/** + * Return if VBUS is sagging too low + */ +int board_is_vbus_too_low(int port, enum chg_ramp_vbus_state ramp_state) +{ + int voltage; + + if (charger_get_vbus_voltage(port, &voltage)) + voltage = 0; + ccprints("vbus %d", voltage); + + return voltage < BC12_MIN_VOLTAGE; +} diff --git a/baseboard/zork/baseboard.h b/baseboard/zork/baseboard.h index 4e166be723..4938914e52 100644 --- a/baseboard/zork/baseboard.h +++ b/baseboard/zork/baseboard.h @@ -71,6 +71,12 @@ #define CONFIG_CHARGER_ISL9241 #define CONFIG_CHARGER_SENSE_RESISTOR 10 #define CONFIG_CHARGER_SENSE_RESISTOR_AC 20 +/* + * We would prefer to use CONFIG_CHARGE_RAMP_HW to enable legacy BC1.2 charging + * but that feature of ISL9241 is broken (b/160287056) so we have to use + * CONFIG_CHARGE_RAMP_SW instead. + */ +#define CONFIG_CHARGE_RAMP_SW #define CONFIG_CHIPSET_STONEY #define CONFIG_CHIPSET_CAN_THROTTLE diff --git a/board/berknip/ec.tasklist b/board/berknip/ec.tasklist index 2874dff927..d9c1606eb2 100644 --- a/board/berknip/ec.tasklist +++ b/board/berknip/ec.tasklist @@ -9,6 +9,7 @@ #define CONFIG_TASK_LIST \ TASK_ALWAYS(HOOKS, hook_task, NULL, LARGER_TASK_STACK_SIZE) \ + TASK_ALWAYS(CHG_RAMP, chg_ramp_task, NULL, TASK_STACK_SIZE) \ TASK_ALWAYS(USB_CHG_P0, usb_charger_task, 0, TASK_STACK_SIZE) \ TASK_ALWAYS(USB_CHG_P1, usb_charger_task, 1, TASK_STACK_SIZE) \ TASK_ALWAYS(CHARGER, charger_task, NULL, VENTI_TASK_STACK_SIZE) \ diff --git a/board/dalboz/ec.tasklist b/board/dalboz/ec.tasklist index fb6e2f75a1..41b83cf4f3 100644 --- a/board/dalboz/ec.tasklist +++ b/board/dalboz/ec.tasklist @@ -9,6 +9,7 @@ #define CONFIG_TASK_LIST \ TASK_ALWAYS(HOOKS, hook_task, NULL, LARGER_TASK_STACK_SIZE) \ + TASK_ALWAYS(CHG_RAMP, chg_ramp_task, NULL, TASK_STACK_SIZE) \ TASK_ALWAYS(USB_CHG_P0, usb_charger_task, 0, TASK_STACK_SIZE) \ TASK_ALWAYS(USB_CHG_P1, usb_charger_task, 1, TASK_STACK_SIZE) \ TASK_ALWAYS(CHARGER, charger_task, NULL, VENTI_TASK_STACK_SIZE) \ diff --git a/board/dirinboz/ec.tasklist b/board/dirinboz/ec.tasklist index 2874dff927..d9c1606eb2 100644 --- a/board/dirinboz/ec.tasklist +++ b/board/dirinboz/ec.tasklist @@ -9,6 +9,7 @@ #define CONFIG_TASK_LIST \ TASK_ALWAYS(HOOKS, hook_task, NULL, LARGER_TASK_STACK_SIZE) \ + TASK_ALWAYS(CHG_RAMP, chg_ramp_task, NULL, TASK_STACK_SIZE) \ TASK_ALWAYS(USB_CHG_P0, usb_charger_task, 0, TASK_STACK_SIZE) \ TASK_ALWAYS(USB_CHG_P1, usb_charger_task, 1, TASK_STACK_SIZE) \ TASK_ALWAYS(CHARGER, charger_task, NULL, VENTI_TASK_STACK_SIZE) \ diff --git a/board/ezkinil/ec.tasklist b/board/ezkinil/ec.tasklist index 2874dff927..d9c1606eb2 100644 --- a/board/ezkinil/ec.tasklist +++ b/board/ezkinil/ec.tasklist @@ -9,6 +9,7 @@ #define CONFIG_TASK_LIST \ TASK_ALWAYS(HOOKS, hook_task, NULL, LARGER_TASK_STACK_SIZE) \ + TASK_ALWAYS(CHG_RAMP, chg_ramp_task, NULL, TASK_STACK_SIZE) \ TASK_ALWAYS(USB_CHG_P0, usb_charger_task, 0, TASK_STACK_SIZE) \ TASK_ALWAYS(USB_CHG_P1, usb_charger_task, 1, TASK_STACK_SIZE) \ TASK_ALWAYS(CHARGER, charger_task, NULL, VENTI_TASK_STACK_SIZE) \ diff --git a/board/morphius/ec.tasklist b/board/morphius/ec.tasklist index fb6e2f75a1..41b83cf4f3 100644 --- a/board/morphius/ec.tasklist +++ b/board/morphius/ec.tasklist @@ -9,6 +9,7 @@ #define CONFIG_TASK_LIST \ TASK_ALWAYS(HOOKS, hook_task, NULL, LARGER_TASK_STACK_SIZE) \ + TASK_ALWAYS(CHG_RAMP, chg_ramp_task, NULL, TASK_STACK_SIZE) \ TASK_ALWAYS(USB_CHG_P0, usb_charger_task, 0, TASK_STACK_SIZE) \ TASK_ALWAYS(USB_CHG_P1, usb_charger_task, 1, TASK_STACK_SIZE) \ TASK_ALWAYS(CHARGER, charger_task, NULL, VENTI_TASK_STACK_SIZE) \ diff --git a/board/trembyle/ec.tasklist b/board/trembyle/ec.tasklist index fb6e2f75a1..41b83cf4f3 100644 --- a/board/trembyle/ec.tasklist +++ b/board/trembyle/ec.tasklist @@ -9,6 +9,7 @@ #define CONFIG_TASK_LIST \ TASK_ALWAYS(HOOKS, hook_task, NULL, LARGER_TASK_STACK_SIZE) \ + TASK_ALWAYS(CHG_RAMP, chg_ramp_task, NULL, TASK_STACK_SIZE) \ TASK_ALWAYS(USB_CHG_P0, usb_charger_task, 0, TASK_STACK_SIZE) \ TASK_ALWAYS(USB_CHG_P1, usb_charger_task, 1, TASK_STACK_SIZE) \ TASK_ALWAYS(CHARGER, charger_task, NULL, VENTI_TASK_STACK_SIZE) \ diff --git a/board/vilboz/ec.tasklist b/board/vilboz/ec.tasklist index c45a43e848..08801d1786 100644 --- a/board/vilboz/ec.tasklist +++ b/board/vilboz/ec.tasklist @@ -9,6 +9,7 @@ #define CONFIG_TASK_LIST \ TASK_ALWAYS(HOOKS, hook_task, NULL, LARGER_TASK_STACK_SIZE) \ + TASK_ALWAYS(CHG_RAMP, chg_ramp_task, NULL, TASK_STACK_SIZE) \ TASK_ALWAYS(USB_CHG_P0, usb_charger_task, 0, TASK_STACK_SIZE) \ TASK_ALWAYS(CHARGER, charger_task, NULL, VENTI_TASK_STACK_SIZE) \ TASK_ALWAYS(MOTIONSENSE, motion_sense_task, NULL, VENTI_TASK_STACK_SIZE) \ diff --git a/board/woomax/ec.tasklist b/board/woomax/ec.tasklist index 2874dff927..d9c1606eb2 100644 --- a/board/woomax/ec.tasklist +++ b/board/woomax/ec.tasklist @@ -9,6 +9,7 @@ #define CONFIG_TASK_LIST \ TASK_ALWAYS(HOOKS, hook_task, NULL, LARGER_TASK_STACK_SIZE) \ + TASK_ALWAYS(CHG_RAMP, chg_ramp_task, NULL, TASK_STACK_SIZE) \ TASK_ALWAYS(USB_CHG_P0, usb_charger_task, 0, TASK_STACK_SIZE) \ TASK_ALWAYS(USB_CHG_P1, usb_charger_task, 1, TASK_STACK_SIZE) \ TASK_ALWAYS(CHARGER, charger_task, NULL, VENTI_TASK_STACK_SIZE) \ -- cgit v1.2.1