diff options
-rw-r--r-- | baseboard/zork/baseboard.c | 17 | ||||
-rw-r--r-- | baseboard/zork/baseboard.h | 19 | ||||
-rw-r--r-- | baseboard/zork/variant_dalboz.c | 46 | ||||
-rw-r--r-- | baseboard/zork/variant_trembyle.c | 21 | ||||
-rw-r--r-- | board/dalboz/board.c | 57 | ||||
-rw-r--r-- | board/dalboz/board.h | 12 | ||||
-rw-r--r-- | board/vilboz/board.c | 49 | ||||
-rw-r--r-- | board/vilboz/board.h | 11 | ||||
-rw-r--r-- | board/vilboz/gpio.inc | 16 |
9 files changed, 138 insertions, 110 deletions
diff --git a/baseboard/zork/baseboard.c b/baseboard/zork/baseboard.c index ac7ab61023..254a1d54f9 100644 --- a/baseboard/zork/baseboard.c +++ b/baseboard/zork/baseboard.c @@ -569,23 +569,6 @@ void board_hibernate(void) } } -static void hdmi_hpd_handler(void) -{ - int hpd = 0; - - /* Pass HPD through from DB OPT1 HDMI connector to AP's DP1. */ - ioex_get_level(IOEX_HDMI_CONN_HPD_3V3_DB, &hpd); - gpio_set_level(GPIO_DP1_HPD, hpd); - ccprints("HDMI HPD %d", hpd); -} -DECLARE_DEFERRED(hdmi_hpd_handler); - -void hdmi_hpd_interrupt(enum ioex_signal signal) -{ - /* Debounce for 2 msec. */ - hook_call_deferred(&hdmi_hpd_handler_data, (2 * MSEC)); -} - const struct pi3hdx1204_tuning pi3hdx1204_tuning = { .eq_ch0_ch1_offset = PI3HDX1204_EQ_DB710, .eq_ch2_ch3_offset = PI3HDX1204_EQ_DB710, diff --git a/baseboard/zork/baseboard.h b/baseboard/zork/baseboard.h index a8e266d2d4..ed4d4b4e18 100644 --- a/baseboard/zork/baseboard.h +++ b/baseboard/zork/baseboard.h @@ -176,7 +176,6 @@ #elif defined(VARIANT_ZORK_DALBOZ) #define CONFIG_USB_MUX_PS8740 #define CONFIG_USB_MUX_PS8743 - #define CONFIG_IO_EXPANDER_PCAL6408 #define CONFIG_IO_EXPANDER_PORT_COUNT IOEX_PORT_COUNT #define CONFIG_USB_PORT_ENABLE_DYNAMIC #endif @@ -323,19 +322,6 @@ enum sensor_id { SENSOR_COUNT, }; -#if defined(VARIANT_ZORK_DALBOZ) - enum ioex_port { - IOEX_C0_NCT3807 = 0, - IOEX_C1_NCT3807, - IOEX_HDMI_PCAL6408, - IOEX_PORT_COUNT - }; - - #define PORT_TO_HPD(port) ((port == 0) \ - ? GPIO_USB3_C0_DP2_HPD \ - : GPIO_DP1_HPD) -#endif - /* * Matrix to rotate accelerators into the standard reference frame. The default * is the identity which is correct for the reference design. Variations of @@ -362,9 +348,12 @@ void board_reset_pd_mcu(void); void tcpc_alert_event(enum gpio_signal signal); void bc12_interrupt(enum gpio_signal signal); void ppc_interrupt(enum gpio_signal signal); -void hdmi_hpd_interrupt(enum ioex_signal signal); void mst_hpd_interrupt(enum ioex_signal signal); +#ifdef VARIANT_ZORK_TREMBYLE +void hdmi_hpd_interrupt(enum ioex_signal signal); +#endif + #ifdef CONFIG_USB_TYPEC_PD_FAST_ROLE_SWAP int board_tcpc_fast_role_swap_enable(int port, int enable); #endif diff --git a/baseboard/zork/variant_dalboz.c b/baseboard/zork/variant_dalboz.c index 517532a7bb..c7a9ae7e97 100644 --- a/baseboard/zork/variant_dalboz.c +++ b/baseboard/zork/variant_dalboz.c @@ -91,52 +91,6 @@ const struct charger_config_t chg_chips[] = { const unsigned int chg_cnt = ARRAY_SIZE(chg_chips); /***************************************************************************** - * IO expander - */ - -struct ioexpander_config_t ioex_config[] = { - [IOEX_C0_NCT3807] = { - .i2c_host_port = I2C_PORT_TCPC0, - .i2c_slave_addr = NCT38XX_I2C_ADDR1_1_FLAGS, - .drv = &nct38xx_ioexpander_drv, - }, - [IOEX_C1_NCT3807] = { - .i2c_host_port = I2C_PORT_TCPC1, - .i2c_slave_addr = NCT38XX_I2C_ADDR1_1_FLAGS, - .drv = &nct38xx_ioexpander_drv, - .flags = IOEX_FLAGS_DISABLED, - }, - [IOEX_HDMI_PCAL6408] = { - .i2c_host_port = I2C_PORT_TCPC1, - .i2c_slave_addr = PCAL6408_I2C_ADDR0, - .drv = &pcal6408_ioexpander_drv, - .flags = IOEX_FLAGS_DISABLED, - }, -}; -BUILD_ASSERT(ARRAY_SIZE(ioex_config) == CONFIG_IO_EXPANDER_PORT_COUNT); - -/***************************************************************************** - * USB-A - */ - -int usb_port_enable[USBA_PORT_COUNT] = { - IOEX_EN_USB_A0_5V, - IOEX_EN_USB_A1_5V_DB_OPT1, -}; - -static void usba_retimer_on(void) -{ - ioex_set_level(IOEX_USB_A1_RETIMER_EN, 1); -} -DECLARE_HOOK(HOOK_CHIPSET_RESUME, usba_retimer_on, HOOK_PRIO_DEFAULT); - -static void usba_retimer_off(void) -{ - ioex_set_level(IOEX_USB_A1_RETIMER_EN, 0); -} -DECLARE_HOOK(HOOK_CHIPSET_SUSPEND, usba_retimer_off, HOOK_PRIO_DEFAULT); - -/***************************************************************************** * USB-C */ diff --git a/baseboard/zork/variant_trembyle.c b/baseboard/zork/variant_trembyle.c index ebb2ff6e76..d39bc7521f 100644 --- a/baseboard/zork/variant_trembyle.c +++ b/baseboard/zork/variant_trembyle.c @@ -302,3 +302,24 @@ struct usb_mux usbc1_amd_fp5_usb_mux = { .i2c_addr_flags = AMD_FP5_MUX_I2C_ADDR_FLAGS, .driver = &amd_fp5_usb_mux_driver, }; + +/***************************************************************************** + * HDMI HPD + */ + +static void hdmi_hpd_handler(void) +{ + int hpd = 0; + + /* Pass HPD through from DB OPT1 HDMI connector to AP's DP1. */ + ioex_get_level(IOEX_HDMI_CONN_HPD_3V3_DB, &hpd); + gpio_set_level(GPIO_DP1_HPD, hpd); + ccprints("HDMI HPD %d", hpd); +} +DECLARE_DEFERRED(hdmi_hpd_handler); + +void hdmi_hpd_interrupt(enum ioex_signal signal) +{ + /* Debounce for 2 msec. */ + hook_call_deferred(&hdmi_hpd_handler_data, (2 * MSEC)); +} diff --git a/board/dalboz/board.c b/board/dalboz/board.c index 3de145881c..37f1eba31e 100644 --- a/board/dalboz/board.c +++ b/board/dalboz/board.c @@ -9,6 +9,7 @@ #include "driver/accel_lis2dw12.h" #include "driver/accelgyro_lsm6dsm.h" #include "driver/ioexpander/pcal6408.h" +#include "driver/tcpm/nct38xx.h" #include "driver/usb_mux/ps8740.h" #include "driver/usb_mux/ps8743.h" #include "extpower.h" @@ -16,6 +17,7 @@ #include "fan_chip.h" #include "gpio.h" #include "hooks.h" +#include "ioexpander.h" #include "lid_switch.h" #include "power.h" #include "power_button.h" @@ -38,6 +40,23 @@ void c1_tcpc_interrupt(enum gpio_signal signal) c1_tcpc_config_interrupt(signal); } +static void hdmi_hpd_handler(void) +{ + int hpd = 0; + + /* Pass HPD through from DB OPT1 HDMI connector to AP's DP1. */ + ioex_get_level(IOEX_HDMI_CONN_HPD_3V3_DB, &hpd); + gpio_set_level(GPIO_DP1_HPD, hpd); + ccprints("HDMI HPD %d", hpd); +} +DECLARE_DEFERRED(hdmi_hpd_handler); + +void hdmi_hpd_interrupt(enum ioex_signal signal) +{ + /* Debounce for 2 msec. */ + hook_call_deferred(&hdmi_hpd_handler_data, (2 * MSEC)); +} + #include "gpio_list.h" #ifdef HAS_TASK_MOTIONSENSE @@ -241,6 +260,44 @@ const struct pwm_t pwm_channels[] = { }; BUILD_ASSERT(ARRAY_SIZE(pwm_channels) == PWM_CH_COUNT); +struct ioexpander_config_t ioex_config[] = { + [IOEX_C0_NCT3807] = { + .i2c_host_port = I2C_PORT_TCPC0, + .i2c_slave_addr = NCT38XX_I2C_ADDR1_1_FLAGS, + .drv = &nct38xx_ioexpander_drv, + }, + [IOEX_C1_NCT3807] = { + .i2c_host_port = I2C_PORT_TCPC1, + .i2c_slave_addr = NCT38XX_I2C_ADDR1_1_FLAGS, + .drv = &nct38xx_ioexpander_drv, + .flags = IOEX_FLAGS_DISABLED, + }, + [IOEX_HDMI_PCAL6408] = { + .i2c_host_port = I2C_PORT_TCPC1, + .i2c_slave_addr = PCAL6408_I2C_ADDR0, + .drv = &pcal6408_ioexpander_drv, + .flags = IOEX_FLAGS_DISABLED, + }, +}; +BUILD_ASSERT(ARRAY_SIZE(ioex_config) == CONFIG_IO_EXPANDER_PORT_COUNT); + +int usb_port_enable[USBA_PORT_COUNT] = { + IOEX_EN_USB_A0_5V, + IOEX_EN_USB_A1_5V_DB_OPT1, +}; + +static void usba_retimer_on(void) +{ + ioex_set_level(IOEX_USB_A1_RETIMER_EN, 1); +} +DECLARE_HOOK(HOOK_CHIPSET_RESUME, usba_retimer_on, HOOK_PRIO_DEFAULT); + +static void usba_retimer_off(void) +{ + ioex_set_level(IOEX_USB_A1_RETIMER_EN, 0); +} +DECLARE_HOOK(HOOK_CHIPSET_SUSPEND, usba_retimer_off, HOOK_PRIO_DEFAULT); + /* * If the battery is found on the V0 I2C port then re-map the battery port. * Use HOOK_PRIO_INIT_I2C so we re-map before init_battery_type() and diff --git a/board/dalboz/board.h b/board/dalboz/board.h index 9b8b21d413..ce492613bf 100644 --- a/board/dalboz/board.h +++ b/board/dalboz/board.h @@ -20,6 +20,7 @@ #define CONFIG_SYSTEM_UNLOCKED #define CONFIG_I2C_DEBUG +#define CONFIG_IO_EXPANDER_PCAL6408 #define CONFIG_MKBP_USE_GPIO /* Power LEDs */ @@ -82,6 +83,17 @@ enum pwm_channel { PWM_CH_COUNT }; +enum ioex_port { + IOEX_C0_NCT3807 = 0, + IOEX_C1_NCT3807, + IOEX_HDMI_PCAL6408, + IOEX_PORT_COUNT +}; + +#define PORT_TO_HPD(port) ((port == 0) \ + ? GPIO_USB3_C0_DP2_HPD \ + : GPIO_DP1_HPD) + /***************************************************************************** * CBI EC FW Configuration diff --git a/board/vilboz/board.c b/board/vilboz/board.c index b56a799146..20c73e170c 100644 --- a/board/vilboz/board.c +++ b/board/vilboz/board.c @@ -9,6 +9,7 @@ #include "driver/accel_lis2dw12.h" #include "driver/accelgyro_lsm6dsm.h" #include "driver/ioexpander/pcal6408.h" +#include "driver/tcpm/nct38xx.h" #include "driver/usb_mux/ps8740.h" #include "driver/usb_mux/ps8743.h" #include "extpower.h" @@ -38,6 +39,11 @@ void c1_tcpc_interrupt(enum gpio_signal signal) c1_tcpc_config_interrupt(signal); } +void hdmi_hpd_interrupt(enum gpio_signal signal) +{ + gpio_set_level(GPIO_DP1_HPD, gpio_get_level(signal)); +} + #include "gpio_list.h" #ifdef HAS_TASK_MOTIONSENSE @@ -144,20 +150,8 @@ unsigned int motion_sensor_count = ARRAY_SIZE(motion_sensors); #endif /* HAS_TASK_MOTIONSENSE */ /* These IO expander GPIOs vary with DB option. */ -enum gpio_signal IOEX_USB_A1_RETIMER_EN = IOEX_USB_A1_RETIMER_EN_OPT1; enum gpio_signal IOEX_USB_A1_CHARGE_EN_DB_L = IOEX_USB_A1_CHARGE_EN_DB_L_OPT1; -static void pcal6408_handler(void) -{ - pcal6408_ioex_event_handler(IOEX_HDMI_PCAL6408); -} -DECLARE_DEFERRED(pcal6408_handler); - -void pcal6408_interrupt(enum gpio_signal signal) -{ - hook_call_deferred(&pcal6408_handler_data, 0); -} - static int board_ps8743_mux_set(const struct usb_mux *me, mux_state_t mux_state) { @@ -196,20 +190,13 @@ static void setup_fw_config(void) if (ec_config_get_usb_db() == DALBOZ_DB_D_OPT2_USBA_HDMI) { ccprints("DB OPT2 HDMI"); - ioex_config[IOEX_HDMI_PCAL6408].flags = 0; - ioex_init(IOEX_HDMI_PCAL6408); - IOEX_USB_A1_RETIMER_EN = IOEX_USB_A1_RETIMER_EN_OPT2; - IOEX_USB_A1_CHARGE_EN_DB_L = IOEX_USB_A1_CHARGE_EN_DB_L_OPT2; - usb_port_enable[USBA_PORT_A1] = IOEX_EN_USB_A1_5V_DB_OPT2; - c1_tcpc_config_interrupt = pcal6408_interrupt; - ioex_enable_interrupt(IOEX_HDMI_CONN_HPD_3V3_DB); + gpio_enable_interrupt(GPIO_HDMI_CONN_HPD_3V3); } else { ccprints("DB OPT1 USBC"); ioex_config[IOEX_C1_NCT3807].flags = 0; ioex_init(IOEX_C1_NCT3807); - IOEX_USB_A1_RETIMER_EN = IOEX_USB_A1_RETIMER_EN_OPT1; IOEX_USB_A1_CHARGE_EN_DB_L = IOEX_USB_A1_CHARGE_EN_DB_L_OPT1; - usb_port_enable[USBA_PORT_A1] = IOEX_EN_USB_A1_5V_DB_OPT1; + usb_port_enable[USBA_PORT_A1] = GPIO_EN_USB_A1_5V; c1_tcpc_config_interrupt = tcpc_alert_event; } @@ -247,6 +234,26 @@ const struct pwm_t pwm_channels[] = { }; BUILD_ASSERT(ARRAY_SIZE(pwm_channels) == PWM_CH_COUNT); +struct ioexpander_config_t ioex_config[] = { + [IOEX_C0_NCT3807] = { + .i2c_host_port = I2C_PORT_TCPC0, + .i2c_slave_addr = NCT38XX_I2C_ADDR1_1_FLAGS, + .drv = &nct38xx_ioexpander_drv, + }, + [IOEX_C1_NCT3807] = { + .i2c_host_port = I2C_PORT_TCPC1, + .i2c_slave_addr = NCT38XX_I2C_ADDR1_1_FLAGS, + .drv = &nct38xx_ioexpander_drv, + .flags = IOEX_FLAGS_DISABLED, + }, +}; +BUILD_ASSERT(ARRAY_SIZE(ioex_config) == CONFIG_IO_EXPANDER_PORT_COUNT); + +int usb_port_enable[USBA_PORT_COUNT] = { + IOEX_EN_USB_A0_5V, + GPIO_EN_USB_A1_5V, +}; + /* * If the battery is found on the V0 I2C port then re-map the battery port. * Use HOOK_PRIO_INIT_I2C so we re-map before init_battery_type() and diff --git a/board/vilboz/board.h b/board/vilboz/board.h index 3795a3bb87..f2e67cf316 100644 --- a/board/vilboz/board.h +++ b/board/vilboz/board.h @@ -82,6 +82,16 @@ enum pwm_channel { PWM_CH_COUNT }; +enum ioex_port { + IOEX_C0_NCT3807 = 0, + IOEX_C1_NCT3807, + IOEX_PORT_COUNT +}; + +#define PORT_TO_HPD(port) ((port == 0) \ + ? GPIO_USB3_C0_DP2_HPD \ + : GPIO_DP1_HPD) + /***************************************************************************** * CBI EC FW Configuration @@ -159,7 +169,6 @@ static inline bool ec_config_has_hdmi_retimer_pi3hdx1204(void) } /* These IO expander GPIOs vary with DB option. */ -extern enum gpio_signal IOEX_USB_A1_RETIMER_EN; extern enum gpio_signal IOEX_USB_A1_CHARGE_EN_DB_L; #endif /* !__ASSEMBLER__ */ diff --git a/board/vilboz/gpio.inc b/board/vilboz/gpio.inc index 94074ad6cd..abdf0b8adb 100644 --- a/board/vilboz/gpio.inc +++ b/board/vilboz/gpio.inc @@ -11,7 +11,8 @@ GPIO_INT(USB_C0_TCPC_INT_ODL, PIN(3, 4), GPIO_INT_FALLING, tcpc_alert_event) GPIO_INT(USB_C1_TCPC_INT_ODL, PIN(F, 1), GPIO_INT_FALLING, c1_tcpc_interrupt) GPIO_INT(USB_C0_PPC_FAULT_ODL, PIN(6, 3), GPIO_INT_FALLING, ppc_interrupt) -GPIO_INT(USB_C1_PPC_INT_ODL, PIN(D, 4), GPIO_INT_FALLING, ppc_interrupt) +/* TODO remove ppc C1 */ +UNIMPLEMENTED(USB_C1_PPC_INT_ODL) GPIO_INT(USB_C0_BC12_INT_ODL, PIN(9, 3), GPIO_INT_FALLING | GPIO_PULL_UP, bc12_interrupt) GPIO_INT(USB_C1_BC12_INT_ODL, PIN(A, 4), GPIO_INT_FALLING | GPIO_PULL_UP, bc12_interrupt) GPIO_INT(SLP_S3_L, PIN(7, 4), GPIO_INT_BOTH, power_signal_interrupt) @@ -25,6 +26,7 @@ GPIO_INT(EC_WP_L, PIN(5, 0), GPIO_INT_BOTH, switch_interrupt) GPIO_INT(VOLDN_BTN_ODL, PIN(A, 6), GPIO_INT_BOTH | GPIO_PULL_UP, button_interrupt) GPIO_INT(VOLUP_BTN_ODL, PIN(9, 5), GPIO_INT_BOTH | GPIO_PULL_UP, button_interrupt) GPIO_INT(6AXIS_INT_L, PIN(A, 0), GPIO_INT_FALLING | GPIO_PULL_UP, lsm6dsm_interrupt) +GPIO_INT(HDMI_CONN_HPD_3V3, PIN(D, 4), GPIO_INT_BOTH, hdmi_hpd_interrupt) /* GPIO_INT_BOTH is required for PSL wake from hibernate, but we don't need an interrupt handler. */ GPIO(EC_RST_ODL, PIN(0, 2), GPIO_INT_BOTH | GPIO_HIB_WAKE_HIGH) @@ -44,7 +46,9 @@ GPIO(EC_FCH_WAKE_L, PIN(0, 3), GPIO_OUT_HIGH) /* Wake SOC */ GPIO(EC_FCH_SCI_ODL, PIN(7, 6), GPIO_ODR_HIGH) /* SCI to SOC */ GPIO(EC_SYS_RST_L, PIN(C, 7), GPIO_ODR_HIGH) /* Cold Reset to SOC */ GPIO(USB_C0_TCPC_RST_L, PIN(E, 1), GPIO_OUT_HIGH) /* C0 TCPC Reset */ -GPIO(USB_C1_TCPC_RST_L, PIN(F, 0), GPIO_OUT_HIGH) /* C1 TCPC Reset */ +/* TODO will remove TCPC C1 */ +UNIMPLEMENTED(USB_C1_TCPC_RST_L) +GPIO(EN_USB_A1_5V, PIN(F, 0), GPIO_OUT_LOW) /* A1 5V Source Enable */ GPIO(USB3_C0_DP2_HPD, PIN(F, 5), GPIO_OUT_LOW) /* C0 DP Hotplug Detect */ GPIO(DP1_HPD, PIN(F, 4), GPIO_OUT_LOW) /* C1 DP Hotplug Detect */ GPIO(EC_H1_PACKET_MODE, PIN(8, 6), GPIO_OUT_LOW) /* H1 Packet Mode */ @@ -59,9 +63,6 @@ GPIO(LED3_PWM, PIN(C, 3), GPIO_OUT_HIGH) * Dalboz has 2 DB options, with different IO expanders. IOEX_C1_NCT3807 is the * OPT1 DB (USB-C1), IOEX_HDMI_PCAL6408 is the OPT2 DB (HDMI). */ - -IOEX_INT(HDMI_CONN_HPD_3V3_DB, EXPIN(IOEX_HDMI_PCAL6408, 0, 4), GPIO_INT_BOTH, hdmi_hpd_interrupt) - IOEX(USB_C0_FAULT_ODL, EXPIN(IOEX_C0_NCT3807, 0, 3), GPIO_ODR_HIGH) /* C0 Fault to SOC */ IOEX(USB_C0_TCPC_FASTSW_CTL_EN, EXPIN(IOEX_C0_NCT3807, 0, 4), GPIO_OUT_LOW) /* C0 FastSwitch Control */ IOEX(USB_C1_FAULT_ODL, EXPIN(IOEX_C0_NCT3807, 1, 0), GPIO_ODR_HIGH) /* C1 Fault to SOC */ @@ -72,7 +73,6 @@ IOEX(EN_USB_A0_5V, EXPIN(IOEX_C0_NCT3807, 1, 5), GPIO_OUT_LOW) /* A0 5V Source IOEX(USB_A0_CHARGE_EN_L, EXPIN(IOEX_C0_NCT3807, 1, 6), GPIO_OUT_HIGH) /* A0 5V High Current Enable */ IOEX(USB_C0_SBU_FLIP, EXPIN(IOEX_C0_NCT3807, 1, 7), GPIO_OUT_LOW) /* C0 SBU Flip */ -IOEX(USB_A1_RETIMER_EN_OPT1, EXPIN(IOEX_C1_NCT3807, 0, 0), GPIO_OUT_LOW) /* A1 Retimer Enable */ IOEX(USB_C1_HPD_IN_DB, EXPIN(IOEX_C1_NCT3807, 0, 2), GPIO_OUT_LOW) /* C1 HPD */ IOEX(USB_C1_TCPC_FASTSW_CTL_EN, EXPIN(IOEX_C1_NCT3807, 0, 4), GPIO_OUT_LOW) /* C1 FastSwitch Control */ IOEX(USB_C1_SBU_FAULT_DB_ODL, EXPIN(IOEX_C1_NCT3807, 1, 2), GPIO_INPUT) /* C1 SBU Fault */ @@ -81,10 +81,6 @@ IOEX(USB_C1_DATA_EN, EXPIN(IOEX_C1_NCT3807, 1, 5), GPIO_OUT_HIGH) /* C1 Retimer IOEX(EN_USB_A1_5V_DB_OPT1, EXPIN(IOEX_C1_NCT3807, 1, 6), GPIO_OUT_LOW) /* A1 5V Source Enable */ IOEX(USB_A1_CHARGE_EN_DB_L_OPT1,EXPIN(IOEX_C1_NCT3807, 1, 7), GPIO_OUT_HIGH) /* A1 5V High Current Enable */ -IOEX(USB_A1_RETIMER_EN_OPT2, EXPIN(IOEX_HDMI_PCAL6408, 0, 0), GPIO_OUT_LOW) /* A1 Retimer Enable */ -IOEX(EN_USB_A1_5V_DB_OPT2, EXPIN(IOEX_HDMI_PCAL6408, 0, 1), GPIO_OUT_LOW) /* A1 5V Source Enable */ -IOEX(USB_A1_CHARGE_EN_DB_L_OPT2,EXPIN(IOEX_HDMI_PCAL6408, 0, 2), GPIO_OUT_HIGH) /* A1 5V High Current Enable */ -IOEX(HDMI_DATA_EN_DB, EXPIN(IOEX_HDMI_PCAL6408, 0, 3), GPIO_OUT_HIGH) /* HDMI Retimer Enable */ /* * The NPCX LPC driver configures and controls SCI, so PCH_SCI_ODL [PIN(7, 6)] |