diff --git a/board/zoombini/board.c b/board/zoombini/board.c index a2e0fbebc4..71055e0e48 100644 --- a/board/zoombini/board.c +++ b/board/zoombini/board.c @@ -28,6 +28,7 @@ #include "pwm.h" #include "pwm_chip.h" #include "registers.h" +#include "system.h" #include "switch.h" #include "tcpci.h" #include "usb_mux.h" @@ -172,6 +173,30 @@ static void board_chipset_shutdown(void) } DECLARE_HOOK(HOOK_CHIPSET_SHUTDOWN, board_chipset_shutdown, HOOK_PRIO_DEFAULT); +int board_get_ramp_current_limit(int supplier, int sup_curr) +{ + /* Use the current limit that was decided by the BQ24392 driver. */ + if (supplier == CHARGE_SUPPLIER_OTHER) + return sup_curr; + else + return 500; +} + +int board_is_ramp_allowed(int supplier) +{ + /* Don't allow ramping in RO when write protected. */ + if (system_get_image_copy() != SYSTEM_IMAGE_RW + && system_is_locked()) + return 0; + + /* + * Due to the limitations in the application of the BQ24392, we + * don't quite know exactly what we're plugged into. Therefore, + * the supplier type will be CHARGE_SUPPLIER_OTHER. + */ + return supplier == CHARGE_SUPPLIER_OTHER; +} + void board_reset_pd_mcu(void) { /* GPIO_USB_PD_RST_L resets all the TCPCs. */ diff --git a/board/zoombini/board.h b/board/zoombini/board.h index d902a2ab0b..219f1111ce 100644 --- a/board/zoombini/board.h +++ b/board/zoombini/board.h @@ -34,6 +34,7 @@ #define CONFIG_BOARD_VERSION +#define CONFIG_BC12_DETECT_BQ24392 #define CONFIG_CHARGER #define CONFIG_CHARGER_V2 #define CONFIG_CHARGE_MANAGER @@ -42,10 +43,8 @@ #define CONFIG_CHARGER_MIN_BAT_PCT_FOR_POWER_ON 1 #define CONFIG_CHARGER_SENSE_RESISTOR 10 #define CONFIG_CHARGER_SENSE_RESISTOR_AC 20 -/* TODO(aaboagye): add when BC 1.2 stuff ready. */ -#if 0 +#define CONFIG_CHARGE_RAMP_HW #define CONFIG_USB_CHARGER -#endif /* 0 */ #define CONFIG_CHIPSET_CANNONLAKE #define CONFIG_CHIPSET_RESET_HOOK diff --git a/board/zoombini/ec.tasklist b/board/zoombini/ec.tasklist index 4aae42a072..dec8342612 100644 --- a/board/zoombini/ec.tasklist +++ b/board/zoombini/ec.tasklist @@ -22,6 +22,9 @@ #define CONFIG_TASK_LIST \ TASK_ALWAYS(HOOKS, hook_task, NULL, LARGER_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(USB_CHG_P2, usb_charger_task, 2, TASK_STACK_SIZE) \ TASK_ALWAYS(CHARGER, charger_task, NULL, LARGER_TASK_STACK_SIZE) \ TASK_NOTEST(CHIPSET, chipset_task, NULL, LARGER_TASK_STACK_SIZE) \ TASK_NOTEST(KEYPROTO, keyboard_protocol_task, NULL, TASK_STACK_SIZE) \ diff --git a/board/zoombini/gpio.inc b/board/zoombini/gpio.inc index 119aa7953b..616d01b64b 100644 --- a/board/zoombini/gpio.inc +++ b/board/zoombini/gpio.inc @@ -71,6 +71,13 @@ GPIO(USB_C0_CHARGE_EN_L, PIN(0, 3), GPIO_OUT_LOW) GPIO(USB_C1_CHARGE_EN_L, PIN(0, 4), GPIO_OUT_LOW) GPIO(USB_C2_CHARGE_EN_L, PIN(4, 0), GPIO_OUT_LOW) +GPIO(USB_C0_BC12_VBUS_ON, PIN(8, 2), GPIO_ODR_LOW) +GPIO(USB_C1_BC12_VBUS_ON, PIN(B, 1), GPIO_ODR_LOW) +GPIO(USB_C2_BC12_VBUS_ON, PIN(E, 0), GPIO_ODR_LOW) +GPIO(USB_C0_BC12_CHG_DET, PIN(6, 2), GPIO_INPUT) +GPIO(USB_C1_BC12_CHG_DET, PIN(8, 3), GPIO_INPUT) +GPIO(USB_C2_BC12_CHG_DET, PIN(E, 4), GPIO_INPUT) + GPIO(BOARD_VERSION1, PIN(9, 6), GPIO_INPUT) GPIO(BOARD_VERSION2, PIN(9, 3), GPIO_INPUT) GPIO(BOARD_VERSION3, PIN(F, 0), GPIO_INPUT)