diff options
author | Scott Collyer <scollyer@google.com> | 2021-03-18 04:41:37 -0700 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2021-04-14 16:06:23 +0000 |
commit | 50bab871ef8d464c270e595b1c598c1847f4df01 (patch) | |
tree | 7ac2cd910e50f7fe7c774b330021e76923fdca2a /board/baklava | |
parent | 9bf812de554b9a7e407f615c338e44abe2ff9531 (diff) | |
download | chrome-ec-50bab871ef8d464c270e595b1c598c1847f4df01.tar.gz |
baklava: initial EC image
Baklava is a quiche variant that does not have the user facing DP
capable usbc port. This CL modifies the starting quiche image to
account for usbc port that is removed.
BUG=b:184595837
BRANCH=quiche
TEST=make -j BOARD=baklava. Verified C0 (host) port operation
Signed-off-by: Scott Collyer <scollyer@google.com>
Change-Id: Ic4455958d5cc6dbedfc17011113792ae3809e7be
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2727858
Tested-by: Scott Collyer <scollyer@chromium.org>
Reviewed-by: Diana Z <dzigterman@chromium.org>
Commit-Queue: Scott Collyer <scollyer@chromium.org>
Diffstat (limited to 'board/baklava')
-rw-r--r-- | board/baklava/board.c | 77 | ||||
-rw-r--r-- | board/baklava/board.h | 14 | ||||
-rw-r--r-- | board/baklava/ec.tasklist | 2 | ||||
-rw-r--r-- | board/baklava/gpio.inc | 6 |
4 files changed, 17 insertions, 82 deletions
diff --git a/board/baklava/board.c b/board/baklava/board.c index 1102e38a84..dbabeefbc6 100644 --- a/board/baklava/board.c +++ b/board/baklava/board.c @@ -42,7 +42,6 @@ #ifdef SECTION_IS_RW static int pd_dual_role_init[CONFIG_USB_PD_PORT_MAX_COUNT] = { PD_DRP_TOGGLE_ON, - PD_DRP_FORCE_SOURCE, }; static void ppc_interrupt(enum gpio_signal signal) @@ -51,29 +50,11 @@ static void ppc_interrupt(enum gpio_signal signal) case GPIO_HOST_USBC_PPC_INT_ODL: sn5s330_interrupt(USB_PD_PORT_HOST); break; - case GPIO_USBC_DP_PPC_INT_ODL: - sn5s330_interrupt(USB_PD_PORT_DP); - break; - default: break; } } -static void tcpc_alert_event(enum gpio_signal s) -{ - int port = -1; - - switch (s) { - case GPIO_USBC_DP_MUX_ALERT_ODL: - port = USB_PD_PORT_DP; - break; - default: - return; - } - schedule_deferred_pd_interrupt(port); -} - void hpd_interrupt(enum gpio_signal signal) { usb_pd_hpd_edge_event(signal); @@ -85,11 +66,11 @@ void board_uf_manage_vbus(void) /* * GPIO_USBC_UF_MUX_VBUS_EN is an output from the PS8803 which tracks if - * C2 is attached. When it's attached, this signal will be high. Use + * C1 is attached. When it's attached, this signal will be high. Use * this level to control PPC VBUS on/off. */ ppc_vbus_source_enable(USB_PD_PORT_USB3, level); - CPRINTS("C2: State = %s", level ? "Attached.SRC " : "Unattached.SRC"); + CPRINTS("C1: State = %s", level ? "Attached.SRC " : "Unattached.SRC"); } DECLARE_DEFERRED(board_uf_manage_vbus); @@ -127,12 +108,8 @@ const struct power_seq board_power_seq[] = { {GPIO_EC_HUB2_RESET_L, 1, 41}, {GPIO_EC_HUB3_RESET_L, 1, 33}, {GPIO_DP_SINK_RESET, 1, 100}, - {GPIO_USBC_DP_PD_RST_L, 1, 100}, {GPIO_USBC_UF_RESET_L, 1, 33}, - {GPIO_DEMUX_DUAL_DP_PD_N, 1, 100}, - {GPIO_DEMUX_DUAL_DP_RESET_N, 1, 100}, {GPIO_DEMUX_DP_HDMI_PD_N, 1, 10}, - {GPIO_DEMUX_DUAL_DP_MODE, 1, 10}, {GPIO_DEMUX_DP_HDMI_MODE, 1, 5}, }; const size_t board_power_seq_count = ARRAY_SIZE(board_power_seq); @@ -184,14 +161,6 @@ const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_MAX_COUNT] = { .bus_type = EC_BUS_TYPE_EMBEDDED, .drv = &stm32gx_tcpm_drv, }, - [USB_PD_PORT_DP] = { - .bus_type = EC_BUS_TYPE_I2C, - .i2c_info = { - .port = I2C_PORT_I2C1, - .addr_flags = PS8751_I2C_ADDR2_FLAGS, - }, - .drv = &ps8xxx_tcpm_drv, - }, }; const struct usb_mux usb_muxes[CONFIG_USB_PD_PORT_MAX_COUNT] = { @@ -202,13 +171,6 @@ const struct usb_mux usb_muxes[CONFIG_USB_PD_PORT_MAX_COUNT] = { .driver = &ps8822_usb_mux_driver, .board_set = &board_ps8822_mux_set, }, - [USB_PD_PORT_DP] = { - .usb_port = USB_PD_PORT_DP, - .i2c_port = I2C_PORT_I2C1, - .i2c_addr_flags = PS8751_I2C_ADDR2_FLAGS, - .driver = &tcpci_tcpm_usb_mux_driver, - .hpd_update = &ps8xxx_tcpc_update_hpd_status, - }, }; /* USB-C PPC Configuration */ @@ -218,11 +180,6 @@ struct ppc_config_t ppc_chips[CONFIG_USB_PD_PORT_MAX_COUNT] = { .i2c_addr_flags = SN5S330_ADDR0_FLAGS, .drv = &sn5s330_drv }, - [USB_PD_PORT_DP] = { - .i2c_port = I2C_PORT_I2C1, - .i2c_addr_flags = SN5S330_ADDR2_FLAGS, - .drv = &sn5s330_drv - }, [USB_PD_PORT_USB3] = { .i2c_port = I2C_PORT_I2C3, .i2c_addr_flags = SN5S330_ADDR1_FLAGS, @@ -240,10 +197,9 @@ void board_reset_pd_mcu(void) { cprints(CC_SYSTEM, "Resetting TCPCs..."); cflush(); - gpio_set_level(GPIO_USBC_DP_PD_RST_L, 0); + gpio_set_level(GPIO_USBC_UF_RESET_L, 0); msleep(PS8805_FW_INIT_DELAY_MS); - gpio_set_level(GPIO_USBC_DP_PD_RST_L, 1); gpio_set_level(GPIO_USBC_UF_RESET_L, 1); msleep(PS8805_FW_INIT_DELAY_MS); } @@ -252,23 +208,19 @@ void board_enable_usbc_interrupts(void) { /* Enable PPC interrupts. */ gpio_enable_interrupt(GPIO_HOST_USBC_PPC_INT_ODL); - gpio_enable_interrupt(GPIO_USBC_DP_PPC_INT_ODL); /* Enable HPD interrupt */ gpio_enable_interrupt(GPIO_DDI_MST_IN_HPD); - /* Enable TCPC interrupts. */ - gpio_enable_interrupt(GPIO_USBC_DP_MUX_ALERT_ODL); + /* Enable VBUS control interrupt for C1 */ + gpio_enable_interrupt(GPIO_USBC_UF_MUX_VBUS_EN); } void board_disable_usbc_interrupts(void) { /* Disable PPC interrupts. */ gpio_disable_interrupt(GPIO_HOST_USBC_PPC_INT_ODL); - gpio_disable_interrupt(GPIO_USBC_DP_PPC_INT_ODL); /* Disable HPD interrupt */ gpio_disable_interrupt(GPIO_DDI_MST_IN_HPD); - /* Disable TCPC interrupts. */ - gpio_disable_interrupt(GPIO_USBC_DP_MUX_ALERT_ODL); - /* Disable VBUS control interrupt for C2 */ + /* Disable VBUS control interrupt for C1 */ gpio_disable_interrupt(GPIO_USBC_UF_MUX_VBUS_EN); } @@ -306,15 +258,15 @@ static void board_config_usbc_uf_ppc(void) */ ppc_vbus_source_enable(USB_PD_PORT_USB3, vbus_level); - /* Enable VBUS control interrupt for C2 */ + /* Enable VBUS control interrupt for C1 */ gpio_enable_interrupt(GPIO_USBC_UF_MUX_VBUS_EN); } __override uint8_t board_get_usb_pd_port_count(void) { /* - * CONFIG_USB_PD_PORT_MAX_COUNT must be defined to account for C0, C1, - * and C2, but TCPMv2 only knows about C0 and C1, as C2 is a type-c only + * CONFIG_USB_PD_PORT_MAX_COUNT must be defined to account for C0 + * and C1, but TCPMv2 only knows about C0, as C1 is a type-c only * port that is managed directly by the PS8803 TCPC. */ return CONFIG_USB_PD_PORT_MAX_COUNT - 1; @@ -324,21 +276,13 @@ int ppc_get_alert_status(int port) { if (port == USB_PD_PORT_HOST) return gpio_get_level(GPIO_HOST_USBC_PPC_INT_ODL) == 0; - else if (port == USB_PD_PORT_DP) - return gpio_get_level(GPIO_USBC_DP_PPC_INT_ODL) == 0; return 0; } uint16_t tcpc_get_alert_status(void) { - uint16_t status = 0; - - if (!gpio_get_level(GPIO_USBC_DP_MUX_ALERT_ODL) && - gpio_get_level(GPIO_USBC_DP_PD_RST_L)) - status |= PD_STATUS_TCPC_ALERT_1; - - return status; + return 0; } void board_overcurrent_event(int port, int is_overcurrented) @@ -350,6 +294,7 @@ void board_overcurrent_event(int port, int is_overcurrented) static void board_init(void) { #ifdef SECTION_IS_RW + /* Initialize PPC and check usbc state */ board_config_usbc_uf_ppc(); #endif } diff --git a/board/baklava/board.h b/board/baklava/board.h index 4f93fbf044..8e4d4d5036 100644 --- a/board/baklava/board.h +++ b/board/baklava/board.h @@ -16,19 +16,17 @@ /* USB Type C and USB PD defines */ #define USB_PD_PORT_HOST 0 -#define USB_PD_PORT_DP 1 -#define USB_PD_PORT_USB3 2 +#define USB_PD_PORT_USB3 1 /* - * The host (C0) and display (C1) usbc ports are usb-pd capable. There is - * also a type-c only port (C2). C2 must be accounted for in PORT_MAX_COUNT so - * the PPC config table is correctly sized and the PPC driver can be used to - * control VBUS on/off. + * Only the host and display usbc ports are usb-pd capable. There is a 2nd usbc + * port, but this is type-c capable only. Only the PPC for this port needs to be + * controlled by FW. */ -#define CONFIG_USB_PD_PORT_MAX_COUNT 3 +#define CONFIG_USB_PD_PORT_MAX_COUNT 2 #define CONFIG_USB_MUX_PS8822 -#define CONFIG_USB_PID 0x5048 +#define CONFIG_USB_PID 0x1195 #define CONFIG_USB_BCD_DEV 0x0001 /* v 0.01 */ #define CONFIG_USB_PD_IDENTITY_HW_VERS 1 #define CONFIG_USB_PD_IDENTITY_SW_VERS 1 diff --git a/board/baklava/ec.tasklist b/board/baklava/ec.tasklist index cbdadb4f19..14c2c31393 100644 --- a/board/baklava/ec.tasklist +++ b/board/baklava/ec.tasklist @@ -13,6 +13,4 @@ TASK_ALWAYS(CONSOLE, console_task, NULL, VENTI_TASK_STACK_SIZE) \ TASK_ALWAYS_RW(POWER_BUTTON, power_button_task, NULL, LARGER_TASK_STACK_SIZE) \ TASK_ALWAYS_RW(PD_C0, pd_task, NULL, VENTI_TASK_STACK_SIZE) \ - TASK_ALWAYS_RW(PD_C1, pd_task, NULL, VENTI_TASK_STACK_SIZE) \ - TASK_ALWAYS_RW(PD_INT_C1, pd_interrupt_handler_task, 1, LARGER_TASK_STACK_SIZE) \ TASK_ALWAYS_RW(UCPD, ucpd_task, 0, LARGER_TASK_STACK_SIZE) diff --git a/board/baklava/gpio.inc b/board/baklava/gpio.inc index a1adf15c9f..b8a7dc96b5 100644 --- a/board/baklava/gpio.inc +++ b/board/baklava/gpio.inc @@ -10,8 +10,6 @@ #ifdef SECTION_IS_RW GPIO_INT(HOST_USBC_PPC_INT_ODL, PIN(D, 9), GPIO_INT_FALLING | GPIO_PULL_UP, ppc_interrupt) -GPIO_INT(USBC_DP_MUX_ALERT_ODL, PIN(B, 1), GPIO_INT_FALLING | GPIO_PULL_UP, tcpc_alert_event) -GPIO_INT(USBC_DP_PPC_INT_ODL, PIN(E, 7), GPIO_INT_FALLING | GPIO_PULL_UP, ppc_interrupt) GPIO_INT(DDI_MST_IN_HPD, PIN(C, 14), GPIO_INT_BOTH, hpd_interrupt) GPIO_INT(USBC_UF_MUX_VBUS_EN, PIN(C, 12), GPIO_INT_BOTH, board_uf_manage_vbus_interrupt) GPIO_INT(PWR_BTN, PIN(A, 0), GPIO_INT_BOTH, board_pwr_btn_interrupt) @@ -34,16 +32,12 @@ GPIO(MST_RST_L, PIN(E, 14), GPIO_ODR_LOW) GPIO(MST_HUB_LANE_SWITCH, PIN(C, 15), GPIO_OUT_HIGH) /* Display Demux signals */ -GPIO(DEMUX_DUAL_DP_MODE, PIN(B, 0), GPIO_OUT_LOW) GPIO(DEMUX_DP_HDMI_MODE, PIN(E, 15), GPIO_OUT_LOW) -GPIO(DEMUX_DUAL_DP_RESET_N, PIN(E, 13), GPIO_ODR_LOW) -GPIO(DEMUX_DUAL_DP_PD_N, PIN(E, 12), GPIO_ODR_LOW) GPIO(DEMUX_DP_HDMI_PD_N, PIN(B, 13), GPIO_ODR_LOW) /* USBC Mux and Demux Signals */ GPIO(EN_DP_SINK, PIN(B, 14), GPIO_OUT_LOW) GPIO(DP_SINK_RESET, PIN(B, 15), GPIO_OUT_LOW) -GPIO(USBC_DP_PD_RST_L, PIN(E, 9), GPIO_ODR_LOW) GPIO(USBC_UF_RESET_L, PIN(D, 2), GPIO_ODR_LOW) /* USB Hubs signals */ |