diff options
author | Ting Shen <phoenixshen@google.com> | 2020-03-26 14:27:39 +0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-06-30 08:08:42 +0000 |
commit | 6684f84b7c66a5d0b7b6fc4c13026951040bdc53 (patch) | |
tree | 6812bac6375b7341c03c15779639760870dffb68 /board/asurada/board.c | |
parent | 3c7673c5955ece8a1b686fcad177d30442dccaba (diff) | |
download | chrome-ec-6684f84b7c66a5d0b7b6fc4c13026951040bdc53.tar.gz |
asurada: enable bc12 chips
BUG=b:151802370
TEST=verify bc12 detection works for both ports
BRANCH=master
Signed-off-by: Ting Shen <phoenixshen@google.com>
Change-Id: I99af6eb83c133e3527e633c30d6c3df7bd50d6a9
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2189624
Reviewed-by: Eric Yilun Lin <yllin@chromium.org>
Commit-Queue: Ting Shen <phoenixshen@chromium.org>
Tested-by: Ting Shen <phoenixshen@chromium.org>
Diffstat (limited to 'board/asurada/board.c')
-rw-r--r-- | board/asurada/board.c | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/board/asurada/board.c b/board/asurada/board.c index d1aa1abac1..8f325d3f3f 100644 --- a/board/asurada/board.c +++ b/board/asurada/board.c @@ -14,6 +14,8 @@ #include "console.h" #include "driver/accel_lis2dw12.h" #include "driver/accelgyro_bmi_common.h" +#include "driver/bc12/mt6360.h" +#include "driver/bc12/pi3usb9201.h" #include "driver/charger/isl923x.h" #include "driver/ppc/syv682x.h" #include "driver/tcpm/it83xx_pd.h" @@ -38,6 +40,7 @@ #include "temp_sensor.h" #include "timer.h" #include "uart.h" +#include "usb_charge.h" #include "usb_mux.h" #include "usb_pd_tcpm.h" #include "usbc_ppc.h" @@ -45,6 +48,7 @@ #define CPRINTS(format, args...) cprints(CC_USBCHARGE, format, ## args) #define CPRINTF(format, args...) cprintf(CC_USBCHARGE, format, ## args) +static void bc12_interrupt(enum gpio_signal signal); static void ppc_interrupt(enum gpio_signal signal); static void x_ec_interrupt(enum gpio_signal signal); @@ -106,6 +110,8 @@ static void board_init(void) pwm_set_duty(PWM_CH_PWRLED, 5); pwm_enable(PWM_CH_PWRLED, 1); + gpio_enable_interrupt(GPIO_USB_C0_BC12_INT_ODL); + /* Enable motion sensor interrupt */ gpio_enable_interrupt(GPIO_BASE_IMU_INT_L); gpio_enable_interrupt(GPIO_LID_ACCEL_INT_L); @@ -156,6 +162,26 @@ const struct temp_sensor_t temp_sensors[] = { }; BUILD_ASSERT(ARRAY_SIZE(temp_sensors) == TEMP_SENSOR_COUNT); +/* BC12 */ +const struct mt6360_config_t mt6360_config = { + .i2c_port = 0, + .i2c_addr_flags = MT6360_PMU_SLAVE_ADDR_FLAGS, +}; + +const struct pi3usb9201_config_t + pi3usb9201_bc12_chips[CONFIG_USB_PD_PORT_MAX_COUNT] = { + /* [0]: unused */ + [1] = { + .i2c_port = 4, + .i2c_addr_flags = PI3USB9201_I2C_ADDR_3_FLAGS, + } +}; + +struct bc12_config bc12_ports[CONFIG_USB_PD_PORT_MAX_COUNT] = { + { .drv = &mt6360_drv }, + { .drv = &pi3usb9201_drv }, +}; + /* Keyboard scan setting */ struct keyboard_scan_config keyscan_config = { .output_settle_us = 35, @@ -170,6 +196,22 @@ struct keyboard_scan_config keyscan_config = { }, }; +static void bc12_interrupt(enum gpio_signal signal) +{ + if (signal == GPIO_USB_C0_BC12_INT_ODL) + task_set_event(TASK_ID_USB_CHG_P0, USB_CHG_EVENT_BC12, 0); + else + task_set_event(TASK_ID_USB_CHG_P1, USB_CHG_EVENT_BC12, 0); +} + +static void board_sub_bc12_init(void) +{ + if (board_get_sub_board() == SUB_BOARD_TYPEC) + gpio_enable_interrupt(GPIO_USB_C1_BC12_INT_L); +} +/* Must be done after I2C and subboard */ +DECLARE_HOOK(HOOK_INIT, board_sub_bc12_init, HOOK_PRIO_INIT_I2C + 1); + /* * I2C channels (A, B, and C) are using the same timing registers (00h~07h) * at default. |