diff options
author | Yu-An Chen <yu-an.chen@quanta.corp-partner.google.com> | 2020-06-10 18:10:48 +0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-06-18 12:07:31 +0000 |
commit | 5c34534e8175d60f40b05b11964e9d1c3aa12b77 (patch) | |
tree | da12b695d160269e03a575ba57caecffaa6617e5 | |
parent | c9185cbf84be8f3f8103d94889980f19f91779f1 (diff) | |
download | chrome-ec-5c34534e8175d60f40b05b11964e9d1c3aa12b77.tar.gz |
Dood: Add PPC syv682x config
Supoprt PPC SYV682X on Dood.
BUG=b:158054901
BRANCH=octopus
TEST=make buildall
Signed-off-by: Yu-An Chen <yu-an.chen@quanta.corp-partner.google.com>
Change-Id: Ibd60e0ab06204a6a369a19956a848aed1151d987
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2239598
Reviewed-by: Ren Kuo <ren.kuo@quanta.corp-partner.google.com>
Reviewed-by: Marco Chen <marcochen@chromium.org>
-rw-r--r-- | board/dood/board.c | 51 | ||||
-rw-r--r-- | board/dood/board.h | 5 | ||||
-rw-r--r-- | board/dood/gpio.inc | 2 |
3 files changed, 54 insertions, 4 deletions
diff --git a/board/dood/board.c b/board/dood/board.c index 407faa8d53..25db730c85 100644 --- a/board/dood/board.c +++ b/board/dood/board.c @@ -17,6 +17,7 @@ #include "driver/accelgyro_bmi_common.h" #include "driver/charger/bd9995x.h" #include "driver/ppc/nx20p348x.h" +#include "driver/ppc/syv682x.h" #include "driver/sync.h" #include "driver/tcpm/anx7447.h" #include "driver/tcpm/ps8xxx.h" @@ -71,15 +72,36 @@ const int keyboard_factory_scan_pins[][2] = { const int keyboard_factory_scan_pins_used = ARRAY_SIZE(keyboard_factory_scan_pins); +/* Check PPC ID and board version to decide which one ppc is used. */ +static bool support_syv_ppc(void) +{ + uint32_t board_version = 0; + + if (cbi_get_board_version(&board_version) != EC_SUCCESS) + CPRINTSUSB("Get board version failed."); + + if ((board_version >= 5) && (gpio_get_level(GPIO_PPC_ID))) + return true; + + return false; +} + static void ppc_interrupt(enum gpio_signal signal) { + switch (signal) { case GPIO_USB_PD_C0_INT_ODL: - nx20p348x_interrupt(0); + if (support_syv_ppc()) + syv682x_interrupt(0); + else + nx20p348x_interrupt(0); break; case GPIO_USB_PD_C1_INT_ODL: - nx20p348x_interrupt(1); + if (support_syv_ppc()) + syv682x_interrupt(1); + else + nx20p348x_interrupt(1); break; default: @@ -286,3 +308,28 @@ void board_overcurrent_event(int port, int is_overcurrented) /* Note that the level is inverted because the pin is active low. */ gpio_set_level(GPIO_USB_C_OC, !is_overcurrented); } + +const struct ppc_config_t ppc_syv682x_port0 = { + .i2c_port = I2C_PORT_TCPC0, + .i2c_addr_flags = SYV682X_ADDR0_FLAGS, + .drv = &syv682x_drv, +}; + +const struct ppc_config_t ppc_syv682x_port1 = { + .i2c_port = I2C_PORT_TCPC1, + .i2c_addr_flags = SYV682X_ADDR0_FLAGS, + .drv = &syv682x_drv, +}; + +static void board_setup_ppc(void) +{ + if (support_syv_ppc()) { + memcpy(&ppc_chips[USB_PD_PORT_TCPC_0], + &ppc_syv682x_port0, + sizeof(struct ppc_config_t)); + memcpy(&ppc_chips[USB_PD_PORT_TCPC_1], + &ppc_syv682x_port1, + sizeof(struct ppc_config_t)); + } +} +DECLARE_HOOK(HOOK_INIT, board_setup_ppc, HOOK_PRIO_INIT_I2C + 2); diff --git a/board/dood/board.h b/board/dood/board.h index 2c5c01b7e6..eecff526df 100644 --- a/board/dood/board.h +++ b/board/dood/board.h @@ -3,7 +3,7 @@ * found in the LICENSE file. */ -/* Bobba board configuration */ +/* Dood board configuration */ #ifndef __CROS_EC_BOARD_H #define __CROS_EC_BOARD_H @@ -51,6 +51,9 @@ #define CONFIG_STEINHART_HART_3V3_13K7_47K_4050B #define CONFIG_STEINHART_HART_3V3_51K1_47K_4050B +/* Additional PPC second source */ +#define CONFIG_USBC_PPC_SYV682X + #ifndef __ASSEMBLER__ /* support factory keyboard test */ diff --git a/board/dood/gpio.inc b/board/dood/gpio.inc index 6b1b7269a6..961acf8ee0 100644 --- a/board/dood/gpio.inc +++ b/board/dood/gpio.inc @@ -143,12 +143,12 @@ GPIO(USB_C_OC, PIN(3, 6), GPIO_ODR_HIGH | GPIO_SEL_1P8V) /* Misc. */ GPIO(CCD_MODE_EC_L, PIN(E, 3), GPIO_INPUT) GPIO(TRACKPAD_INT_1V8_ODL, PIN(9, 3), GPIO_INPUT | GPIO_SEL_1P8V) +GPIO(PPC_ID, PIN(9, 7), GPIO_INPUT | GPIO_PULL_DOWN) /* PPC ID Pin */ /* Unused Pins */ GPIO(CHARGER_PMON, PIN(4, 2), GPIO_INPUT) GPIO(CHARGER_IADP, PIN(4, 3), GPIO_INPUT) GPIO(EC_GPIO57, PIN(5, 7), GPIO_INPUT | GPIO_PULL_UP) /* TP Only */ -GPIO(EC_GPIO97, PIN(9, 7), GPIO_INPUT | GPIO_PULL_UP) /* TP Only */ GPIO(EC_I2S_SFRM, PIN(A, 5), GPIO_INPUT | GPIO_SEL_1P8V) GPIO(EC_I2S_SCLK, PIN(A, 7), GPIO_INPUT | GPIO_SEL_1P8V) GPIO(EC_I2S_TX_PCH_RX, PIN(B, 0), GPIO_INPUT | GPIO_SEL_1P8V) |