summaryrefslogtreecommitdiff
path: root/baseboard
diff options
context:
space:
mode:
authorDenis Brockus <dbrockus@chromium.org>2019-07-31 09:39:28 -0600
committerCommit Bot <commit-bot@chromium.org>2019-08-02 20:10:35 +0000
commit92ee51f7cccc65cba40aaf83c761a29013595068 (patch)
treefedcab36c043d2e8892b5bb9c63e4442b3254d48 /baseboard
parent77be418d68b6569133d45b040792e6aa34e20c82 (diff)
downloadchrome-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.c62
-rw-r--r--baseboard/zork/baseboard.h10
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__ */