Commit 0085b34e authored by Jaro Van Landschoot's avatar Jaro Van Landschoot Committed by Benjamin Cabé
Browse files

drivers: gpio: gpio_stm32: add gpio speed

The driver already read the speed flags (cfr. ospeed) and called
LL_GPIO_SetPinSpeed, but these flags could not be set yet.

Signed-off-by: default avatarJaro Van Landschoot <jaro.vanlandschoot@basalte.be>
parent a8065926
Loading
Loading
Loading
Loading
+17 −0
Changes for drivers/gpio/gpio_stm32.c: 17 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -91,6 +91,23 @@ static int gpio_stm32_flags_to_conf(gpio_flags_t flags, uint32_t *pincfg)
		*pincfg = STM32_PINCFG_MODE_ANALOG;
	}

#if !defined(CONFIG_SOC_SERIES_STM32F1X)
	switch (flags & (STM32_GPIO_SPEED_MASK << STM32_GPIO_SPEED_SHIFT)) {
	case STM32_GPIO_VERY_HIGH_SPEED:
		*pincfg |= STM32_OSPEEDR_VERY_HIGH_SPEED;
		break;
	case STM32_GPIO_HIGH_SPEED:
		*pincfg |= STM32_OSPEEDR_HIGH_SPEED;
		break;
	case STM32_GPIO_MEDIUM_SPEED:
		*pincfg |= STM32_OSPEEDR_MEDIUM_SPEED;
		break;
	default:
		*pincfg |= STM32_OSPEEDR_LOW_SPEED;
		break;
	}
#endif /* !CONFIG_SOC_SERIES_STM32F1X */

	return 0;
}

+18 −0
Changes for include/zephyr/dt-bindings/gpio/stm32-gpio.h: 18 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -14,6 +14,7 @@
 * follows:
 *
 * - Bit 8: Configure a GPIO pin to power on the system after Poweroff.
 * - Bit 10..9: Configure the output speed of a GPIO pin.
 *
 * @ingroup gpio_interface
 * @{
@@ -26,6 +27,23 @@
 */
#define STM32_GPIO_WKUP (1 << 8)

/** @cond INTERNAL_HIDDEN */
#define STM32_GPIO_SPEED_SHIFT 9
#define STM32_GPIO_SPEED_MASK  0x3
/** @endcond */

/** Configure the GPIO pin output speed to be low */
#define STM32_GPIO_LOW_SPEED (0x0 << STM32_GPIO_SPEED_SHIFT)

/** Configure the GPIO pin output speed to be medium */
#define STM32_GPIO_MEDIUM_SPEED (0x1 << STM32_GPIO_SPEED_SHIFT)

/** Configure the GPIO pin output speed to be high */
#define STM32_GPIO_HIGH_SPEED (0x2 << STM32_GPIO_SPEED_SHIFT)

/** Configure the GPIO pin output speed to be very high */
#define STM32_GPIO_VERY_HIGH_SPEED (0x3 << STM32_GPIO_SPEED_SHIFT)

/** @} */

#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_GPIO_STM32_GPIO_H_ */