summaryrefslogtreecommitdiff
path: root/board/hatch/board.c
diff options
context:
space:
mode:
authorScott Collyer <scollyer@google.com>2018-12-19 15:10:30 -0800
committerchrome-bot <chrome-bot@chromium.org>2019-01-29 21:35:05 -0800
commitf71c06294fcfa383cefa52d8705b4443c16db8f4 (patch)
tree4b0d296e56ed38d06853246a52d37045c8952c99 /board/hatch/board.c
parent0c55c8c36e43e7ed0f71e60bc14ff50878a09709 (diff)
downloadchrome-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.c50
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);
+}