summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYu-An Chen <yu-an.chen@quanta.corp-partner.google.com>2020-06-10 18:10:48 +0800
committerCommit Bot <commit-bot@chromium.org>2020-06-18 12:07:31 +0000
commit5c34534e8175d60f40b05b11964e9d1c3aa12b77 (patch)
treeda12b695d160269e03a575ba57caecffaa6617e5
parentc9185cbf84be8f3f8103d94889980f19f91779f1 (diff)
downloadchrome-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.c51
-rw-r--r--board/dood/board.h5
-rw-r--r--board/dood/gpio.inc2
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)