| /* |
| * Copyright (c) 2021 Yonatan Schachter |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| #include <zephyr/drivers/pinctrl.h> |
| |
| /* pico-sdk includes */ |
| #include <hardware/gpio.h> |
| |
| static void pinctrl_configure_pin(const pinctrl_soc_pin_t *pin) |
| { |
| gpio_init(pin->pin_num); |
| gpio_set_function(pin->pin_num, pin->alt_func); |
| gpio_set_pulls(pin->pin_num, pin->pullup, pin->pulldown); |
| gpio_set_drive_strength(pin->pin_num, pin->drive_strength); |
| gpio_set_slew_rate(pin->pin_num, (pin->slew_rate ? |
| GPIO_SLEW_RATE_FAST : GPIO_SLEW_RATE_SLOW)); |
| gpio_set_input_hysteresis_enabled(pin->pin_num, pin->schmitt_enable); |
| gpio_set_input_enabled(pin->pin_num, pin->input_enable); |
| } |
| |
| int pinctrl_configure_pins(const pinctrl_soc_pin_t *pins, uint8_t pin_cnt, |
| uintptr_t reg) |
| { |
| ARG_UNUSED(reg); |
| |
| for (uint8_t i = 0U; i < pin_cnt; i++) { |
| pinctrl_configure_pin(pins++); |
| } |
| |
| return 0; |
| } |