summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Huang <david.huang@quanta.corp-partner.google.com>2020-06-03 11:56:36 +0800
committerCommit Bot <commit-bot@chromium.org>2020-06-05 07:48:33 +0000
commit8b0044faa3a6529e08c06042def10260297fb0e2 (patch)
treecfe5869af37d4a8abe918c0e696edf49bb4a9578
parent84d2047b28335816ac517e105e21df507ab0e586 (diff)
downloadchrome-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.h2
-rw-r--r--baseboard/octopus/variant_usbc_standalone_tcpcs.c3
-rw-r--r--board/bobba/board.c40
-rw-r--r--board/bobba/board.h3
-rw-r--r--board/bobba/gpio.inc2
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)