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

Merge tag 'stm32-dt-for-v5.19-1' of git://git.kernel.org/pub/scm/linux/kernel/git/atorgue/stm32 into arm/dt

STM32 DT for v5.19, round 1

Highlights:
----------

-MCU:
-Fix pinctrl node names to match with pinctrl yaml.

- MPU:
-General:
- Fix pinctrl node names to match with pinctrl yaml.
- Add Protonics boards support based on STM32MP151A SoC:
- PRTT1C - 10BaseT1L switch: mainly embeds a sja1105q switch with
TI and Micrel 10BaseT Phys and wifi support.
- PRTT1S - 10BaseT1L CO2 sensor board: mainly embeds I2C humidity
and CO2 sensors.
- PRTT1A - 10BaseT1L multi functional controller.

- ST boards:
- Add RTC support on stm32mp13.
- Add button and heartbit support on stm32mp13 DK board.
- Add a secure version of STM32MP15 ED1/EV1/DK1/DK2 boards based
on OP-TEE OS and SCMI protocol.

- DH boards:
- Use MCO2 to generate PHY clock and ETHRX clock in order to release
internal PLL for a better SD card usage.
- Add 1ms PHY post-reset on Avenger96 board to match with PHY
requirements.

* tag 'stm32-dt-for-v5.19-1' of git://git.kernel.org/pub/scm/linux/kernel/git/atorgue/stm32: (24 commits)
ARM: dts: stm32: Add SCMI version of STM32 boards (DK1/DK2/ED1/EV1)
dt-bindings: arm: stm32: Add SCMI version of STM32 boards (DK1/DK2/ED1/EV1)
ARM: dts: stm32: enable optee firmware and SCMI support on STM32MP15
dt-bindings: reset: stm32mp15: rename RST_SCMI define
dt-bindings: clock: stm32mp15: rename CK_SCMI define
dt-bindings: clock: stm32mp1: describes clocks if "st,stm32mp1-rcc-secure"
dt-bindings: rcc: Add optional external ethernet RX clock properties
ARM: dts: stm32: add UserPA13 button on stm32mp135f-dk
ARM: dts: stm32: add blue led (Linux heartbeat) on stm32mp135f-dk
ARM: dts: stm32: add EXTI interrupt-parent to pinctrl node on stm32mp131
ARM: dts: stm32: add support for Protonic PRTT1x boards
ARM: dts: stm32: stm32mp15-pinctrl: add spi1-1 pinmux group
dt-bindings: net: silabs,wfx: add prt,prtt1c-wfm200 antenna variant
dt-bindings: arm: stm32: Add compatible strings for Protonic T1L boards
dt-bindings: arm: stm32: correct blank lines
dt-bindings: arm: stm32: narrow DH STM32MP1 SoM boards
ARM: dts: stm32: enable RTC support on stm32mp135f-dk
ARM: dts: stm32: add RTC node on stm32mp131
ARM: dts: stm32: Fix PHY post-reset delay on Avenger96
ARM: dts: stm32: fix pinctrl node name warnings (MPU soc)
...

Link: https://lore.kernel.org/r/5818c943-882d-7e50-430d-ae3299a108ee@foss.st.com
Signed-off-by: Arnd Bergmann <arnd@arndb.de>

