summaryrefslogtreecommitdiff
path: root/arch/arm/soc/st_stm32/stm32f3/soc_gpio.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/soc/st_stm32/stm32f3/soc_gpio.c')
-rw-r--r--arch/arm/soc/st_stm32/stm32f3/soc_gpio.c22
1 files changed, 13 insertions, 9 deletions
diff --git a/arch/arm/soc/st_stm32/stm32f3/soc_gpio.c b/arch/arm/soc/st_stm32/stm32f3/soc_gpio.c
index 2c9cbde17..a30205c9c 100644
--- a/arch/arm/soc/st_stm32/stm32f3/soc_gpio.c
+++ b/arch/arm/soc/st_stm32/stm32f3/soc_gpio.c
@@ -58,21 +58,25 @@ int stm32_gpio_flags_to_conf(int flags, int *pincfg)
int pud = flags & GPIO_PUD_MASK;
if (direction == GPIO_DIR_OUT) {
- int type = flags & GPIO_PP_OD_MASK;
+ int type = flags & GPIO_DS_HIGH_MASK;
- if (type == GPIO_PUSH_PULL) {
- *pincfg = STM32F3X_PIN_CONFIG_DRIVE_PUSH_PULL;
+ if (type == GPIO_DS_DISCONNECT_HIGH) {
+ *pincfg = STM32F3X_PIN_CONFIG_DRIVE_OPEN_DRAIN;
if (pud == GPIO_PUD_PULL_UP) {
- *pincfg = STM32F3X_PIN_CONFIG_DRIVE_PUSH_PULL_PU;
+ *pincfg =
+ STM32F3X_PIN_CONFIG_DRIVE_OPEN_DRAIN_PU;
} else if (pud == GPIO_PUD_PULL_DOWN) {
- *pincfg = STM32F3X_PIN_CONFIG_DRIVE_PUSH_PULL_PD;
+ *pincfg =
+ STM32F3X_PIN_CONFIG_DRIVE_OPEN_DRAIN_PD;
}
- } else if (type == GPIO_OPEN_DRAIN) {
- *pincfg = STM32F3X_PIN_CONFIG_DRIVE_OPEN_DRAIN;
+ } else {
+ *pincfg = STM32F3X_PIN_CONFIG_DRIVE_PUSH_PULL;
if (pud == GPIO_PUD_PULL_UP) {
- *pincfg = STM32F3X_PIN_CONFIG_DRIVE_OPEN_DRAIN_PU;
+ *pincfg =
+ STM32F3X_PIN_CONFIG_DRIVE_PUSH_PULL_PU;
} else if (pud == GPIO_PUD_PULL_DOWN) {
- *pincfg = STM32F3X_PIN_CONFIG_DRIVE_OPEN_DRAIN_PD;
+ *pincfg =
+ STM32F3X_PIN_CONFIG_DRIVE_PUSH_PULL_PD;
}
}
} else if (direction == GPIO_DIR_IN) {