summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew McRae <amcrae@google.com>2022-01-31 16:37:09 +1100
committerCommit Bot <commit-bot@chromium.org>2022-02-02 00:00:40 +0000
commita9d627323676a540700ee081bfdd94fbaf4e1e8f (patch)
treefbe209a9eb6e19a1737de25ae9e2dc4b75f56312
parent63d2c2df601f6b4f9586aa93dbfbab9ad1cba91f (diff)
downloadchrome-ec-a9d627323676a540700ee081bfdd94fbaf4e1e8f.tar.gz
corsola: Migrate GPIO access to Zephyr API
Migrate the GPIO access to use the Zephyr API. Also consolidate the GPIO naming so that remapping of GPIO names is done through DTS. BUG=b:216466985 TEST=zmake configure -b {krabby,kingler} BRANCH=none Signed-off-by: Andrew McRae <amcrae@google.com> Change-Id: I914a1659fb4cc25e513e0aff1c3460855cd9f76d Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3427097 Reviewed-by: Jeremy Bettis <jbettis@chromium.org>
-rw-r--r--zephyr/projects/corsola/gpio_kingler.dts30
-rw-r--r--zephyr/projects/corsola/gpio_krabby.dts28
-rw-r--r--zephyr/projects/corsola/include/gpio_map.h8
-rw-r--r--zephyr/projects/corsola/interrupts_krabby.dts7
-rw-r--r--zephyr/projects/corsola/src/board_chipset.c4
-rw-r--r--zephyr/projects/corsola/src/hibernate.c2
-rw-r--r--zephyr/projects/corsola/src/kingler/usbc_config.c20
-rw-r--r--zephyr/projects/corsola/src/krabby/hooks.c4
-rw-r--r--zephyr/projects/corsola/src/krabby/usbc_config.c14
-rw-r--r--zephyr/projects/corsola/src/usb_pd_policy.c10
-rw-r--r--zephyr/projects/corsola/src/usbc_config.c9
-rw-r--r--zephyr/projects/corsola/src/variant_db_detection.c28
12 files changed, 103 insertions, 61 deletions
diff --git a/zephyr/projects/corsola/gpio_kingler.dts b/zephyr/projects/corsola/gpio_kingler.dts
index 58aac30941..3afe4231ce 100644
--- a/zephyr/projects/corsola/gpio_kingler.dts
+++ b/zephyr/projects/corsola/gpio_kingler.dts
@@ -39,7 +39,7 @@
GPIO_ACTIVE_LOW)>;
enum-name = "GPIO_AP_IN_SLEEP_L";
};
- en_ulp {
+ gpio_en_ulp: en_ulp {
gpios = <&gpioc 6 GPIO_OUT_LOW>;
enum-name = "GPIO_EN_ULP";
};
@@ -133,7 +133,7 @@
gpios = <&gpio0 1 GPIO_INPUT>;
enum-name = "GPIO_POWER_BUTTON_L";
};
- en_5v_usm {
+ gpio_en_5v_usm: en_5v_usm {
gpios = <&gpio0 2 GPIO_OUT_LOW>;
enum-name = "GPIO_EN_5V_USM";
};
@@ -162,19 +162,19 @@
gpios = <&gpio7 0 GPIO_INPUT>;
enum-name = "GPIO_PG_PP5000_Z2_OD";
};
- ec_x_gpio1 {
+ gpio_ec_x_gpio1: ec_x_gpio1 {
gpios = <&gpio6 2 GPIO_OUT_LOW>;
enum-name = "GPIO_EC_X_GPIO1";
};
- dp_aux_path_sel {
+ dp_aux_path_sel: dp_aux_path_sel {
gpios = <&gpio6 3 GPIO_OUT_LOW>;
enum-name = "GPIO_DP_AUX_PATH_SEL";
};
- ec_bl_en_od {
+ gpio_ec_bl_en_od: ec_bl_en_od {
gpios = <&gpio4 0 (GPIO_ODR_LOW | GPIO_VOLTAGE_1P8)>;
enum-name = "GPIO_EC_BL_EN_OD";
};
- ec_x_gpio3 {
+ gpio_ec_x_gpio3: ec_x_gpio3 {
gpios = <&gpiod 3 GPIO_OUT_LOW>;
enum-name = "GPIO_EC_X_GPIO3";
};
@@ -182,7 +182,7 @@
gpios = <&gpio7 3 GPIO_INPUT>;
enum-name = "GPIO_USB_C0_TCPC_INT_ODL";
};
- usb_c0_tcpc_rst {
+ gpio_usb_c0_tcpc_rst: usb_c0_tcpc_rst {
gpios = <&gpioc 0 GPIO_OUT_LOW>;
enum-name = "GPIO_USB_C0_TCPC_RST";
};
@@ -190,7 +190,7 @@
gpios = <&gpio6 0 GPIO_OUT_LOW>;
enum-name = "GPIO_EN_PP5000_USB_A0_VBUS";
};
- hdmi_prsnt_odl {
+ gpio_hdmi_prsnt_odl: hdmi_prsnt_odl {
gpios = <&gpio3 7 GPIO_INPUT>;
enum-name = "GPIO_HDMI_PRSNT_ODL";
};
@@ -210,7 +210,7 @@
gpios = <&gpioc 7 GPIO_INPUT>;
enum-name = "GPIO_USB_A0_FAULT_ODL";
};
- ec_ap_dp_hpd_odl {
+ ec_ap_dp_hpd_odl: ec_ap_dp_hpd_odl {
gpios = <&gpio6 1 (GPIO_ODR_HIGH | GPIO_VOLTAGE_1P8)>;
enum-name = "GPIO_EC_AP_DP_HPD_ODL";
};
@@ -232,6 +232,18 @@
};
};
+ /*
+ * aliases for sub-board GPIOs
+ */
+ aliases {
+ gpio-en-hdmi-pwr = &gpio_ec_x_gpio1;
+ gpio-usb-c1-frs-en = &gpio_ec_x_gpio1;
+ gpio-usb-c1-ppc-int-odl = &gpio_x_ec_gpio2;
+ gpio-ps185-ec-dp-hpd = &gpio_x_ec_gpio2;
+ gpio-usb-c1-dp-in-hpd = &gpio_ec_x_gpio3;
+ gpio-ps185-pwrdn-odl = &gpio_ec_x_gpio3;
+ };
+
def-lvol-io-list {
compatible = "nuvoton,npcx-lvolctrl-def";
lvol-io-pads = <
diff --git a/zephyr/projects/corsola/gpio_krabby.dts b/zephyr/projects/corsola/gpio_krabby.dts
index 0d04068fd5..a19ca3d021 100644
--- a/zephyr/projects/corsola/gpio_krabby.dts
+++ b/zephyr/projects/corsola/gpio_krabby.dts
@@ -48,7 +48,7 @@
gpios = <&gpiod 6 GPIO_INPUT>;
enum-name = "GPIO_VOLUME_UP_L";
};
- ap_xhci_init_done: ap_xhci_init_done {
+ gpio_ap_xhci_init_done: ap_xhci_init_done {
gpios = <&gpioj 5 (GPIO_INPUT | GPIO_VOLTAGE_1P8)>;
enum-name = "GPIO_AP_XHCI_INIT_DONE";
};
@@ -63,7 +63,7 @@
spi0_cs: spi0_cs {
gpios = <&gpiom 5 (GPIO_INPUT | GPIO_VOLTAGE_1P8)>;
};
- x_ec_gpio2: x_ec_gpio2 {
+ gpio_x_ec_gpio2: x_ec_gpio2 {
gpios = <&gpiob 2 (GPIO_INPUT | GPIO_ODR_HIGH)>;
enum-name = "GPIO_X_EC_GPIO2";
};
@@ -83,7 +83,7 @@
gpios = <&gpioc 6 GPIO_OUT_HIGH>;
enum-name = "GPIO_EN_PP5000_Z2";
};
- en_ulp: en_ulp {
+ gpio_en_ulp: en_ulp {
gpios = <&gpioe 3 GPIO_OUT_LOW>;
enum-name = "GPIO_EN_ULP";
};
@@ -91,7 +91,7 @@
gpios = <&gpiog 1 GPIO_ODR_LOW>;
enum-name = "GPIO_SYS_RST_ODL";
};
- ec_bl_en_od: ec_bl_en_od {
+ gpio_ec_bl_en_od: ec_bl_en_od {
gpios = <&gpiob 5 (GPIO_ODR_LOW | GPIO_VOLTAGE_1P8)>;
enum-name = "GPIO_EC_BL_EN_OD";
};
@@ -137,7 +137,7 @@
gpios = <&gpioc 5 GPIO_OUT_LOW>;
enum-name = "GPIO_ENTERING_RW";
};
- en_5v_usm: en_5v_usm {
+ gpio_en_5v_usm: en_5v_usm {
gpios = <&gpiog 3 GPIO_OUT_LOW>;
enum-name = "GPIO_EN_5V_USM";
};
@@ -193,20 +193,32 @@
gpios = <&gpioa 5 GPIO_INPUT>;
enum-name = "GPIO_I2C_F_SDA";
};
- ec_x_gpio1: ec_x_gpio1 {
+ gpio_ec_x_gpio1: ec_x_gpio1 {
gpios = <&gpioh 4 GPIO_OUT_LOW>;
enum-name = "GPIO_EC_X_GPIO1";
};
- ec_x_gpio3: ec_x_gpio3 {
+ gpio_ec_x_gpio3: ec_x_gpio3 {
gpios = <&gpioj 1 GPIO_INPUT>;
enum-name = "GPIO_EC_X_GPIO3";
};
- hdmi_prsnt_odl: hdmi_prsnt_odl {
+ gpio_hdmi_prsnt_odl: hdmi_prsnt_odl {
gpios = <&gpioj 3 GPIO_INPUT>;
enum-name = "GPIO_HDMI_PRSNT_ODL";
};
};
+ /*
+ * aliases for sub-board GPIOs
+ */
+ aliases {
+ gpio-en-hdmi-pwr = &gpio_ec_x_gpio1;
+ gpio-usb-c1-frs-en = &gpio_ec_x_gpio1;
+ gpio-usb-c1-ppc-int-odl = &gpio_x_ec_gpio2;
+ gpio-ps185-ec-dp-hpd = &gpio_x_ec_gpio2;
+ gpio-usb-c1-dp-in-hpd = &gpio_ec_x_gpio3;
+ gpio-ps185-pwrdn-odl = &gpio_ec_x_gpio3;
+ };
+
ec-mkbp-host-event-wakeup-mask {
compatible = "ec-wake-mask-event";
wakeup-mask = <(
diff --git a/zephyr/projects/corsola/include/gpio_map.h b/zephyr/projects/corsola/include/gpio_map.h
index 262951f00b..9831a32579 100644
--- a/zephyr/projects/corsola/include/gpio_map.h
+++ b/zephyr/projects/corsola/include/gpio_map.h
@@ -12,14 +12,6 @@
#define GPIO_ENTERING_RW GPIO_UNIMPLEMENTED
-/* daughterboard GPIO remap */
-#define GPIO_EN_HDMI_PWR GPIO_EC_X_GPIO1
-#define GPIO_USB_C1_FRS_EN GPIO_EC_X_GPIO1
-#define GPIO_USB_C1_PPC_INT_ODL GPIO_X_EC_GPIO2
-#define GPIO_PS185_EC_DP_HPD GPIO_X_EC_GPIO2
-#define GPIO_USB_C1_DP_IN_HPD GPIO_EC_X_GPIO3
-#define GPIO_PS185_PWRDN_ODL GPIO_EC_X_GPIO3
-
#ifdef CONFIG_PLATFORM_EC_USB_PD_TCPM_RT1718S
#define GPIO_EN_USB_C1_SINK RT1718S_GPIO1
#define GPIO_EN_USB_C1_SOURCE RT1718S_GPIO2
diff --git a/zephyr/projects/corsola/interrupts_krabby.dts b/zephyr/projects/corsola/interrupts_krabby.dts
index 1750e01dd0..45a2ef4936 100644
--- a/zephyr/projects/corsola/interrupts_krabby.dts
+++ b/zephyr/projects/corsola/interrupts_krabby.dts
@@ -68,7 +68,7 @@
handler = "extpower_interrupt";
};
int_usba: usba {
- irq-pin = <&ap_xhci_init_done>;
+ irq-pin = <&gpio_ap_xhci_init_done>;
flags = <GPIO_INT_EDGE_BOTH>;
handler = "usb_a0_interrupt";
};
@@ -82,6 +82,11 @@
flags = <GPIO_INT_EDGE_BOTH>;
handler = "spi_event";
};
+ int_x_ec_gpio2: x_ec_gpio2 {
+ irq-pin = <&gpio_x_ec_gpio2>;
+ flags = <GPIO_INT_EDGE_BOTH>;
+ handler = "x_ec_interrupt";
+ };
int_base_imu: base_imu {
irq-pin = <&base_imu_int_l>;
flags = <GPIO_INT_EDGE_FALLING>;
diff --git a/zephyr/projects/corsola/src/board_chipset.c b/zephyr/projects/corsola/src/board_chipset.c
index 7e06a49792..22d5de5346 100644
--- a/zephyr/projects/corsola/src/board_chipset.c
+++ b/zephyr/projects/corsola/src/board_chipset.c
@@ -12,13 +12,13 @@
/* Called on AP S3 -> S0 transition */
static void board_chipset_resume(void)
{
- gpio_set_level(GPIO_EC_BL_EN_OD, 1);
+ gpio_pin_set_dt(GPIO_DT_FROM_NODELABEL(gpio_ec_bl_en_od), 1);
}
DECLARE_HOOK(HOOK_CHIPSET_RESUME, board_chipset_resume, HOOK_PRIO_DEFAULT);
/* Called on AP S0 -> S3 transition */
static void board_chipset_suspend(void)
{
- gpio_set_level(GPIO_EC_BL_EN_OD, 0);
+ gpio_pin_set_dt(GPIO_DT_FROM_NODELABEL(gpio_ec_bl_en_od), 0);
}
DECLARE_HOOK(HOOK_CHIPSET_SUSPEND, board_chipset_suspend, HOOK_PRIO_DEFAULT);
diff --git a/zephyr/projects/corsola/src/hibernate.c b/zephyr/projects/corsola/src/hibernate.c
index efe36b28ae..e70047b7ab 100644
--- a/zephyr/projects/corsola/src/hibernate.c
+++ b/zephyr/projects/corsola/src/hibernate.c
@@ -15,7 +15,7 @@ __override void board_hibernate_late(void)
isl9238c_hibernate(CHARGER_SOLO);
#endif
- gpio_set_level(GPIO_EN_ULP, 1);
+ gpio_pin_set_dt(GPIO_DT_FROM_NODELABEL(gpio_en_ulp), 1);
/* should not reach here */
__builtin_unreachable();
diff --git a/zephyr/projects/corsola/src/kingler/usbc_config.c b/zephyr/projects/corsola/src/kingler/usbc_config.c
index e0cc32f9a6..37ce89e781 100644
--- a/zephyr/projects/corsola/src/kingler/usbc_config.c
+++ b/zephyr/projects/corsola/src/kingler/usbc_config.c
@@ -200,9 +200,9 @@ void board_reset_pd_mcu(void)
/* reset C0 ANX3447 */
/* Assert reset */
- gpio_set_level(GPIO_USB_C0_TCPC_RST, 1);
+ gpio_pin_set_dt(GPIO_DT_FROM_NODELABEL(gpio_usb_c0_tcpc_rst), 1);
msleep(1);
- gpio_set_level(GPIO_USB_C0_TCPC_RST, 0);
+ gpio_pin_set_dt(GPIO_DT_FROM_NODELABEL(gpio_usb_c0_tcpc_rst), 0);
/* After TEST_R release, anx7447/3447 needs 2ms to finish eFuse
* loading.
*/
@@ -290,12 +290,14 @@ uint16_t tcpc_get_alert_status(void)
{
uint16_t status = 0;
- if (!gpio_get_level(GPIO_USB_C0_TCPC_INT_ODL)) {
- if (!gpio_get_level(GPIO_USB_C0_TCPC_RST))
+ if (!gpio_pin_get_dt(
+ GPIO_DT_FROM_NODELABEL(gpio_usb_c0_tcpc_int_odl))) {
+ if (!gpio_pin_get_dt(
+ GPIO_DT_FROM_NODELABEL(gpio_usb_c0_tcpc_rst)))
status |= PD_STATUS_TCPC_ALERT_0;
}
- if (!gpio_get_level(GPIO_USB_C1_TCPC_INT_ODL))
+ if (!gpio_pin_get_dt(GPIO_DT_FROM_NODELABEL(gpio_usb_c1_tcpc_int_odl)))
return status |= PD_STATUS_TCPC_ALERT_1;
return status;
}
@@ -305,10 +307,10 @@ void tcpc_alert_event(enum gpio_signal signal)
int port;
switch (signal) {
- case GPIO_USB_C0_TCPC_INT_ODL:
+ case GPIO_SIGNAL(DT_NODELABEL(gpio_usb_c0_tcpc_int_odl)):
port = 0;
break;
- case GPIO_USB_C1_TCPC_INT_ODL:
+ case GPIO_SIGNAL(DT_NODELABEL(gpio_usb_c1_tcpc_int_odl)):
port = 1;
break;
default:
@@ -321,10 +323,10 @@ void tcpc_alert_event(enum gpio_signal signal)
void ppc_interrupt(enum gpio_signal signal)
{
switch (signal) {
- case GPIO_USB_C0_PPC_INT_ODL:
+ case GPIO_SIGNAL(DT_NODELABEL(gpio_usb_c0_ppc_int_odl)):
ppc_chips[0].drv->interrupt(0);
break;
- case GPIO_USB_C1_PPC_INT_ODL:
+ case GPIO_SIGNAL(DT_ALIAS(gpio_usb_c1_ppc_int_odl)):
ppc_chips[1].drv->interrupt(1);
break;
default:
diff --git a/zephyr/projects/corsola/src/krabby/hooks.c b/zephyr/projects/corsola/src/krabby/hooks.c
index cea6667650..59d56fec1d 100644
--- a/zephyr/projects/corsola/src/krabby/hooks.c
+++ b/zephyr/projects/corsola/src/krabby/hooks.c
@@ -8,12 +8,12 @@
static void board_suspend(void)
{
- gpio_set_level(GPIO_EN_5V_USM, 0);
+ gpio_pin_set_dt(GPIO_DT_FROM_NODELABEL(gpio_en_5v_usm), 0);
}
DECLARE_HOOK(HOOK_CHIPSET_SUSPEND, board_suspend, HOOK_PRIO_DEFAULT);
static void board_resume(void)
{
- gpio_set_level(GPIO_EN_5V_USM, 1);
+ gpio_pin_set_dt(GPIO_DT_FROM_NODELABEL(gpio_en_5v_usm), 1);
}
DECLARE_HOOK(HOOK_CHIPSET_RESUME, board_resume, HOOK_PRIO_DEFAULT);
diff --git a/zephyr/projects/corsola/src/krabby/usbc_config.c b/zephyr/projects/corsola/src/krabby/usbc_config.c
index 28ce147b1a..933a5fbcea 100644
--- a/zephyr/projects/corsola/src/krabby/usbc_config.c
+++ b/zephyr/projects/corsola/src/krabby/usbc_config.c
@@ -47,13 +47,13 @@ struct ppc_config_t ppc_chips[CONFIG_USB_PD_PORT_MAX_COUNT] = {
.i2c_port = I2C_PORT_PPC0,
.i2c_addr_flags = SYV682X_ADDR0_FLAGS,
.drv = &syv682x_drv,
- .frs_en = GPIO_USB_C0_PPC_FRSINFO,
+ .frs_en = GPIO_SIGNAL(DT_NODELABEL(usb_c0_ppc_frsinfo)),
},
{
.i2c_port = I2C_PORT_PPC1,
.i2c_addr_flags = SYV682X_ADDR0_FLAGS,
.drv = &syv682x_drv,
- .frs_en = GPIO_USB_C1_FRS_EN,
+ .frs_en = GPIO_SIGNAL(DT_ALIAS(gpio_usb_c1_frs_en)),
},
};
unsigned int ppc_cnt = ARRAY_SIZE(ppc_chips);
@@ -144,16 +144,18 @@ DECLARE_HOOK(HOOK_INIT, board_usb_mux_init, HOOK_PRIO_INIT_I2C + 1);
void ppc_interrupt(enum gpio_signal signal)
{
- if (signal == GPIO_USB_C1_PPC_INT_ODL)
+ if (signal == GPIO_SIGNAL(DT_ALIAS(gpio_usb_c1_ppc_int_odl)))
syv682x_interrupt(1);
}
int ppc_get_alert_status(int port)
{
if (port == 0)
- return gpio_get_level(GPIO_USB_C0_PPC_BC12_INT_ODL) == 0;
+ return gpio_pin_get_dt(
+ GPIO_DT_FROM_NODELABEL(usb_c0_ppc_bc12_int_odl)) == 0;
if (port == 1 && corsola_get_db_type() == CORSOLA_DB_TYPEC)
- return gpio_get_level(GPIO_USB_C1_PPC_INT_ODL) == 0;
+ return gpio_pin_get_dt(
+ GPIO_DT_FROM_ALIAS(gpio_usb_c1_ppc_int_odl)) == 0;
return 0;
}
@@ -284,7 +286,7 @@ static int board_ps8743_mux_set(const struct usb_mux *me,
*
* Enable/Disable IN_HPD on the DB.
*/
- gpio_set_level(GPIO_USB_C1_DP_IN_HPD,
+ gpio_pin_set_dt(GPIO_DT_FROM_ALIAS(gpio_usb_c1_dp_in_hpd),
mux_state & USB_PD_MUX_DP_ENABLED);
return ps8743_write(me, PS8743_REG_MODE, reg);
diff --git a/zephyr/projects/corsola/src/usb_pd_policy.c b/zephyr/projects/corsola/src/usb_pd_policy.c
index bfaa6f0c55..88eb297694 100644
--- a/zephyr/projects/corsola/src/usb_pd_policy.c
+++ b/zephyr/projects/corsola/src/usb_pd_policy.c
@@ -27,7 +27,7 @@ int pd_check_vconn_swap(int port)
int svdm_get_hpd_gpio(int port)
{
/* HPD is low active, inverse the result */
- return !gpio_get_level(GPIO_EC_AP_DP_HPD_ODL);
+ return !gpio_pin_get_dt(GPIO_DT_FROM_NODELABEL(ec_ap_dp_hpd_odl));
}
void svdm_set_hpd_gpio(int port, int en)
@@ -36,7 +36,7 @@ void svdm_set_hpd_gpio(int port, int en)
* HPD is low active, inverse the en
* TODO: C0&C1 shares the same HPD, implement FCFS policy.
*/
- gpio_set_level(GPIO_EC_AP_DP_HPD_ODL, !en);
+ gpio_pin_set_dt(GPIO_DT_FROM_NODELABEL(ec_ap_dp_hpd_odl), !en);
}
/**
@@ -78,8 +78,10 @@ __override int svdm_dp_attention(int port, uint32_t *payload)
return 0; /* nak */
}
- if (lvl)
- gpio_set_level_verbose(CC_USBPD, GPIO_DP_AUX_PATH_SEL, port);
+ if (lvl) {
+ gpio_pin_set_dt(GPIO_DT_FROM_NODELABEL(dp_aux_path_sel), port);
+ CPRINTS("Set DP_AUX_PATH_SEL: %d", port);
+ }
if (chipset_in_state(CHIPSET_STATE_ANY_SUSPEND) &&
(irq || lvl))
diff --git a/zephyr/projects/corsola/src/usbc_config.c b/zephyr/projects/corsola/src/usbc_config.c
index 5db1ab8a94..0aabc53b8f 100644
--- a/zephyr/projects/corsola/src/usbc_config.c
+++ b/zephyr/projects/corsola/src/usbc_config.c
@@ -70,7 +70,8 @@ BUILD_ASSERT(ARRAY_SIZE(usb_port_enable) == USB_PORT_COUNT);
void usb_a0_interrupt(enum gpio_signal signal)
{
- enum usb_charge_mode mode = gpio_get_level(signal) ?
+ enum usb_charge_mode mode = gpio_pin_get_dt(
+ GPIO_DT_FROM_NODELABEL(gpio_ap_xhci_init_done)) ?
USB_CHARGE_MODE_ENABLED : USB_CHARGE_MODE_DISABLED;
for (int i = 0; i < USB_PORT_COUNT; i++)
@@ -100,7 +101,8 @@ int debounced_hpd;
static void ps185_hdmi_hpd_deferred(void)
{
- const int new_hpd = gpio_get_level(GPIO_PS185_EC_DP_HPD);
+ const int new_hpd = gpio_pin_get_dt(
+ GPIO_DT_FROM_ALIAS(gpio_ps185_ec_dp_hpd));
/* HPD status not changed, probably a glitch, just return. */
if (debounced_hpd == new_hpd)
@@ -108,7 +110,8 @@ static void ps185_hdmi_hpd_deferred(void)
debounced_hpd = new_hpd;
- gpio_set_level(GPIO_EC_AP_DP_HPD_ODL, !debounced_hpd);
+ gpio_pin_set_dt(GPIO_DT_FROM_NODELABEL(ec_ap_dp_hpd_odl),
+ !debounced_hpd);
CPRINTS(debounced_hpd ? "HDMI plug" : "HDMI unplug");
}
DECLARE_DEFERRED(ps185_hdmi_hpd_deferred);
diff --git a/zephyr/projects/corsola/src/variant_db_detection.c b/zephyr/projects/corsola/src/variant_db_detection.c
index 340d54a196..d5e79b5680 100644
--- a/zephyr/projects/corsola/src/variant_db_detection.c
+++ b/zephyr/projects/corsola/src/variant_db_detection.c
@@ -7,6 +7,7 @@
#include "console.h"
#include "gpio.h"
+#include "gpio/gpio_int.h"
#include "hooks.h"
#include "variant_db_detection.h"
@@ -19,20 +20,31 @@ static void corsola_db_config(enum corsola_db_type type)
switch (type) {
case CORSOLA_DB_HDMI:
/* EC_X_GPIO1 */
- gpio_set_flags(GPIO_EN_HDMI_PWR, GPIO_OUT_HIGH);
+ gpio_pin_configure_dt(GPIO_DT_FROM_ALIAS(gpio_en_hdmi_pwr),
+ GPIO_OUT_HIGH);
/* X_EC_GPIO2 */
- gpio_set_flags(GPIO_PS185_EC_DP_HPD, GPIO_INT_BOTH);
+ gpio_pin_configure_dt(GPIO_DT_FROM_ALIAS(gpio_ps185_ec_dp_hpd),
+ GPIO_INPUT);
+ gpio_enable_dt_interrupt(
+ GPIO_INT_FROM_NODELABEL(int_x_ec_gpio2));
/* EC_X_GPIO3 */
- gpio_set_flags(GPIO_PS185_PWRDN_ODL, GPIO_ODR_HIGH);
+ gpio_pin_configure_dt(GPIO_DT_FROM_ALIAS(gpio_ps185_pwrdn_odl),
+ GPIO_ODR_HIGH);
return;
case CORSOLA_DB_TYPEC:
/* EC_X_GPIO1 */
- gpio_set_flags(GPIO_USB_C1_FRS_EN, GPIO_OUT_LOW);
+ gpio_pin_configure_dt(GPIO_DT_FROM_ALIAS(gpio_usb_c1_frs_en),
+ GPIO_OUT_LOW);
/* X_EC_GPIO2 */
- gpio_set_flags(GPIO_USB_C1_PPC_INT_ODL,
- GPIO_INT_BOTH | GPIO_PULL_UP);
+ gpio_pin_configure_dt(
+ GPIO_DT_FROM_ALIAS(gpio_usb_c1_ppc_int_odl),
+ GPIO_INPUT | GPIO_PULL_UP);
+ gpio_enable_dt_interrupt(
+ GPIO_INT_FROM_NODELABEL(int_x_ec_gpio2));
/* EC_X_GPIO3 */
- gpio_set_flags(GPIO_USB_C1_DP_IN_HPD, GPIO_OUT_LOW);
+ gpio_pin_configure_dt(
+ GPIO_DT_FROM_ALIAS(gpio_usb_c1_dp_in_hpd),
+ GPIO_OUT_LOW);
return;
default:
break;
@@ -47,7 +59,7 @@ enum corsola_db_type corsola_get_db_type(void)
if (db != CORSOLA_DB_NONE)
return db;
- if (!gpio_get_level(GPIO_HDMI_PRSNT_ODL))
+ if (!gpio_pin_get_dt(GPIO_DT_FROM_NODELABEL(gpio_hdmi_prsnt_odl)))
db = CORSOLA_DB_HDMI;
else
db = CORSOLA_DB_TYPEC;