diff options
author | Denis Brockus <dbrockus@chromium.org> | 2019-07-30 09:30:55 -0600 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2019-07-30 23:16:05 +0000 |
commit | aed16e293cb4bd17b301ac9f1508402bcb233bb1 (patch) | |
tree | 3e3384bcd794fe6274b3349819a4ffd2540eb116 | |
parent | 671c261e3d70ac4def1c4a2360cdbccfbbe44bbd (diff) | |
download | chrome-ec-aed16e293cb4bd17b301ac9f1508402bcb233bb1.tar.gz |
Trembyle: Add USB-C sink BC12 driver
Hooked in the PI3USB9201 BC12 driver
BUG=b:138600672
BRANCH=none
TEST=make BOARD=trembyle
Change-Id: I849d182063c62539add88b8a2aa73a149dc25c92
Signed-off-by: Denis Brockus <dbrockus@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1726330
-rw-r--r-- | baseboard/zork/baseboard.c | 29 | ||||
-rw-r--r-- | baseboard/zork/baseboard.h | 3 | ||||
-rw-r--r-- | board/trembyle/board.c | 22 | ||||
-rw-r--r-- | board/trembyle/gpio.inc | 4 |
4 files changed, 36 insertions, 22 deletions
diff --git a/baseboard/zork/baseboard.c b/baseboard/zork/baseboard.c index 79d8afd952..ecb5fde5df 100644 --- a/baseboard/zork/baseboard.c +++ b/baseboard/zork/baseboard.c @@ -18,6 +18,7 @@ #include "driver/accel_kionix.h" #include "driver/accel_kx022.h" #include "driver/accelgyro_bmi160.h" +#include "driver/bc12/pi3usb9201.h" #include "driver/tcpm/ps8xxx.h" #include "driver/temp_sensor/sb_tsi.h" #include "ec_commands.h" @@ -186,6 +187,34 @@ const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_COUNT] = { }, }; +const struct pi3usb9201_config_t pi3usb9201_bc12_chips[] = { + [USB_PD_PORT_TCPC_0] = { + .i2c_port = I2C_PORT_TCPC0, + .i2c_addr_flags = PI3USB9201_I2C_ADDR_3_FLAGS, + }, + + [USB_PD_PORT_TCPC_1] = { + .i2c_port = I2C_PORT_TCPC1, + .i2c_addr_flags = PI3USB9201_I2C_ADDR_3_FLAGS, + }, +}; + +void bc12_interrupt(enum gpio_signal signal) +{ + switch (signal) { + case GPIO_USB_C0_BC12_INT_ODL: + task_set_event(TASK_ID_USB_CHG_P0, USB_CHG_EVENT_BC12, 0); + break; + + case GPIO_USB_C1_BC12_INT_ODL: + task_set_event(TASK_ID_USB_CHG_P1, USB_CHG_EVENT_BC12, 0); + break; + + default: + break; + } +} + struct usb_mux usb_muxes[CONFIG_USB_PD_PORT_COUNT] = { [USB_PD_PORT_TCPC_0] = { .driver = &tcpci_tcpm_usb_mux_driver, diff --git a/baseboard/zork/baseboard.h b/baseboard/zork/baseboard.h index 2aedf0881b..ed5bd522ef 100644 --- a/baseboard/zork/baseboard.h +++ b/baseboard/zork/baseboard.h @@ -66,6 +66,8 @@ #define CONFIG_BATTERY_REVIVE_DISCONNECT #define CONFIG_BATTERY_SMART +#define CONFIG_BC12_DETECT_PI3USB9201 + #define CONFIG_CHARGER #define CONFIG_CHARGER_V2 #define CONFIG_CHARGE_MANAGER @@ -232,6 +234,7 @@ void board_reset_pd_mcu(void); /* Common definition for the USB PD interrupt handlers. */ void tcpc_alert_event(enum gpio_signal signal); +void bc12_interrupt(enum gpio_signal signal); int board_is_convertible(void); void board_update_sensor_config_from_sku(void); diff --git a/board/trembyle/board.c b/board/trembyle/board.c index 02559cdc6c..0307ef6e14 100644 --- a/board/trembyle/board.c +++ b/board/trembyle/board.c @@ -45,34 +45,12 @@ uint32_t system_get_sku_id(void) return 0; } -void usb_charger_set_switches(int port, enum usb_switch setting) -{ - /* TODO */ -} - uint16_t tcpc_get_alert_status(void) { /* TODO */ return 0; } -void usb_charger_task(void *u) -{ - /* TODO */ -} - -int usb_charger_ramp_allowed(int supplier) -{ - /* TODO */ - return 0; -} - -int usb_charger_ramp_max(int supplier, int sup_curr) -{ - /* TODO */ - return 0; -} - void tcpc_alert_event(enum gpio_signal signal) { /* TODO */ diff --git a/board/trembyle/gpio.inc b/board/trembyle/gpio.inc index 1a21234ac1..4c9f0a2313 100644 --- a/board/trembyle/gpio.inc +++ b/board/trembyle/gpio.inc @@ -24,6 +24,10 @@ GPIO_INT(VOLUME_DOWN_L, PIN(A, 6), GPIO_INT_BOTH, button_interrupt) GPIO_INT(VOLUME_UP_L, PIN(9, 5), GPIO_INT_BOTH, button_interrupt) GPIO_INT(6AXIS_INT_L, PIN(A, 0), GPIO_INT_FALLING, bmi160_interrupt) +/* USB-C interrupts */ +GPIO_INT(USB_C0_BC12_INT_ODL, PIN(9, 3), GPIO_INT_FALLING, bc12_interrupt) +GPIO_INT(USB_C1_BC12_INT_ODL, PIN(A, 4), GPIO_INT_FALLING, bc12_interrupt) + /* GPIO_INT_BOTH is required for PSL wake from hibernate, but we don't need an interrupt handler. */ GPIO(EC_RST_ODL, PIN(0, 2), GPIO_INT_BOTH | GPIO_HIB_WAKE_HIGH) |