summaryrefslogtreecommitdiff
path: root/board/asurada/board.c
diff options
context:
space:
mode:
authorTing Shen <phoenixshen@google.com>2020-03-26 14:27:39 +0800
committerCommit Bot <commit-bot@chromium.org>2020-06-30 08:08:42 +0000
commit6684f84b7c66a5d0b7b6fc4c13026951040bdc53 (patch)
tree6812bac6375b7341c03c15779639760870dffb68 /board/asurada/board.c
parent3c7673c5955ece8a1b686fcad177d30442dccaba (diff)
downloadchrome-ec-6684f84b7c66a5d0b7b6fc4c13026951040bdc53.tar.gz
asurada: enable bc12 chips
BUG=b:151802370 TEST=verify bc12 detection works for both ports BRANCH=master Signed-off-by: Ting Shen <phoenixshen@google.com> Change-Id: I99af6eb83c133e3527e633c30d6c3df7bd50d6a9 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2189624 Reviewed-by: Eric Yilun Lin <yllin@chromium.org> Commit-Queue: Ting Shen <phoenixshen@chromium.org> Tested-by: Ting Shen <phoenixshen@chromium.org>
Diffstat (limited to 'board/asurada/board.c')
-rw-r--r--board/asurada/board.c42
1 files changed, 42 insertions, 0 deletions
diff --git a/board/asurada/board.c b/board/asurada/board.c
index d1aa1abac1..8f325d3f3f 100644
--- a/board/asurada/board.c
+++ b/board/asurada/board.c
@@ -14,6 +14,8 @@
#include "console.h"
#include "driver/accel_lis2dw12.h"
#include "driver/accelgyro_bmi_common.h"
+#include "driver/bc12/mt6360.h"
+#include "driver/bc12/pi3usb9201.h"
#include "driver/charger/isl923x.h"
#include "driver/ppc/syv682x.h"
#include "driver/tcpm/it83xx_pd.h"
@@ -38,6 +40,7 @@
#include "temp_sensor.h"
#include "timer.h"
#include "uart.h"
+#include "usb_charge.h"
#include "usb_mux.h"
#include "usb_pd_tcpm.h"
#include "usbc_ppc.h"
@@ -45,6 +48,7 @@
#define CPRINTS(format, args...) cprints(CC_USBCHARGE, format, ## args)
#define CPRINTF(format, args...) cprintf(CC_USBCHARGE, format, ## args)
+static void bc12_interrupt(enum gpio_signal signal);
static void ppc_interrupt(enum gpio_signal signal);
static void x_ec_interrupt(enum gpio_signal signal);
@@ -106,6 +110,8 @@ static void board_init(void)
pwm_set_duty(PWM_CH_PWRLED, 5);
pwm_enable(PWM_CH_PWRLED, 1);
+ gpio_enable_interrupt(GPIO_USB_C0_BC12_INT_ODL);
+
/* Enable motion sensor interrupt */
gpio_enable_interrupt(GPIO_BASE_IMU_INT_L);
gpio_enable_interrupt(GPIO_LID_ACCEL_INT_L);
@@ -156,6 +162,26 @@ const struct temp_sensor_t temp_sensors[] = {
};
BUILD_ASSERT(ARRAY_SIZE(temp_sensors) == TEMP_SENSOR_COUNT);
+/* BC12 */
+const struct mt6360_config_t mt6360_config = {
+ .i2c_port = 0,
+ .i2c_addr_flags = MT6360_PMU_SLAVE_ADDR_FLAGS,
+};
+
+const struct pi3usb9201_config_t
+ pi3usb9201_bc12_chips[CONFIG_USB_PD_PORT_MAX_COUNT] = {
+ /* [0]: unused */
+ [1] = {
+ .i2c_port = 4,
+ .i2c_addr_flags = PI3USB9201_I2C_ADDR_3_FLAGS,
+ }
+};
+
+struct bc12_config bc12_ports[CONFIG_USB_PD_PORT_MAX_COUNT] = {
+ { .drv = &mt6360_drv },
+ { .drv = &pi3usb9201_drv },
+};
+
/* Keyboard scan setting */
struct keyboard_scan_config keyscan_config = {
.output_settle_us = 35,
@@ -170,6 +196,22 @@ struct keyboard_scan_config keyscan_config = {
},
};
+static void bc12_interrupt(enum gpio_signal signal)
+{
+ if (signal == GPIO_USB_C0_BC12_INT_ODL)
+ task_set_event(TASK_ID_USB_CHG_P0, USB_CHG_EVENT_BC12, 0);
+ else
+ task_set_event(TASK_ID_USB_CHG_P1, USB_CHG_EVENT_BC12, 0);
+}
+
+static void board_sub_bc12_init(void)
+{
+ if (board_get_sub_board() == SUB_BOARD_TYPEC)
+ gpio_enable_interrupt(GPIO_USB_C1_BC12_INT_L);
+}
+/* Must be done after I2C and subboard */
+DECLARE_HOOK(HOOK_INIT, board_sub_bc12_init, HOOK_PRIO_INIT_I2C + 1);
+
/*
* I2C channels (A, B, and C) are using the same timing registers (00h~07h)
* at default.