1// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) 2/* 3 * Copyright (C) STMicroelectronics 2017 - All Rights Reserved 4 * Author: Ludovic Barre <ludovic.barre@st.com> for STMicroelectronics. 5 */ 6/dts-v1/; 7 8#include "stm32mp157c-ed1.dts" 9#include <dt-bindings/gpio/gpio.h> 10#include <dt-bindings/input/input.h> 11 12/ { 13 model = "STMicroelectronics STM32MP157C eval daughter on eval mother"; 14 compatible = "st,stm32mp157c-ev1", "st,stm32mp157c-ed1", "st,stm32mp157"; 15 16 chosen { 17 stdout-path = "serial0:115200n8"; 18 }; 19 20 aliases { 21 serial0 = &uart4; 22 serial1 = &usart3; 23 ethernet0 = ðernet0; 24 }; 25 26 clocks { 27 clk_ext_camera: clk-ext-camera { 28 #clock-cells = <0>; 29 compatible = "fixed-clock"; 30 clock-frequency = <24000000>; 31 }; 32 }; 33 34 joystick { 35 compatible = "gpio-keys"; 36 pinctrl-0 = <&joystick_pins>; 37 pinctrl-names = "default"; 38 button-0 { 39 label = "JoySel"; 40 linux,code = <KEY_ENTER>; 41 interrupt-parent = <&stmfx_pinctrl>; 42 interrupts = <0 IRQ_TYPE_EDGE_RISING>; 43 }; 44 button-1 { 45 label = "JoyDown"; 46 linux,code = <KEY_DOWN>; 47 interrupt-parent = <&stmfx_pinctrl>; 48 interrupts = <1 IRQ_TYPE_EDGE_RISING>; 49 }; 50 button-2 { 51 label = "JoyLeft"; 52 linux,code = <KEY_LEFT>; 53 interrupt-parent = <&stmfx_pinctrl>; 54 interrupts = <2 IRQ_TYPE_EDGE_RISING>; 55 }; 56 button-3 { 57 label = "JoyRight"; 58 linux,code = <KEY_RIGHT>; 59 interrupt-parent = <&stmfx_pinctrl>; 60 interrupts = <3 IRQ_TYPE_EDGE_RISING>; 61 }; 62 button-4 { 63 label = "JoyUp"; 64 linux,code = <KEY_UP>; 65 interrupt-parent = <&stmfx_pinctrl>; 66 interrupts = <4 IRQ_TYPE_EDGE_RISING>; 67 }; 68 }; 69 70 panel_backlight: panel-backlight { 71 compatible = "gpio-backlight"; 72 gpios = <&gpiod 13 GPIO_ACTIVE_LOW>; 73 default-on; 74 status = "okay"; 75 }; 76}; 77 78&cec { 79 pinctrl-names = "default"; 80 pinctrl-0 = <&cec_pins_a>; 81 status = "okay"; 82}; 83 84&dcmi { 85 status = "okay"; 86 pinctrl-names = "default", "sleep"; 87 pinctrl-0 = <&dcmi_pins_a>; 88 pinctrl-1 = <&dcmi_sleep_pins_a>; 89 90 port { 91 dcmi_0: endpoint { 92 remote-endpoint = <&ov5640_0>; 93 bus-type = <5>; 94 bus-width = <8>; 95 hsync-active = <0>; 96 vsync-active = <0>; 97 pclk-sample = <1>; 98 }; 99 }; 100}; 101 102&dsi { 103 phy-dsi-supply = <®18>; 104 status = "okay"; 105 106 ports { 107 port@0 { 108 reg = <0>; 109 dsi_in: endpoint { 110 remote-endpoint = <<dc_ep0_out>; 111 }; 112 }; 113 114 port@1 { 115 reg = <1>; 116 dsi_out: endpoint { 117 remote-endpoint = <&dsi_panel_in>; 118 }; 119 }; 120 }; 121 122 panel-dsi@0 { 123 compatible = "raydium,rm68200"; 124 reg = <0>; 125 reset-gpios = <&gpiof 15 GPIO_ACTIVE_LOW>; 126 backlight = <&panel_backlight>; 127 power-supply = <&v3v3>; 128 status = "okay"; 129 130 port { 131 dsi_panel_in: endpoint { 132 remote-endpoint = <&dsi_out>; 133 }; 134 }; 135 }; 136}; 137 138ðernet0 { 139 status = "okay"; 140 pinctrl-0 = <ðernet0_rgmii_pins_a>; 141 pinctrl-1 = <ðernet0_rgmii_sleep_pins_a>; 142 pinctrl-names = "default", "sleep"; 143 phy-mode = "rgmii-id"; 144 max-speed = <1000>; 145 phy-handle = <&phy0>; 146 147 mdio0 { 148 #address-cells = <1>; 149 #size-cells = <0>; 150 compatible = "snps,dwmac-mdio"; 151 phy0: ethernet-phy@0 { 152 reg = <0>; 153 }; 154 }; 155}; 156 157&fmc { 158 pinctrl-names = "default", "sleep"; 159 pinctrl-0 = <&fmc_pins_a>; 160 pinctrl-1 = <&fmc_sleep_pins_a>; 161 status = "okay"; 162 163 nand-controller@4,0 { 164 status = "okay"; 165 166 nand@0 { 167 reg = <0>; 168 nand-on-flash-bbt; 169 #address-cells = <1>; 170 #size-cells = <1>; 171 }; 172 }; 173}; 174 175&i2c2 { 176 pinctrl-names = "default", "sleep"; 177 pinctrl-0 = <&i2c2_pins_a>; 178 pinctrl-1 = <&i2c2_sleep_pins_a>; 179 i2c-scl-rising-time-ns = <185>; 180 i2c-scl-falling-time-ns = <20>; 181 status = "okay"; 182 183 ov5640: camera@3c { 184 compatible = "ovti,ov5640"; 185 reg = <0x3c>; 186 clocks = <&clk_ext_camera>; 187 clock-names = "xclk"; 188 DOVDD-supply = <&v2v8>; 189 powerdown-gpios = <&stmfx_pinctrl 18 (GPIO_ACTIVE_HIGH | GPIO_PUSH_PULL)>; 190 reset-gpios = <&stmfx_pinctrl 19 (GPIO_ACTIVE_LOW | GPIO_PUSH_PULL)>; 191 rotation = <180>; 192 status = "okay"; 193 194 port { 195 ov5640_0: endpoint { 196 remote-endpoint = <&dcmi_0>; 197 bus-width = <8>; 198 data-shift = <2>; /* lines 9:2 are used */ 199 hsync-active = <0>; 200 vsync-active = <0>; 201 pclk-sample = <1>; 202 }; 203 }; 204 }; 205 206 stmfx: stmfx@42 { 207 compatible = "st,stmfx-0300"; 208 reg = <0x42>; 209 interrupts = <8 IRQ_TYPE_EDGE_RISING>; 210 interrupt-parent = <&gpioi>; 211 vdd-supply = <&v3v3>; 212 213 stmfx_pinctrl: pinctrl { 214 compatible = "st,stmfx-0300-pinctrl"; 215 gpio-controller; 216 #gpio-cells = <2>; 217 interrupt-controller; 218 #interrupt-cells = <2>; 219 gpio-ranges = <&stmfx_pinctrl 0 0 24>; 220 221 joystick_pins: joystick-pins { 222 pins = "gpio0", "gpio1", "gpio2", "gpio3", "gpio4"; 223 bias-pull-down; 224 }; 225 }; 226 }; 227}; 228 229&i2c5 { 230 pinctrl-names = "default", "sleep"; 231 pinctrl-0 = <&i2c5_pins_a>; 232 pinctrl-1 = <&i2c5_sleep_pins_a>; 233 i2c-scl-rising-time-ns = <185>; 234 i2c-scl-falling-time-ns = <20>; 235 status = "okay"; 236}; 237 238<dc { 239 status = "okay"; 240 241 port { 242 ltdc_ep0_out: endpoint@0 { 243 reg = <0>; 244 remote-endpoint = <&dsi_in>; 245 }; 246 }; 247}; 248 249&m_can1 { 250 pinctrl-names = "default", "sleep"; 251 pinctrl-0 = <&m_can1_pins_a>; 252 pinctrl-1 = <&m_can1_sleep_pins_a>; 253 status = "okay"; 254}; 255 256&qspi { 257 pinctrl-names = "default", "sleep"; 258 pinctrl-0 = <&qspi_clk_pins_a 259 &qspi_bk1_pins_a 260 &qspi_cs1_pins_a 261 &qspi_bk2_pins_a 262 &qspi_cs2_pins_a>; 263 pinctrl-1 = <&qspi_clk_sleep_pins_a 264 &qspi_bk1_sleep_pins_a 265 &qspi_cs1_sleep_pins_a 266 &qspi_bk2_sleep_pins_a 267 &qspi_cs2_sleep_pins_a>; 268 reg = <0x58003000 0x1000>, <0x70000000 0x4000000>; 269 #address-cells = <1>; 270 #size-cells = <0>; 271 status = "okay"; 272 273 flash0: flash@0 { 274 compatible = "jedec,spi-nor"; 275 reg = <0>; 276 spi-rx-bus-width = <4>; 277 spi-max-frequency = <108000000>; 278 #address-cells = <1>; 279 #size-cells = <1>; 280 }; 281 282 flash1: flash@1 { 283 compatible = "jedec,spi-nor"; 284 reg = <1>; 285 spi-rx-bus-width = <4>; 286 spi-max-frequency = <108000000>; 287 #address-cells = <1>; 288 #size-cells = <1>; 289 }; 290}; 291 292&sdmmc3 { 293 pinctrl-names = "default", "opendrain", "sleep"; 294 pinctrl-0 = <&sdmmc3_b4_pins_a>; 295 pinctrl-1 = <&sdmmc3_b4_od_pins_a>; 296 pinctrl-2 = <&sdmmc3_b4_sleep_pins_a>; 297 broken-cd; 298 st,neg-edge; 299 bus-width = <4>; 300 vmmc-supply = <&v3v3>; 301 status = "disabled"; 302}; 303 304&spi1 { 305 pinctrl-names = "default"; 306 pinctrl-0 = <&spi1_pins_a>; 307 status = "disabled"; 308}; 309 310&timers2 { 311 /* spare dmas for other usage (un-delete to enable pwm capture) */ 312 /delete-property/dmas; 313 /delete-property/dma-names; 314 status = "disabled"; 315 pwm { 316 pinctrl-0 = <&pwm2_pins_a>; 317 pinctrl-1 = <&pwm2_sleep_pins_a>; 318 pinctrl-names = "default", "sleep"; 319 status = "okay"; 320 }; 321 timer@1 { 322 status = "okay"; 323 }; 324}; 325 326&timers8 { 327 /delete-property/dmas; 328 /delete-property/dma-names; 329 status = "disabled"; 330 pwm { 331 pinctrl-0 = <&pwm8_pins_a>; 332 pinctrl-1 = <&pwm8_sleep_pins_a>; 333 pinctrl-names = "default", "sleep"; 334 status = "okay"; 335 }; 336 timer@7 { 337 status = "okay"; 338 }; 339}; 340 341&timers12 { 342 /delete-property/dmas; 343 /delete-property/dma-names; 344 status = "disabled"; 345 pwm { 346 pinctrl-0 = <&pwm12_pins_a>; 347 pinctrl-1 = <&pwm12_sleep_pins_a>; 348 pinctrl-names = "default", "sleep"; 349 status = "okay"; 350 }; 351 timer@11 { 352 status = "okay"; 353 }; 354}; 355 356&usart3 { 357 pinctrl-names = "default", "sleep", "idle"; 358 pinctrl-0 = <&usart3_pins_b>; 359 pinctrl-1 = <&usart3_sleep_pins_b>; 360 pinctrl-2 = <&usart3_idle_pins_b>; 361 /* 362 * HW flow control USART3_RTS is optional, and isn't default wired to 363 * the connector. SB23 needs to be soldered in order to use it, and R77 364 * (ETH_CLK) should be removed. 365 */ 366 uart-has-rtscts; 367 status = "disabled"; 368}; 369 370&usbh_ehci { 371 phys = <&usbphyc_port0>; 372 status = "okay"; 373}; 374 375&usbotg_hs { 376 pinctrl-0 = <&usbotg_hs_pins_a>; 377 pinctrl-names = "default"; 378 phys = <&usbphyc_port1 0>; 379 phy-names = "usb2-phy"; 380 status = "okay"; 381}; 382 383&usbphyc { 384 status = "okay"; 385}; 386 387&usbphyc_port0 { 388 st,tune-hs-dc-level = <2>; 389 st,enable-fs-rftime-tuning; 390 st,enable-hs-rftime-reduction; 391 st,trim-hs-current = <15>; 392 st,trim-hs-impedance = <1>; 393 st,tune-squelch-level = <3>; 394 st,tune-hs-rx-offset = <2>; 395 st,no-lsfs-sc; 396}; 397 398&usbphyc_port1 { 399 st,tune-hs-dc-level = <2>; 400 st,enable-fs-rftime-tuning; 401 st,enable-hs-rftime-reduction; 402 st,trim-hs-current = <15>; 403 st,trim-hs-impedance = <1>; 404 st,tune-squelch-level = <3>; 405 st,tune-hs-rx-offset = <2>; 406 st,no-lsfs-sc; 407}; 408