Skip to content

Commit 2c3fb8d

Browse files
etienne-lmserwango
authored andcommitted
scripts: genpinctrl: use pinctrl label instead of node path
Change genpinctrl.py tool to use the pinctrl node label instead of the node path in the generated pinctrl DTSI files. This change simplifies pinctrl DTSI file and specific case as for STM32N6xx series where the pinctrl node will move into a subnode of the soc node. Signed-off-by: Etienne Carriere <etienne.carriere@st.com>
1 parent 610e32f commit 2c3fb8d

File tree

4 files changed

+98
-111
lines changed

4 files changed

+98
-111
lines changed

scripts/genpinctrl/genpinctrl.py

Lines changed: 32 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -48,35 +48,35 @@
4848
NS = "{http://dummy.com}"
4949
"""MCU XML namespace."""
5050

51-
PINCTRL_ADDRESSES = {
52-
"stm32c0": 0x50000000,
53-
"stm32f0": 0x48000000,
54-
"stm32f1": 0x40010800,
55-
"stm32f2": 0x40020000,
56-
"stm32f3": 0x48000000,
57-
"stm32f4": 0x40020000,
58-
"stm32f7": 0x40020000,
59-
"stm32g0": 0x50000000,
60-
"stm32g4": 0x48000000,
61-
"stm32h5": 0x42020000,
62-
"stm32h7": 0x58020000,
63-
"stm32h7rs": 0x58020000,
64-
"stm32l0": 0x50000000,
65-
"stm32l1": 0x40020000,
66-
"stm32l4": 0x48000000,
67-
"stm32l5": 0x42020000,
68-
"stm32mp1": 0x50002000,
69-
"stm32mp2": 0x44240000,
70-
"stm32n6": 0x56020000,
71-
"stm32u0": 0x50000000,
72-
"stm32u3": 0x42020000,
73-
"stm32u5": 0x42020000,
74-
"stm32wba": 0x42020000,
75-
"stm32wb": 0x48000000,
76-
"stm32wb0": 0x48000000,
77-
"stm32wl": 0x48000000,
78-
}
79-
"""pinctrl peripheral addresses for each family."""
51+
SUPPORTED_FAMILIES = [
52+
"stm32c0",
53+
"stm32f0",
54+
"stm32f1",
55+
"stm32f2",
56+
"stm32f3",
57+
"stm32f4",
58+
"stm32f7",
59+
"stm32g0",
60+
"stm32g4",
61+
"stm32h5",
62+
"stm32h7",
63+
"stm32h7rs",
64+
"stm32l0",
65+
"stm32l1",
66+
"stm32l4",
67+
"stm32l5",
68+
"stm32mp1",
69+
"stm32mp2",
70+
"stm32n6",
71+
"stm32u0",
72+
"stm32u3",
73+
"stm32u5",
74+
"stm32wba",
75+
"stm32wb",
76+
"stm32wb0",
77+
"stm32wl",
78+
]
79+
"""Supported SoC families"""
8080

