Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ARM: dts: stm32: use dedicated files for pinctrl on stm32f7 family

Currently, same stm32f746-pinctrl driver is used for stm32f746 and
stm32f769 MCU. As pin map is different between those 2 MCUs,
a stm32f769-pinctrl driver has been recently added.
This patch
-allows to use stm32f769-pinctrl driver for stm32f769 boards
-reworks stm32 devicetree files to fit with stm32f746 / stm32f769

Signed-off-by: Alexandre Torgue <alexandre.torgue@st.com>

+253 -218
+1
arch/arm/boot/dts/stm32746g-eval.dts
··· 42 42 43 43 /dts-v1/; 44 44 #include "stm32f746.dtsi" 45 + #include "stm32f746-pinctrl.dtsi" 45 46 #include <dt-bindings/input/input.h> 46 47 47 48 / {
+227
arch/arm/boot/dts/stm32f7-pinctrl.dtsi
··· 1 + // SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) 2 + /* 3 + * Copyright (C) STMicroelectronics 2017 - All Rights Reserved 4 + * Author: Alexandre Torgue <alexandre.torgue@st.com> for STMicroelectronics. 5 + */ 6 + 7 + #include <dt-bindings/pinctrl/stm32-pinfunc.h> 8 + #include <dt-bindings/mfd/stm32f7-rcc.h> 9 + 10 + / { 11 + soc { 12 + pinctrl: pin-controller { 13 + #address-cells = <1>; 14 + #size-cells = <1>; 15 + ranges = <0 0x40020000 0x3000>; 16 + interrupt-parent = <&exti>; 17 + st,syscfg = <&syscfg 0x8>; 18 + pins-are-numbered; 19 + 20 + gpioa: gpio@40020000 { 21 + gpio-controller; 22 + #gpio-cells = <2>; 23 + interrupt-controller; 24 + #interrupt-cells = <2>; 25 + reg = <0x0 0x400>; 26 + clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOA)>; 27 + st,bank-name = "GPIOA"; 28 + }; 29 + 30 + gpiob: gpio@40020400 { 31 + gpio-controller; 32 + #gpio-cells = <2>; 33 + interrupt-controller; 34 + #interrupt-cells = <2>; 35 + reg = <0x400 0x400>; 36 + clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOB)>; 37 + st,bank-name = "GPIOB"; 38 + }; 39 + 40 + gpioc: gpio@40020800 { 41 + gpio-controller; 42 + #gpio-cells = <2>; 43 + interrupt-controller; 44 + #interrupt-cells = <2>; 45 + reg = <0x800 0x400>; 46 + clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOC)>; 47 + st,bank-name = "GPIOC"; 48 + }; 49 + 50 + gpiod: gpio@40020c00 { 51 + gpio-controller; 52 + #gpio-cells = <2>; 53 + interrupt-controller; 54 + #interrupt-cells = <2>; 55 + reg = <0xc00 0x400>; 56 + clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOD)>; 57 + st,bank-name = "GPIOD"; 58 + }; 59 + 60 + gpioe: gpio@40021000 { 61 + gpio-controller; 62 + #gpio-cells = <2>; 63 + interrupt-controller; 64 + #interrupt-cells = <2>; 65 + reg = <0x1000 0x400>; 66 + clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOE)>; 67 + st,bank-name = "GPIOE"; 68 + }; 69 + 70 + gpiof: gpio@40021400 { 71 + gpio-controller; 72 + #gpio-cells = <2>; 73 + interrupt-controller; 74 + #interrupt-cells = <2>; 75 + reg = <0x1400 0x400>; 76 + clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOF)>; 77 + st,bank-name = "GPIOF"; 78 + }; 79 + 80 + gpiog: gpio@40021800 { 81 + gpio-controller; 82 + #gpio-cells = <2>; 83 + interrupt-controller; 84 + #interrupt-cells = <2>; 85 + reg = <0x1800 0x400>; 86 + clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOG)>; 87 + st,bank-name = "GPIOG"; 88 + }; 89 + 90 + gpioh: gpio@40021c00 { 91 + gpio-controller; 92 + #gpio-cells = <2>; 93 + interrupt-controller; 94 + #interrupt-cells = <2>; 95 + reg = <0x1c00 0x400>; 96 + clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOH)>; 97 + st,bank-name = "GPIOH"; 98 + }; 99 + 100 + gpioi: gpio@40022000 { 101 + gpio-controller; 102 + #gpio-cells = <2>; 103 + interrupt-controller; 104 + #interrupt-cells = <2>; 105 + reg = <0x2000 0x400>; 106 + clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOI)>; 107 + st,bank-name = "GPIOI"; 108 + }; 109 + 110 + gpioj: gpio@40022400 { 111 + gpio-controller; 112 + #gpio-cells = <2>; 113 + interrupt-controller; 114 + #interrupt-cells = <2>; 115 + reg = <0x2400 0x400>; 116 + clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOJ)>; 117 + st,bank-name = "GPIOJ"; 118 + }; 119 + 120 + gpiok: gpio@40022800 { 121 + gpio-controller; 122 + #gpio-cells = <2>; 123 + interrupt-controller; 124 + #interrupt-cells = <2>; 125 + reg = <0x2800 0x400>; 126 + clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOK)>; 127 + st,bank-name = "GPIOK"; 128 + }; 129 + 130 + cec_pins_a: cec@0 { 131 + pins { 132 + pinmux = <STM32_PINMUX('A', 15, AF4)>; /* HDMI CEC */ 133 + slew-rate = <0>; 134 + drive-open-drain; 135 + bias-disable; 136 + }; 137 + }; 138 + 139 + usart1_pins_a: usart1@0 { 140 + pins1 { 141 + pinmux = <STM32_PINMUX('A', 9, AF7)>; /* USART1_TX */ 142 + bias-disable; 143 + drive-push-pull; 144 + slew-rate = <0>; 145 + }; 146 + pins2 { 147 + pinmux = <STM32_PINMUX('A', 10, AF7)>; /* USART1_RX */ 148 + bias-disable; 149 + }; 150 + }; 151 + 152 + usart1_pins_b: usart1@1 { 153 + pins1 { 154 + pinmux = <STM32_PINMUX('A', 9, AF7)>; /* USART1_TX */ 155 + bias-disable; 156 + drive-push-pull; 157 + slew-rate = <0>; 158 + }; 159 + pins2 { 160 + pinmux = <STM32_PINMUX('B', 7, AF7)>; /* USART1_RX */ 161 + bias-disable; 162 + }; 163 + }; 164 + 165 + i2c1_pins_b: i2c1@0 { 166 + pins { 167 + pinmux = <STM32_PINMUX('B', 9, AF4)>, /* I2C1 SDA */ 168 + <STM32_PINMUX('B', 8, AF4)>; /* I2C1 SCL */ 169 + bias-disable; 170 + drive-open-drain; 171 + slew-rate = <0>; 172 + }; 173 + }; 174 + 175 + usbotg_hs_pins_a: usbotg-hs@0 { 176 + pins { 177 + pinmux = <STM32_PINMUX('H', 4, AF10)>, /* OTG_HS_ULPI_NXT */ 178 + <STM32_PINMUX('I', 11, AF10)>, /* OTG_HS_ULPI_DIR */ 179 + <STM32_PINMUX('C', 0, AF10)>, /* OTG_HS_ULPI_STP */ 180 + <STM32_PINMUX('A', 5, AF10)>, /* OTG_HS_ULPI_CK */ 181 + <STM32_PINMUX('A', 3, AF10)>, /* OTG_HS_ULPI_D0 */ 182 + <STM32_PINMUX('B', 0, AF10)>, /* OTG_HS_ULPI_D1 */ 183 + <STM32_PINMUX('B', 1, AF10)>, /* OTG_HS_ULPI_D2 */ 184 + <STM32_PINMUX('B', 10, AF10)>, /* OTG_HS_ULPI_D3 */ 185 + <STM32_PINMUX('B', 11, AF10)>, /* OTG_HS_ULPI_D4 */ 186 + <STM32_PINMUX('B', 12, AF10)>, /* OTG_HS_ULPI_D5 */ 187 + <STM32_PINMUX('B', 13, AF10)>, /* OTG_HS_ULPI_D6 */ 188 + <STM32_PINMUX('B', 5, AF10)>; /* OTG_HS_ULPI_D7 */ 189 + bias-disable; 190 + drive-push-pull; 191 + slew-rate = <2>; 192 + }; 193 + }; 194 + 195 + usbotg_hs_pins_b: usbotg-hs@1 { 196 + pins { 197 + pinmux = <STM32_PINMUX('H', 4, AF10)>, /* OTG_HS_ULPI_NXT */ 198 + <STM32_PINMUX('C', 2, AF10)>, /* OTG_HS_ULPI_DIR */ 199 + <STM32_PINMUX('C', 0, AF10)>, /* OTG_HS_ULPI_STP */ 200 + <STM32_PINMUX('A', 5, AF10)>, /* OTG_HS_ULPI_CK */ 201 + <STM32_PINMUX('A', 3, AF10)>, /* OTG_HS_ULPI_D0 */ 202 + <STM32_PINMUX('B', 0, AF10)>, /* OTG_HS_ULPI_D1 */ 203 + <STM32_PINMUX('B', 1, AF10)>, /* OTG_HS_ULPI_D2 */ 204 + <STM32_PINMUX('B', 10, AF10)>, /* OTG_HS_ULPI_D3 */ 205 + <STM32_PINMUX('B', 11, AF10)>, /* OTG_HS_ULPI_D4 */ 206 + <STM32_PINMUX('B', 12, AF10)>, /* OTG_HS_ULPI_D5 */ 207 + <STM32_PINMUX('B', 13, AF10)>, /* OTG_HS_ULPI_D6 */ 208 + <STM32_PINMUX('B', 5, AF10)>; /* OTG_HS_ULPI_D7 */ 209 + bias-disable; 210 + drive-push-pull; 211 + slew-rate = <2>; 212 + }; 213 + }; 214 + 215 + usbotg_fs_pins_a: usbotg-fs@0 { 216 + pins { 217 + pinmux = <STM32_PINMUX('A', 10, AF10)>, /* OTG_FS_ID */ 218 + <STM32_PINMUX('A', 11, AF10)>, /* OTG_FS_DM */ 219 + <STM32_PINMUX('A', 12, AF10)>; /* OTG_FS_DP */ 220 + bias-disable; 221 + drive-push-pull; 222 + slew-rate = <2>; 223 + }; 224 + }; 225 + }; 226 + }; 227 + };
+1
arch/arm/boot/dts/stm32f746-disco.dts
··· 42 42 43 43 /dts-v1/; 44 44 #include "stm32f746.dtsi" 45 + #include "stm32f746-pinctrl.dtsi" 45 46 #include <dt-bindings/input/input.h> 46 47 47 48 / {
+11
arch/arm/boot/dts/stm32f746-pinctrl.dtsi
··· 1 + // SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) 2 + /* 3 + * Copyright (C) STMicroelectronics 2017 - All Rights Reserved 4 + * Author: Alexandre Torgue <alexandre.torgue@st.com> for STMicroelectronics. 5 + */ 6 + 7 + #include "stm32f7-pinctrl.dtsi" 8 + 9 + &pinctrl{ 10 + compatible = "st,stm32f746-pinctrl"; 11 + };
-217
arch/arm/boot/dts/stm32f746.dtsi
··· 42 42 43 43 #include "skeleton.dtsi" 44 44 #include "armv7-m.dtsi" 45 - #include <dt-bindings/pinctrl/stm32-pinfunc.h> 46 45 #include <dt-bindings/clock/stm32fx-clock.h> 47 46 #include <dt-bindings/mfd/stm32f7-rcc.h> 48 47 ··· 495 496 pwrcfg: power-config@40007000 { 496 497 compatible = "syscon"; 497 498 reg = <0x40007000 0x400>; 498 - }; 499 - 500 - pin-controller { 501 - #address-cells = <1>; 502 - #size-cells = <1>; 503 - compatible = "st,stm32f746-pinctrl"; 504 - ranges = <0 0x40020000 0x3000>; 505 - interrupt-parent = <&exti>; 506 - st,syscfg = <&syscfg 0x8>; 507 - pins-are-numbered; 508 - 509 - gpioa: gpio@40020000 { 510 - gpio-controller; 511 - #gpio-cells = <2>; 512 - interrupt-controller; 513 - #interrupt-cells = <2>; 514 - reg = <0x0 0x400>; 515 - clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOA)>; 516 - st,bank-name = "GPIOA"; 517 - }; 518 - 519 - gpiob: gpio@40020400 { 520 - gpio-controller; 521 - #gpio-cells = <2>; 522 - interrupt-controller; 523 - #interrupt-cells = <2>; 524 - reg = <0x400 0x400>; 525 - clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOB)>; 526 - st,bank-name = "GPIOB"; 527 - }; 528 - 529 - gpioc: gpio@40020800 { 530 - gpio-controller; 531 - #gpio-cells = <2>; 532 - interrupt-controller; 533 - #interrupt-cells = <2>; 534 - reg = <0x800 0x400>; 535 - clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOC)>; 536 - st,bank-name = "GPIOC"; 537 - }; 538 - 539 - gpiod: gpio@40020c00 { 540 - gpio-controller; 541 - #gpio-cells = <2>; 542 - interrupt-controller; 543 - #interrupt-cells = <2>; 544 - reg = <0xc00 0x400>; 545 - clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOD)>; 546 - st,bank-name = "GPIOD"; 547 - }; 548 - 549 - gpioe: gpio@40021000 { 550 - gpio-controller; 551 - #gpio-cells = <2>; 552 - interrupt-controller; 553 - #interrupt-cells = <2>; 554 - reg = <0x1000 0x400>; 555 - clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOE)>; 556 - st,bank-name = "GPIOE"; 557 - }; 558 - 559 - gpiof: gpio@40021400 { 560 - gpio-controller; 561 - #gpio-cells = <2>; 562 - interrupt-controller; 563 - #interrupt-cells = <2>; 564 - reg = <0x1400 0x400>; 565 - clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOF)>; 566 - st,bank-name = "GPIOF"; 567 - }; 568 - 569 - gpiog: gpio@40021800 { 570 - gpio-controller; 571 - #gpio-cells = <2>; 572 - interrupt-controller; 573 - #interrupt-cells = <2>; 574 - reg = <0x1800 0x400>; 575 - clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOG)>; 576 - st,bank-name = "GPIOG"; 577 - }; 578 - 579 - gpioh: gpio@40021c00 { 580 - gpio-controller; 581 - #gpio-cells = <2>; 582 - interrupt-controller; 583 - #interrupt-cells = <2>; 584 - reg = <0x1c00 0x400>; 585 - clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOH)>; 586 - st,bank-name = "GPIOH"; 587 - }; 588 - 589 - gpioi: gpio@40022000 { 590 - gpio-controller; 591 - #gpio-cells = <2>; 592 - interrupt-controller; 593 - #interrupt-cells = <2>; 594 - reg = <0x2000 0x400>; 595 - clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOI)>; 596 - st,bank-name = "GPIOI"; 597 - }; 598 - 599 - gpioj: gpio@40022400 { 600 - gpio-controller; 601 - #gpio-cells = <2>; 602 - interrupt-controller; 603 - #interrupt-cells = <2>; 604 - reg = <0x2400 0x400>; 605 - clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOJ)>; 606 - st,bank-name = "GPIOJ"; 607 - }; 608 - 609 - gpiok: gpio@40022800 { 610 - gpio-controller; 611 - #gpio-cells = <2>; 612 - interrupt-controller; 613 - #interrupt-cells = <2>; 614 - reg = <0x2800 0x400>; 615 - clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOK)>; 616 - st,bank-name = "GPIOK"; 617 - }; 618 - 619 - cec_pins_a: cec@0 { 620 - pins { 621 - pinmux = <STM32_PINMUX('A', 15, AF4)>; /* HDMI CEC */ 622 - slew-rate = <0>; 623 - drive-open-drain; 624 - bias-disable; 625 - }; 626 - }; 627 - 628 - usart1_pins_a: usart1@0 { 629 - pins1 { 630 - pinmux = <STM32_PINMUX('A', 9, AF7)>; /* USART1_TX */ 631 - bias-disable; 632 - drive-push-pull; 633 - slew-rate = <0>; 634 - }; 635 - pins2 { 636 - pinmux = <STM32_PINMUX('A', 10, AF7)>; /* USART1_RX */ 637 - bias-disable; 638 - }; 639 - }; 640 - 641 - usart1_pins_b: usart1@1 { 642 - pins1 { 643 - pinmux = <STM32_PINMUX('A', 9, AF7)>; /* USART1_TX */ 644 - bias-disable; 645 - drive-push-pull; 646 - slew-rate = <0>; 647 - }; 648 - pins2 { 649 - pinmux = <STM32_PINMUX('B', 7, AF7)>; /* USART1_RX */ 650 - bias-disable; 651 - }; 652 - }; 653 - 654 - i2c1_pins_b: i2c1@0 { 655 - pins { 656 - pinmux = <STM32_PINMUX('B', 9, AF4)>, /* I2C1 SDA */ 657 - <STM32_PINMUX('B', 8, AF4)>; /* I2C1 SCL */ 658 - bias-disable; 659 - drive-open-drain; 660 - slew-rate = <0>; 661 - }; 662 - }; 663 - 664 - usbotg_hs_pins_a: usbotg-hs@0 { 665 - pins { 666 - pinmux = <STM32_PINMUX('H', 4, AF10)>, /* OTG_HS_ULPI_NXT */ 667 - <STM32_PINMUX('I', 11, AF10)>, /* OTG_HS_ULPI_DIR */ 668 - <STM32_PINMUX('C', 0, AF10)>, /* OTG_HS_ULPI_STP */ 669 - <STM32_PINMUX('A', 5, AF10)>, /* OTG_HS_ULPI_CK */ 670 - <STM32_PINMUX('A', 3, AF10)>, /* OTG_HS_ULPI_D0 */ 671 - <STM32_PINMUX('B', 0, AF10)>, /* OTG_HS_ULPI_D1 */ 672 - <STM32_PINMUX('B', 1, AF10)>, /* OTG_HS_ULPI_D2 */ 673 - <STM32_PINMUX('B', 10, AF10)>, /* OTG_HS_ULPI_D3 */ 674 - <STM32_PINMUX('B', 11, AF10)>, /* OTG_HS_ULPI_D4 */ 675 - <STM32_PINMUX('B', 12, AF10)>, /* OTG_HS_ULPI_D5 */ 676 - <STM32_PINMUX('B', 13, AF10)>, /* OTG_HS_ULPI_D6 */ 677 - <STM32_PINMUX('B', 5, AF10)>; /* OTG_HS_ULPI_D7 */ 678 - bias-disable; 679 - drive-push-pull; 680 - slew-rate = <2>; 681 - }; 682 - }; 683 - 684 - usbotg_hs_pins_b: usbotg-hs@1 { 685 - pins { 686 - pinmux = <STM32_PINMUX('H', 4, AF10)>, /* OTG_HS_ULPI_NXT */ 687 - <STM32_PINMUX('C', 2, AF10)>, /* OTG_HS_ULPI_DIR */ 688 - <STM32_PINMUX('C', 0, AF10)>, /* OTG_HS_ULPI_STP */ 689 - <STM32_PINMUX('A', 5, AF10)>, /* OTG_HS_ULPI_CK */ 690 - <STM32_PINMUX('A', 3, AF10)>, /* OTG_HS_ULPI_D0 */ 691 - <STM32_PINMUX('B', 0, AF10)>, /* OTG_HS_ULPI_D1 */ 692 - <STM32_PINMUX('B', 1, AF10)>, /* OTG_HS_ULPI_D2 */ 693 - <STM32_PINMUX('B', 10, AF10)>, /* OTG_HS_ULPI_D3 */ 694 - <STM32_PINMUX('B', 11, AF10)>, /* OTG_HS_ULPI_D4 */ 695 - <STM32_PINMUX('B', 12, AF10)>, /* OTG_HS_ULPI_D5 */ 696 - <STM32_PINMUX('B', 13, AF10)>, /* OTG_HS_ULPI_D6 */ 697 - <STM32_PINMUX('B', 5, AF10)>; /* OTG_HS_ULPI_D7 */ 698 - bias-disable; 699 - drive-push-pull; 700 - slew-rate = <2>; 701 - }; 702 - }; 703 - 704 - usbotg_fs_pins_a: usbotg-fs@0 { 705 - pins { 706 - pinmux = <STM32_PINMUX('A', 10, AF10)>, /* OTG_FS_ID */ 707 - <STM32_PINMUX('A', 11, AF10)>, /* OTG_FS_DM */ 708 - <STM32_PINMUX('A', 12, AF10)>; /* OTG_FS_DP */ 709 - bias-disable; 710 - drive-push-pull; 711 - slew-rate = <2>; 712 - }; 713 - }; 714 499 }; 715 500 716 501 crc: crc@40023000 {
+2 -1
arch/arm/boot/dts/stm32f769-disco.dts
··· 42 42 43 43 /dts-v1/; 44 44 #include "stm32f746.dtsi" 45 + #include "stm32f769-pinctrl.dtsi" 45 46 #include <dt-bindings/input/input.h> 46 47 47 48 / { 48 49 model = "STMicroelectronics STM32F769-DISCO board"; 49 - compatible = "st,stm32f769-disco", "st,stm32f7"; 50 + compatible = "st,stm32f769-disco", "st,stm32f769"; 50 51 51 52 chosen { 52 53 bootargs = "root=/dev/ram";
+11
arch/arm/boot/dts/stm32f769-pinctrl.dtsi
··· 1 + // SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) 2 + /* 3 + * Copyright (C) STMicroelectronics 2017 - All Rights Reserved 4 + * Author: Alexandre Torgue <alexandre.torgue@st.com> for STMicroelectronics. 5 + */ 6 + 7 + #include "stm32f7-pinctrl.dtsi" 8 + 9 + &pinctrl{ 10 + compatible = "st,stm32f769-pinctrl"; 11 + };