diff options
author | Scott Collyer <scollyer@google.com> | 2018-12-19 15:10:30 -0800 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2019-01-29 21:35:05 -0800 |
commit | f71c06294fcfa383cefa52d8705b4443c16db8f4 (patch) | |
tree | 4b0d296e56ed38d06853246a52d37045c8952c99 /board/hatch/board.c | |
parent | 0c55c8c36e43e7ed0f71e60bc14ff50878a09709 (diff) | |
download | chrome-ec-f71c06294fcfa383cefa52d8705b4443c16db8f4.tar.gz |
hatch: Add support for charging and USB type C
This CL adds board specific files and functions required for both
battery/charging and Type C support.
BRANCH=none
BUG=b:122251649
TEST=make buildall, tested both port 0/1 operation at factory. Battery
can be charged via both ports.
Change-Id: Ia01eabe109e3df780ec053831a71a16a41047f01
Signed-off-by: Scott Collyer <scollyer@google.com>
Reviewed-on: https://chromium-review.googlesource.com/1387585
Commit-Ready: Scott Collyer <scollyer@chromium.org>
Tested-by: Scott Collyer <scollyer@chromium.org>
Reviewed-by: Aseda Aboagye <aaboagye@chromium.org>
Diffstat (limited to 'board/hatch/board.c')
-rw-r--r-- | board/hatch/board.c | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/board/hatch/board.c b/board/hatch/board.c index 0e25c7f739..0277164932 100644 --- a/board/hatch/board.c +++ b/board/hatch/board.c @@ -6,6 +6,7 @@ /* Hatch board-specific configuration */ #include "common.h" +#include "driver/ppc/sn5s330.h" #include "extpower.h" #include "gpio.h" #include "lid_switch.h" @@ -15,8 +16,47 @@ #include "switch.h" #include "system.h" #include "uart.h" +#include "usb_pd.h" +#include "usbc_ppc.h" #include "util.h" +#define CPRINTS(format, args...) cprints(CC_USBCHARGE, format, ## args) +#define CPRINTF(format, args...) cprintf(CC_USBCHARGE, format, ## args) + +static void ppc_interrupt(enum gpio_signal signal) +{ + switch (signal) { + case GPIO_USB_C0_PPC_INT_ODL: + sn5s330_interrupt(0); + break; + + case GPIO_USB_C1_PPC_INT_ODL: + sn5s330_interrupt(1); + break; + + default: + break; + } +} + +static void tcpc_alert_event(enum gpio_signal signal) +{ + int port = -1; + + switch (signal) { + case GPIO_USB_C0_TCPC_INT_ODL: + port = 0; + break; + case GPIO_USB_C1_TCPC_INT_ODL: + port = 1; + break; + default: + return; + } + + schedule_deferred_pd_interrupt(port); +} + #include "gpio_list.h" /* Must come after other header files. */ /******************************************************************************/ @@ -30,3 +70,13 @@ const int hibernate_wake_pins_used = ARRAY_SIZE(hibernate_wake_pins); const struct spi_device_t spi_devices[] = { }; const unsigned int spi_devices_used = ARRAY_SIZE(spi_devices); + +void board_overcurrent_event(int port, int is_overcurrented) +{ + /* Sanity check the port. */ + if ((port < 0) || (port >= CONFIG_USB_PD_PORT_COUNT)) + return; + + /* Note that the level is inverted because the pin is active low. */ + gpio_set_level(GPIO_USB_C_OC_ODL, !is_overcurrented); +} |