diff options
-rw-r--r-- | baseboard/intelrvp/adlrvp.c | 8 | ||||
-rw-r--r-- | baseboard/intelrvp/adlrvp.h | 12 | ||||
-rw-r--r-- | baseboard/intelrvp/chg_usb_pd_mecc_1_0.c | 9 | ||||
-rw-r--r-- | baseboard/intelrvp/ite_ec.c | 2 | ||||
-rw-r--r-- | board/adlrvpp_ite/board.c | 4 | ||||
-rw-r--r-- | board/adlrvpp_ite/board.h | 2 | ||||
-rw-r--r-- | board/adlrvpp_ite/gpio.inc | 27 |
7 files changed, 45 insertions, 19 deletions
diff --git a/baseboard/intelrvp/adlrvp.c b/baseboard/intelrvp/adlrvp.c index e6174d18a9..b8f7d71661 100644 --- a/baseboard/intelrvp/adlrvp.c +++ b/baseboard/intelrvp/adlrvp.c @@ -29,11 +29,13 @@ const struct tcpc_aic_gpio_config_t tcpc_aic_gpios[] = { .ppc_alert = GPIO_USBC_TCPC_PPC_ALRT_P0, .ppc_intr_handler = sn5s330_interrupt, }, +#if defined(HAS_TASK_PD_C1) [TYPE_C_PORT_1] = { .tcpc_alert = GPIO_USBC_TCPC_ALRT_P1, .ppc_alert = GPIO_USBC_TCPC_PPC_ALRT_P1, .ppc_intr_handler = sn5s330_interrupt, }, +#endif #if defined(HAS_TASK_PD_C2) [TYPE_C_PORT_2] = { .tcpc_alert = GPIO_USBC_TCPC_ALRT_P2, @@ -58,11 +60,13 @@ struct ppc_config_t ppc_chips[] = { .i2c_addr_flags = I2C_ADDR_SN5S330_TCPC_AIC_PPC, .drv = &sn5s330_drv, }, +#if defined(HAS_TASK_PD_C1) [TYPE_C_PORT_1] = { .i2c_port = I2C_PORT_TYPEC_1, .i2c_addr_flags = I2C_ADDR_SN5S330_TCPC_AIC_PPC, .drv = &sn5s330_drv }, +#endif #if defined(HAS_TASK_PD_C2) [TYPE_C_PORT_2] = { .i2c_port = I2C_PORT_TYPEC_2, @@ -87,11 +91,13 @@ struct usb_mux usbc0_tcss_usb_mux = { .driver = &virtual_usb_mux_driver, .hpd_update = &virtual_hpd_update, }; +#if defined(HAS_TASK_PD_C1) struct usb_mux usbc1_tcss_usb_mux = { .usb_port = TYPE_C_PORT_1, .driver = &virtual_usb_mux_driver, .hpd_update = &virtual_hpd_update, }; +#endif #if defined(HAS_TASK_PD_C2) struct usb_mux usbc2_tcss_usb_mux = { .usb_port = TYPE_C_PORT_2, @@ -116,6 +122,7 @@ struct usb_mux usb_muxes[] = { .i2c_port = I2C_PORT_TYPEC_0, .i2c_addr_flags = I2C_PORT0_BB_RETIMER_ADDR, }, +#if defined(HAS_TASK_PD_C1) [TYPE_C_PORT_1] = { .usb_port = TYPE_C_PORT_1, .next_mux = &usbc1_tcss_usb_mux, @@ -123,6 +130,7 @@ struct usb_mux usb_muxes[] = { .i2c_port = I2C_PORT_TYPEC_1, .i2c_addr_flags = I2C_PORT1_BB_RETIMER_ADDR, }, +#endif #if defined(HAS_TASK_PD_C2) [TYPE_C_PORT_2] = { .usb_port = TYPE_C_PORT_2, diff --git a/baseboard/intelrvp/adlrvp.h b/baseboard/intelrvp/adlrvp.h index 9703a39bb2..f2e264e181 100644 --- a/baseboard/intelrvp/adlrvp.h +++ b/baseboard/intelrvp/adlrvp.h @@ -26,10 +26,14 @@ #define CONFIG_CHIPSET_ALDERLAKE /* USB PD config */ -#if defined(HAS_TASK_PD_C2) && defined(HAS_TASK_PD_C3) +#if defined(HAS_TASK_PD_C3) #define CONFIG_USB_PD_PORT_MAX_COUNT 4 -#else +#elif defined(HAS_TASK_PD_C2) +#define CONFIG_USB_PD_PORT_MAX_COUNT 3 +#elif defined(HAS_TASK_PD_C1) #define CONFIG_USB_PD_PORT_MAX_COUNT 2 +#else +#define CONFIG_USB_PD_PORT_MAX_COUNT 1 #endif #define CONFIG_USB_MUX_VIRTUAL #define PD_MAX_POWER_MW 100000 @@ -59,7 +63,9 @@ /* Config BB retimer */ #define CONFIG_USBC_RETIMER_INTEL_BB #define I2C_PORT0_BB_RETIMER_ADDR 0x56 +#if defined(HAS_TASK_PD_C1) #define I2C_PORT1_BB_RETIMER_ADDR 0x57 +#endif #if defined(HAS_TASK_PD_C2) #define I2C_PORT2_BB_RETIMER_ADDR 0x58 #endif @@ -110,7 +116,9 @@ enum adlrvp_charge_ports { TYPE_C_PORT_0, +#if defined(HAS_TASK_PD_C1) TYPE_C_PORT_1, +#endif #if defined(HAS_TASK_PD_C2) TYPE_C_PORT_2, #endif diff --git a/baseboard/intelrvp/chg_usb_pd_mecc_1_0.c b/baseboard/intelrvp/chg_usb_pd_mecc_1_0.c index 0fa9716b07..0c091efead 100644 --- a/baseboard/intelrvp/chg_usb_pd_mecc_1_0.c +++ b/baseboard/intelrvp/chg_usb_pd_mecc_1_0.c @@ -33,7 +33,8 @@ static void baseboard_tcpc_init(void) for (i = 0; i < CONFIG_USB_PD_PORT_MAX_COUNT; i++) { /* Enable PPC interrupts. */ - gpio_enable_interrupt(tcpc_aic_gpios[i].ppc_alert); + if (tcpc_aic_gpios[i].ppc_intr_handler) + gpio_enable_interrupt(tcpc_aic_gpios[i].ppc_alert); /* Enable TCPC interrupts. */ if (tcpc_config[i].bus_type != EC_BUS_TYPE_EMBEDDED) @@ -78,6 +79,9 @@ uint16_t tcpc_get_alert_status(void) int ppc_get_alert_status(int port) { + if (!tcpc_aic_gpios[port].ppc_intr_handler) + return 0; + return !gpio_get_level(tcpc_aic_gpios[port].ppc_alert); } @@ -87,7 +91,8 @@ void ppc_interrupt(enum gpio_signal signal) int i; for (i = 0; i < CONFIG_USB_PD_PORT_MAX_COUNT; i++) { - if (signal == tcpc_aic_gpios[i].ppc_alert) { + if (tcpc_aic_gpios[i].ppc_intr_handler && + signal == tcpc_aic_gpios[i].ppc_alert) { tcpc_aic_gpios[i].ppc_intr_handler(i); break; } diff --git a/baseboard/intelrvp/ite_ec.c b/baseboard/intelrvp/ite_ec.c index 9254a3b39b..d76d22bb63 100644 --- a/baseboard/intelrvp/ite_ec.c +++ b/baseboard/intelrvp/ite_ec.c @@ -130,7 +130,7 @@ const struct pwm_t pwm_channels[] = { }; BUILD_ASSERT(ARRAY_SIZE(pwm_channels) == PWM_CH_COUNT); -#ifdef CONFIG_USBC_VCONN +#if defined(CONFIG_USBC_VCONN) && defined(CONFIG_USB_PD_TCPM_ITE_ON_CHIP) void board_pd_vconn_ctrl(int port, enum usbpd_cc_pin cc_pin, int enabled) { #ifndef CONFIG_USBC_PPC_VCONN diff --git a/board/adlrvpp_ite/board.c b/board/adlrvpp_ite/board.c index 3e39b4888d..835cdcb986 100644 --- a/board/adlrvpp_ite/board.c +++ b/board/adlrvpp_ite/board.c @@ -64,8 +64,6 @@ const struct i2c_port_t i2c_ports[] = { .scl = GPIO_USBC_TCPC_I2C_CLK_P1, .sda = GPIO_USBC_TCPC_I2C_DATA_P1, }, -#endif -#if defined(HAS_TASK_PD_C3) [I2C_CHAN_TYPEC_3] = { .name = "typec_3", .port = IT83XX_I2C_CH_D, @@ -85,6 +83,7 @@ const struct tcpc_config_t tcpc_config[] = { /* TCPC is embedded within EC so no i2c config needed */ .drv = &it83xx_tcpm_drv, }, +#if defined(HAS_TASK_PD_C1) [TYPE_C_PORT_1] = { .bus_type = EC_BUS_TYPE_I2C, .i2c_info = { @@ -93,6 +92,7 @@ const struct tcpc_config_t tcpc_config[] = { }, .drv = &fusb302_tcpm_drv, }, +#endif #if defined(HAS_TASK_PD_C2) [TYPE_C_PORT_2] = { .bus_type = EC_BUS_TYPE_I2C, diff --git a/board/adlrvpp_ite/board.h b/board/adlrvpp_ite/board.h index ea858da722..8552c5630f 100644 --- a/board/adlrvpp_ite/board.h +++ b/board/adlrvpp_ite/board.h @@ -69,8 +69,6 @@ #define I2C_PORT_TYPEC_1 IT83XX_I2C_CH_F #if defined(HAS_TASK_PD_C2) #define I2C_PORT_TYPEC_2 IT83XX_I2C_CH_E -#endif -#if defined(HAS_TASK_PD_C3) #define I2C_PORT_TYPEC_3 IT83XX_I2C_CH_D #endif diff --git a/board/adlrvpp_ite/gpio.inc b/board/adlrvpp_ite/gpio.inc index 9eb21524f3..877f5896c3 100644 --- a/board/adlrvpp_ite/gpio.inc +++ b/board/adlrvpp_ite/gpio.inc @@ -46,22 +46,29 @@ GPIO_INT(UART_SERVO_TX_EC_RX, PIN(B, 0), GPIO_INT_FALLING, uart_deepsleep_interr /* Using embedded TCPC for Port-0 */ UNIMPLEMENTED(USBC_TCPC_ALRT_P0) GPIO(NC_USBC_TCPC_ALRT_P0, PIN(I, 7), GPIO_INPUT) +GPIO_INT(USBC_TCPC_PPC_ALRT_P0, PIN(J, 5), GPIO_INT_BOTH, ppc_interrupt) + +#if defined(HAS_TASK_PD_C1) GPIO_INT(USBC_TCPC_ALRT_P1, PIN(G, 0), GPIO_INT_BOTH, tcpc_alert_event) -#if defined(BOARD_ADLRVPP_ITE) +GPIO_INT(USBC_TCPC_PPC_ALRT_P1, PIN(C, 4), GPIO_INT_BOTH, ppc_interrupt) +#else +GPIO(USBC_TCPC_ALRT_P1, PIN(G, 0), GPIO_INPUT) +GPIO(USBC_TCPC_PPC_ALRT_P1, PIN(C, 4), GPIO_INPUT) +#endif + +#if defined(HAS_TASK_PD_C2) GPIO_INT(USBC_TCPC_ALRT_P2, PIN(J, 1), GPIO_INT_BOTH, tcpc_alert_event) -GPIO_INT(USBC_TCPC_ALRT_P3, PIN(J, 3), GPIO_INT_BOTH, tcpc_alert_event) -#else /* BOARD_ADLRVPM_ITE */ +GPIO_INT(USBC_TCPC_PPC_ALRT_P2, PIN(E, 5), GPIO_INT_BOTH, ppc_interrupt) +#else GPIO(USBC_TCPC_ALRT_P2, PIN(J, 1), GPIO_INPUT) -GPIO(USBC_TCPC_ALRT_P3, PIN(J, 3), GPIO_INPUT) +GPIO(USBC_TCPC_PPC_ALRT_P2, PIN(E, 5), GPIO_INPUT) #endif -GPIO_INT(USBC_TCPC_PPC_ALRT_P0, PIN(J, 5), GPIO_INT_BOTH, ppc_interrupt) -GPIO_INT(USBC_TCPC_PPC_ALRT_P1, PIN(C, 4), GPIO_INT_BOTH, ppc_interrupt) -#if defined(BOARD_ADLRVPP_ITE) -GPIO_INT(USBC_TCPC_PPC_ALRT_P2, PIN(E, 5), GPIO_INT_BOTH, ppc_interrupt) +#if defined(HAS_TASK_PD_C3) +GPIO_INT(USBC_TCPC_ALRT_P3, PIN(J, 3), GPIO_INT_BOTH, tcpc_alert_event) GPIO_INT(USBC_TCPC_PPC_ALRT_P3, PIN(E, 6), GPIO_INT_BOTH, ppc_interrupt) -#else /* BOARD_ADLRVPM_ITE */ -GPIO(USBC_TCPC_PPC_ALRT_P2, PIN(E, 5), GPIO_INPUT) +#else +GPIO(USBC_TCPC_ALRT_P3, PIN(J, 3), GPIO_INPUT) GPIO(USBC_TCPC_PPC_ALRT_P3, PIN(E, 6), GPIO_INPUT) #endif |