summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew McRae <amcrae@google.com>2022-01-31 18:03:03 +1100
committerCommit Bot <commit-bot@chromium.org>2022-02-02 02:45:06 +0000
commit21b14984cda97c5d37bcbbb74cf9b0a0275970a9 (patch)
tree5d4177eee53f49a6d1ab7e4bfe5cf74ea857abf6
parent013552982b5859e7296e37d1bc4da39b26655b2d (diff)
downloadchrome-ec-21b14984cda97c5d37bcbbb74cf9b0a0275970a9.tar.gz
herobrine: Migrate GPIO access to use Zephyr API
Migrate GPIO access to use Zephyr GPIO API. BUG=b:216466985 TEST=zmake configure -b herobrine_npcx9 BRANCH=none Signed-off-by: Andrew McRae <amcrae@google.com> Change-Id: Ifb8591dc282fd367e389d4a0902ea8c001fc82b7 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3426250 Reviewed-by: Keith Short <keithshort@chromium.org>
-rw-r--r--zephyr/projects/herobrine/gpio.dts20
-rw-r--r--zephyr/projects/herobrine/src/led.c8
-rw-r--r--zephyr/projects/herobrine/src/usb_pd_policy.c29
-rw-r--r--zephyr/projects/herobrine/src/usbc_config.c21
4 files changed, 44 insertions, 34 deletions
diff --git a/zephyr/projects/herobrine/gpio.dts b/zephyr/projects/herobrine/gpio.dts
index 7f31aab9e4..383d63a63b 100644
--- a/zephyr/projects/herobrine/gpio.dts
+++ b/zephyr/projects/herobrine/gpio.dts
@@ -126,7 +126,7 @@
gpios = <&gpiod 5 GPIO_OUT_LOW>;
enum-name = "GPIO_SWITCHCAP_ON";
};
- en_pp5000_s5 {
+ gpio_en_pp5000_s5: en_pp5000_s5 {
gpios = <&gpio7 3 GPIO_OUT_HIGH>;
enum-name = "GPIO_EN_PP5000";
};
@@ -147,23 +147,23 @@
gpios = <&gpio7 4 GPIO_OUT_LOW>;
enum-name = "GPIO_TRACKPAD_INT_GATE";
};
- usb_c0_pd_rst_l {
+ gpio_usb_c0_pd_rst_l: usb_c0_pd_rst_l {
gpios = <&gpiof 1 GPIO_OUT_HIGH>;
enum-name = "GPIO_USB_C0_PD_RST_L";
};
- usb_c1_pd_rst_l {
+ gpio_usb_c1_pd_rst_l: usb_c1_pd_rst_l {
gpios = <&gpioe 4 GPIO_OUT_HIGH>;
enum-name = "GPIO_USB_C1_PD_RST_L";
};
- dp_mux_oe_l {
+ gpio_dp_mux_oe_l: dp_mux_oe_l {
gpios = <&gpiob 1 GPIO_ODR_HIGH>;
enum-name = "GPIO_DP_MUX_OE_L";
};
- dp_mux_sel {
+ gpio_dp_mux_sel: dp_mux_sel {
gpios = <&gpio4 5 GPIO_OUT_LOW>;
enum-name = "GPIO_DP_MUX_SEL";
};
- dp_hot_plug_det_r {
+ gpio_dp_hot_plug_det_r: dp_hot_plug_det_r {
gpios = <&gpio9 5 GPIO_OUT_LOW>;
enum-name = "GPIO_DP_HOT_PLUG_DET";
};
@@ -182,19 +182,19 @@
gpios = <&gpioc 1 GPIO_OUT_LOW>;
enum-name = "GPIO_USB_C1_FRS_EN";
};
- ec_chg_led_y_c0 {
+ gpio_ec_chg_led_y_c0: ec_chg_led_y_c0 {
gpios = <&gpio6 0 GPIO_OUT_LOW>;
enum-name = "GPIO_EC_CHG_LED_Y_C0";
};
- ec_chg_led_w_c0 {
+ gpio_ec_chg_led_w_c0: ec_chg_led_w_c0 {
gpios = <&gpioc 0 GPIO_OUT_LOW>;
enum-name = "GPIO_EC_CHG_LED_W_C0";
};
- ec_chg_led_y_c1 {
+ gpio_ec_chg_led_y_c1: ec_chg_led_y_c1 {
gpios = <&gpioc 3 GPIO_OUT_LOW>;
enum-name = "GPIO_EC_CHG_LED_Y_C1";
};
- ec_chg_led_w_c1 {
+ gpio_ec_chg_led_w_c1: ec_chg_led_w_c1 {
gpios = <&gpioc 4 GPIO_OUT_LOW>;
enum-name = "GPIO_EC_CHG_LED_W_C1";
};
diff --git a/zephyr/projects/herobrine/src/led.c b/zephyr/projects/herobrine/src/led.c
index 295c8effeb..2ccab86fef 100644
--- a/zephyr/projects/herobrine/src/led.c
+++ b/zephyr/projects/herobrine/src/led.c
@@ -36,9 +36,13 @@ enum led_color {
static void side_led_set_color(int port, enum led_color color)
{
- gpio_set_level(port ? GPIO_EC_CHG_LED_Y_C1 : GPIO_EC_CHG_LED_Y_C0,
+ gpio_pin_set_dt(port ?
+ GPIO_DT_FROM_NODELABEL(gpio_ec_chg_led_y_c1) :
+ GPIO_DT_FROM_NODELABEL(gpio_ec_chg_led_y_c0),
(color == LED_AMBER) ? BAT_LED_ON : BAT_LED_OFF);
- gpio_set_level(port ? GPIO_EC_CHG_LED_W_C1 : GPIO_EC_CHG_LED_W_C0,
+ gpio_pin_set_dt(port ?
+ GPIO_DT_FROM_NODELABEL(gpio_ec_chg_led_w_c1) :
+ GPIO_DT_FROM_NODELABEL(gpio_ec_chg_led_w_c0),
(color == LED_WHITE) ? BAT_LED_ON : BAT_LED_OFF);
}
diff --git a/zephyr/projects/herobrine/src/usb_pd_policy.c b/zephyr/projects/herobrine/src/usb_pd_policy.c
index 7ca2688aef..73c98db612 100644
--- a/zephyr/projects/herobrine/src/usb_pd_policy.c
+++ b/zephyr/projects/herobrine/src/usb_pd_policy.c
@@ -18,7 +18,7 @@
int pd_check_vconn_swap(int port)
{
/* In G3, do not allow vconn swap since PP5000 rail is off */
- return gpio_get_level(GPIO_EN_PP5000);
+ return gpio_pin_get_dt(GPIO_DT_FROM_NODELABEL(gpio_en_pp5000_s5));
}
static uint8_t vbus_en[CONFIG_USB_PD_PORT_MAX_COUNT];
@@ -143,10 +143,11 @@ static int is_dp_muxable(int port)
__override int svdm_dp_attention(int port, uint32_t *payload)
{
- enum gpio_signal hpd = GPIO_DP_HOT_PLUG_DET;
+ const struct gpio_dt_spec *hpd =
+ GPIO_DT_FROM_NODELABEL(gpio_dp_hot_plug_det_r);
int lvl = PD_VDO_DPSTS_HPD_LVL(payload[1]);
int irq = PD_VDO_DPSTS_HPD_IRQ(payload[1]);
- int cur_lvl = gpio_get_level(hpd);
+ int cur_lvl = gpio_pin_get_dt(hpd);
mux_state_t mux_state;
dp_status[port] = payload[1];
@@ -173,8 +174,9 @@ __override int svdm_dp_attention(int port, uint32_t *payload)
* TODO(waihong): Better to move switching DP mux to
* the usb_mux abstraction.
*/
- gpio_set_level(GPIO_DP_MUX_SEL, port == 1);
- gpio_set_level(GPIO_DP_MUX_OE_L, 0);
+ gpio_pin_set_dt(GPIO_DT_FROM_NODELABEL(gpio_dp_mux_sel),
+ port == 1);
+ gpio_pin_set_dt(GPIO_DT_FROM_NODELABEL(gpio_dp_mux_oe_l), 0);
/* Connect the SBU lines in PPC chip. */
if (IS_ENABLED(CONFIG_USBC_PPC_SBU))
@@ -192,8 +194,8 @@ __override int svdm_dp_attention(int port, uint32_t *payload)
polarity_rm_dts(pd_get_polarity(port)));
} else {
/* Disconnect the DP port selection mux. */
- gpio_set_level(GPIO_DP_MUX_OE_L, 1);
- gpio_set_level(GPIO_DP_MUX_SEL, 0);
+ gpio_pin_set_dt(GPIO_DT_FROM_NODELABEL(gpio_dp_mux_oe_l), 1);
+ gpio_pin_set_dt(GPIO_DT_FROM_NODELABEL(gpio_dp_mux_sel), 0);
/* Disconnect the SBU lines in PPC chip. */
if (IS_ENABLED(CONFIG_USBC_PPC_SBU))
@@ -226,9 +228,9 @@ __override int svdm_dp_attention(int port, uint32_t *payload)
usleep(svdm_hpd_deadline[port] - now);
/* Generate IRQ_HPD pulse */
- gpio_set_level(hpd, 0);
+ gpio_pin_set_dt(hpd, 0);
usleep(HPD_DSTREAM_DEBOUNCE_IRQ);
- gpio_set_level(hpd, 1);
+ gpio_pin_set_dt(hpd, 1);
/* Set the minimum time delay (2ms) for the next HPD IRQ */
svdm_hpd_deadline[port] = get_time().val +
@@ -237,7 +239,7 @@ __override int svdm_dp_attention(int port, uint32_t *payload)
CPRINTF("ERR:HPD:IRQ&LOW\n");
return 0;
} else {
- gpio_set_level(hpd, lvl);
+ gpio_pin_set_dt(hpd, lvl);
/* Set the minimum time delay (2ms) for the next HPD IRQ */
svdm_hpd_deadline[port] = get_time().val +
HPD_USTREAM_DEBOUNCE_LVL;
@@ -250,13 +252,14 @@ __override void svdm_exit_dp_mode(int port)
{
if (is_dp_muxable(port)) {
/* Disconnect the DP port selection mux. */
- gpio_set_level(GPIO_DP_MUX_OE_L, 1);
- gpio_set_level(GPIO_DP_MUX_SEL, 0);
+ gpio_pin_set_dt(GPIO_DT_FROM_NODELABEL(gpio_dp_mux_oe_l), 1);
+ gpio_pin_set_dt(GPIO_DT_FROM_NODELABEL(gpio_dp_mux_sel), 0);
/* Signal AP for the HPD low event */
usb_mux_hpd_update(port, USB_PD_MUX_HPD_LVL_DEASSERTED |
USB_PD_MUX_HPD_IRQ_DEASSERTED);
- gpio_set_level(GPIO_DP_HOT_PLUG_DET, 0);
+ gpio_pin_set_dt(
+ GPIO_DT_FROM_NODELABEL(gpio_dp_hot_plug_det_r), 0);
}
}
#endif /* CONFIG_USB_PD_ALT_MODE_DFP */
diff --git a/zephyr/projects/herobrine/src/usbc_config.c b/zephyr/projects/herobrine/src/usbc_config.c
index bddbf82d03..264792d2ae 100644
--- a/zephyr/projects/herobrine/src/usbc_config.c
+++ b/zephyr/projects/herobrine/src/usbc_config.c
@@ -54,7 +54,8 @@ static void usba_oc_deferred(void)
{
/* Use next number after all USB-C ports to indicate the USB-A port */
board_overcurrent_event(CONFIG_USB_PD_PORT_MAX_COUNT,
- !gpio_get_level(GPIO_USB_A0_OC_ODL));
+ !gpio_pin_get_dt(
+ GPIO_DT_FROM_NODELABEL(gpio_usb_a0_oc_odl)));
}
DECLARE_DEFERRED(usba_oc_deferred);
@@ -207,11 +208,11 @@ void board_reset_pd_mcu(void)
cprints(CC_USB, "Resetting TCPCs...");
cflush();
- gpio_set_level(GPIO_USB_C0_PD_RST_L, 0);
- gpio_set_level(GPIO_USB_C1_PD_RST_L, 0);
+ gpio_pin_set_dt(GPIO_DT_FROM_NODELABEL(gpio_usb_c0_pd_rst_l), 0);
+ gpio_pin_set_dt(GPIO_DT_FROM_NODELABEL(gpio_usb_c1_pd_rst_l), 0);
msleep(PS8XXX_RESET_DELAY_MS);
- gpio_set_level(GPIO_USB_C0_PD_RST_L, 1);
- gpio_set_level(GPIO_USB_C1_PD_RST_L, 1);
+ gpio_pin_set_dt(GPIO_DT_FROM_NODELABEL(gpio_usb_c0_pd_rst_l), 1);
+ gpio_pin_set_dt(GPIO_DT_FROM_NODELABEL(gpio_usb_c1_pd_rst_l), 1);
msleep(PS8805_FW_INIT_DELAY_MS);
}
@@ -320,11 +321,13 @@ uint16_t tcpc_get_alert_status(void)
{
uint16_t status = 0;
- if (!gpio_get_level(GPIO_USB_C0_PD_INT_ODL))
- if (gpio_get_level(GPIO_USB_C0_PD_RST_L))
+ if (!gpio_pin_get_dt(GPIO_DT_FROM_NODELABEL(gpio_usb_c0_pd_int_odl)))
+ if (gpio_pin_get_dt(
+ GPIO_DT_FROM_NODELABEL(gpio_usb_c0_pd_rst_l)))
status |= PD_STATUS_TCPC_ALERT_0;
- if (!gpio_get_level(GPIO_USB_C1_PD_INT_ODL))
- if (gpio_get_level(GPIO_USB_C1_PD_RST_L))
+ if (!gpio_pin_get_dt(GPIO_DT_FROM_NODELABEL(gpio_usb_c1_pd_int_odl)))
+ if (gpio_pin_get_dt(
+ GPIO_DT_FROM_NODELABEL(gpio_usb_c1_pd_rst_l)))
status |= PD_STATUS_TCPC_ALERT_1;
return status;