diff options
author | David Huang <david.huang@quanta.corp-partner.google.com> | 2020-06-03 11:56:36 +0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-06-05 07:48:33 +0000 |
commit | 8b0044faa3a6529e08c06042def10260297fb0e2 (patch) | |
tree | cfe5869af37d4a8abe918c0e696edf49bb4a9578 | |
parent | 84d2047b28335816ac517e105e21df507ab0e586 (diff) | |
download | chrome-ec-8b0044faa3a6529e08c06042def10260297fb0e2.tar.gz |
Bobba: add PPC syv682x config
Supoprt PPC SYV682X on bobba.
BUG=b:154772847, b:156711950
BRANCH=octopus
TEST=Check usb dongle/typec adapter worked properly in any power state.
Signed-off-by: David Huang <david.huang@quanta.corp-partner.google.com>
Change-Id: I1b87d3de4a749005b5bf4c1d42cb4bf1fa61f1ec
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2230940
Reviewed-by: Marco Chen <marcochen@chromium.org>
Commit-Queue: Marco Chen <marcochen@chromium.org>
Tested-by: Marco Chen <marcochen@chromium.org>
-rw-r--r-- | baseboard/octopus/baseboard.h | 2 | ||||
-rw-r--r-- | baseboard/octopus/variant_usbc_standalone_tcpcs.c | 3 | ||||
-rw-r--r-- | board/bobba/board.c | 40 | ||||
-rw-r--r-- | board/bobba/board.h | 3 | ||||
-rw-r--r-- | board/bobba/gpio.inc | 2 |
5 files changed, 44 insertions, 6 deletions
diff --git a/baseboard/octopus/baseboard.h b/baseboard/octopus/baseboard.h index 305345dc3c..3ac6626631 100644 --- a/baseboard/octopus/baseboard.h +++ b/baseboard/octopus/baseboard.h @@ -184,6 +184,8 @@ #endif /* VARIANT_OCTOPUS_USBC */ /* Common USB-C defines */ +#define USB_PD_PORT_TCPC_0 0 +#define USB_PD_PORT_TCPC_1 1 #define CONFIG_USB_POWER_DELIVERY #define CONFIG_USB_PD_PORT_MAX_COUNT 2 #define CONFIG_USB_PD_DUAL_ROLE diff --git a/baseboard/octopus/variant_usbc_standalone_tcpcs.c b/baseboard/octopus/variant_usbc_standalone_tcpcs.c index 5d59789232..46043b53a7 100644 --- a/baseboard/octopus/variant_usbc_standalone_tcpcs.c +++ b/baseboard/octopus/variant_usbc_standalone_tcpcs.c @@ -24,9 +24,6 @@ #define CPRINTF(format, args...) cprintf(CC_USBCHARGE, format, ## args) #define CPRINTS(format, args...) cprints(CC_USBCHARGE, format, ## args) -#define USB_PD_PORT_TCPC_0 0 -#define USB_PD_PORT_TCPC_1 1 - /******************************************************************************/ /* USB-C TPCP Configuration */ const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_MAX_COUNT] = { diff --git a/board/bobba/board.c b/board/bobba/board.c index d4a696960a..6dcfea85bb 100644 --- a/board/bobba/board.c +++ b/board/bobba/board.c @@ -17,6 +17,7 @@ #include "driver/accelgyro_bmi160.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" @@ -72,13 +73,23 @@ const int keyboard_factory_scan_pins_used = static void ppc_interrupt(enum gpio_signal signal) { + uint32_t board_version = 0; + + if (cbi_get_board_version(&board_version) == EC_SUCCESS) + CPRINTSUSB("Get board version failed."); switch (signal) { case GPIO_USB_PD_C0_INT_ODL: - nx20p348x_interrupt(0); + if ((board_version == 5) && (gpio_get_level(GPIO_PPC_ID))) + syv682x_interrupt(0); + else + nx20p348x_interrupt(0); break; case GPIO_USB_PD_C1_INT_ODL: - nx20p348x_interrupt(1); + if ((board_version == 5) && (gpio_get_level(GPIO_PPC_ID))) + syv682x_interrupt(1); + else + nx20p348x_interrupt(1); break; default: @@ -411,3 +422,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 = SYV682X_ADDR0, + .drv = &syv682x_drv, +}; + +const struct ppc_config_t ppc_syv682x_port1 = { + .i2c_port = I2C_PORT_TCPC1, + .i2c_addr = SYV682X_ADDR0, + .drv = &syv682x_drv, +}; + +static void board_setup_ppc(void) +{ + if (gpio_get_level(GPIO_PPC_ID)) { + 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/bobba/board.h b/board/bobba/board.h index b5ba2bd0e5..472ed0af1d 100644 --- a/board/bobba/board.h +++ b/board/bobba/board.h @@ -68,6 +68,9 @@ /* keypad */ #define CONFIG_KEYBOARD_KEYPAD +/* Additional PPC second source */ +#define CONFIG_USBC_PPC_SYV682X + #ifndef __ASSEMBLER__ /* support factory keyboard test */ diff --git a/board/bobba/gpio.inc b/board/bobba/gpio.inc index 88d318f02c..e05298c656 100644 --- a/board/bobba/gpio.inc +++ b/board/bobba/gpio.inc @@ -149,12 +149,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) |