summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTing Shen <phoenixshen@google.com>2022-02-10 17:48:19 +0800
committerCommit Bot <commit-bot@chromium.org>2022-02-11 09:34:37 +0000
commita791e60a12377543cc6421585006ff6feb5594d8 (patch)
treeb37c25f3b9a48a35f76820b4b5442d142583356d
parente6e1cce2fee1278ecf7876ce1e4bbab75871a262 (diff)
downloadchrome-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.dts4
-rw-r--r--zephyr/projects/corsola/src/usbc_config.c14
-rw-r--r--zephyr/projects/corsola/src/variant_db_detection.c10
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;
}
}