diff options
author | Devin Lu <devin.lu@quantatw.com> | 2020-06-16 14:57:48 +0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-06-18 13:31:33 +0000 |
commit | fe6ca90ed3188c5a0d890c1076ad1b0b1b9db29c (patch) | |
tree | 99e49386a265eb62806743a7e23da2a40d85791d /board/meep | |
parent | 5c34534e8175d60f40b05b11964e9d1c3aa12b77 (diff) | |
download | chrome-ec-fe6ca90ed3188c5a0d890c1076ad1b0b1b9db29c.tar.gz |
meep: enable 2nd ppc source syv682x
This patch adds 2nd ppc source syv682x base on ppc ID pin.
BUG=b:156019835
BRANCH=octopus
TEST=Verify system can be charged by typec charger.
Verify typec dongle works.
Verify c to HDMI dongle works.
Signed-off-by: Devin Lu <Devin.Lu@quantatw.com>
Change-Id: I8b8452399340f36878cb5a14d11622f87f382f00
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2247433
Reviewed-by: Marco Chen <marcochen@chromium.org>
Diffstat (limited to 'board/meep')
-rw-r--r-- | board/meep/board.c | 53 | ||||
-rw-r--r-- | board/meep/board.h | 3 | ||||
-rw-r--r-- | board/meep/gpio.inc | 2 |
3 files changed, 55 insertions, 3 deletions
diff --git a/board/meep/board.c b/board/meep/board.c index d713f77516..bee35e828d 100644 --- a/board/meep/board.c +++ b/board/meep/board.c @@ -18,6 +18,7 @@ #include "driver/accelgyro_lsm6dsm.h" #include "driver/charger/bd9995x.h" #include "driver/ppc/nx20p348x.h" +#include "driver/ppc/syv682x.h" #include "driver/tcpm/anx7447.h" #include "driver/tcpm/ps8xxx.h" #include "driver/tcpm/tcpci.h" @@ -31,6 +32,7 @@ #include "motion_sense.h" #include "power.h" #include "power_button.h" +#include "stdbool.h" #include "switch.h" #include "system.h" #include "tablet_mode.h" @@ -49,17 +51,29 @@ #define USB_PD_PORT_ANX7447 0 #define USB_PD_PORT_PS8751 1 +#ifdef CONFIG_KEYBOARD_KEYPAD +#error "KSO_14 was repurposed to PPC_ID pin so CONFIG_KEYBOARD_KEYPAD \ +should not be defined." +#endif + static uint8_t sku_id; +static bool support_syv_ppc; 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: @@ -238,6 +252,11 @@ static void board_update_sensor_config_from_sku(void) } } +static bool board_is_support_syv_ppc(uint32_t board_version) +{ + return ((board_version >= 6) && gpio_get_level(GPIO_PPC_ID)); +} + static void cbi_init(void) { uint32_t val; @@ -247,6 +266,11 @@ static void cbi_init(void) ccprints("SKU: 0x%04x", sku_id); board_update_sensor_config_from_sku(); + + if (cbi_get_board_version(&val) == EC_SUCCESS) + ccprints("Board Version: %d", val); + + support_syv_ppc = board_is_support_syv_ppc(val); } DECLARE_HOOK(HOOK_INIT, cbi_init, HOOK_PRIO_INIT_I2C + 1); @@ -323,3 +347,28 @@ __override uint32_t board_override_feature_flags0(uint32_t flags0) /* Report that there is no keyboard backlight */ return (flags0 &= ~EC_FEATURE_MASK_0(EC_FEATURE_PWM_KEYB)); } + +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/meep/board.h b/board/meep/board.h index 4ea92674c7..fdc6604b3f 100644 --- a/board/meep/board.h +++ b/board/meep/board.h @@ -51,6 +51,9 @@ #define CONFIG_ACCEL_LSM6DSM_INT_EVENT \ TASK_EVENT_MOTION_SENSOR_INTERRUPT(BASE_ACCEL) +/* Additional PPC second source */ +#define CONFIG_USBC_PPC_SYV682X + #ifndef __ASSEMBLER__ #include "gpio_signal.h" diff --git a/board/meep/gpio.inc b/board/meep/gpio.inc index 918a3e1ca8..ebb69bdf53 100644 --- a/board/meep/gpio.inc +++ b/board/meep/gpio.inc @@ -157,6 +157,7 @@ GPIO(GPOB6_NC, PIN(B, 6), GPIO_INPUT | GPIO_PULL_UP) /* EC_GP_SEL_ODL */ GPIO(CCD_MODE_EC_L, PIN(E, 3), GPIO_INPUT) GPIO(TRACKPAD_INT_1V8_ODL, PIN(9, 3), GPIO_INPUT) GPIO(EC_GPIO_03, PIN(0, 3), GPIO_INPUT) /* TP only */ +GPIO(PPC_ID, PIN(8, 2), GPIO_INPUT | GPIO_PULL_DOWN) /* PPC ID pin */ /* Unused pins */ GPIO(CHARGER_PMON, PIN(4, 2), GPIO_INPUT) @@ -173,7 +174,6 @@ ALTERNATE(PIN_MASK(2, 0xFC), 0, MODULE_KEYBOARD_SCAN, GPIO_INPUT) /* KSI_02-07 * ALTERNATE(PIN_MASK(2, 0x03), 0, MODULE_KEYBOARD_SCAN, GPIO_ODR_HIGH) /* KSO_00-01 */ ALTERNATE(PIN_MASK(1, 0x7F), 0, MODULE_KEYBOARD_SCAN, GPIO_ODR_HIGH) /* KSO_03-09 */ ALTERNATE(PIN_MASK(0, 0xF0), 0, MODULE_KEYBOARD_SCAN, GPIO_ODR_HIGH) /* KSO_10-13 */ -ALTERNATE(PIN_MASK(8, 0x04), 0, MODULE_KEYBOARD_SCAN, GPIO_ODR_HIGH) /* KSO_14 */ GPIO(KBD_KSO2, PIN(1, 7), GPIO_OUT_LOW) /* EC_KSO_02_INV */ /* Alternate functions GPIO definitions */ |