Skip to content

Commit 9b2025c

Browse files
FRASTMMaureenHelm
authored andcommitted
drivers: pinmux: Add STM32G0X pinmux support
Add pinmux support for STM32G0X SoC series. Signed-off-by: Philippe Retornaz <[email protected]> Signed-off-by: Francois Ramu <[email protected]> # Conflicts: # drivers/pinmux/stm32/pinmux_stm32.h
1 parent da48451 commit 9b2025c

File tree

5 files changed

+74
-0
lines changed

5 files changed

+74
-0
lines changed

drivers/gpio/gpio_stm32.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,8 @@ const int gpio_stm32_enable_int(int port, int pin)
222222
line = ((pin % 4 * 4) << 16) | (pin / 4);
223223
#elif defined(CONFIG_SOC_SERIES_STM32MP1X)
224224
line = (((pin * 8) % 32) << 16) | (pin / 4);
225+
#elif defined(CONFIG_SOC_SERIES_STM32G0X)
226+
line = ((pin & 0x3) << (16 + 3)) | (pin >> 2);
225227
#else
226228
line = (0xF << ((pin % 4 * 4) + 16)) | (pin / 4);
227229
#endif
@@ -241,6 +243,8 @@ const int gpio_stm32_enable_int(int port, int pin)
241243
LL_GPIO_AF_SetEXTISource(port, line);
242244
#elif CONFIG_SOC_SERIES_STM32MP1X
243245
LL_EXTI_SetEXTISource(port, line);
246+
#elif defined(CONFIG_SOC_SERIES_STM32G0X)
247+
LL_EXTI_SetEXTISource(port, line);
244248
#else
245249
LL_SYSCFG_SetEXTISource(port, line);
246250
#endif

drivers/pinmux/stm32/pinmux_stm32.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,8 @@ void stm32_setup_pins(const struct pin_config *pinconf,
113113
#include "pinmux_stm32f7.h"
114114
#elif CONFIG_SOC_SERIES_STM32H7X
115115
#include "pinmux_stm32h7.h"
116+
#elif CONFIG_SOC_SERIES_STM32G0X
117+
#include "pinmux_stm32g0.h"
116118
#elif CONFIG_SOC_SERIES_STM32L0X
117119
#include "pinmux_stm32l0.h"
118120
#elif CONFIG_SOC_SERIES_STM32L1X
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
/*
2+
* Copyright (c) 2019 Philippe Retornaz <[email protected]>
3+
* Copyright (c) 2019 ST Microelectronics
4+
*
5+
* SPDX-License-Identifier: Apache-2.0
6+
*/
7+
8+
#ifndef ZEPHYR_DRIVERS_PINMUX_STM32_PINMUX_STM32G0_H_
9+
#define ZEPHYR_DRIVERS_PINMUX_STM32_PINMUX_STM32G0_H_
10+
11+
/**
12+
* @file Header for STM32G0 pin multiplexing helper
13+
*/
14+
#define STM32G0_PINMUX_FUNC_PA2_USART2_TX \
15+
(STM32_PINMUX_ALT_FUNC_1 | STM32_PUSHPULL_NOPULL)
16+
#define STM32G0_PINMUX_FUNC_PA3_USART2_RX \
17+
(STM32_PINMUX_ALT_FUNC_1 | STM32_PUPDR_NO_PULL)
18+
19+
#define STM32G0_PINMUX_FUNC_PB6_USART1_TX \
20+
(STM32_PINMUX_ALT_FUNC_0 | STM32_PUSHPULL_NOPULL)
21+
#define STM32G0_PINMUX_FUNC_PB7_USART1_RX \
22+
(STM32_PINMUX_ALT_FUNC_0 | STM32_PUPDR_NO_PULL)
23+
#define STM32G0_PINMUX_FUNC_PB6_USART1_TX_RX \
24+
(STM32_PINMUX_ALT_FUNC_0 | STM32_OPENDRAIN_PULLUP)
25+
26+
#define STM32G0_PINMUX_FUNC_PA7_TIM3_CH2 \
27+
(STM32_PINMUX_ALT_FUNC_1 | STM32_PUSHPULL_NOPULL)
28+
29+
#endif /* ZEPHYR_DRIVERS_PINMUX_STM32_PINMUX_STM32G0_H_ */

dts/arm/st/g0/stm32g0-pinctrl.dtsi

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
/*
2+
* Copyright (c) 2019 Philippe Retornaz <[email protected]>
3+
* Copyright (c) 2019 STMicroelectronics
4+
*
5+
* SPDX-License-Identifier: Apache-2.0
6+
*/
7+
8+
#include <dt-bindings/pinctrl/stm32-pinctrl.h>
9+
10+
/ {
11+
soc {
12+
pinctrl: pin-controller@50000000 {
13+
usart2_pins_a: usart2_a {
14+
rx_tx {
15+
rx = <STM32_PIN_PA3 (STM32_PINMUX_ALT_FUNC_1 | STM32_PUPDR_NO_PULL)>;
16+
tx = <STM32_PIN_PA2 (STM32_PINMUX_ALT_FUNC_1 | STM32_PUSHPULL_NOPULL)>;
17+
};
18+
};
19+
usart1_pins_a: usart1_a {
20+
rx_tx {
21+
rx = <STM32_PIN_PB7 (STM32_PINMUX_ALT_FUNC_0 | STM32_PUPDR_NO_PULL)>;
22+
tx = <STM32_PIN_PB6 (STM32_PINMUX_ALT_FUNC_0 | STM32_PUSHPULL_NOPULL)>;
23+
};
24+
};
25+
usart1_pins_a_hd: usart1_a_hd {
26+
rx_tx {
27+
tx = <STM32_PIN_PB6 (STM32_PINMUX_ALT_FUNC_0 | STM32_OPENDRAIN_PULLUP)>;
28+
};
29+
};
30+
};
31+
};
32+
};

dts/arm/st/g0/stm32g0.dtsi

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,13 @@
5454
label = "STM32_CLK_RCC";
5555
};
5656

57+
pinctrl: pin-controller@50000000 {
58+
compatible = "st,stm32-pinmux";
59+
#address-cells = <1>;
60+
#size-cells = <1>;
61+
reg = <0x50000000 0x2000>;
62+
};
63+
5764
timers3: timers@40000400 {
5865
compatible = "st,stm32-timers";
5966
reg = <0x40000400 0x400>;

0 commit comments

Comments
 (0)