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

ARM: dts: stm32: Add DHCOR based DRC Compact board

Add DT for DH DRC Compact unit, which is a universal controller device.
The system has two ethernet ports, one CAN, RS485 and RS232, USB, uSD
card slot, eMMC and SDIO Wi-Fi.

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Alexandre Torgue <alexandre.torgue@foss.st.com>
Cc: linux-stm32@st-md-mailman.stormreply.com
To: linux-arm-kernel@lists.infradead.org
Signed-off-by: Alexandre Torgue <alexandre.torgue@foss.st.com>

authored by

Marek Vasut and committed by
Alexandre Torgue
49c66eb3 35b2cb53

+353
+1
arch/arm/boot/dts/Makefile
··· 1192 1192 stm32mp151a-prtt1c.dtb \ 1193 1193 stm32mp151a-prtt1s.dtb \ 1194 1194 stm32mp153c-dhcom-drc02.dtb \ 1195 + stm32mp153c-dhcor-drc-compact.dtb \ 1195 1196 stm32mp157a-avenger96.dtb \ 1196 1197 stm32mp157a-dhcor-avenger96.dtb \ 1197 1198 stm32mp157a-dk1.dtb \
+30
arch/arm/boot/dts/stm32mp153c-dhcor-drc-compact.dts
··· 1 + // SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause) 2 + /* 3 + * Copyright (C) 2022 Marek Vasut <marex@denx.de> 4 + * 5 + * DHCOR STM32MP1 variant: 6 + * DHCR-STM32MP153C-C065-R051-V33-SPI-I-01LG 7 + * DHCOR PCB number: 586-100 or newer 8 + * DRC Compact PCB number: 627-100 or newer 9 + */ 10 + 11 + /dts-v1/; 12 + 13 + #include "stm32mp153.dtsi" 14 + #include "stm32mp15xc.dtsi" 15 + #include "stm32mp15xx-dhcor-som.dtsi" 16 + #include "stm32mp15xx-dhcor-drc-compact.dtsi" 17 + 18 + / { 19 + model = "DH electronics STM32MP153C DHCOR DRC Compact"; 20 + compatible = "dh,stm32mp153c-dhcor-drc-compact", 21 + "dh,stm32mp153c-dhcor-som", 22 + "st,stm32mp153"; 23 + }; 24 + 25 + &m_can1 { 26 + pinctrl-names = "default", "sleep"; 27 + pinctrl-0 = <&m_can1_pins_c>; 28 + pinctrl-1 = <&m_can1_sleep_pins_c>; 29 + status = "okay"; 30 + };
+322
arch/arm/boot/dts/stm32mp15xx-dhcor-drc-compact.dtsi
··· 1 + // SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause) 2 + /* 3 + * Copyright (C) 2022 Marek Vasut <marex@denx.de> 4 + */ 5 + 6 + / { 7 + aliases { 8 + ethernet0 = &ethernet0; 9 + ethernet1 = &ksz8851; 10 + mmc0 = &sdmmc1; 11 + rtc0 = &hwrtc; 12 + rtc1 = &rtc; 13 + serial0 = &uart4; 14 + serial1 = &uart8; 15 + serial2 = &usart3; 16 + serial3 = &uart5; 17 + spi0 = &qspi; 18 + }; 19 + 20 + chosen { 21 + stdout-path = "serial0:115200n8"; 22 + }; 23 + 24 + led { 25 + compatible = "gpio-leds"; 26 + led1 { 27 + label = "yellow:user0"; 28 + gpios = <&gpioz 6 GPIO_ACTIVE_LOW>; 29 + default-state = "off"; 30 + }; 31 + 32 + led2 { 33 + label = "red:user1"; 34 + gpios = <&gpioz 3 GPIO_ACTIVE_LOW>; 35 + default-state = "off"; 36 + }; 37 + }; 38 + 39 + ethernet_vio: vioregulator { 40 + compatible = "regulator-fixed"; 41 + regulator-name = "vio"; 42 + regulator-min-microvolt = <3300000>; 43 + regulator-max-microvolt = <3300000>; 44 + gpio = <&gpioh 2 GPIO_ACTIVE_LOW>; 45 + regulator-always-on; 46 + regulator-boot-on; 47 + vin-supply = <&vdd>; 48 + }; 49 + }; 50 + 51 + &adc { /* X11 ADC inputs */ 52 + pinctrl-names = "default"; 53 + pinctrl-0 = <&adc12_ain_pins_b>; 54 + vdd-supply = <&vdd>; 55 + vdda-supply = <&vdda>; 56 + vref-supply = <&vdda>; 57 + status = "okay"; 58 + 59 + adc1: adc@0 { 60 + st,adc-channels = <0 1 6>; 61 + st,min-sample-time-nsecs = <5000>; 62 + status = "okay"; 63 + }; 64 + 65 + adc2: adc@100 { 66 + st,adc-channels = <0 1 2>; 67 + st,min-sample-time-nsecs = <5000>; 68 + status = "okay"; 69 + }; 70 + }; 71 + 72 + &ethernet0 { 73 + status = "okay"; 74 + pinctrl-0 = <&ethernet0_rgmii_pins_c>; 75 + pinctrl-1 = <&ethernet0_rgmii_sleep_pins_c>; 76 + pinctrl-names = "default", "sleep"; 77 + phy-mode = "rgmii"; 78 + max-speed = <1000>; 79 + phy-handle = <&phy0>; 80 + 81 + mdio0 { 82 + #address-cells = <1>; 83 + #size-cells = <0>; 84 + compatible = "snps,dwmac-mdio"; 85 + reset-gpios = <&gpioz 2 GPIO_ACTIVE_LOW>; 86 + reset-delay-us = <1000>; 87 + reset-post-delay-us = <1000>; 88 + 89 + phy0: ethernet-phy@7 { 90 + reg = <7>; 91 + 92 + rxc-skew-ps = <1500>; 93 + rxdv-skew-ps = <540>; 94 + rxd0-skew-ps = <420>; 95 + rxd1-skew-ps = <420>; 96 + rxd2-skew-ps = <420>; 97 + rxd3-skew-ps = <420>; 98 + 99 + txc-skew-ps = <1440>; 100 + txen-skew-ps = <540>; 101 + txd0-skew-ps = <420>; 102 + txd1-skew-ps = <420>; 103 + txd2-skew-ps = <420>; 104 + txd3-skew-ps = <420>; 105 + }; 106 + }; 107 + }; 108 + 109 + &fmc { 110 + pinctrl-names = "default", "sleep"; 111 + pinctrl-0 = <&fmc_pins_b>; 112 + pinctrl-1 = <&fmc_sleep_pins_b>; 113 + status = "okay"; 114 + 115 + ksz8851: ethernet@1,0 { 116 + compatible = "micrel,ks8851-mll"; 117 + reg = <1 0x0 0x2>, <1 0x2 0x20000>; 118 + interrupt-parent = <&gpioc>; 119 + interrupts = <3 IRQ_TYPE_LEVEL_LOW>; 120 + bank-width = <2>; 121 + 122 + /* Timing values are in nS */ 123 + st,fmc2-ebi-cs-mux-enable; 124 + st,fmc2-ebi-cs-transaction-type = <4>; 125 + st,fmc2-ebi-cs-buswidth = <16>; 126 + st,fmc2-ebi-cs-address-setup-ns = <5>; 127 + st,fmc2-ebi-cs-address-hold-ns = <5>; 128 + st,fmc2-ebi-cs-bus-turnaround-ns = <5>; 129 + st,fmc2-ebi-cs-data-setup-ns = <45>; 130 + st,fmc2-ebi-cs-data-hold-ns = <1>; 131 + st,fmc2-ebi-cs-write-address-setup-ns = <5>; 132 + st,fmc2-ebi-cs-write-address-hold-ns = <5>; 133 + st,fmc2-ebi-cs-write-bus-turnaround-ns = <5>; 134 + st,fmc2-ebi-cs-write-data-setup-ns = <45>; 135 + st,fmc2-ebi-cs-write-data-hold-ns = <1>; 136 + }; 137 + }; 138 + 139 + &gpioa { 140 + gpio-line-names = "", "", "", "", 141 + "DRCC-VAR2", "", "", "", 142 + "", "", "", "", 143 + "", "", "", ""; 144 + }; 145 + 146 + &gpioe { 147 + gpio-line-names = "", "", "", "", 148 + "", "DRCC-GPIO0", "", "", 149 + "", "", "", "", 150 + "", "", "", ""; 151 + }; 152 + 153 + &gpiog { 154 + gpio-line-names = "", "", "", "", 155 + "", "", "", "", 156 + "", "", "", "", 157 + "DRCC-GPIO5", "", "", ""; 158 + }; 159 + 160 + &gpioh { 161 + gpio-line-names = "", "", "", "DRCC-HW2", 162 + "DRCC-GPIO4", "", "", "", 163 + "DRCC-HW1", "DRCC-HW0", "", "DRCC-VAR1", 164 + "DRCC-VAR0", "", "", "DRCC-GPIO6"; 165 + }; 166 + 167 + &gpioi { 168 + gpio-line-names = "", "", "", "", 169 + "", "", "", "DRCC-GPIO2", 170 + "", "DRCC-GPIO1", "", "", 171 + "", "", "", ""; 172 + }; 173 + 174 + &i2c1 { /* X11 I2C1 */ 175 + pinctrl-names = "default"; 176 + pinctrl-0 = <&i2c1_pins_b>; 177 + i2c-scl-rising-time-ns = <185>; 178 + i2c-scl-falling-time-ns = <20>; 179 + status = "okay"; 180 + /delete-property/dmas; 181 + /delete-property/dma-names; 182 + }; 183 + 184 + &i2c4 { 185 + hwrtc: rtc@32 { 186 + compatible = "microcrystal,rv8803"; 187 + reg = <0x32>; 188 + }; 189 + 190 + eeprom@50 { 191 + compatible = "atmel,24c04"; 192 + reg = <0x50>; 193 + pagesize = <16>; 194 + }; 195 + }; 196 + 197 + &sdmmc1 { /* MicroSD */ 198 + pinctrl-names = "default", "opendrain", "sleep"; 199 + pinctrl-0 = <&sdmmc1_b4_pins_a>; 200 + pinctrl-1 = <&sdmmc1_b4_od_pins_a>; 201 + pinctrl-2 = <&sdmmc1_b4_sleep_pins_a>; 202 + cd-gpios = <&gpioi 8 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; 203 + disable-wp; 204 + st,neg-edge; 205 + bus-width = <4>; 206 + vmmc-supply = <&vdd>; 207 + vqmmc-supply = <&vdd>; 208 + status = "okay"; 209 + }; 210 + 211 + &sdmmc2 { /* eMMC */ 212 + pinctrl-names = "default", "opendrain", "sleep"; 213 + pinctrl-0 = <&sdmmc2_b4_pins_a &sdmmc2_d47_pins_c>; 214 + pinctrl-1 = <&sdmmc2_b4_od_pins_a &sdmmc2_d47_pins_c>; 215 + pinctrl-2 = <&sdmmc2_b4_sleep_pins_a &sdmmc2_d47_sleep_pins_c>; 216 + bus-width = <8>; 217 + no-sd; 218 + no-sdio; 219 + non-removable; 220 + st,neg-edge; 221 + vmmc-supply = <&v3v3>; 222 + vqmmc-supply = <&vdd>; 223 + status = "okay"; 224 + }; 225 + 226 + &sdmmc3 { /* SDIO Wi-Fi */ 227 + pinctrl-names = "default", "opendrain", "sleep"; 228 + pinctrl-0 = <&sdmmc3_b4_pins_a>; 229 + pinctrl-1 = <&sdmmc3_b4_od_pins_a>; 230 + pinctrl-2 = <&sdmmc3_b4_sleep_pins_a>; 231 + broken-cd; 232 + bus-width = <4>; 233 + mmc-ddr-3_3v; 234 + st,neg-edge; 235 + vmmc-supply = <&v3v3>; 236 + vqmmc-supply = <&v3v3>; 237 + status = "okay"; 238 + }; 239 + 240 + &spi2 { /* X11 SPI */ 241 + pinctrl-names = "default"; 242 + pinctrl-0 = <&spi2_pins_b>; 243 + cs-gpios = <&gpioi 0 0>; 244 + status = "disabled"; 245 + /delete-property/dmas; 246 + /delete-property/dma-names; 247 + }; 248 + 249 + &uart4 { 250 + label = "UART0"; 251 + pinctrl-names = "default"; 252 + pinctrl-0 = <&uart4_pins_d>; 253 + /delete-property/dmas; 254 + /delete-property/dma-names; 255 + status = "okay"; 256 + }; 257 + 258 + &uart5 { /* X11 UART */ 259 + label = "X11-UART5"; 260 + pinctrl-names = "default"; 261 + pinctrl-0 = <&uart5_pins_a>; 262 + /delete-property/dmas; 263 + /delete-property/dma-names; 264 + status = "okay"; 265 + }; 266 + 267 + &uart8 { 268 + label = "RS485-1"; 269 + pinctrl-names = "default"; 270 + pinctrl-0 = <&uart8_pins_a &uart8_rtscts_pins_a>; 271 + uart-has-rtscts; 272 + /delete-property/dmas; 273 + /delete-property/dma-names; 274 + status = "okay"; 275 + }; 276 + 277 + &usart3 { /* RS485 or RS232 */ 278 + label = "RS485-2"; 279 + pinctrl-names = "default", "sleep"; 280 + pinctrl-0 = <&usart3_pins_e>; 281 + pinctrl-1 = <&usart3_sleep_pins_e>; 282 + uart-has-rtscts; 283 + /delete-property/dmas; 284 + /delete-property/dma-names; 285 + status = "okay"; 286 + }; 287 + 288 + &usbh_ehci { 289 + phys = <&usbphyc_port0>; 290 + status = "okay"; 291 + }; 292 + 293 + &usbh_ohci { 294 + phys = <&usbphyc_port0>; 295 + status = "okay"; 296 + }; 297 + 298 + &usbotg_hs { 299 + dr_mode = "otg"; 300 + pinctrl-0 = <&usbotg_hs_pins_a>; 301 + pinctrl-names = "default"; 302 + phy-names = "usb2-phy"; 303 + phys = <&usbphyc_port1 0>; 304 + vbus-supply = <&vbus_otg>; 305 + status = "okay"; 306 + }; 307 + 308 + &usbphyc { 309 + status = "okay"; 310 + }; 311 + 312 + &usbphyc_port0 { 313 + phy-supply = <&vdd_usb>; 314 + connector { 315 + compatible = "usb-a-connector"; 316 + vbus-supply = <&vbus_sw>; 317 + }; 318 + }; 319 + 320 + &usbphyc_port1 { 321 + phy-supply = <&vdd_usb>; 322 + };