diff options
author | Andrew McRae <amcrae@google.com> | 2022-01-31 18:03:03 +1100 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2022-02-02 02:45:06 +0000 |
commit | 21b14984cda97c5d37bcbbb74cf9b0a0275970a9 (patch) | |
tree | 5d4177eee53f49a6d1ab7e4bfe5cf74ea857abf6 | |
parent | 013552982b5859e7296e37d1bc4da39b26655b2d (diff) | |
download | chrome-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.dts | 20 | ||||
-rw-r--r-- | zephyr/projects/herobrine/src/led.c | 8 | ||||
-rw-r--r-- | zephyr/projects/herobrine/src/usb_pd_policy.c | 29 | ||||
-rw-r--r-- | zephyr/projects/herobrine/src/usbc_config.c | 21 |
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; |