8181
PIN_MODS = [
8282
"_C", # Pins with analog switch (H7)
@@ -618,9 +618,8 @@ def main(data_path, output):
618618
output.mkdir(parents=True)
619619

620620
for family, refs in mcu_signals.items():
621-
# obtain family pinctrl address
622-
pinctrl_addr = PINCTRL_ADDRESSES.get(family.lower())
623-
if not pinctrl_addr:
621+
# check family is supported
622+
if family.lower() not in SUPPORTED_FAMILIES:
624623
logger.warning(f"Skipping unsupported family {family}.")
625624
continue
626625
else:
@@ -704,7 +703,7 @@ def main(data_path, output):
704703
rendered = ""
705704
try:
706705
rendered = pinctrl_template.render(
707-
family=family, pinctrl_addr=pinctrl_addr, entries=entries
706+
family=family, entries=entries
708707
)
709708
except Exception:
710709
logger.error(f"Skipping '{pinctrl_filename}' (rendering failed)")

scripts/genpinctrl/pinctrl-template.j2

Lines changed: 25 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -10,36 +10,32 @@
1010
#include <zephyr/dt-bindings/pinctrl/stm32-pinctrl.h>
1111
{% endif %}
1212

13-
/ {
14-
soc {
15-
pinctrl: pin-controller@{{ "%08X" | format(pinctrl_addr) }} {
13+
&pinctrl {
1614
{{ newline }}
17-
{% for group, group_entries in entries.items() %}
18-
/* {{ group }} */
15+
{% for group, group_entries in entries.items() %}
16+
/* {{ group }} */
1917
{{ newline }}
20-
{% for entry in group_entries %}
21-
{% set variant = "_" + entry["variant"] if entry["variant"] else "" %}
22-
{% set remap = (entry["af"] | format_remap_name) if family == "STM32F1" else "" %}
23-
{% set name = "%s%s%s_p%s%d%s" | format(entry["signal"], remap, variant, entry["port"], entry["pin"], entry["mod"]) %}
24-
/omit-if-no-ref/ {{ name }}: {{ name }} {
25-
{% if family == "STM32F1" %}
26-
pinmux = <STM32F1_PINMUX('{{ entry["port"] | upper }}', {{ entry["pin"] }}, {{ entry["mode"] | format_mode_f1 }}, {{ entry["af"] | format_remap }})>;
27-
{% else %}
28-
pinmux = <STM32_PINMUX('{{ entry["port"] | upper }}', {{ entry["pin"] }}, {{ entry["mode"] | format_mode(entry["af"]) }})>;
29-
{% endif %}
30-
{% if entry["bias"] %}
31-
bias-{{ entry["bias"] }};
32-
{% endif %}
33-
{% if entry["drive"] %}
34-
drive-{{ entry["drive"] }};
35-
{% endif %}
36-
{% if entry["slew-rate"] %}
37-
slew-rate = "{{ entry["slew-rate"] }}";
38-
{% endif %}
39-
};
40-
{{ newline }}
41-
{% endfor %}
42-
{% endfor %}
43-
};
18+
{% for entry in group_entries %}
19+
{% set variant = "_" + entry["variant"] if entry["variant"] else "" %}
20+
{% set remap = (entry["af"] | format_remap_name) if family == "STM32F1" else "" %}
21+
{% set name = "%s%s%s_p%s%d%s" | format(entry["signal"], remap, variant, entry["port"], entry["pin"], entry["mod"]) %}
22+
/omit-if-no-ref/ {{ name }}: {{ name }} {
23+
{% if family == "STM32F1" %}
24+
pinmux = <STM32F1_PINMUX('{{ entry["port"] | upper }}', {{ entry["pin"] }}, {{ entry["mode"] | format_mode_f1 }}, {{ entry["af"] | format_remap }})>;
25+
{% else %}
26+
pinmux = <STM32_PINMUX('{{ entry["port"] | upper }}', {{ entry["pin"] }}, {{ entry["mode"] | format_mode(entry["af"]) }})>;
27+
{% endif %}
28+
{% if entry["bias"] %}
29+
bias-{{ entry["bias"] }};
30+
{% endif %}
31+
{% if entry["drive"] %}
32+
drive-{{ entry["drive"] }};
33+
{% endif %}
34+
{% if entry["slew-rate"] %}
35+
slew-rate = "{{ entry["slew-rate"] }}";
36+
{% endif %}
4437
};
38+
{{ newline }}
39+
{% endfor %}
40+
{% endfor %}
4541
};

scripts/tests/genpinctrl/data/stm32f0testdie-pinctrl.dtsi

Lines changed: 14 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -6,29 +6,25 @@
66

77
#include <zephyr/dt-bindings/pinctrl/stm32-pinctrl.h>
88

9-
/ {
10-
soc {
11-
pinctrl: pin-controller@48000000 {
9+
&pinctrl {
1210

13-
/* ADC_IN / ADC_INN / ADC_INP */
11+
/* ADC_IN / ADC_INN / ADC_INP */
1412

15-
/omit-if-no-ref/ adc1_in0_pa0: adc1_in0_pa0 {
16-
pinmux = <STM32_PINMUX('A', 0, ANALOG)>;
17-
};
18-
19-
/* UART_RX / USART_RX / LPUART_RX */
13+
/omit-if-no-ref/ adc1_in0_pa0: adc1_in0_pa0 {
14+
pinmux = <STM32_PINMUX('A', 0, ANALOG)>;
15+
};
2016

21-
/omit-if-no-ref/ uart1_rx_pa0: uart1_rx_pa0 {
22-
pinmux = <STM32_PINMUX('A', 0, AF1)>;
23-
};
17+
/* UART_RX / USART_RX / LPUART_RX */
2418

25-
/* UART_TX / USART_TX / LPUART_TX */
19+
/omit-if-no-ref/ uart1_rx_pa0: uart1_rx_pa0 {
20+
pinmux = <STM32_PINMUX('A', 0, AF1)>;
21+
};
2622

27-
/omit-if-no-ref/ uart1_tx_pa0: uart1_tx_pa0 {
28-
pinmux = <STM32_PINMUX('A', 0, AF0)>;
29-
bias-pull-up;
30-
};
23+
/* UART_TX / USART_TX / LPUART_TX */
3124

32-
};
25+
/omit-if-no-ref/ uart1_tx_pa0: uart1_tx_pa0 {
26+
pinmux = <STM32_PINMUX('A', 0, AF0)>;
27+
bias-pull-up;
3328
};
29+
3430
};

scripts/tests/genpinctrl/data/stm32f1testdie-pinctrl.dtsi

Lines changed: 27 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -6,47 +6,43 @@
66

77
#include <zephyr/dt-bindings/pinctrl/stm32f1-pinctrl.h>
88

9-
/ {
10-
soc {
11-
pinctrl: pin-controller@40010800 {
9+
&pinctrl {
1210

13-
/* ADC_IN */
11+
/* ADC_IN */
1412

15-
/omit-if-no-ref/ adc1_in0_pa0: adc1_in0_pa0 {
16-
pinmux = <STM32F1_PINMUX('A', 0, ANALOG, NO_REMAP)>;
17-
};
18-
19-
/* I2C_SCL */
13+
/omit-if-no-ref/ adc1_in0_pa0: adc1_in0_pa0 {
14+
pinmux = <STM32F1_PINMUX('A', 0, ANALOG, NO_REMAP)>;
15+
};
2016

21-
/omit-if-no-ref/ i2c2_scl_pa0: i2c2_scl_pa0 {
22-
pinmux = <STM32F1_PINMUX('A', 0, ALTERNATE, NO_REMAP)>;
23-
drive-open-drain;
24-
};
17+
/* I2C_SCL */
2518

26-
/* UART_RX / USART_RX */
19+
/omit-if-no-ref/ i2c2_scl_pa0: i2c2_scl_pa0 {
20+
pinmux = <STM32F1_PINMUX('A', 0, ALTERNATE, NO_REMAP)>;
21+
drive-open-drain;
22+
};
2723

28-
/omit-if-no-ref/ uart1_rx_remap1_pa0: uart1_rx_remap1_pa0 {
29-
pinmux = <STM32F1_PINMUX('A', 0, GPIO_IN, UART1_REMAP1)>;
30-
};
24+
/* UART_RX / USART_RX */
3125

32-
/* UART_TX / USART_TX */
26+
/omit-if-no-ref/ uart1_rx_remap1_pa0: uart1_rx_remap1_pa0 {
27+
pinmux = <STM32F1_PINMUX('A', 0, GPIO_IN, UART1_REMAP1)>;
28+
};
3329

34-
/omit-if-no-ref/ uart1_tx_pa0: uart1_tx_pa0 {
35-
pinmux = <STM32F1_PINMUX('A', 0, ALTERNATE, UART1_REMAP0)>;
36-
};
30+
/* UART_TX / USART_TX */
3731

38-
/omit-if-no-ref/ uart1_tx_remap1_pa0: uart1_tx_remap1_pa0 {
39-
pinmux = <STM32F1_PINMUX('A', 0, ALTERNATE, UART1_REMAP1)>;
40-
};
32+
/omit-if-no-ref/ uart1_tx_pa0: uart1_tx_pa0 {
33+
pinmux = <STM32F1_PINMUX('A', 0, ALTERNATE, UART1_REMAP0)>;
34+
};
4135

42-
/omit-if-no-ref/ uart1_tx_remap2_pa0: uart1_tx_remap2_pa0 {
43-
pinmux = <STM32F1_PINMUX('A', 0, ALTERNATE, UART1_REMAP2)>;
44-
};
36+
/omit-if-no-ref/ uart1_tx_remap1_pa0: uart1_tx_remap1_pa0 {
37+
pinmux = <STM32F1_PINMUX('A', 0, ALTERNATE, UART1_REMAP1)>;
38+
};
4539

46-
/omit-if-no-ref/ uart1_tx_remap3_pa0: uart1_tx_remap3_pa0 {
47-
pinmux = <STM32F1_PINMUX('A', 0, ALTERNATE, UART1_REMAP3)>;
48-
};
40+
/omit-if-no-ref/ uart1_tx_remap2_pa0: uart1_tx_remap2_pa0 {
41+
pinmux = <STM32F1_PINMUX('A', 0, ALTERNATE, UART1_REMAP2)>;
42+
};
4943

50-
};
44+
/omit-if-no-ref/ uart1_tx_remap3_pa0: uart1_tx_remap3_pa0 {
45+
pinmux = <STM32F1_PINMUX('A', 0, ALTERNATE, UART1_REMAP3)>;
5146
};
47+
5248
};

0 commit comments

Comments
 (0)