1a620efc8SChristophe Parant// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) 2a620efc8SChristophe Parant/* 3a620efc8SChristophe Parant * Copyright (C) Phytec GmbH 2019-2020 - All Rights Reserved 4a620efc8SChristophe Parant * Author: Dom VOVARD <dom.vovard@linrt.com> 5a620efc8SChristophe Parant * Copyright (C) 2022-2023 Steffen Trumtrar <kernel@pengutronix.de> 6a620efc8SChristophe Parant * Copyright (C) 2024 PHYTEC Messtechnik GmbH 7a620efc8SChristophe Parant * Author: Christophe Parant <c.parant@phytec.fr> 8a620efc8SChristophe Parant */ 9a620efc8SChristophe Parant 10a620efc8SChristophe Parant#include <dt-bindings/gpio/gpio.h> 11a620efc8SChristophe Parant#include <dt-bindings/input/input.h> 12a620efc8SChristophe Parant#include <dt-bindings/mfd/st,stpmic1.h> 13a620efc8SChristophe Parant#include <dt-bindings/net/ti-dp83867.h> 14a620efc8SChristophe Parant#include "stm32mp15-pinctrl.dtsi" 15a620efc8SChristophe Parant#include "stm32mp15xxac-pinctrl.dtsi" 16a620efc8SChristophe Parant 17a620efc8SChristophe Parant/ { 18a620efc8SChristophe Parant 19a620efc8SChristophe Parant aliases { 20a620efc8SChristophe Parant ethernet0 = ðernet0; 21a620efc8SChristophe Parant rtc0 = &i2c4_rtc; 22a620efc8SChristophe Parant rtc1 = &rtc; 23a620efc8SChristophe Parant }; 24a620efc8SChristophe Parant 25b95ce919SChristophe Parant /* 26b95ce919SChristophe Parant * Set the minimum memory size here and 27b95ce919SChristophe Parant * let the bootloader set the real size. 28b95ce919SChristophe Parant */ 29b95ce919SChristophe Parant memory@c0000000 { 30b95ce919SChristophe Parant device_type = "memory"; 31b95ce919SChristophe Parant reg = <0xc0000000 0x20000000>; 32b95ce919SChristophe Parant }; 33b95ce919SChristophe Parant 34a620efc8SChristophe Parant reserved-memory { 35a620efc8SChristophe Parant #address-cells = <1>; 36a620efc8SChristophe Parant #size-cells = <1>; 37a620efc8SChristophe Parant ranges; 38a620efc8SChristophe Parant 39a620efc8SChristophe Parant mcuram2: mcuram2@10000000 { 40a620efc8SChristophe Parant compatible = "shared-dma-pool"; 41a620efc8SChristophe Parant reg = <0x10000000 0x40000>; 42a620efc8SChristophe Parant no-map; 43a620efc8SChristophe Parant }; 44a620efc8SChristophe Parant 45a620efc8SChristophe Parant vdev0vring0: vdev0vring0@10040000 { 46a620efc8SChristophe Parant compatible = "shared-dma-pool"; 47a620efc8SChristophe Parant reg = <0x10040000 0x1000>; 48a620efc8SChristophe Parant no-map; 49a620efc8SChristophe Parant }; 50a620efc8SChristophe Parant 51a620efc8SChristophe Parant vdev0vring1: vdev0vring1@10041000 { 52a620efc8SChristophe Parant compatible = "shared-dma-pool"; 53a620efc8SChristophe Parant reg = <0x10041000 0x1000>; 54a620efc8SChristophe Parant no-map; 55a620efc8SChristophe Parant }; 56a620efc8SChristophe Parant 57a620efc8SChristophe Parant vdev0buffer: vdev0buffer@10042000 { 58a620efc8SChristophe Parant compatible = "shared-dma-pool"; 59a620efc8SChristophe Parant reg = <0x10042000 0x4000>; 60a620efc8SChristophe Parant no-map; 61a620efc8SChristophe Parant }; 62c586a772SChristophe Parant 63c586a772SChristophe Parant mcuram: mcuram@30000000 { 64c586a772SChristophe Parant compatible = "shared-dma-pool"; 65c586a772SChristophe Parant reg = <0x30000000 0x40000>; 66c586a772SChristophe Parant no-map; 67c586a772SChristophe Parant }; 68c586a772SChristophe Parant 69c586a772SChristophe Parant retram: retram@38000000 { 70c586a772SChristophe Parant compatible = "shared-dma-pool"; 71c586a772SChristophe Parant reg = <0x38000000 0x10000>; 72c586a772SChristophe Parant no-map; 73c586a772SChristophe Parant }; 74a620efc8SChristophe Parant }; 75a620efc8SChristophe Parant 76a620efc8SChristophe Parant regulator_vin: regulator { 77a620efc8SChristophe Parant compatible = "regulator-fixed"; 78c586a772SChristophe Parant regulator-name = "VIN"; 79a620efc8SChristophe Parant regulator-min-microvolt = <5000000>; 80a620efc8SChristophe Parant regulator-max-microvolt = <5000000>; 81a620efc8SChristophe Parant regulator-always-on; 82a620efc8SChristophe Parant }; 83a620efc8SChristophe Parant}; 84a620efc8SChristophe Parant 85a620efc8SChristophe Parantðernet0 { 86a620efc8SChristophe Parant pinctrl-0 = <ðernet0_rgmii_pins_d>; 87a620efc8SChristophe Parant pinctrl-1 = <ðernet0_rgmii_sleep_pins_d>; 88a620efc8SChristophe Parant pinctrl-names = "default", "sleep"; 89a620efc8SChristophe Parant phy-mode = "rgmii-id"; 90a620efc8SChristophe Parant max-speed = <1000>; 91a620efc8SChristophe Parant phy-handle = <&phy0>; 92a620efc8SChristophe Parant st,eth-clk-sel; 93a620efc8SChristophe Parant status = "okay"; 94a620efc8SChristophe Parant 95a620efc8SChristophe Parant mdio { 96a620efc8SChristophe Parant #address-cells = <1>; 97a620efc8SChristophe Parant #size-cells = <0>; 98a620efc8SChristophe Parant compatible = "snps,dwmac-mdio"; 99a620efc8SChristophe Parant 100a620efc8SChristophe Parant phy0: ethernet-phy@1 { 101a620efc8SChristophe Parant compatible = "ethernet-phy-ieee802.3-c22"; 102a620efc8SChristophe Parant reg = <1>; 103a620efc8SChristophe Parant interrupt-parent = <&gpiog>; 104a620efc8SChristophe Parant interrupts = <12 IRQ_TYPE_EDGE_FALLING>; 105c586a772SChristophe Parant enet-phy-lane-no-swap; 106a620efc8SChristophe Parant ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>; 107a620efc8SChristophe Parant ti,tx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>; 108a620efc8SChristophe Parant ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>; 109a620efc8SChristophe Parant ti,min-output-impedance; 110a620efc8SChristophe Parant ti,clk-output-sel = <DP83867_CLK_O_SEL_OFF>; 111a620efc8SChristophe Parant }; 112a620efc8SChristophe Parant }; 113a620efc8SChristophe Parant}; 114a620efc8SChristophe Parant 115*1dd44972SChristophe Parant&fmc { 116*1dd44972SChristophe Parant pinctrl-names = "default", "sleep"; 117*1dd44972SChristophe Parant pinctrl-0 = <&fmc_pins_a>; 118*1dd44972SChristophe Parant pinctrl-1 = <&fmc_sleep_pins_a>; 119*1dd44972SChristophe Parant status = "disabled"; 120*1dd44972SChristophe Parant 121*1dd44972SChristophe Parant nand-controller@4,0 { 122*1dd44972SChristophe Parant nand0: nand@0 { 123*1dd44972SChristophe Parant reg = <0>; 124*1dd44972SChristophe Parant nand-on-flash-bbt; 125*1dd44972SChristophe Parant nand-ecc-strength = <4>; 126*1dd44972SChristophe Parant nand-ecc-step-size = <512>; 127*1dd44972SChristophe Parant }; 128*1dd44972SChristophe Parant }; 129*1dd44972SChristophe Parant}; 130*1dd44972SChristophe Parant 131a620efc8SChristophe Parant&i2c4 { 132a620efc8SChristophe Parant pinctrl-names = "default", "sleep"; 133a620efc8SChristophe Parant pinctrl-0 = <&i2c4_pins_a>; 134a620efc8SChristophe Parant pinctrl-1 = <&i2c4_sleep_pins_a>; 135a620efc8SChristophe Parant i2c-scl-rising-time-ns = <185>; 136a620efc8SChristophe Parant i2c-scl-falling-time-ns = <20>; 137a620efc8SChristophe Parant status = "okay"; 138a620efc8SChristophe Parant 139a620efc8SChristophe Parant pmic@33 { 140a620efc8SChristophe Parant compatible = "st,stpmic1"; 141a620efc8SChristophe Parant reg = <0x33>; 142a620efc8SChristophe Parant interrupts-extended = <&gpioa 0 IRQ_TYPE_EDGE_FALLING>; 143a620efc8SChristophe Parant interrupt-controller; 144a620efc8SChristophe Parant #interrupt-cells = <2>; 145a620efc8SChristophe Parant 146a620efc8SChristophe Parant regulators { 147a620efc8SChristophe Parant compatible = "st,stpmic1-regulators"; 148a620efc8SChristophe Parant buck1-supply = <®ulator_vin>; 149a620efc8SChristophe Parant buck2-supply = <®ulator_vin>; 150a620efc8SChristophe Parant buck3-supply = <®ulator_vin>; 151a620efc8SChristophe Parant buck4-supply = <®ulator_vin>; 152a620efc8SChristophe Parant ldo1-supply = <&v3v3>; 153a620efc8SChristophe Parant ldo2-supply = <&v3v3>; 154a620efc8SChristophe Parant ldo3-supply = <&vdd_ddr>; 155a620efc8SChristophe Parant ldo4-supply = <®ulator_vin>; 156a620efc8SChristophe Parant ldo5-supply = <&v3v3>; 157a620efc8SChristophe Parant ldo6-supply = <&v3v3>; 158a620efc8SChristophe Parant boost-supply = <®ulator_vin>; 159a620efc8SChristophe Parant pwr_sw1-supply = <&bst_out>; 160a620efc8SChristophe Parant pwr_sw2-supply = <&bst_out>; 161a620efc8SChristophe Parant 162a620efc8SChristophe Parant vddcore: buck1 { 163c586a772SChristophe Parant regulator-name = "VDD_CORE"; 164a620efc8SChristophe Parant regulator-min-microvolt = <1200000>; 165a620efc8SChristophe Parant regulator-max-microvolt = <1350000>; 166a620efc8SChristophe Parant regulator-always-on; 167a620efc8SChristophe Parant regulator-initial-mode = <0>; 168a620efc8SChristophe Parant }; 169a620efc8SChristophe Parant 170a620efc8SChristophe Parant vdd_ddr: buck2 { 171c586a772SChristophe Parant regulator-name = "VDD_DDR"; 172a620efc8SChristophe Parant regulator-min-microvolt = <1350000>; 173a620efc8SChristophe Parant regulator-max-microvolt = <1350000>; 174a620efc8SChristophe Parant regulator-always-on; 175a620efc8SChristophe Parant regulator-initial-mode = <0>; 176a620efc8SChristophe Parant }; 177a620efc8SChristophe Parant 178a620efc8SChristophe Parant vdd: buck3 { 179c586a772SChristophe Parant regulator-name = "VDD"; 180a620efc8SChristophe Parant regulator-min-microvolt = <3300000>; 181a620efc8SChristophe Parant regulator-max-microvolt = <3300000>; 182a620efc8SChristophe Parant regulator-always-on; 183a620efc8SChristophe Parant st,mask-reset; 184a620efc8SChristophe Parant regulator-initial-mode = <0>; 185a620efc8SChristophe Parant }; 186a620efc8SChristophe Parant 187a620efc8SChristophe Parant v3v3: buck4 { 188c586a772SChristophe Parant regulator-name = "VDD_BUCK4"; 189a620efc8SChristophe Parant regulator-min-microvolt = <3300000>; 190a620efc8SChristophe Parant regulator-max-microvolt = <3300000>; 191a620efc8SChristophe Parant regulator-always-on; 192a620efc8SChristophe Parant regulator-initial-mode = <0>; 193a620efc8SChristophe Parant }; 194a620efc8SChristophe Parant 195a620efc8SChristophe Parant v1v8_audio: ldo1 { 196c586a772SChristophe Parant regulator-name = "VDD_LDO1"; 197a620efc8SChristophe Parant regulator-min-microvolt = <1800000>; 198a620efc8SChristophe Parant regulator-max-microvolt = <1800000>; 199a620efc8SChristophe Parant regulator-always-on; 200a620efc8SChristophe Parant interrupts = <IT_CURLIM_LDO1 0>; 201a620efc8SChristophe Parant 202a620efc8SChristophe Parant }; 203a620efc8SChristophe Parant 204a620efc8SChristophe Parant vdd_eth_2v5: ldo2 { 205c586a772SChristophe Parant regulator-name = "VDD_ETH_2V5"; 206a620efc8SChristophe Parant regulator-min-microvolt = <2500000>; 207a620efc8SChristophe Parant regulator-max-microvolt = <2500000>; 208a620efc8SChristophe Parant regulator-always-on; 209a620efc8SChristophe Parant interrupts = <IT_CURLIM_LDO2 0>; 210a620efc8SChristophe Parant 211a620efc8SChristophe Parant }; 212a620efc8SChristophe Parant 213a620efc8SChristophe Parant vtt_ddr: ldo3 { 214c586a772SChristophe Parant regulator-name = "VTT_DDR"; 215a620efc8SChristophe Parant regulator-min-microvolt = <500000>; 216a620efc8SChristophe Parant regulator-max-microvolt = <750000>; 217a620efc8SChristophe Parant regulator-always-on; 218a620efc8SChristophe Parant regulator-over-current-protection; 219a620efc8SChristophe Parant }; 220a620efc8SChristophe Parant 221a620efc8SChristophe Parant vdd_usb: ldo4 { 222c586a772SChristophe Parant regulator-name = "VDD_USB"; 223a620efc8SChristophe Parant interrupts = <IT_CURLIM_LDO4 0>; 224a620efc8SChristophe Parant }; 225a620efc8SChristophe Parant 226a620efc8SChristophe Parant vdda: ldo5 { 227c586a772SChristophe Parant regulator-name = "VDDA"; 228a620efc8SChristophe Parant regulator-min-microvolt = <2900000>; 229a620efc8SChristophe Parant regulator-max-microvolt = <2900000>; 230a620efc8SChristophe Parant interrupts = <IT_CURLIM_LDO5 0>; 231a620efc8SChristophe Parant regulator-boot-on; 232a620efc8SChristophe Parant }; 233a620efc8SChristophe Parant 234a620efc8SChristophe Parant vdd_eth_1v0: ldo6 { 235c586a772SChristophe Parant regulator-name = "VDD_ETH_1V0"; 236a620efc8SChristophe Parant regulator-min-microvolt = <1000000>; 237a620efc8SChristophe Parant regulator-max-microvolt = <1000000>; 238a620efc8SChristophe Parant regulator-always-on; 239a620efc8SChristophe Parant interrupts = <IT_CURLIM_LDO6 0>; 240a620efc8SChristophe Parant 241a620efc8SChristophe Parant }; 242a620efc8SChristophe Parant 243a620efc8SChristophe Parant vref_ddr: vref_ddr { 244c586a772SChristophe Parant regulator-name = "VDD_REFDDR"; 245a620efc8SChristophe Parant regulator-always-on; 246a620efc8SChristophe Parant }; 247a620efc8SChristophe Parant 248a620efc8SChristophe Parant bst_out: boost { 249c586a772SChristophe Parant regulator-name = "BST_OUT"; 250a620efc8SChristophe Parant interrupts = <IT_OCP_BOOST 0>; 251a620efc8SChristophe Parant }; 252a620efc8SChristophe Parant 253a620efc8SChristophe Parant vbus_otg: pwr_sw1 { 254c586a772SChristophe Parant regulator-name = "VBUS_OTG"; 255a620efc8SChristophe Parant interrupts = <IT_OCP_OTG 0>; 256a620efc8SChristophe Parant regulator-active-discharge = <1>; 257a620efc8SChristophe Parant }; 258a620efc8SChristophe Parant 259a620efc8SChristophe Parant vbus_sw: pwr_sw2 { 260c586a772SChristophe Parant regulator-name = "VBUS_SW"; 261a620efc8SChristophe Parant interrupts = <IT_OCP_SWOUT 0>; 262a620efc8SChristophe Parant regulator-active-discharge = <1>; 263a620efc8SChristophe Parant }; 264a620efc8SChristophe Parant }; 265a620efc8SChristophe Parant 266a620efc8SChristophe Parant onkey { 267a620efc8SChristophe Parant compatible = "st,stpmic1-onkey"; 268a620efc8SChristophe Parant interrupts = <IT_PONKEY_F 0>, 269a620efc8SChristophe Parant <IT_PONKEY_R 0>; 270a620efc8SChristophe Parant interrupt-names = "onkey-falling", 271a620efc8SChristophe Parant "onkey-rising"; 272a620efc8SChristophe Parant power-off-time-sec = <10>; 273a620efc8SChristophe Parant }; 274a620efc8SChristophe Parant 275a620efc8SChristophe Parant watchdog { 276a620efc8SChristophe Parant compatible = "st,stpmic1-wdt"; 277a620efc8SChristophe Parant }; 278a620efc8SChristophe Parant }; 279a620efc8SChristophe Parant 280a620efc8SChristophe Parant i2c4_eeprom: eeprom@50 { 281c586a772SChristophe Parant compatible = "atmel,24c32"; 282a620efc8SChristophe Parant reg = <0x50>; 283e4c9cc73SChristophe Parant status = "disabled"; 284a620efc8SChristophe Parant }; 285a620efc8SChristophe Parant 286a620efc8SChristophe Parant i2c4_rtc: rtc@52 { 287a620efc8SChristophe Parant compatible = "microcrystal,rv3028"; 288a620efc8SChristophe Parant reg = <0x52>; 289e4c9cc73SChristophe Parant status = "disabled"; 290a620efc8SChristophe Parant }; 291a620efc8SChristophe Parant}; 292a620efc8SChristophe Parant 293a620efc8SChristophe Parant&ipcc { 294a620efc8SChristophe Parant status = "okay"; 295a620efc8SChristophe Parant}; 296a620efc8SChristophe Parant 297a620efc8SChristophe Parant&iwdg2 { 298a620efc8SChristophe Parant timeout-sec = <32>; 299a620efc8SChristophe Parant status = "okay"; 300a620efc8SChristophe Parant}; 301a620efc8SChristophe Parant 302a620efc8SChristophe Parant&m4_rproc { 303a620efc8SChristophe Parant memory-region = <&retram>, <&mcuram>, <&mcuram2>, <&vdev0vring0>, 304a620efc8SChristophe Parant <&vdev0vring1>, <&vdev0buffer>; 305a620efc8SChristophe Parant mboxes = <&ipcc 0>, <&ipcc 1>, <&ipcc 2>, <&ipcc 3>; 306a620efc8SChristophe Parant mbox-names = "vq0", "vq1", "shutdown", "detach"; 307a620efc8SChristophe Parant interrupt-parent = <&exti>; 308a620efc8SChristophe Parant interrupts = <68 1>; 309a620efc8SChristophe Parant status = "okay"; 310a620efc8SChristophe Parant}; 311a620efc8SChristophe Parant 312a620efc8SChristophe Parant&pwr_regulators { 313a620efc8SChristophe Parant vdd-supply = <&vdd>; 314a620efc8SChristophe Parant vdd_3v3_usbfs-supply = <&vdd_usb>; 315a620efc8SChristophe Parant}; 316a620efc8SChristophe Parant 317a620efc8SChristophe Parant&qspi { 318a620efc8SChristophe Parant pinctrl-names = "default", "sleep"; 31939920625SChristophe Parant pinctrl-0 = <&qspi_clk_pins_a 32039920625SChristophe Parant &qspi_bk1_pins_a 32139920625SChristophe Parant &qspi_cs1_pins_a>; 32239920625SChristophe Parant pinctrl-1 = <&qspi_clk_sleep_pins_a 32339920625SChristophe Parant &qspi_bk1_sleep_pins_a 32439920625SChristophe Parant &qspi_cs1_sleep_pins_a>; 32539920625SChristophe Parant reg = <0x58003000 0x1000>, 32639920625SChristophe Parant <0x70000000 0x1000000>; 327e4c9cc73SChristophe Parant status = "disabled"; 328a620efc8SChristophe Parant 329a620efc8SChristophe Parant flash0: flash@0 { 330c586a772SChristophe Parant compatible = "jedec,spi-nor"; 331a620efc8SChristophe Parant reg = <0>; 332a620efc8SChristophe Parant spi-rx-bus-width = <4>; 333a620efc8SChristophe Parant spi-max-frequency = <50000000>; 334a620efc8SChristophe Parant m25p,fast-read; 335a620efc8SChristophe Parant }; 336a620efc8SChristophe Parant}; 337a620efc8SChristophe Parant 338a620efc8SChristophe Parant&rng1 { 339a620efc8SChristophe Parant status = "okay"; 340a620efc8SChristophe Parant}; 341a620efc8SChristophe Parant 342a620efc8SChristophe Parant&rtc { 343a620efc8SChristophe Parant status = "okay"; 344a620efc8SChristophe Parant}; 345a620efc8SChristophe Parant 346e4c9cc73SChristophe Parant&dts { 347e4c9cc73SChristophe Parant status = "okay"; 348e4c9cc73SChristophe Parant}; 349e4c9cc73SChristophe Parant 350a620efc8SChristophe Parant&sdmmc2 { 351a620efc8SChristophe Parant pinctrl-names = "default", "opendrain", "sleep"; 352a620efc8SChristophe Parant pinctrl-0 = <&sdmmc2_b4_pins_a &sdmmc2_d47_pins_e>; 353a620efc8SChristophe Parant pinctrl-1 = <&sdmmc2_b4_od_pins_a &sdmmc2_d47_pins_e>; 354a620efc8SChristophe Parant pinctrl-2 = <&sdmmc2_b4_sleep_pins_a &sdmmc2_d47_sleep_pins_e>; 355a620efc8SChristophe Parant non-removable; 356a620efc8SChristophe Parant no-sd; 357a620efc8SChristophe Parant no-sdio; 358a620efc8SChristophe Parant bus-width = <8>; 359a620efc8SChristophe Parant vmmc-supply = <&v3v3>; 360a620efc8SChristophe Parant vqmmc-supply = <&v3v3>; 361a620efc8SChristophe Parant mmc-ddr-3_3v; 362c586a772SChristophe Parant st,neg-edge; 363e4c9cc73SChristophe Parant status = "disabled"; 364a620efc8SChristophe Parant}; 365