+1319 -62
+48 -15
Documentation/devicetree/bindings/arm/stm32/stm32.yaml
··· 14 14 const: "/" 15 15 compatible: 16 16 oneOf: 17 - - description: DH STM32MP1 SoM based Boards 18 - items: 19 - - enum: 20 - - arrow,stm32mp157a-avenger96 # Avenger96 21 - - dh,stm32mp153c-dhcom-drc02 22 - - dh,stm32mp157c-dhcom-pdk2 23 - - dh,stm32mp157c-dhcom-picoitx 24 - - enum: 25 - - dh,stm32mp153c-dhcom-som 26 - - dh,stm32mp157a-dhcor-som 27 - - dh,stm32mp157c-dhcom-som 28 - - enum: 29 - - st,stm32mp153 30 - - st,stm32mp157 31 - 32 17 - description: emtrion STM32MP1 Argon based Boards 33 18 items: 34 19 - const: emtrion,stm32mp157c-emsbc-argon ··· 50 65 - enum: 51 66 - st,stm32mp135f-dk 52 67 - const: st,stm32mp135 68 + 69 + - description: ST STM32MP151 based Boards 70 + items: 71 + - enum: 72 + - prt,prtt1a # Protonic PRTT1A 73 + - prt,prtt1c # Protonic PRTT1C 74 + - prt,prtt1s # Protonic PRTT1S 75 + - const: st,stm32mp151 76 + 77 + - description: DH STM32MP153 SoM based Boards 78 + items: 79 + - const: dh,stm32mp153c-dhcom-drc02 80 + - const: dh,stm32mp153c-dhcom-som 81 + - const: st,stm32mp153 82 + 53 83 - items: 54 84 - enum: 55 85 - shiratech,stm32mp157a-iot-box # IoT Box ··· 72 72 - st,stm32mp157c-ed1 73 73 - st,stm32mp157a-dk1 74 74 - st,stm32mp157c-dk2 75 + - const: st,stm32mp157 75 76 77 + - items: 78 + - const: st,stm32mp157a-dk1-scmi 79 + - const: st,stm32mp157a-dk1 80 + - const: st,stm32mp157 81 + - items: 82 + - const: st,stm32mp157c-dk2-scmi 83 + - const: st,stm32mp157c-dk2 84 + - const: st,stm32mp157 85 + - items: 86 + - const: st,stm32mp157c-ed1-scmi 87 + - const: st,stm32mp157c-ed1 76 88 - const: st,stm32mp157 77 89 - items: 78 90 - const: st,stm32mp157c-ev1 79 91 - const: st,stm32mp157c-ed1 92 + - const: st,stm32mp157 93 + - items: 94 + - const: st,stm32mp157c-ev1-scmi 95 + - const: st,stm32mp157c-ev1 96 + - const: st,stm32mp157c-ed1 97 + - const: st,stm32mp157 98 + 99 + - description: DH STM32MP1 SoM based Boards 100 + items: 101 + - enum: 102 + - arrow,stm32mp157a-avenger96 # Avenger96 103 + - const: dh,stm32mp157a-dhcor-som 104 + - const: st,stm32mp157 105 + 106 + - description: DH STM32MP1 SoM based Boards 107 + items: 108 + - enum: 109 + - dh,stm32mp157c-dhcom-pdk2 110 + - dh,stm32mp157c-dhcom-picoitx 111 + - const: dh,stm32mp157c-dhcom-som 80 112 - const: st,stm32mp157 81 113 82 114 - description: Engicam i.Core STM32MP1 SoM based Boards ··· 135 103 - const: oct,stm32mp15xx-osd32 136 104 - enum: 137 105 - st,stm32mp157 106 + 138 107 - description: Odyssey STM32MP1 SoM based Boards 139 108 items: 140 109 - enum:
+34
Documentation/devicetree/bindings/clock/st,stm32mp1-rcc.yaml
··· 58 58 - st,stm32mp1-rcc-secure 59 59 - st,stm32mp1-rcc 60 60 - const: syscon 61 + clocks: true 62 + clock-names: true 61 63 62 64 reg: 63 65 maxItems: 1 ··· 69 67 - "#reset-cells" 70 68 - compatible 71 69 - reg 70 + 71 + if: 72 + properties: 73 + compatible: 74 + contains: 75 + enum: 76 + - st,stm32mp1-rcc-secure 77 + then: 78 + properties: 79 + clocks: 80 + description: Specifies oscillators. 81 + maxItems: 5 82 + 83 + clock-names: 84 + items: 85 + - const: hse 86 + - const: hsi 87 + - const: csi 88 + - const: lse 89 + - const: lsi 90 + required: 91 + - clocks 92 + - clock-names 93 + else: 94 + properties: 95 + clocks: 96 + description: 97 + Specifies the external RX clock for ethernet MAC. 98 + maxItems: 1 99 + 100 + clock-names: 101 + const: ETH_RX_CLK/ETH_REF_CLK 72 102 73 103 additionalProperties: false 74 104
+1
Documentation/devicetree/bindings/staging/net/wireless/silabs,wfx.yaml
··· 39 39 compatible: 40 40 items: 41 41 - enum: 42 + - prt,prtt1c-wfm200 # Protonic PRTT1C Board 42 43 - silabs,brd4001a # WGM160P Evaluation Board 43 44 - silabs,brd8022a # WF200 Evaluation Board 44 45 - silabs,brd8023a # WFM200 Evaluation Board
+7
arch/arm/boot/dts/Makefile
··· 1156 1156 stm32h743i-disco.dtb \ 1157 1157 stm32h750i-art-pi.dtb \ 1158 1158 stm32mp135f-dk.dtb \ 1159 + stm32mp151a-prtt1a.dtb \ 1160 + stm32mp151a-prtt1c.dtb \ 1161 + stm32mp151a-prtt1s.dtb \ 1159 1162 stm32mp153c-dhcom-drc02.dtb \ 1160 1163 stm32mp157a-avenger96.dtb \ 1161 1164 stm32mp157a-dhcor-avenger96.dtb \ 1162 1165 stm32mp157a-dk1.dtb \ 1166 + stm32mp157a-dk1-scmi.dtb \ 1163 1167 stm32mp157a-iot-box.dtb \ 1164 1168 stm32mp157a-microgea-stm32mp1-microdev2.0.dtb \ 1165 1169 stm32mp157a-microgea-stm32mp1-microdev2.0-of7.dtb \ ··· 1174 1170 stm32mp157c-dhcom-pdk2.dtb \ 1175 1171 stm32mp157c-dhcom-picoitx.dtb \ 1176 1172 stm32mp157c-dk2.dtb \ 1173 + stm32mp157c-dk2-scmi.dtb \ 1177 1174 stm32mp157c-ed1.dtb \ 1175 + stm32mp157c-ed1-scmi.dtb \ 1178 1176 stm32mp157c-emsbc-argon.dtb \ 1179 1177 stm32mp157c-ev1.dtb \ 1178 + stm32mp157c-ev1-scmi.dtb \ 1180 1179 stm32mp157c-lxa-mc1.dtb \ 1181 1180 stm32mp157c-odyssey.dtb 1182 1181 dtb-$(CONFIG_MACH_SUN4I) += \
+1 -1
arch/arm/boot/dts/stm32f4-pinctrl.dtsi
··· 45 45 46 46 / { 47 47 soc { 48 - pinctrl: pin-controller@40020000 { 48 + pinctrl: pinctrl@40020000 { 49 49 #address-cells = <1>; 50 50 #size-cells = <1>; 51 51 ranges = <0 0x40020000 0x3000>;
+1 -1
arch/arm/boot/dts/stm32f7-pinctrl.dtsi
··· 9 9 10 10 / { 11 11 soc { 12 - pinctrl: pin-controller@40020000 { 12 + pinctrl: pinctrl@40020000 { 13 13 #address-cells = <1>; 14 14 #size-cells = <1>; 15 15 ranges = <0 0x40020000 0x3000>;
+1 -1
arch/arm/boot/dts/stm32h743.dtsi
··· 583 583 status = "disabled"; 584 584 }; 585 585 586 - pinctrl: pin-controller@58020000 { 586 + pinctrl: pinctrl@58020000 { 587 587 #address-cells = <1>; 588 588 #size-cells = <1>; 589 589 compatible = "st,stm32h743-pinctrl";
+18 -1
arch/arm/boot/dts/stm32mp131.dtsi
··· 75 75 compatible = "fixed-clock"; 76 76 clock-frequency = <99000000>; 77 77 }; 78 + 79 + clk_rtc_k: clk-rtc-k { 80 + #clock-cells = <0>; 81 + compatible = "fixed-clock"; 82 + clock-frequency = <32768>; 83 + }; 78 84 }; 79 85 80 86 intc: interrupt-controller@a0021000 { ··· 224 218 status = "disabled"; 225 219 }; 226 220 221 + rtc: rtc@5c004000 { 222 + compatible = "st,stm32mp1-rtc"; 223 + reg = <0x5c004000 0x400>; 224 + interrupts-extended = <&exti 19 IRQ_TYPE_LEVEL_HIGH>; 225 + clocks = <&clk_pclk4>, <&clk_rtc_k>; 226 + clock-names = "pclk", "rtc_ck"; 227 + status = "disabled"; 228 + }; 229 + 227 230 bsec: efuse@5c005000 { 228 231 compatible = "st,stm32mp15-bsec"; 229 232 reg = <0x5c005000 0x400>; ··· 254 239 * Break node order to solve dependency probe issue between 255 240 * pinctrl and exti. 256 241 */ 257 - pinctrl: pin-controller@50002000 { 242 + pinctrl: pinctrl@50002000 { 258 243 #address-cells = <1>; 259 244 #size-cells = <1>; 260 245 compatible = "st,stm32mp135-pinctrl"; 261 246 ranges = <0 0x50002000 0x8400>; 247 + interrupt-parent = <&exti>; 248 + st,syscfg = <&exti 0x60 0xff>; 262 249 pins-are-numbered; 263 250 264 251 gpioa: gpio@50002000 {
+29
arch/arm/boot/dts/stm32mp135f-dk.dts
··· 6 6 7 7 /dts-v1/; 8 8 9 + #include <dt-bindings/gpio/gpio.h> 10 + #include <dt-bindings/input/input.h> 11 + #include <dt-bindings/leds/common.h> 9 12 #include "stm32mp135.dtsi" 10 13 #include "stm32mp13xf.dtsi" 11 14 #include "stm32mp13-pinctrl.dtsi" ··· 26 23 reg = <0xc0000000 0x20000000>; 27 24 }; 28 25 26 + gpio-keys { 27 + compatible = "gpio-keys"; 28 + 29 + user-pa13 { 30 + label = "User-PA13"; 31 + linux,code = <BTN_1>; 32 + gpios = <&gpioa 13 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; 33 + }; 34 + }; 35 + 36 + leds { 37 + compatible = "gpio-leds"; 38 + 39 + led-blue { 40 + function = LED_FUNCTION_HEARTBEAT; 41 + color = <LED_COLOR_ID_BLUE>; 42 + gpios = <&gpioa 14 GPIO_ACTIVE_LOW>; 43 + linux,default-trigger = "heartbeat"; 44 + default-state = "off"; 45 + }; 46 + }; 47 + 29 48 vdd_sd: vdd-sd { 30 49 compatible = "regulator-fixed"; 31 50 regulator-name = "vdd_sd"; ··· 59 34 60 35 &iwdg2 { 61 36 timeout-sec = <32>; 37 + status = "okay"; 38 + }; 39 + 40 + &rtc { 62 41 status = "okay"; 63 42 }; 64 43
+64
arch/arm/boot/dts/stm32mp15-pinctrl.dtsi
··· 379 379 }; 380 380 }; 381 381 382 + ethernet0_rmii_pins_c: rmii-2 { 383 + pins1 { 384 + pinmux = <STM32_PINMUX('G', 13, AF11)>, /* ETH1_RMII_TXD0 */ 385 + <STM32_PINMUX('G', 14, AF11)>, /* ETH1_RMII_TXD1 */ 386 + <STM32_PINMUX('B', 11, AF11)>, /* ETH1_RMII_TX_EN */ 387 + <STM32_PINMUX('A', 1, AF11)>, /* ETH1_RMII_REF_CLK */ 388 + <STM32_PINMUX('A', 2, AF11)>, /* ETH1_MDIO */ 389 + <STM32_PINMUX('C', 1, AF11)>; /* ETH1_MDC */ 390 + bias-disable; 391 + drive-push-pull; 392 + slew-rate = <2>; 393 + }; 394 + pins2 { 395 + pinmux = <STM32_PINMUX('C', 4, AF11)>, /* ETH1_RMII_RXD0 */ 396 + <STM32_PINMUX('C', 5, AF11)>, /* ETH1_RMII_RXD1 */ 397 + <STM32_PINMUX('A', 7, AF11)>; /* ETH1_RMII_CRS_DV */ 398 + bias-disable; 399 + }; 400 + }; 401 + 402 + ethernet0_rmii_sleep_pins_c: rmii-sleep-2 { 403 + pins1 { 404 + pinmux = <STM32_PINMUX('G', 13, ANALOG)>, /* ETH1_RMII_TXD0 */ 405 + <STM32_PINMUX('G', 14, ANALOG)>, /* ETH1_RMII_TXD1 */ 406 + <STM32_PINMUX('B', 11, ANALOG)>, /* ETH1_RMII_TX_EN */ 407 + <STM32_PINMUX('A', 2, ANALOG)>, /* ETH1_MDIO */ 408 + <STM32_PINMUX('C', 1, ANALOG)>, /* ETH1_MDC */ 409 + <STM32_PINMUX('C', 4, ANALOG)>, /* ETH1_RMII_RXD0 */ 410 + <STM32_PINMUX('C', 5, ANALOG)>, /* ETH1_RMII_RXD1 */ 411 + <STM32_PINMUX('A', 1, ANALOG)>, /* ETH1_RMII_REF_CLK */ 412 + <STM32_PINMUX('A', 7, ANALOG)>; /* ETH1_RMII_CRS_DV */ 413 + }; 414 + }; 415 + 382 416 fmc_pins_a: fmc-0 { 383 417 pins1 { 384 418 pinmux = <STM32_PINMUX('D', 4, AF12)>, /* FMC_NOE */ ··· 920 886 <STM32_PINMUX('A', 3, ANALOG)>, /* LCD_B5 */ 921 887 <STM32_PINMUX('B', 8, ANALOG)>, /* LCD_B6 */ 922 888 <STM32_PINMUX('I', 7, ANALOG)>; /* LCD_B7 */ 889 + }; 890 + }; 891 + 892 + mco2_pins_a: mco2-0 { 893 + pins { 894 + pinmux = <STM32_PINMUX('G', 2, AF1)>; /* MCO2 */ 895 + bias-disable; 896 + drive-push-pull; 897 + slew-rate = <2>; 898 + }; 899 + }; 900 + 901 + mco2_sleep_pins_a: mco2-sleep-0 { 902 + pins { 903 + pinmux = <STM32_PINMUX('G', 2, ANALOG)>; /* MCO2 */ 923 904 }; 924 905 }; 925 906 ··· 2258 2209 2259 2210 pins2 { 2260 2211 pinmux = <STM32_PINMUX('Z', 1, AF5)>; /* SPI1_MISO */ 2212 + bias-disable; 2213 + }; 2214 + }; 2215 + 2216 + spi1_pins_b: spi1-1 { 2217 + pins1 { 2218 + pinmux = <STM32_PINMUX('A', 5, AF5)>, /* SPI1_SCK */ 2219 + <STM32_PINMUX('B', 5, AF5)>; /* SPI1_MOSI */ 2220 + bias-disable; 2221 + drive-push-pull; 2222 + slew-rate = <1>; 2223 + }; 2224 + 2225 + pins2 { 2226 + pinmux = <STM32_PINMUX('A', 6, AF5)>; /* SPI1_MISO */ 2261 2227 bias-disable; 2262 2228 }; 2263 2229 };
+43 -2
arch/arm/boot/dts/stm32mp151.dtsi
··· 115 115 status = "disabled"; 116 116 }; 117 117 118 + firmware { 119 + optee: optee { 120 + compatible = "linaro,optee-tz"; 121 + method = "smc"; 122 + status = "disabled"; 123 + }; 124 + 125 + scmi: scmi { 126 + compatible = "linaro,scmi-optee"; 127 + #address-cells = <1>; 128 + #size-cells = <0>; 129 + linaro,optee-channel-id = <0>; 130 + shmem = <&scmi_shm>; 131 + status = "disabled"; 132 + 133 + scmi_clk: protocol@14 { 134 + reg = <0x14>; 135 + #clock-cells = <1>; 136 + }; 137 + 138 + scmi_reset: protocol@16 { 139 + reg = <0x16>; 140 + #reset-cells = <1>; 141 + }; 142 + }; 143 + }; 144 + 118 145 soc { 119 146 compatible = "simple-bus"; 120 147 #address-cells = <1>; 121 148 #size-cells = <1>; 122 149 interrupt-parent = <&intc>; 123 150 ranges; 151 + 152 + scmi_sram: sram@2ffff000 { 153 + compatible = "mmio-sram"; 154 + reg = <0x2ffff000 0x1000>; 155 + #address-cells = <1>; 156 + #size-cells = <1>; 157 + ranges = <0 0x2ffff000 0x1000>; 158 + 159 + scmi_shm: scmi-sram@0 { 160 + compatible = "arm,scmi-shmem"; 161 + reg = <0 0x80>; 162 + status = "disabled"; 163 + }; 164 + }; 124 165 125 166 timers2: timer@40000000 { 126 167 #address-cells = <1>; ··· 1664 1623 * Break node order to solve dependency probe issue between 1665 1624 * pinctrl and exti. 1666 1625 */ 1667 - pinctrl: pin-controller@50002000 { 1626 + pinctrl: pinctrl@50002000 { 1668 1627 #address-cells = <1>; 1669 1628 #size-cells = <1>; 1670 1629 compatible = "st,stm32mp157-pinctrl"; ··· 1795 1754 }; 1796 1755 }; 1797 1756 1798 - pinctrl_z: pin-controller-z@54004000 { 1757 + pinctrl_z: pinctrl@54004000 { 1799 1758 #address-cells = <1>; 1800 1759 #size-cells = <1>; 1801 1760 compatible = "st,stm32mp157-z-pinctrl";
+52
arch/arm/boot/dts/stm32mp151a-prtt1a.dts
··· 1 + // SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) 2 + /* 3 + * Copyright (C) Protonic Holland 4 + * Author: David Jander <david@protonic.nl> 5 + */ 6 + /dts-v1/; 7 + 8 + #include "stm32mp151a-prtt1l.dtsi" 9 + 10 + / { 11 + model = "Protonic PRTT1A"; 12 + compatible = "prt,prtt1a", "st,stm32mp151"; 13 + }; 14 + 15 + &ethernet0 { 16 + phy-handle = <&phy0>; 17 + }; 18 + 19 + &mdio0 { 20 + /* TI DP83TD510E */ 21 + phy0: ethernet-phy@0 { 22 + compatible = "ethernet-phy-id2000.0181"; 23 + reg = <0>; 24 + interrupts-extended = <&gpioa 4 IRQ_TYPE_LEVEL_LOW>; 25 + reset-gpios = <&gpioa 3 GPIO_ACTIVE_LOW>; 26 + reset-assert-us = <10>; 27 + reset-deassert-us = <35>; 28 + }; 29 + }; 30 + 31 + &pwm5_pins_a { 32 + pins { 33 + pinmux = <STM32_PINMUX('A', 0, AF2)>; /* TIM5_CH1 */ 34 + }; 35 + }; 36 + 37 + &pwm5_sleep_pins_a { 38 + pins { 39 + pinmux = <STM32_PINMUX('A', 0, ANALOG)>; /* TIM5_CH1 */ 40 + }; 41 + }; 42 + 43 + &timers5 { 44 + status = "okay"; 45 + 46 + pwm { 47 + pinctrl-0 = <&pwm5_pins_a>; 48 + pinctrl-1 = <&pwm5_sleep_pins_a>; 49 + pinctrl-names = "default", "sleep"; 50 + status = "okay"; 51 + }; 52 + };
+304
arch/arm/boot/dts/stm32mp151a-prtt1c.dts
··· 1 + // SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) 2 + /* 3 + * Copyright (C) Protonic Holland 4 + * Author: David Jander <david@protonic.nl> 5 + */ 6 + /dts-v1/; 7 + 8 + #include "stm32mp151a-prtt1l.dtsi" 9 + 10 + / { 11 + model = "Protonic PRTT1C"; 12 + compatible = "prt,prtt1c", "st,stm32mp151"; 13 + 14 + clock_ksz9031: clock-ksz9031 { 15 + compatible = "fixed-clock"; 16 + #clock-cells = <0>; 17 + clock-frequency = <25000000>; 18 + }; 19 + 20 + clock_sja1105: clock-sja1105 { 21 + compatible = "fixed-clock"; 22 + #clock-cells = <0>; 23 + clock-frequency = <25000000>; 24 + }; 25 + 26 + mdio0: mdio { 27 + compatible = "virtual,mdio-gpio"; 28 + #address-cells = <1>; 29 + #size-cells = <0>; 30 + gpios = <&gpioc 1 GPIO_ACTIVE_HIGH 31 + &gpioa 2 GPIO_ACTIVE_HIGH>; 32 + 33 + }; 34 + 35 + wifi_pwrseq: wifi-pwrseq { 36 + compatible = "mmc-pwrseq-simple"; 37 + reset-gpios = <&gpiod 8 GPIO_ACTIVE_LOW>; 38 + }; 39 + }; 40 + 41 + &ethernet0 { 42 + fixed-link { 43 + speed = <100>; 44 + full-duplex; 45 + }; 46 + }; 47 + 48 + &gpioa { 49 + gpio-line-names = 50 + "", "", "", "PHY0_nRESET", "PHY0_nINT", "", "", "", 51 + "", "", "", "", "", "", "", "SPI1_nSS"; 52 + }; 53 + 54 + &gpiod { 55 + gpio-line-names = 56 + "", "", "", "", "", "", "", "", 57 + "WFM_RESET", "", "", "", "", "", "", ""; 58 + }; 59 + 60 + &gpioe { 61 + gpio-line-names = 62 + "SDMMC2_nRESET", "", "", "", "", "", "SPI1_nRESET", "", 63 + "", "", "", "", "WFM_nIRQ", "", "", ""; 64 + }; 65 + 66 + &gpiog { 67 + gpio-line-names = 68 + "", "", "", "", "", "", "", "PHY3_nINT", 69 + "PHY1_nINT", "PHY3_nRESET", "PHY2_nINT", "PHY2_nRESET", 70 + "PHY1_nRESET", "SPE1_PWR", "SPE0_PWR", ""; 71 + }; 72 + 73 + &mdio0 { 74 + /* All this DP83TD510E PHYs can't be probed before switch@0 is 75 + * probed so we need to use compatible with PHYid 76 + */ 77 + /* TI DP83TD510E */ 78 + t1l0_phy: ethernet-phy@6 { 79 + compatible = "ethernet-phy-id2000.0181"; 80 + reg = <6>; 81 + interrupts-extended = <&gpioa 4 IRQ_TYPE_LEVEL_LOW>; 82 + reset-gpios = <&gpioa 3 GPIO_ACTIVE_LOW>; 83 + reset-assert-us = <10>; 84 + reset-deassert-us = <35>; 85 + }; 86 + 87 + /* TI DP83TD510E */ 88 + t1l1_phy: ethernet-phy@7 { 89 + compatible = "ethernet-phy-id2000.0181"; 90 + reg = <7>; 91 + interrupts-extended = <&gpiog 8 IRQ_TYPE_LEVEL_LOW>; 92 + reset-gpios = <&gpiog 12 GPIO_ACTIVE_LOW>; 93 + reset-assert-us = <10>; 94 + reset-deassert-us = <35>; 95 + }; 96 + 97 + /* TI DP83TD510E */ 98 + t1l2_phy: ethernet-phy@10 { 99 + compatible = "ethernet-phy-id2000.0181"; 100 + reg = <10>; 101 + interrupts-extended = <&gpiog 10 IRQ_TYPE_LEVEL_LOW>; 102 + reset-gpios = <&gpiog 11 GPIO_ACTIVE_LOW>; 103 + reset-assert-us = <10>; 104 + reset-deassert-us = <35>; 105 + }; 106 + 107 + /* Micrel KSZ9031 */ 108 + rj45_phy: ethernet-phy@2 { 109 + reg = <2>; 110 + interrupts-extended = <&gpiog 7 IRQ_TYPE_LEVEL_LOW>; 111 + reset-gpios = <&gpiog 9 GPIO_ACTIVE_LOW>; 112 + reset-assert-us = <10000>; 113 + reset-deassert-us = <1000>; 114 + 115 + clocks = <&clock_ksz9031>; 116 + }; 117 + }; 118 + 119 + &qspi { 120 + status = "disabled"; 121 + }; 122 + 123 + &sdmmc2 { 124 + pinctrl-names = "default", "opendrain", "sleep"; 125 + pinctrl-0 = <&sdmmc2_b4_pins_a &sdmmc2_d47_pins_a>; 126 + pinctrl-1 = <&sdmmc2_b4_od_pins_a &sdmmc2_d47_pins_a>; 127 + pinctrl-2 = <&sdmmc2_b4_sleep_pins_a &sdmmc2_d47_sleep_pins_a>; 128 + non-removable; 129 + no-sd; 130 + no-sdio; 131 + no-1-8-v; 132 + st,neg-edge; 133 + bus-width = <8>; 134 + vmmc-supply = <&reg_3v3>; 135 + vqmmc-supply = <&reg_3v3>; 136 + status = "okay"; 137 + }; 138 + 139 + &sdmmc2_b4_od_pins_a { 140 + pins1 { 141 + pinmux = <STM32_PINMUX('B', 14, AF9)>, /* SDMMC2_D0 */ 142 + <STM32_PINMUX('B', 7, AF10)>, /* SDMMC2_D1 */ 143 + <STM32_PINMUX('B', 3, AF9)>, /* SDMMC2_D2 */ 144 + <STM32_PINMUX('B', 4, AF9)>; /* SDMMC2_D3 */ 145 + }; 146 + }; 147 + 148 + &sdmmc2_b4_pins_a { 149 + pins1 { 150 + pinmux = <STM32_PINMUX('B', 14, AF9)>, /* SDMMC2_D0 */ 151 + <STM32_PINMUX('B', 7, AF10)>, /* SDMMC2_D1 */ 152 + <STM32_PINMUX('B', 3, AF9)>, /* SDMMC2_D2 */ 153 + <STM32_PINMUX('B', 4, AF9)>, /* SDMMC2_D3 */ 154 + <STM32_PINMUX('G', 6, AF10)>; /* SDMMC2_CMD */ 155 + }; 156 + }; 157 + 158 + &sdmmc2_b4_sleep_pins_a { 159 + pins { 160 + pinmux = <STM32_PINMUX('B', 14, ANALOG)>, /* SDMMC2_D0 */ 161 + <STM32_PINMUX('B', 7, ANALOG)>, /* SDMMC2_D1 */ 162 + <STM32_PINMUX('B', 3, ANALOG)>, /* SDMMC2_D2 */ 163 + <STM32_PINMUX('B', 4, ANALOG)>, /* SDMMC2_D3 */ 164 + <STM32_PINMUX('E', 3, ANALOG)>, /* SDMMC2_CK */ 165 + <STM32_PINMUX('G', 6, ANALOG)>; /* SDMMC2_CMD */ 166 + }; 167 + }; 168 + 169 + &sdmmc2_d47_pins_a { 170 + pins { 171 + pinmux = <STM32_PINMUX('A', 8, AF9)>, /* SDMMC2_D4 */ 172 + <STM32_PINMUX('A', 9, AF10)>, /* SDMMC2_D5 */ 173 + <STM32_PINMUX('C', 6, AF10)>, /* SDMMC2_D6 */ 174 + <STM32_PINMUX('C', 7, AF10)>; /* SDMMC2_D7 */ 175 + }; 176 + }; 177 + 178 + &sdmmc2_d47_sleep_pins_a { 179 + pins { 180 + pinmux = <STM32_PINMUX('A', 8, ANALOG)>, /* SDMMC2_D4 */ 181 + <STM32_PINMUX('A', 9, ANALOG)>, /* SDMMC2_D5 */ 182 + <STM32_PINMUX('C', 6, ANALOG)>, /* SDMMC2_D6 */ 183 + <STM32_PINMUX('D', 3, ANALOG)>; /* SDMMC2_D7 */ 184 + }; 185 + }; 186 + 187 + &sdmmc3 { 188 + pinctrl-names = "default", "opendrain", "sleep"; 189 + pinctrl-0 = <&sdmmc3_b4_pins_b>; 190 + pinctrl-1 = <&sdmmc3_b4_od_pins_b>; 191 + pinctrl-2 = <&sdmmc3_b4_sleep_pins_b>; 192 + non-removable; 193 + no-1-8-v; 194 + st,neg-edge; 195 + bus-width = <4>; 196 + vmmc-supply = <&reg_3v3>; 197 + vqmmc-supply = <&reg_3v3>; 198 + mmc-pwrseq = <&wifi_pwrseq>; 199 + #address-cells = <1>; 200 + #size-cells = <0>; 201 + status = "okay"; 202 + 203 + mmc@1 { 204 + compatible = "prt,prtt1c-wfm200", "silabs,wf200"; 205 + reg = <1>; 206 + }; 207 + }; 208 + 209 + &sdmmc3_b4_od_pins_b { 210 + pins1 { 211 + pinmux = <STM32_PINMUX('D', 1, AF10)>, /* SDMMC3_D0 */ 212 + <STM32_PINMUX('D', 4, AF10)>, /* SDMMC3_D1 */ 213 + <STM32_PINMUX('D', 5, AF10)>, /* SDMMC3_D2 */ 214 + <STM32_PINMUX('D', 7, AF10)>; /* SDMMC3_D3 */ 215 + }; 216 + }; 217 + 218 + &sdmmc3_b4_pins_b { 219 + pins1 { 220 + pinmux = <STM32_PINMUX('D', 1, AF10)>, /* SDMMC3_D0 */ 221 + <STM32_PINMUX('D', 4, AF10)>, /* SDMMC3_D1 */ 222 + <STM32_PINMUX('D', 5, AF10)>, /* SDMMC3_D2 */ 223 + <STM32_PINMUX('D', 7, AF10)>, /* SDMMC3_D3 */ 224 + <STM32_PINMUX('D', 0, AF10)>; /* SDMMC3_CMD */ 225 + }; 226 + }; 227 + 228 + &sdmmc3_b4_sleep_pins_b { 229 + pins { 230 + pinmux = <STM32_PINMUX('D', 1, ANALOG)>, /* SDMMC3_D0 */ 231 + <STM32_PINMUX('D', 4, ANALOG)>, /* SDMMC3_D1 */ 232 + <STM32_PINMUX('D', 5, ANALOG)>, /* SDMMC3_D2 */ 233 + <STM32_PINMUX('D', 7, ANALOG)>, /* SDMMC3_D3 */ 234 + <STM32_PINMUX('G', 15, ANALOG)>, /* SDMMC3_CK */ 235 + <STM32_PINMUX('D', 0, ANALOG)>; /* SDMMC3_CMD */ 236 + }; 237 + }; 238 + 239 + &spi1 { 240 + pinctrl-0 = <&spi1_pins_b>; 241 + pinctrl-names = "default"; 242 + cs-gpios = <&gpioa 15 GPIO_ACTIVE_LOW>; 243 + /delete-property/dmas; 244 + /delete-property/dma-names; 245 + status = "okay"; 246 + 247 + switch@0 { 248 + compatible = "nxp,sja1105q"; 249 + reg = <0>; 250 + spi-max-frequency = <4000000>; 251 + spi-rx-delay-us = <1>; 252 + spi-tx-delay-us = <1>; 253 + spi-cpha; 254 + 255 + reset-gpios = <&gpioe 6 GPIO_ACTIVE_LOW>; 256 + 257 + clocks = <&clock_sja1105>; 258 + 259 + ports { 260 + #address-cells = <1>; 261 + #size-cells = <0>; 262 + 263 + port@0 { 264 + reg = <0>; 265 + label = "t1l0"; 266 + phy-mode = "rmii"; 267 + phy-handle = <&t1l0_phy>; 268 + }; 269 + 270 + port@1 { 271 + reg = <1>; 272 + label = "t1l1"; 273 + phy-mode = "rmii"; 274 + phy-handle = <&t1l1_phy>; 275 + }; 276 + 277 + port@2 { 278 + reg = <2>; 279 + label = "t1l2"; 280 + phy-mode = "rmii"; 281 + phy-handle = <&t1l2_phy>; 282 + }; 283 + 284 + port@3 { 285 + reg = <3>; 286 + label = "rj45"; 287 + phy-handle = <&rj45_phy>; 288 + phy-mode = "rgmii-id"; 289 + }; 290 + 291 + port@4 { 292 + reg = <4>; 293 + label = "cpu"; 294 + ethernet = <&ethernet0>; 295 + phy-mode = "rmii"; 296 + 297 + fixed-link { 298 + speed = <100>; 299 + full-duplex; 300 + }; 301 + }; 302 + }; 303 + }; 304 + };
+229
arch/arm/boot/dts/stm32mp151a-prtt1l.dtsi
··· 1 + // SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) 2 + /* 3 + * Copyright (C) Protonic Holland 4 + * Author: David Jander <david@protonic.nl> 5 + */ 6 + /dts-v1/; 7 + 8 + #include "stm32mp151.dtsi" 9 + #include "stm32mp15-pinctrl.dtsi" 10 + #include "stm32mp15xxad-pinctrl.dtsi" 11 + #include <dt-bindings/gpio/gpio.h> 12 + #include <dt-bindings/input/input.h> 13 + #include <dt-bindings/leds/common.h> 14 + 15 + / { 16 + aliases { 17 + ethernet0 = &ethernet0; 18 + mdio-gpio0 = &mdio0; 19 + serial0 = &uart4; 20 + }; 21 + 22 + led-controller-0 { 23 + compatible = "gpio-leds"; 24 + 25 + led-0 { 26 + color = <LED_COLOR_ID_RED>; 27 + function = LED_FUNCTION_INDICATOR; 28 + gpios = <&gpioa 13 GPIO_ACTIVE_LOW>; 29 + }; 30 + 31 + led-1 { 32 + color = <LED_COLOR_ID_GREEN>; 33 + function = LED_FUNCTION_INDICATOR; 34 + gpios = <&gpioa 14 GPIO_ACTIVE_LOW>; 35 + linux,default-trigger = "heartbeat"; 36 + }; 37 + }; 38 + 39 + 40 + /* DP83TD510E PHYs have max MDC rate of 1.75MHz. Since we can't reduce 41 + * stmmac MDC clock without reducing system bus rate, we need to use 42 + * gpio based MDIO bus. 43 + */ 44 + mdio0: mdio { 45 + compatible = "virtual,mdio-gpio"; 46 + #address-cells = <1>; 47 + #size-cells = <0>; 48 + gpios = <&gpioc 1 GPIO_ACTIVE_HIGH 49 + &gpioa 2 GPIO_ACTIVE_HIGH>; 50 + }; 51 + 52 + reg_3v3: regulator-3v3 { 53 + compatible = "regulator-fixed"; 54 + regulator-name = "3v3"; 55 + regulator-min-microvolt = <3300000>; 56 + regulator-max-microvolt = <3300000>; 57 + }; 58 + }; 59 + 60 + &dts { 61 + status = "okay"; 62 + }; 63 + 64 + &ethernet0 { 65 + pinctrl-0 = <&ethernet0_rmii_pins_a>; 66 + pinctrl-1 = <&ethernet0_rmii_sleep_pins_a>; 67 + pinctrl-names = "default", "sleep"; 68 + phy-mode = "rmii"; 69 + status = "okay"; 70 + }; 71 + 72 + &ethernet0_rmii_pins_a { 73 + pins1 { 74 + pinmux = <STM32_PINMUX('B', 12, AF11)>, /* ETH1_RMII_TXD0 */ 75 + <STM32_PINMUX('B', 13, AF11)>, /* ETH1_RMII_TXD1 */ 76 + <STM32_PINMUX('B', 11, AF11)>; /* ETH1_RMII_TX_EN */ 77 + }; 78 + pins2 { 79 + pinmux = <STM32_PINMUX('C', 4, AF11)>, /* ETH1_RMII_RXD0 */ 80 + <STM32_PINMUX('C', 5, AF11)>, /* ETH1_RMII_RXD1 */ 81 + <STM32_PINMUX('A', 1, AF11)>, /* ETH1_RMII_REF_CLK input */ 82 + <STM32_PINMUX('A', 7, AF11)>; /* ETH1_RMII_CRS_DV */ 83 + }; 84 + }; 85 + 86 + &ethernet0_rmii_sleep_pins_a { 87 + pins1 { 88 + pinmux = <STM32_PINMUX('B', 12, ANALOG)>, /* ETH1_RMII_TXD0 */ 89 + <STM32_PINMUX('B', 13, ANALOG)>, /* ETH1_RMII_TXD1 */ 90 + <STM32_PINMUX('B', 11, ANALOG)>, /* ETH1_RMII_TX_EN */ 91 + <STM32_PINMUX('C', 4, ANALOG)>, /* ETH1_RMII_RXD0 */ 92 + <STM32_PINMUX('C', 5, ANALOG)>, /* ETH1_RMII_RXD1 */ 93 + <STM32_PINMUX('A', 1, ANALOG)>, /* ETH1_RMII_REF_CLK */ 94 + <STM32_PINMUX('A', 7, ANALOG)>; /* ETH1_RMII_CRS_DV */ 95 + }; 96 + }; 97 + 98 + &iwdg2 { 99 + status = "okay"; 100 + }; 101 + 102 + &qspi { 103 + pinctrl-names = "default", "sleep"; 104 + pinctrl-0 = <&qspi_clk_pins_a &qspi_bk1_pins_a>; 105 + pinctrl-1 = <&qspi_clk_sleep_pins_a &qspi_bk1_sleep_pins_a>; 106 + reg = <0x58003000 0x1000>, <0x70000000 0x4000000>; 107 + #address-cells = <1>; 108 + #size-cells = <0>; 109 + status = "okay"; 110 + 111 + flash@0 { 112 + compatible = "spi-nand"; 113 + reg = <0>; 114 + spi-rx-bus-width = <4>; 115 + spi-max-frequency = <104000000>; 116 + #address-cells = <1>; 117 + #size-cells = <1>; 118 + }; 119 + }; 120 + 121 + &qspi_bk1_pins_a { 122 + pins1 { 123 + bias-pull-up; 124 + drive-push-pull; 125 + slew-rate = <1>; 126 + }; 127 + }; 128 + 129 + &rng1 { 130 + status = "okay"; 131 + }; 132 + 133 + &sdmmc1 { 134 + pinctrl-names = "default", "opendrain", "sleep"; 135 + pinctrl-0 = <&sdmmc1_b4_pins_a>; 136 + pinctrl-1 = <&sdmmc1_b4_od_pins_a>; 137 + pinctrl-2 = <&sdmmc1_b4_sleep_pins_a>; 138 + broken-cd; 139 + st,neg-edge; 140 + bus-width = <4>; 141 + vmmc-supply = <&reg_3v3>; 142 + vqmmc-supply = <&reg_3v3>; 143 + status = "okay"; 144 + }; 145 + 146 + &sdmmc1_b4_od_pins_a { 147 + pins1 { 148 + bias-pull-up; 149 + }; 150 + pins2 { 151 + bias-pull-up; 152 + }; 153 + }; 154 + 155 + &sdmmc1_b4_pins_a { 156 + pins1 { 157 + bias-pull-up; 158 + }; 159 + pins2 { 160 + bias-pull-up; 161 + }; 162 + }; 163 + 164 + &uart4 { 165 + pinctrl-names = "default", "sleep", "idle"; 166 + pinctrl-0 = <&uart4_pins_a>; 167 + pinctrl-1 = <&uart4_sleep_pins_a>; 168 + pinctrl-2 = <&uart4_idle_pins_a>; 169 + /delete-property/dmas; 170 + /delete-property/dma-names; 171 + status = "okay"; 172 + }; 173 + 174 + &uart4_idle_pins_a { 175 + pins1 { 176 + pinmux = <STM32_PINMUX('B', 9, ANALOG)>; /* UART4_TX */ 177 + }; 178 + pins2 { 179 + pinmux = <STM32_PINMUX('B', 2, AF8)>; /* UART4_RX */ 180 + bias-pull-up; 181 + }; 182 + }; 183 + 184 + &uart4_pins_a { 185 + pins1 { 186 + pinmux = <STM32_PINMUX('B', 9, AF8)>; /* UART4_TX */ 187 + bias-disable; 188 + drive-push-pull; 189 + slew-rate = <0>; 190 + }; 191 + pins2 { 192 + pinmux = <STM32_PINMUX('B', 2, AF8)>; /* UART4_RX */ 193 + bias-pull-up; 194 + }; 195 + }; 196 + 197 + &uart4_sleep_pins_a { 198 + pins { 199 + pinmux = <STM32_PINMUX('B', 9, ANALOG)>, /* UART4_TX */ 200 + <STM32_PINMUX('B', 2, ANALOG)>; /* UART4_RX */ 201 + }; 202 + }; 203 + 204 + &usbh_ehci { 205 + phys = <&usbphyc_port0>; 206 + phy-names = "usb"; 207 + status = "okay"; 208 + }; 209 + 210 + &usbotg_hs { 211 + dr_mode = "host"; 212 + pinctrl-0 = <&usbotg_hs_pins_a>; 213 + pinctrl-names = "default"; 214 + phys = <&usbphyc_port1 0>; 215 + phy-names = "usb2-phy"; 216 + status = "okay"; 217 + }; 218 + 219 + &usbphyc { 220 + status = "okay"; 221 + }; 222 + 223 + &usbphyc_port0 { 224 + phy-supply = <&reg_3v3>; 225 + }; 226 + 227 + &usbphyc_port1 { 228 + phy-supply = <&reg_3v3>; 229 + };
+63
arch/arm/boot/dts/stm32mp151a-prtt1s.dts
··· 1 + // SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) 2 + /* 3 + * Copyright (C) Protonic Holland 4 + * Author: David Jander <david@protonic.nl> 5 + */ 6 + /dts-v1/; 7 + 8 + #include "stm32mp151a-prtt1l.dtsi" 9 + 10 + / { 11 + model = "Protonic PRTT1S"; 12 + compatible = "prt,prtt1s", "st,stm32mp151"; 13 + }; 14 + 15 + &ethernet0 { 16 + phy-handle = <&phy0>; 17 + }; 18 + 19 + &i2c1 { 20 + pinctrl-names = "default", "sleep"; 21 + pinctrl-0 = <&i2c1_pins_a>; 22 + pinctrl-1 = <&i2c1_sleep_pins_a>; 23 + clock-frequency = <100000>; 24 + /delete-property/dmas; 25 + /delete-property/dma-names; 26 + status = "okay"; 27 + 28 + humidity-sensor@40 { 29 + compatible = "ti,hdc1080"; 30 + reg = <0x40>; 31 + }; 32 + 33 + co2-sensor@62 { 34 + compatible = "sensirion,scd41"; 35 + reg = <0x62>; 36 + }; 37 + }; 38 + 39 + &i2c1_pins_a { 40 + pins { 41 + pinmux = <STM32_PINMUX('D', 12, AF5)>, /* I2C1_SCL */ 42 + <STM32_PINMUX('D', 13, AF5)>; /* I2C1_SDA */ 43 + }; 44 + }; 45 + 46 + &i2c1_sleep_pins_a { 47 + pins { 48 + pinmux = <STM32_PINMUX('D', 12, ANALOG)>, /* I2C1_SCL */ 49 + <STM32_PINMUX('D', 13, ANALOG)>; /* I2C1_SDA */ 50 + }; 51 + }; 52 + 53 + &mdio0 { 54 + /* TI DP83TD510E */ 55 + phy0: ethernet-phy@0 { 56 + compatible = "ethernet-phy-id2000.0181"; 57 + reg = <0>; 58 + interrupts-extended = <&gpioa 4 IRQ_TYPE_LEVEL_LOW>; 59 + reset-gpios = <&gpioa 3 GPIO_ACTIVE_LOW>; 60 + reset-assert-us = <10>; 61 + reset-deassert-us = <35>; 62 + }; 63 + };
+86
arch/arm/boot/dts/stm32mp157a-dk1-scmi.dts
··· 1 + // SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) 2 + /* 3 + * Copyright (C) STMicroelectronics 2022 - All Rights Reserved 4 + * Author: Alexandre Torgue <alexandre.torgue@foss.st.com> for STMicroelectronics. 5 + */ 6 + 7 + /dts-v1/; 8 + 9 + #include "stm32mp157a-dk1.dts" 10 + 11 + / { 12 + model = "STMicroelectronics STM32MP157A-DK1 SCMI Discovery Board"; 13 + compatible = "st,stm32mp157a-dk1-scmi", "st,stm32mp157a-dk1", "st,stm32mp157"; 14 + 15 + reserved-memory { 16 + optee@de000000 { 17 + reg = <0xde000000 0x2000000>; 18 + no-map; 19 + }; 20 + }; 21 + }; 22 + 23 + &cpu0 { 24 + clocks = <&scmi_clk CK_SCMI_MPU>; 25 + }; 26 + 27 + &cpu1 { 28 + clocks = <&scmi_clk CK_SCMI_MPU>; 29 + }; 30 + 31 + &gpioz { 32 + clocks = <&scmi_clk CK_SCMI_GPIOZ>; 33 + }; 34 + 35 + &hash1 { 36 + clocks = <&scmi_clk CK_SCMI_HASH1>; 37 + resets = <&scmi_reset RST_SCMI_HASH1>; 38 + }; 39 + 40 + &i2c4 { 41 + clocks = <&scmi_clk CK_SCMI_I2C4>; 42 + resets = <&scmi_reset RST_SCMI_I2C4>; 43 + }; 44 + 45 + &iwdg2 { 46 + clocks = <&rcc IWDG2>, <&scmi_clk CK_SCMI_LSI>; 47 + }; 48 + 49 + &mdma1 { 50 + resets = <&scmi_reset RST_SCMI_MDMA>; 51 + }; 52 + 53 + &mlahb { 54 + resets = <&scmi_reset RST_SCMI_MCU>; 55 + }; 56 + 57 + &optee { 58 + status = "okay"; 59 + }; 60 + 61 + &rcc { 62 + compatible = "st,stm32mp1-rcc-secure", "syscon"; 63 + clock-names = "hse", "hsi", "csi", "lse", "lsi"; 64 + clocks = <&scmi_clk CK_SCMI_HSE>, 65 + <&scmi_clk CK_SCMI_HSI>, 66 + <&scmi_clk CK_SCMI_CSI>, 67 + <&scmi_clk CK_SCMI_LSE>, 68 + <&scmi_clk CK_SCMI_LSI>; 69 + }; 70 + 71 + &rng1 { 72 + clocks = <&scmi_clk CK_SCMI_RNG1>; 73 + resets = <&scmi_reset RST_SCMI_RNG1>; 74 + }; 75 + 76 + &rtc { 77 + clocks = <&scmi_clk CK_SCMI_RTCAPB>, <&scmi_clk CK_SCMI_RTC>; 78 + }; 79 + 80 + &scmi { 81 + status = "okay"; 82 + }; 83 + 84 + &scmi_shm { 85 + status = "okay"; 86 + };
+95
arch/arm/boot/dts/stm32mp157c-dk2-scmi.dts
··· 1 + // SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) 2 + /* 3 + * Copyright (C) STMicroelectronics 2022 - All Rights Reserved 4 + * Author: Alexandre Torgue <alexandre.torgue@foss.st.com> for STMicroelectronics. 5 + */ 6 + 7 + /dts-v1/; 8 + 9 + #include "stm32mp157c-dk2.dts" 10 + 11 + / { 12 + model = "STMicroelectronics STM32MP157C-DK2 SCMI Discovery Board"; 13 + compatible = "st,stm32mp157c-dk2-scmi", "st,stm32mp157c-dk2", "st,stm32mp157"; 14 + 15 + reserved-memory { 16 + optee@de000000 { 17 + reg = <0xde000000 0x2000000>; 18 + no-map; 19 + }; 20 + }; 21 + }; 22 + 23 + &cpu0 { 24 + clocks = <&scmi_clk CK_SCMI_MPU>; 25 + }; 26 + 27 + &cpu1 { 28 + clocks = <&scmi_clk CK_SCMI_MPU>; 29 + }; 30 + 31 + &cryp1 { 32 + clocks = <&scmi_clk CK_SCMI_CRYP1>; 33 + resets = <&scmi_reset RST_SCMI_CRYP1>; 34 + }; 35 + 36 + &dsi { 37 + clocks = <&rcc DSI_K>, <&scmi_clk CK_SCMI_HSE>, <&rcc DSI_PX>; 38 + }; 39 + 40 + &gpioz { 41 + clocks = <&scmi_clk CK_SCMI_GPIOZ>; 42 + }; 43 + 44 + &hash1 { 45 + clocks = <&scmi_clk CK_SCMI_HASH1>; 46 + resets = <&scmi_reset RST_SCMI_HASH1>; 47 + }; 48 + 49 + &i2c4 { 50 + clocks = <&scmi_clk CK_SCMI_I2C4>; 51 + resets = <&scmi_reset RST_SCMI_I2C4>; 52 + }; 53 + 54 + &iwdg2 { 55 + clocks = <&rcc IWDG2>, <&scmi_clk CK_SCMI_LSI>; 56 + }; 57 + 58 + &mdma1 { 59 + resets = <&scmi_reset RST_SCMI_MDMA>; 60 + }; 61 + 62 + &mlahb { 63 + resets = <&scmi_reset RST_SCMI_MCU>; 64 + }; 65 + 66 + &optee { 67 + status = "okay"; 68 + }; 69 + 70 + &rcc { 71 + compatible = "st,stm32mp1-rcc-secure", "syscon"; 72 + clock-names = "hse", "hsi", "csi", "lse", "lsi"; 73 + clocks = <&scmi_clk CK_SCMI_HSE>, 74 + <&scmi_clk CK_SCMI_HSI>, 75 + <&scmi_clk CK_SCMI_CSI>, 76 + <&scmi_clk CK_SCMI_LSE>, 77 + <&scmi_clk CK_SCMI_LSI>; 78 + }; 79 + 80 + &rng1 { 81 + clocks = <&scmi_clk CK_SCMI_RNG1>; 82 + resets = <&scmi_reset RST_SCMI_RNG1>; 83 + }; 84 + 85 + &rtc { 86 + clocks = <&scmi_clk CK_SCMI_RTCAPB>, <&scmi_clk CK_SCMI_RTC>; 87 + }; 88 + 89 + &scmi { 90 + status = "okay"; 91 + }; 92 + 93 + &scmi_shm { 94 + status = "okay"; 95 + };
+91
arch/arm/boot/dts/stm32mp157c-ed1-scmi.dts
··· 1 + // SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) 2 + /* 3 + * Copyright (C) STMicroelectronics 2022 - All Rights Reserved 4 + * Author: Alexandre Torgue <alexandre.torgue@foss.st.com> for STMicroelectronics. 5 + */ 6 + 7 + /dts-v1/; 8 + 9 + #include "stm32mp157c-ed1.dts" 10 + 11 + / { 12 + model = "STMicroelectronics STM32MP157C-ED1 SCMI eval daughter"; 13 + compatible = "st,stm32mp157c-ed1-scmi", "st,stm32mp157c-ed1", "st,stm32mp157"; 14 + 15 + reserved-memory { 16 + optee@fe000000 { 17 + reg = <0xfe000000 0x2000000>; 18 + no-map; 19 + }; 20 + }; 21 + }; 22 + 23 + &cpu0 { 24 + clocks = <&scmi_clk CK_SCMI_MPU>; 25 + }; 26 + 27 + &cpu1 { 28 + clocks = <&scmi_clk CK_SCMI_MPU>; 29 + }; 30 + 31 + &cryp1 { 32 + clocks = <&scmi_clk CK_SCMI_CRYP1>; 33 + resets = <&scmi_reset RST_SCMI_CRYP1>; 34 + }; 35 + 36 + &gpioz { 37 + clocks = <&scmi_clk CK_SCMI_GPIOZ>; 38 + }; 39 + 40 + &hash1 { 41 + clocks = <&scmi_clk CK_SCMI_HASH1>; 42 + resets = <&scmi_reset RST_SCMI_HASH1>; 43 + }; 44 + 45 + &i2c4 { 46 + clocks = <&scmi_clk CK_SCMI_I2C4>; 47 + resets = <&scmi_reset RST_SCMI_I2C4>; 48 + }; 49 + 50 + &iwdg2 { 51 + clocks = <&rcc IWDG2>, <&scmi_clk CK_SCMI_LSI>; 52 + }; 53 + 54 + &mdma1 { 55 + resets = <&scmi_reset RST_SCMI_MDMA>; 56 + }; 57 + 58 + &mlahb { 59 + resets = <&scmi_reset RST_SCMI_MCU>; 60 + }; 61 + 62 + &optee { 63 + status = "okay"; 64 + }; 65 + 66 + &rcc { 67 + compatible = "st,stm32mp1-rcc-secure", "syscon"; 68 + clock-names = "hse", "hsi", "csi", "lse", "lsi"; 69 + clocks = <&scmi_clk CK_SCMI_HSE>, 70 + <&scmi_clk CK_SCMI_HSI>, 71 + <&scmi_clk CK_SCMI_CSI>, 72 + <&scmi_clk CK_SCMI_LSE>, 73 + <&scmi_clk CK_SCMI_LSI>; 74 + }; 75 + 76 + &rng1 { 77 + clocks = <&scmi_clk CK_SCMI_RNG1>; 78 + resets = <&scmi_reset RST_SCMI_RNG1>; 79 + }; 80 + 81 + &rtc { 82 + clocks = <&scmi_clk CK_SCMI_RTCAPB>, <&scmi_clk CK_SCMI_RTC>; 83 + }; 84 + 85 + &scmi { 86 + status = "okay"; 87 + }; 88 + 89 + &scmi_shm { 90 + status = "okay"; 91 + };
+100
arch/arm/boot/dts/stm32mp157c-ev1-scmi.dts
··· 1 + // SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) 2 + /* 3 + * Copyright (C) STMicroelectronics 2022 - All Rights Reserved 4 + * Author: Alexandre Torgue <alexandre.torgue@foss.st.com> for STMicroelectronics. 5 + */ 6 + 7 + /dts-v1/; 8 + 9 + #include "stm32mp157c-ev1.dts" 10 + 11 + / { 12 + model = "STMicroelectronics STM32MP157C-EV1 SCMI eval daughter on eval mother"; 13 + compatible = "st,stm32mp157c-ev1-scmi", "st,stm32mp157c-ev1", "st,stm32mp157c-ed1", 14 + "st,stm32mp157"; 15 + 16 + reserved-memory { 17 + optee@fe000000 { 18 + reg = <0xfe000000 0x2000000>; 19 + no-map; 20 + }; 21 + }; 22 + }; 23 + 24 + &cpu0 { 25 + clocks = <&scmi_clk CK_SCMI_MPU>; 26 + }; 27 + 28 + &cpu1 { 29 + clocks = <&scmi_clk CK_SCMI_MPU>; 30 + }; 31 + 32 + &cryp1 { 33 + clocks = <&scmi_clk CK_SCMI_CRYP1>; 34 + resets = <&scmi_reset RST_SCMI_CRYP1>; 35 + }; 36 + 37 + &dsi { 38 + clocks = <&rcc DSI_K>, <&scmi_clk CK_SCMI_HSE>, <&rcc DSI_PX>; 39 + }; 40 + 41 + &gpioz { 42 + clocks = <&scmi_clk CK_SCMI_GPIOZ>; 43 + }; 44 + 45 + &hash1 { 46 + clocks = <&scmi_clk CK_SCMI_HASH1>; 47 + resets = <&scmi_reset RST_SCMI_HASH1>; 48 + }; 49 + 50 + &i2c4 { 51 + clocks = <&scmi_clk CK_SCMI_I2C4>; 52 + resets = <&scmi_reset RST_SCMI_I2C4>; 53 + }; 54 + 55 + &iwdg2 { 56 + clocks = <&rcc IWDG2>, <&scmi_clk CK_SCMI_LSI>; 57 + }; 58 + 59 + &m_can1 { 60 + clocks = <&scmi_clk CK_SCMI_HSE>, <&rcc FDCAN_K>; 61 + }; 62 + 63 + &mdma1 { 64 + resets = <&scmi_reset RST_SCMI_MDMA>; 65 + }; 66 + 67 + &mlahb { 68 + resets = <&scmi_reset RST_SCMI_MCU>; 69 + }; 70 + 71 + &optee { 72 + status = "okay"; 73 + }; 74 + 75 + &rcc { 76 + compatible = "st,stm32mp1-rcc-secure", "syscon"; 77 + clock-names = "hse", "hsi", "csi", "lse", "lsi"; 78 + clocks = <&scmi_clk CK_SCMI_HSE>, 79 + <&scmi_clk CK_SCMI_HSI>, 80 + <&scmi_clk CK_SCMI_CSI>, 81 + <&scmi_clk CK_SCMI_LSE>, 82 + <&scmi_clk CK_SCMI_LSI>; 83 + }; 84 + 85 + &rng1 { 86 + clocks = <&scmi_clk CK_SCMI_RNG1>; 87 + resets = <&scmi_reset RST_SCMI_RNG1>; 88 + }; 89 + 90 + &rtc { 91 + clocks = <&scmi_clk CK_SCMI_RTCAPB>, <&scmi_clk CK_SCMI_RTC>; 92 + }; 93 + 94 + &scmi { 95 + status = "okay"; 96 + }; 97 + 98 + &scmi_shm { 99 + status = "okay"; 100 + };
+18 -4
arch/arm/boot/dts/stm32mp15xx-dhcom-som.dtsi
··· 118 118 119 119 &ethernet0 { 120 120 status = "okay"; 121 - pinctrl-0 = <&ethernet0_rmii_pins_a>; 122 - pinctrl-1 = <&ethernet0_rmii_sleep_pins_a>; 121 + pinctrl-0 = <&ethernet0_rmii_pins_c &mco2_pins_a>; 122 + pinctrl-1 = <&ethernet0_rmii_sleep_pins_c &mco2_sleep_pins_a>; 123 123 pinctrl-names = "default", "sleep"; 124 124 phy-mode = "rmii"; 125 125 max-speed = <100>; 126 126 phy-handle = <&phy0>; 127 - st,eth-ref-clk-sel; 128 127 129 128 mdio0 { 130 129 #address-cells = <1>; ··· 135 136 /* LAN8710Ai */ 136 137 compatible = "ethernet-phy-id0007.c0f0", 137 138 "ethernet-phy-ieee802.3-c22"; 138 - clocks = <&rcc ETHCK_K>; 139 + clocks = <&rcc CK_MCO2>; 139 140 reset-gpios = <&gpioh 3 GPIO_ACTIVE_LOW>; 140 141 reset-assert-us = <500>; 141 142 reset-deassert-us = <500>; ··· 443 444 #address-cells = <1>; 444 445 #size-cells = <1>; 445 446 }; 447 + }; 448 + 449 + &rcc { 450 + /* Connect MCO2 output to ETH_RX_CLK input via pad-pad connection */ 451 + clocks = <&rcc CK_MCO2>; 452 + clock-names = "ETH_RX_CLK/ETH_REF_CLK"; 453 + 454 + /* 455 + * Set PLL4P output to 100 MHz to supply SDMMC with faster clock, 456 + * set MCO2 output to 50 MHz to supply ETHRX clock with PLL4P/2, 457 + * so that MCO2 behaves as a divider for the ETHRX clock here. 458 + */ 459 + assigned-clocks = <&rcc CK_MCO2>, <&rcc PLL4_P>; 460 + assigned-clock-parents = <&rcc PLL4_P>; 461 + assigned-clock-rates = <50000000>, <100000000>; 446 462 }; 447 463 448 464 &rng1 {
+1
arch/arm/boot/dts/stm32mp15xx-dhcor-avenger96.dtsi
··· 141 141 compatible = "snps,dwmac-mdio"; 142 142 reset-gpios = <&gpioz 2 GPIO_ACTIVE_LOW>; 143 143 reset-delay-us = <1000>; 144 + reset-post-delay-us = <1000>; 144 145 145 146 phy0: ethernet-phy@7 { 146 147 reg = <7>;
+21 -25
include/dt-bindings/clock/stm32mp1-clks.h
··· 249 249 #define STM32MP1_LAST_CLK 232 250 250 251 251 /* SCMI clock identifiers */ 252 - #define CK_SCMI0_HSE 0 253 - #define CK_SCMI0_HSI 1 254 - #define CK_SCMI0_CSI 2 255 - #define CK_SCMI0_LSE 3 256 - #define CK_SCMI0_LSI 4 257 - #define CK_SCMI0_PLL2_Q 5 258 - #define CK_SCMI0_PLL2_R 6 259 - #define CK_SCMI0_MPU 7 260 - #define CK_SCMI0_AXI 8 261 - #define CK_SCMI0_BSEC 9 262 - #define CK_SCMI0_CRYP1 10 263 - #define CK_SCMI0_GPIOZ 11 264 - #define CK_SCMI0_HASH1 12 265 - #define CK_SCMI0_I2C4 13 266 - #define CK_SCMI0_I2C6 14 267 - #define CK_SCMI0_IWDG1 15 268 - #define CK_SCMI0_RNG1 16 269 - #define CK_SCMI0_RTC 17 270 - #define CK_SCMI0_RTCAPB 18 271 - #define CK_SCMI0_SPI6 19 272 - #define CK_SCMI0_USART1 20 273 - 274 - #define CK_SCMI1_PLL3_Q 0 275 - #define CK_SCMI1_PLL3_R 1 276 - #define CK_SCMI1_MCU 2 252 + #define CK_SCMI_HSE 0 253 + #define CK_SCMI_HSI 1 254 + #define CK_SCMI_CSI 2 255 + #define CK_SCMI_LSE 3 256 + #define CK_SCMI_LSI 4 257 + #define CK_SCMI_PLL2_Q 5 258 + #define CK_SCMI_PLL2_R 6 259 + #define CK_SCMI_MPU 7 260 + #define CK_SCMI_AXI 8 261 + #define CK_SCMI_BSEC 9 262 + #define CK_SCMI_CRYP1 10 263 + #define CK_SCMI_GPIOZ 11 264 + #define CK_SCMI_HASH1 12 265 + #define CK_SCMI_I2C4 13 266 + #define CK_SCMI_I2C6 14 267 + #define CK_SCMI_IWDG1 15 268 + #define CK_SCMI_RNG1 16 269 + #define CK_SCMI_RTC 17 270 + #define CK_SCMI_RTCAPB 18 271 + #define CK_SCMI_SPI6 19 272 + #define CK_SCMI_USART1 20 277 273 278 274 #endif /* _DT_BINDINGS_STM32MP1_CLKS_H_ */
+12 -12
include/dt-bindings/reset/stm32mp1-resets.h
··· 107 107 #define GPIOK_R 19786 108 108 109 109 /* SCMI reset domain identifiers */ 110 - #define RST_SCMI0_SPI6 0 111 - #define RST_SCMI0_I2C4 1 112 - #define RST_SCMI0_I2C6 2 113 - #define RST_SCMI0_USART1 3 114 - #define RST_SCMI0_STGEN 4 115 - #define RST_SCMI0_GPIOZ 5 116 - #define RST_SCMI0_CRYP1 6 117 - #define RST_SCMI0_HASH1 7 118 - #define RST_SCMI0_RNG1 8 119 - #define RST_SCMI0_MDMA 9 120 - #define RST_SCMI0_MCU 10 121 - #define RST_SCMI0_MCU_HOLD_BOOT 11 110 + #define RST_SCMI_SPI6 0 111 + #define RST_SCMI_I2C4 1 112 + #define RST_SCMI_I2C6 2 113 + #define RST_SCMI_USART1 3 114 + #define RST_SCMI_STGEN 4 115 + #define RST_SCMI_GPIOZ 5 116 + #define RST_SCMI_CRYP1 6 117 + #define RST_SCMI_HASH1 7 118 + #define RST_SCMI_RNG1 8 119 + #define RST_SCMI_MDMA 9 120 + #define RST_SCMI_MCU 10 121 + #define RST_SCMI_MCU_HOLD_BOOT 11 122 122 123 123 #endif /* _DT_BINDINGS_STM32MP1_RESET_H_ */