diff options
author | Ting Shen <phoenixshen@google.com> | 2022-02-10 17:48:19 +0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2022-02-11 09:34:37 +0000 |
commit | a791e60a12377543cc6421585006ff6feb5594d8 (patch) | |
tree | b37c25f3b9a48a35f76820b4b5442d142583356d | |
parent | e6e1cce2fee1278ecf7876ce1e4bbab75871a262 (diff) | |
download | chrome-ec-a791e60a12377543cc6421585006ff6feb5594d8.tar.gz |
corsola: enable hdmi power
Fix the incorrect gpio_pin_configure flags and add suspend/resume hook
for ec_x_gpio3.
BUG=b:218617706
TEST=1) connect hdmi subboard:
ec_x_gpio1 always high,
ec_x_gpio3 high when S0.
2) connect type-c subboard:
both ec_x_gpio1/3 low.
BRANCH=none
Signed-off-by: Ting Shen <phoenixshen@google.com>
Change-Id: Ie6b7d32790e46e310d4a6bb59788bcc22f60d6a4
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3451698
Reviewed-by: Eric Yilun Lin <yllin@google.com>
Commit-Queue: Ting Shen <phoenixshen@chromium.org>
Tested-by: Ting Shen <phoenixshen@chromium.org>
-rw-r--r-- | zephyr/projects/corsola/gpio_krabby.dts | 4 | ||||
-rw-r--r-- | zephyr/projects/corsola/src/usbc_config.c | 14 | ||||
-rw-r--r-- | zephyr/projects/corsola/src/variant_db_detection.c | 10 |
3 files changed, 22 insertions, 6 deletions
diff --git a/zephyr/projects/corsola/gpio_krabby.dts b/zephyr/projects/corsola/gpio_krabby.dts index 60db9e9828..c4e9523a32 100644 --- a/zephyr/projects/corsola/gpio_krabby.dts +++ b/zephyr/projects/corsola/gpio_krabby.dts @@ -65,7 +65,7 @@ gpios = <&gpiom 5 (GPIO_INPUT | GPIO_VOLTAGE_1P8)>; }; gpio_x_ec_gpio2: x_ec_gpio2 { - gpios = <&gpiob 2 (GPIO_INPUT | GPIO_ODR_HIGH)>; + gpios = <&gpiob 2 GPIO_INPUT>; }; usb_c0_ppc_bc12_int_odl: usb_c0_ppc_bc12_int_odl { gpios = <&gpiod 1 GPIO_INPUT>; @@ -173,7 +173,7 @@ gpios = <&gpioh 4 GPIO_OUT_LOW>; }; gpio_ec_x_gpio3: ec_x_gpio3 { - gpios = <&gpioj 1 GPIO_INPUT>; + gpios = <&gpioj 1 GPIO_OUT_LOW>; }; gpio_hdmi_prsnt_odl: hdmi_prsnt_odl { gpios = <&gpioj 3 GPIO_INPUT>; diff --git a/zephyr/projects/corsola/src/usbc_config.c b/zephyr/projects/corsola/src/usbc_config.c index de883320a3..4bc902374d 100644 --- a/zephyr/projects/corsola/src/usbc_config.c +++ b/zephyr/projects/corsola/src/usbc_config.c @@ -143,3 +143,17 @@ void x_ec_interrupt(enum gpio_signal signal) else CPRINTS("Undetected subboard interrupt."); } + +void board_hdmi_suspend(void) +{ + if (corsola_get_db_type() == CORSOLA_DB_HDMI) + gpio_pin_set_dt(GPIO_DT_FROM_ALIAS(gpio_ps185_pwrdn_odl), 0); +} +DECLARE_HOOK(HOOK_CHIPSET_SUSPEND, board_hdmi_suspend, HOOK_PRIO_DEFAULT); + +void board_hdmi_resume(void) +{ + if (corsola_get_db_type() == CORSOLA_DB_HDMI) + gpio_pin_set_dt(GPIO_DT_FROM_ALIAS(gpio_ps185_pwrdn_odl), 1); +} +DECLARE_HOOK(HOOK_CHIPSET_RESUME, board_hdmi_resume, HOOK_PRIO_DEFAULT); diff --git a/zephyr/projects/corsola/src/variant_db_detection.c b/zephyr/projects/corsola/src/variant_db_detection.c index d5e79b5680..b6e57b949f 100644 --- a/zephyr/projects/corsola/src/variant_db_detection.c +++ b/zephyr/projects/corsola/src/variant_db_detection.c @@ -6,7 +6,8 @@ /* Corsola daughter board detection */ #include "console.h" -#include "gpio.h" +#include "drivers/gpio.h" +#include "dt-bindings/gpio_defines.h" #include "gpio/gpio_int.h" #include "hooks.h" @@ -15,13 +16,15 @@ #define CPRINTS(format, args...) cprints(CC_SYSTEM, format, ## args) #define CPRINTF(format, args...) cprintf(CC_SYSTEM, format, ## args) +BUILD_ASSERT(GPIO_OUT_HIGH == 0xA00, "Don't use cros ec gpio flags here"); + static void corsola_db_config(enum corsola_db_type type) { switch (type) { case CORSOLA_DB_HDMI: /* EC_X_GPIO1 */ gpio_pin_configure_dt(GPIO_DT_FROM_ALIAS(gpio_en_hdmi_pwr), - GPIO_OUT_HIGH); + GPIO_OUT_HIGH); /* X_EC_GPIO2 */ gpio_pin_configure_dt(GPIO_DT_FROM_ALIAS(gpio_ps185_ec_dp_hpd), GPIO_INPUT); @@ -47,8 +50,7 @@ static void corsola_db_config(enum corsola_db_type type) GPIO_OUT_LOW); return; default: - break; - + break; } } |