| // SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) | 
| /* | 
|  * Copyright (C) 2019-2020 Marek Vasut <marex@denx.de> | 
|  */ | 
|   | 
| #include "stm32mp15-pinctrl.dtsi" | 
| #include "stm32mp15xxaa-pinctrl.dtsi" | 
| #include <dt-bindings/gpio/gpio.h> | 
| #include <dt-bindings/mfd/st,stpmic1.h> | 
|   | 
| / { | 
|     aliases { | 
|         ethernet0 = ðernet0; | 
|     }; | 
|   | 
|     memory@c0000000 { | 
|         device_type = "memory"; | 
|         reg = <0xC0000000 0x40000000>; | 
|     }; | 
|   | 
|     reserved-memory { | 
|         #address-cells = <1>; | 
|         #size-cells = <1>; | 
|         ranges; | 
|   | 
|         mcuram2: mcuram2@10000000 { | 
|             compatible = "shared-dma-pool"; | 
|             reg = <0x10000000 0x40000>; | 
|             no-map; | 
|         }; | 
|   | 
|         vdev0vring0: vdev0vring0@10040000 { | 
|             compatible = "shared-dma-pool"; | 
|             reg = <0x10040000 0x1000>; | 
|             no-map; | 
|         }; | 
|   | 
|         vdev0vring1: vdev0vring1@10041000 { | 
|             compatible = "shared-dma-pool"; | 
|             reg = <0x10041000 0x1000>; | 
|             no-map; | 
|         }; | 
|   | 
|         vdev0buffer: vdev0buffer@10042000 { | 
|             compatible = "shared-dma-pool"; | 
|             reg = <0x10042000 0x4000>; | 
|             no-map; | 
|         }; | 
|   | 
|         mcuram: mcuram@30000000 { | 
|             compatible = "shared-dma-pool"; | 
|             reg = <0x30000000 0x40000>; | 
|             no-map; | 
|         }; | 
|   | 
|         retram: retram@38000000 { | 
|             compatible = "shared-dma-pool"; | 
|             reg = <0x38000000 0x10000>; | 
|             no-map; | 
|         }; | 
|     }; | 
|   | 
|     ethernet_vio: vioregulator { | 
|         compatible = "regulator-fixed"; | 
|         regulator-name = "vio"; | 
|         regulator-min-microvolt = <3300000>; | 
|         regulator-max-microvolt = <3300000>; | 
|         gpio = <&gpiog 3 GPIO_ACTIVE_LOW>; | 
|         regulator-always-on; | 
|         regulator-boot-on; | 
|         vin-supply = <&vdd>; | 
|     }; | 
| }; | 
|   | 
| &adc { | 
|     vdd-supply = <&vdd>; | 
|     vdda-supply = <&vdda>; | 
|     vref-supply = <&vdda>; | 
|     status = "okay"; | 
|   | 
|     adc1: adc@0 { | 
|         st,min-sample-time-nsecs = <5000>; | 
|         st,adc-channels = <0>; | 
|         status = "okay"; | 
|     }; | 
|   | 
|     adc2: adc@100 { | 
|         st,adc-channels = <1>; | 
|         st,min-sample-time-nsecs = <5000>; | 
|         status = "okay"; | 
|     }; | 
| }; | 
|   | 
| &dac { | 
|     pinctrl-names = "default"; | 
|     pinctrl-0 = <&dac_ch1_pins_a &dac_ch2_pins_a>; | 
|     vref-supply = <&vdda>; | 
|     status = "okay"; | 
|   | 
|     dac1: dac@1 { | 
|         status = "okay"; | 
|     }; | 
|     dac2: dac@2 { | 
|         status = "okay"; | 
|     }; | 
| }; | 
|   | 
| &dts { | 
|     status = "okay"; | 
| }; | 
|   | 
| ðernet0 { | 
|     status = "okay"; | 
|     pinctrl-0 = <ðernet0_rmii_pins_a>; | 
|     pinctrl-1 = <ðernet0_rmii_sleep_pins_a>; | 
|     pinctrl-names = "default", "sleep"; | 
|     phy-mode = "rmii"; | 
|     max-speed = <100>; | 
|     phy-handle = <&phy0>; | 
|     st,eth-ref-clk-sel; | 
|   | 
|     mdio0 { | 
|         #address-cells = <1>; | 
|         #size-cells = <0>; | 
|         compatible = "snps,dwmac-mdio"; | 
|   | 
|         phy0: ethernet-phy@1 { | 
|             reg = <1>; | 
|             /* LAN8710Ai */ | 
|             compatible = "ethernet-phy-id0007.c0f0", | 
|                      "ethernet-phy-ieee802.3-c22"; | 
|             clocks = <&rcc ETHCK_K>; | 
|             reset-gpios = <&gpioh 3 GPIO_ACTIVE_LOW>; | 
|             reset-assert-us = <500>; | 
|             reset-deassert-us = <500>; | 
|             smsc,disable-energy-detect; | 
|             interrupt-parent = <&gpioi>; | 
|             interrupts = <11 IRQ_TYPE_LEVEL_LOW>; | 
|         }; | 
|     }; | 
| }; | 
|   | 
| &i2c4 { | 
|     pinctrl-names = "default"; | 
|     pinctrl-0 = <&i2c4_pins_a>; | 
|     i2c-scl-rising-time-ns = <185>; | 
|     i2c-scl-falling-time-ns = <20>; | 
|     status = "okay"; | 
|     /* spare dmas for other usage */ | 
|     /delete-property/dmas; | 
|     /delete-property/dma-names; | 
|   | 
|     rtc@32 { | 
|         compatible = "microcrystal,rv8803"; | 
|         reg = <0x32>; | 
|     }; | 
|   | 
|     pmic: stpmic@33 { | 
|         compatible = "st,stpmic1"; | 
|         reg = <0x33>; | 
|         interrupts-extended = <&gpioa 0 IRQ_TYPE_EDGE_FALLING>; | 
|         interrupt-controller; | 
|         #interrupt-cells = <2>; | 
|         status = "okay"; | 
|   | 
|         regulators { | 
|             compatible = "st,stpmic1-regulators"; | 
|             ldo1-supply = <&v3v3>; | 
|             ldo2-supply = <&v3v3>; | 
|             ldo3-supply = <&vdd_ddr>; | 
|             ldo5-supply = <&v3v3>; | 
|             ldo6-supply = <&v3v3>; | 
|             pwr_sw1-supply = <&bst_out>; | 
|             pwr_sw2-supply = <&bst_out>; | 
|   | 
|             vddcore: buck1 { | 
|                 regulator-name = "vddcore"; | 
|                 regulator-min-microvolt = <800000>; | 
|                 regulator-max-microvolt = <1350000>; | 
|                 regulator-always-on; | 
|                 regulator-initial-mode = <0>; | 
|                 regulator-over-current-protection; | 
|             }; | 
|   | 
|             vdd_ddr: buck2 { | 
|                 regulator-name = "vdd_ddr"; | 
|                 regulator-min-microvolt = <1350000>; | 
|                 regulator-max-microvolt = <1350000>; | 
|                 regulator-always-on; | 
|                 regulator-initial-mode = <0>; | 
|                 regulator-over-current-protection; | 
|             }; | 
|   | 
|             vdd: buck3 { | 
|                 regulator-name = "vdd"; | 
|                 regulator-min-microvolt = <3300000>; | 
|                 regulator-max-microvolt = <3300000>; | 
|                 regulator-always-on; | 
|                 st,mask-reset; | 
|                 regulator-initial-mode = <0>; | 
|                 regulator-over-current-protection; | 
|             }; | 
|   | 
|             v3v3: buck4 { | 
|                 regulator-name = "v3v3"; | 
|                 regulator-min-microvolt = <3300000>; | 
|                 regulator-max-microvolt = <3300000>; | 
|                 regulator-always-on; | 
|                 regulator-over-current-protection; | 
|                 regulator-initial-mode = <0>; | 
|             }; | 
|   | 
|             vdda: ldo1 { | 
|                 regulator-name = "vdda"; | 
|                 regulator-always-on; | 
|                 regulator-min-microvolt = <2900000>; | 
|                 regulator-max-microvolt = <2900000>; | 
|                 interrupts = <IT_CURLIM_LDO1 0>; | 
|             }; | 
|   | 
|             v2v8: ldo2 { | 
|                 regulator-name = "v2v8"; | 
|                 regulator-min-microvolt = <2800000>; | 
|                 regulator-max-microvolt = <2800000>; | 
|                 interrupts = <IT_CURLIM_LDO2 0>; | 
|             }; | 
|   | 
|             vtt_ddr: ldo3 { | 
|                 regulator-name = "vtt_ddr"; | 
|                 regulator-min-microvolt = <500000>; | 
|                 regulator-max-microvolt = <750000>; | 
|                 regulator-always-on; | 
|                 regulator-over-current-protection; | 
|             }; | 
|   | 
|             vdd_usb: ldo4 { | 
|                 regulator-name = "vdd_usb"; | 
|                 interrupts = <IT_CURLIM_LDO4 0>; | 
|             }; | 
|   | 
|             vdd_sd: ldo5 { | 
|                 regulator-name = "vdd_sd"; | 
|                 regulator-min-microvolt = <2900000>; | 
|                 regulator-max-microvolt = <2900000>; | 
|                 interrupts = <IT_CURLIM_LDO5 0>; | 
|                 regulator-boot-on; | 
|             }; | 
|   | 
|             v1v8: ldo6 { | 
|                 regulator-name = "v1v8"; | 
|                 regulator-min-microvolt = <1800000>; | 
|                 regulator-max-microvolt = <1800000>; | 
|                 interrupts = <IT_CURLIM_LDO6 0>; | 
|             }; | 
|   | 
|             vref_ddr: vref_ddr { | 
|                 regulator-name = "vref_ddr"; | 
|                 regulator-always-on; | 
|             }; | 
|   | 
|             bst_out: boost { | 
|                 regulator-name = "bst_out"; | 
|                 interrupts = <IT_OCP_BOOST 0>; | 
|             }; | 
|   | 
|             vbus_otg: pwr_sw1 { | 
|                 regulator-name = "vbus_otg"; | 
|                 interrupts = <IT_OCP_OTG 0>; | 
|             }; | 
|   | 
|             vbus_sw: pwr_sw2 { | 
|                 regulator-name = "vbus_sw"; | 
|                 interrupts = <IT_OCP_SWOUT 0>; | 
|                 regulator-active-discharge = <1>; | 
|             }; | 
|         }; | 
|   | 
|         onkey { | 
|             compatible = "st,stpmic1-onkey"; | 
|             interrupts = <IT_PONKEY_F 0>, <IT_PONKEY_R 0>; | 
|             interrupt-names = "onkey-falling", "onkey-rising"; | 
|             power-off-time-sec = <10>; | 
|             status = "okay"; | 
|         }; | 
|   | 
|         watchdog { | 
|             compatible = "st,stpmic1-wdt"; | 
|             status = "disabled"; | 
|         }; | 
|     }; | 
|   | 
|     touchscreen@49 { | 
|         compatible = "ti,tsc2004"; | 
|         reg = <0x49>; | 
|         vio-supply = <&v3v3>; | 
|         interrupts-extended = <&gpioh 15 IRQ_TYPE_EDGE_FALLING>; | 
|     }; | 
|   | 
|     eeprom@50 { | 
|         compatible = "atmel,24c02"; | 
|         reg = <0x50>; | 
|         pagesize = <16>; | 
|     }; | 
| }; | 
|   | 
| &ipcc { | 
|     status = "okay"; | 
| }; | 
|   | 
| &iwdg2 { | 
|     timeout-sec = <32>; | 
|     status = "okay"; | 
| }; | 
|   | 
| &m4_rproc { | 
|     memory-region = <&retram>, <&mcuram>, <&mcuram2>, <&vdev0vring0>, | 
|             <&vdev0vring1>, <&vdev0buffer>; | 
|     mboxes = <&ipcc 0>, <&ipcc 1>, <&ipcc 2>; | 
|     mbox-names = "vq0", "vq1", "shutdown"; | 
|     interrupt-parent = <&exti>; | 
|     interrupts = <68 1>; | 
|     status = "okay"; | 
| }; | 
|   | 
| &pwr_regulators { | 
|     vdd-supply = <&vdd>; | 
|     vdd_3v3_usbfs-supply = <&vdd_usb>; | 
| }; | 
|   | 
| &qspi { | 
|     pinctrl-names = "default", "sleep"; | 
|     pinctrl-0 = <&qspi_clk_pins_a &qspi_bk1_pins_a>; | 
|     pinctrl-1 = <&qspi_clk_sleep_pins_a &qspi_bk1_sleep_pins_a>; | 
|     reg = <0x58003000 0x1000>, <0x70000000 0x4000000>; | 
|     #address-cells = <1>; | 
|     #size-cells = <0>; | 
|     status = "okay"; | 
|   | 
|     flash0: flash@0 { | 
|         compatible = "jedec,spi-nor"; | 
|         reg = <0>; | 
|         spi-rx-bus-width = <4>; | 
|         spi-max-frequency = <108000000>; | 
|         #address-cells = <1>; | 
|         #size-cells = <1>; | 
|     }; | 
| }; | 
|   | 
| &rng1 { | 
|     status = "okay"; | 
| }; | 
|   | 
| &rtc { | 
|     status = "okay"; | 
| }; | 
|   | 
| &sdmmc1 { | 
|     pinctrl-names = "default", "opendrain", "sleep"; | 
|     pinctrl-0 = <&sdmmc1_b4_pins_a &sdmmc1_dir_pins_a>; | 
|     pinctrl-1 = <&sdmmc1_b4_od_pins_a &sdmmc1_dir_pins_a>; | 
|     pinctrl-2 = <&sdmmc1_b4_sleep_pins_a &sdmmc1_dir_sleep_pins_a>; | 
|     cd-gpios = <&gpiog 1 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; | 
|     disable-wp; | 
|     st,sig-dir; | 
|     st,neg-edge; | 
|     st,use-ckin; | 
|     bus-width = <4>; | 
|     vmmc-supply = <&vdd_sd>; | 
|     status = "okay"; | 
| }; | 
|   | 
| &sdmmc2 { | 
|     pinctrl-names = "default", "opendrain", "sleep"; | 
|     pinctrl-0 = <&sdmmc2_b4_pins_a &sdmmc2_d47_pins_a>; | 
|     pinctrl-1 = <&sdmmc2_b4_od_pins_a &sdmmc2_d47_pins_a>; | 
|     pinctrl-2 = <&sdmmc2_b4_sleep_pins_a &sdmmc2_d47_sleep_pins_a>; | 
|     non-removable; | 
|     no-sd; | 
|     no-sdio; | 
|     st,neg-edge; | 
|     bus-width = <8>; | 
|     vmmc-supply = <&v3v3>; | 
|     vqmmc-supply = <&v3v3>; | 
|     mmc-ddr-3_3v; | 
|     status = "okay"; | 
| }; | 
|   | 
| &sdmmc3 { | 
|     pinctrl-names = "default", "opendrain", "sleep"; | 
|     pinctrl-0 = <&sdmmc3_b4_pins_a>; | 
|     pinctrl-1 = <&sdmmc3_b4_od_pins_a>; | 
|     pinctrl-2 = <&sdmmc3_b4_sleep_pins_a>; | 
|     broken-cd; | 
|     st,neg-edge; | 
|     bus-width = <4>; | 
|     vmmc-supply = <&v3v3>; | 
|     vqmmc-supply = <&v3v3>; | 
|     mmc-ddr-3_3v; | 
|     status = "okay"; | 
| }; | 
|   | 
| &uart4 { | 
|     pinctrl-names = "default"; | 
|     pinctrl-0 = <&uart4_pins_a>; | 
|     status = "okay"; | 
| }; |