drivers/pinctrl: stm32: Allow plain GPIO configuration

Based on introduction of plain GPIO configurations in STM32 pinctrl
bindings, update STM32 pinctrl/gpio drivers to make this functionality
available.

Signed-off-by: Erwan Gouriou <erwan.gouriou@linaro.org>
This commit is contained in:
Erwan Gouriou 2022-03-18 10:58:29 +01:00 committed by Marti Bolivar
commit 48039bc555
5 changed files with 65 additions and 17 deletions

View file

@ -224,6 +224,8 @@ int pinctrl_configure_pins(const pinctrl_soc_pin_t *pins, uint8_t pin_cnt,
} else {
pin_cgf = pin_cgf | STM32_CNF_IN_PUPD;
}
} else if (STM32_DT_PINMUX_FUNC(mux) == GPIO_OUT) {
pin_cgf = pins[i].pincfg | STM32_MODE_OUTPUT | STM32_CNF_GP_OUTPUT;
} else {
/* Not supported */
__ASSERT_NO_MSG(STM32_DT_PINMUX_FUNC(mux));
@ -233,6 +235,14 @@ int pinctrl_configure_pins(const pinctrl_soc_pin_t *pins, uint8_t pin_cnt,
pin_cgf = pins[i].pincfg | STM32_MODER_ALT_MODE;
} else if (STM32_DT_PINMUX_FUNC(mux) == STM32_ANALOG) {
pin_cgf = STM32_MODER_ANALOG_MODE;
} else if (STM32_DT_PINMUX_FUNC(mux) == STM32_GPIO) {
uint32_t gpio_out = pins[i].pincfg &
(STM32_ODR_MASK << STM32_ODR_SHIFT);
if (gpio_out != 0) {
pin_cgf = pins[i].pincfg | STM32_MODER_OUTPUT_MODE;
} else {
pin_cgf = pins[i].pincfg | STM32_MODER_INPUT_MODE;
}
} else {
/* Not supported */
__ASSERT_NO_MSG(STM32_DT_PINMUX_FUNC(mux));