summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenis Brockus <dbrockus@chromium.org>2019-07-30 09:30:55 -0600
committerCommit Bot <commit-bot@chromium.org>2019-07-30 23:16:05 +0000
commitaed16e293cb4bd17b301ac9f1508402bcb233bb1 (patch)
tree3e3384bcd794fe6274b3349819a4ffd2540eb116
parent671c261e3d70ac4def1c4a2360cdbccfbbe44bbd (diff)
downloadchrome-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.c29
-rw-r--r--baseboard/zork/baseboard.h3
-rw-r--r--board/trembyle/board.c22
-rw-r--r--board/trembyle/gpio.inc4
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)