diff options
author | Denis Brockus <dbrockus@chromium.org> | 2019-07-31 09:39:28 -0600 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2019-08-02 20:10:35 +0000 |
commit | 92ee51f7cccc65cba40aaf83c761a29013595068 (patch) | |
tree | fedcab36c043d2e8892b5bb9c63e4442b3254d48 /baseboard | |
parent | 77be418d68b6569133d45b040792e6aa34e20c82 (diff) | |
download | chrome-ec-92ee51f7cccc65cba40aaf83c761a29013595068.tar.gz |
Trembyle: Add USB-C PPC drivers
Add SN5S330 USB-C PPC drivers
BUG=b:138599218
BRANCH=none
TEST=make buildall -j
Change-Id: I697dbba1f5c5bbc809e0de9a633d9102596a3a98
Signed-off-by: Denis Brockus <dbrockus@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1729529
Commit-Queue: Edward Hill <ecgh@chromium.org>
Reviewed-by: Edward Hill <ecgh@chromium.org>
Diffstat (limited to 'baseboard')
-rw-r--r-- | baseboard/zork/baseboard.c | 62 | ||||
-rw-r--r-- | baseboard/zork/baseboard.h | 10 |
2 files changed, 69 insertions, 3 deletions
diff --git a/baseboard/zork/baseboard.c b/baseboard/zork/baseboard.c index fcf68a9778..c8a6919fb3 100644 --- a/baseboard/zork/baseboard.c +++ b/baseboard/zork/baseboard.c @@ -19,6 +19,7 @@ #include "driver/accel_kx022.h" #include "driver/accelgyro_bmi160.h" #include "driver/bc12/pi3usb9201.h" +#include "driver/ppc/sn5s330.h" #include "driver/tcpm/ps8xxx.h" #include "driver/temp_sensor/sb_tsi.h" #include "ec_commands.h" @@ -167,6 +168,51 @@ const struct pwm_t pwm_channels[] = { }; BUILD_ASSERT(ARRAY_SIZE(pwm_channels) == PWM_CH_COUNT); +struct ppc_config_t ppc_chips[CONFIG_USB_PD_PORT_COUNT] = { + [USBC_PORT_C0] = { + .i2c_port = I2C_PORT_TCPC0, + .i2c_addr_flags = SN5S330_ADDR0_FLAGS, + .drv = &sn5s330_drv + }, + + [USBC_PORT_C1] = { + .i2c_port = I2C_PORT_TCPC1, + .i2c_addr_flags = SN5S330_ADDR0_FLAGS, + .drv = &sn5s330_drv + }, +}; +unsigned int ppc_cnt = ARRAY_SIZE(ppc_chips); + +void ppc_interrupt(enum gpio_signal signal) +{ + switch (signal) { + case GPIO_USB_C0_PPC_INT_ODL: + sn5s330_interrupt(USBC_PORT_C0); + break; + + case GPIO_USB_C1_PPC_INT_ODL: + sn5s330_interrupt(USBC_PORT_C1); + break; + + default: + break; + } +} + +int ppc_get_alert_status(int port) +{ + switch (port) { + case USBC_PORT_C0: + return gpio_get_level(GPIO_USB_C0_PPC_INT_ODL) == 0; + + case USBC_PORT_C1: + return gpio_get_level(GPIO_USB_C1_PPC_INT_ODL) == 0; + + default: + return 0; + } +} + const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_COUNT] = { [USBC_PORT_C0] = { .bus_type = EC_BUS_TYPE_I2C, @@ -511,3 +557,19 @@ uint32_t board_override_feature_flags1(uint32_t flags1) { return flags1; } + +void board_overcurrent_event(int port, int is_overcurrented) +{ + switch (port) { + case USBC_PORT_C0: + ioex_set_level(IOEX_USB_C0_FAULT_ODL, !is_overcurrented); + break; + + case USBC_PORT_C1: + ioex_set_level(IOEX_USB_C1_FAULT_ODL, !is_overcurrented); + break; + + default: + break; + } +} diff --git a/baseboard/zork/baseboard.h b/baseboard/zork/baseboard.h index 1fc3d8ab58..49b153f789 100644 --- a/baseboard/zork/baseboard.h +++ b/baseboard/zork/baseboard.h @@ -114,11 +114,15 @@ #define CONFIG_USB_POWER_DELIVERY #define CONFIG_USB_PD_DUAL_ROLE #define CONFIG_USB_PD_PORT_COUNT 2 -#define CONFIG_USB_PD_VBUS_MEASURE_CHARGER -#define CONFIG_USB_PD_5V_EN_CUSTOM #define CONFIG_USB_PD_TCPM_MUX #define CONFIG_USB_PD_TCPM_PS8751 #define CONFIG_USB_PD_TCPM_TCPCI +#define CONFIG_USB_PD_VBUS_MEASURE_CHARGER +#define CONFIG_USBC_PPC +#define CONFIG_USBC_PPC_DEDICATED_INT +#define CONFIG_USBC_PPC_SBU +#define CONFIG_USBC_PPC_SN5S330 +#define CONFIG_USBC_PPC_VCONN #define CONFIG_USBC_SS_MUX #define PD_POWER_SUPPLY_TURN_ON_DELAY 30000 /* us */ @@ -245,10 +249,10 @@ 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); +void ppc_interrupt(enum gpio_signal signal); int board_is_convertible(void); void board_update_sensor_config_from_sku(void); -int board_is_sourcing_vbus(int port); #endif /* !__ASSEMBLER__ */ |