1*4882a593Smuzhiyun// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) 2*4882a593Smuzhiyun/* 3*4882a593Smuzhiyun * Copyright (C) 2020 Marcin Sloniewski <marcin.sloniewski@gmail.com>. 4*4882a593Smuzhiyun */ 5*4882a593Smuzhiyun 6*4882a593Smuzhiyun/dts-v1/; 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun#include "stm32mp157.dtsi" 9*4882a593Smuzhiyun#include "stm32mp15xc.dtsi" 10*4882a593Smuzhiyun#include "stm32mp15-pinctrl.dtsi" 11*4882a593Smuzhiyun#include "stm32mp15xxac-pinctrl.dtsi" 12*4882a593Smuzhiyun#include <dt-bindings/gpio/gpio.h> 13*4882a593Smuzhiyun#include <dt-bindings/leds/common.h> 14*4882a593Smuzhiyun#include <dt-bindings/mfd/st,stpmic1.h> 15*4882a593Smuzhiyun 16*4882a593Smuzhiyun/ { 17*4882a593Smuzhiyun model = "Seeed Studio Odyssey-STM32MP157C SOM"; 18*4882a593Smuzhiyun compatible = "seeed,stm32mp157c-odyssey-som", "st,stm32mp157"; 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun memory@c0000000 { 21*4882a593Smuzhiyun device_type = "memory"; 22*4882a593Smuzhiyun reg = <0xc0000000 0x20000000>; 23*4882a593Smuzhiyun }; 24*4882a593Smuzhiyun 25*4882a593Smuzhiyun reserved-memory { 26*4882a593Smuzhiyun #address-cells = <1>; 27*4882a593Smuzhiyun #size-cells = <1>; 28*4882a593Smuzhiyun ranges; 29*4882a593Smuzhiyun 30*4882a593Smuzhiyun mcuram2: mcuram2@10000000 { 31*4882a593Smuzhiyun compatible = "shared-dma-pool"; 32*4882a593Smuzhiyun reg = <0x10000000 0x40000>; 33*4882a593Smuzhiyun no-map; 34*4882a593Smuzhiyun }; 35*4882a593Smuzhiyun 36*4882a593Smuzhiyun vdev0vring0: vdev0vring0@10040000 { 37*4882a593Smuzhiyun compatible = "shared-dma-pool"; 38*4882a593Smuzhiyun reg = <0x10040000 0x1000>; 39*4882a593Smuzhiyun no-map; 40*4882a593Smuzhiyun }; 41*4882a593Smuzhiyun 42*4882a593Smuzhiyun vdev0vring1: vdev0vring1@10041000 { 43*4882a593Smuzhiyun compatible = "shared-dma-pool"; 44*4882a593Smuzhiyun reg = <0x10041000 0x1000>; 45*4882a593Smuzhiyun no-map; 46*4882a593Smuzhiyun }; 47*4882a593Smuzhiyun 48*4882a593Smuzhiyun vdev0buffer: vdev0buffer@10042000 { 49*4882a593Smuzhiyun compatible = "shared-dma-pool"; 50*4882a593Smuzhiyun reg = <0x10042000 0x4000>; 51*4882a593Smuzhiyun no-map; 52*4882a593Smuzhiyun }; 53*4882a593Smuzhiyun 54*4882a593Smuzhiyun mcuram: mcuram@30000000 { 55*4882a593Smuzhiyun compatible = "shared-dma-pool"; 56*4882a593Smuzhiyun reg = <0x30000000 0x40000>; 57*4882a593Smuzhiyun no-map; 58*4882a593Smuzhiyun }; 59*4882a593Smuzhiyun 60*4882a593Smuzhiyun retram: retram@38000000 { 61*4882a593Smuzhiyun compatible = "shared-dma-pool"; 62*4882a593Smuzhiyun reg = <0x38000000 0x10000>; 63*4882a593Smuzhiyun no-map; 64*4882a593Smuzhiyun }; 65*4882a593Smuzhiyun 66*4882a593Smuzhiyun gpu_reserved: gpu@d4000000 { 67*4882a593Smuzhiyun reg = <0xd4000000 0x4000000>; 68*4882a593Smuzhiyun no-map; 69*4882a593Smuzhiyun }; 70*4882a593Smuzhiyun }; 71*4882a593Smuzhiyun 72*4882a593Smuzhiyun led { 73*4882a593Smuzhiyun compatible = "gpio-leds"; 74*4882a593Smuzhiyun led-blue { 75*4882a593Smuzhiyun color = <LED_COLOR_ID_BLUE>; 76*4882a593Smuzhiyun function = LED_FUNCTION_HEARTBEAT; 77*4882a593Smuzhiyun gpios = <&gpiog 3 GPIO_ACTIVE_HIGH>; 78*4882a593Smuzhiyun linux,default-trigger = "heartbeat"; 79*4882a593Smuzhiyun }; 80*4882a593Smuzhiyun }; 81*4882a593Smuzhiyun}; 82*4882a593Smuzhiyun 83*4882a593Smuzhiyun&gpu { 84*4882a593Smuzhiyun contiguous-area = <&gpu_reserved>; 85*4882a593Smuzhiyun status = "okay"; 86*4882a593Smuzhiyun}; 87*4882a593Smuzhiyun 88*4882a593Smuzhiyun&i2c2 { 89*4882a593Smuzhiyun pinctrl-names = "default"; 90*4882a593Smuzhiyun pinctrl-0 = <&i2c2_pins_a>; 91*4882a593Smuzhiyun i2c-scl-rising-time-ns = <185>; 92*4882a593Smuzhiyun i2c-scl-falling-time-ns = <20>; 93*4882a593Smuzhiyun status = "okay"; 94*4882a593Smuzhiyun /* spare dmas for other usage */ 95*4882a593Smuzhiyun /delete-property/dmas; 96*4882a593Smuzhiyun /delete-property/dma-names; 97*4882a593Smuzhiyun 98*4882a593Smuzhiyun pmic: stpmic@33 { 99*4882a593Smuzhiyun compatible = "st,stpmic1"; 100*4882a593Smuzhiyun reg = <0x33>; 101*4882a593Smuzhiyun interrupts-extended = <&gpioa 0 IRQ_TYPE_EDGE_FALLING>; 102*4882a593Smuzhiyun interrupt-controller; 103*4882a593Smuzhiyun #interrupt-cells = <2>; 104*4882a593Smuzhiyun 105*4882a593Smuzhiyun regulators { 106*4882a593Smuzhiyun compatible = "st,stpmic1-regulators"; 107*4882a593Smuzhiyun ldo1-supply = <&v3v3>; 108*4882a593Smuzhiyun ldo3-supply = <&vdd_ddr>; 109*4882a593Smuzhiyun ldo6-supply = <&v3v3>; 110*4882a593Smuzhiyun pwr_sw1-supply = <&bst_out>; 111*4882a593Smuzhiyun pwr_sw2-supply = <&bst_out>; 112*4882a593Smuzhiyun 113*4882a593Smuzhiyun vddcore: buck1 { 114*4882a593Smuzhiyun regulator-name = "vddcore"; 115*4882a593Smuzhiyun regulator-min-microvolt = <800000>; 116*4882a593Smuzhiyun regulator-max-microvolt = <1350000>; 117*4882a593Smuzhiyun regulator-always-on; 118*4882a593Smuzhiyun regulator-initial-mode = <0>; 119*4882a593Smuzhiyun regulator-over-current-protection; 120*4882a593Smuzhiyun }; 121*4882a593Smuzhiyun 122*4882a593Smuzhiyun vdd_ddr: buck2 { 123*4882a593Smuzhiyun regulator-name = "vdd_ddr"; 124*4882a593Smuzhiyun regulator-min-microvolt = <1350000>; 125*4882a593Smuzhiyun regulator-max-microvolt = <1350000>; 126*4882a593Smuzhiyun regulator-always-on; 127*4882a593Smuzhiyun regulator-initial-mode = <0>; 128*4882a593Smuzhiyun regulator-over-current-protection; 129*4882a593Smuzhiyun }; 130*4882a593Smuzhiyun 131*4882a593Smuzhiyun vdd: buck3 { 132*4882a593Smuzhiyun regulator-name = "vdd"; 133*4882a593Smuzhiyun regulator-min-microvolt = <3300000>; 134*4882a593Smuzhiyun regulator-max-microvolt = <3300000>; 135*4882a593Smuzhiyun regulator-always-on; 136*4882a593Smuzhiyun st,mask-reset; 137*4882a593Smuzhiyun regulator-initial-mode = <0>; 138*4882a593Smuzhiyun regulator-over-current-protection; 139*4882a593Smuzhiyun }; 140*4882a593Smuzhiyun 141*4882a593Smuzhiyun v3v3: buck4 { 142*4882a593Smuzhiyun regulator-name = "v3v3"; 143*4882a593Smuzhiyun regulator-min-microvolt = <3300000>; 144*4882a593Smuzhiyun regulator-max-microvolt = <3300000>; 145*4882a593Smuzhiyun regulator-always-on; 146*4882a593Smuzhiyun regulator-over-current-protection; 147*4882a593Smuzhiyun regulator-initial-mode = <0>; 148*4882a593Smuzhiyun }; 149*4882a593Smuzhiyun 150*4882a593Smuzhiyun v1v8_audio: ldo1 { 151*4882a593Smuzhiyun regulator-name = "v1v8_audio"; 152*4882a593Smuzhiyun regulator-min-microvolt = <1800000>; 153*4882a593Smuzhiyun regulator-max-microvolt = <1800000>; 154*4882a593Smuzhiyun regulator-always-on; 155*4882a593Smuzhiyun interrupts = <IT_CURLIM_LDO1 0>; 156*4882a593Smuzhiyun }; 157*4882a593Smuzhiyun 158*4882a593Smuzhiyun v3v3_hdmi: ldo2 { 159*4882a593Smuzhiyun regulator-name = "v3v3_hdmi"; 160*4882a593Smuzhiyun regulator-min-microvolt = <3300000>; 161*4882a593Smuzhiyun regulator-max-microvolt = <3300000>; 162*4882a593Smuzhiyun regulator-always-on; 163*4882a593Smuzhiyun interrupts = <IT_CURLIM_LDO2 0>; 164*4882a593Smuzhiyun }; 165*4882a593Smuzhiyun 166*4882a593Smuzhiyun vtt_ddr: ldo3 { 167*4882a593Smuzhiyun regulator-name = "vtt_ddr"; 168*4882a593Smuzhiyun regulator-min-microvolt = <500000>; 169*4882a593Smuzhiyun regulator-max-microvolt = <750000>; 170*4882a593Smuzhiyun regulator-always-on; 171*4882a593Smuzhiyun regulator-over-current-protection; 172*4882a593Smuzhiyun }; 173*4882a593Smuzhiyun 174*4882a593Smuzhiyun vdd_usb: ldo4 { 175*4882a593Smuzhiyun regulator-name = "vdd_usb"; 176*4882a593Smuzhiyun interrupts = <IT_CURLIM_LDO4 0>; 177*4882a593Smuzhiyun }; 178*4882a593Smuzhiyun 179*4882a593Smuzhiyun vdda: ldo5 { 180*4882a593Smuzhiyun regulator-name = "vdda"; 181*4882a593Smuzhiyun regulator-min-microvolt = <2900000>; 182*4882a593Smuzhiyun regulator-max-microvolt = <2900000>; 183*4882a593Smuzhiyun interrupts = <IT_CURLIM_LDO5 0>; 184*4882a593Smuzhiyun regulator-boot-on; 185*4882a593Smuzhiyun }; 186*4882a593Smuzhiyun 187*4882a593Smuzhiyun v1v2_hdmi: ldo6 { 188*4882a593Smuzhiyun regulator-name = "v1v2_hdmi"; 189*4882a593Smuzhiyun regulator-min-microvolt = <1200000>; 190*4882a593Smuzhiyun regulator-max-microvolt = <1200000>; 191*4882a593Smuzhiyun regulator-always-on; 192*4882a593Smuzhiyun interrupts = <IT_CURLIM_LDO6 0>; 193*4882a593Smuzhiyun }; 194*4882a593Smuzhiyun 195*4882a593Smuzhiyun vref_ddr: vref_ddr { 196*4882a593Smuzhiyun regulator-name = "vref_ddr"; 197*4882a593Smuzhiyun regulator-always-on; 198*4882a593Smuzhiyun }; 199*4882a593Smuzhiyun 200*4882a593Smuzhiyun bst_out: boost { 201*4882a593Smuzhiyun regulator-name = "bst_out"; 202*4882a593Smuzhiyun interrupts = <IT_OCP_BOOST 0>; 203*4882a593Smuzhiyun }; 204*4882a593Smuzhiyun 205*4882a593Smuzhiyun vbus_otg: pwr_sw1 { 206*4882a593Smuzhiyun regulator-name = "vbus_otg"; 207*4882a593Smuzhiyun interrupts = <IT_OCP_OTG 0>; 208*4882a593Smuzhiyun }; 209*4882a593Smuzhiyun 210*4882a593Smuzhiyun vbus_sw: pwr_sw2 { 211*4882a593Smuzhiyun regulator-name = "vbus_sw"; 212*4882a593Smuzhiyun interrupts = <IT_OCP_SWOUT 0>; 213*4882a593Smuzhiyun regulator-active-discharge = <1>; 214*4882a593Smuzhiyun }; 215*4882a593Smuzhiyun }; 216*4882a593Smuzhiyun 217*4882a593Smuzhiyun onkey { 218*4882a593Smuzhiyun compatible = "st,stpmic1-onkey"; 219*4882a593Smuzhiyun interrupts = <IT_PONKEY_F 0>, <IT_PONKEY_R 0>; 220*4882a593Smuzhiyun interrupt-names = "onkey-falling", "onkey-rising"; 221*4882a593Smuzhiyun power-off-time-sec = <10>; 222*4882a593Smuzhiyun }; 223*4882a593Smuzhiyun 224*4882a593Smuzhiyun watchdog { 225*4882a593Smuzhiyun compatible = "st,stpmic1-wdt"; 226*4882a593Smuzhiyun status = "disabled"; 227*4882a593Smuzhiyun }; 228*4882a593Smuzhiyun }; 229*4882a593Smuzhiyun}; 230*4882a593Smuzhiyun 231*4882a593Smuzhiyun&ipcc { 232*4882a593Smuzhiyun status = "okay"; 233*4882a593Smuzhiyun}; 234*4882a593Smuzhiyun 235*4882a593Smuzhiyun&iwdg2 { 236*4882a593Smuzhiyun timeout-sec = <32>; 237*4882a593Smuzhiyun status = "okay"; 238*4882a593Smuzhiyun}; 239*4882a593Smuzhiyun 240*4882a593Smuzhiyun&m4_rproc { 241*4882a593Smuzhiyun memory-region = <&retram>, <&mcuram>, <&mcuram2>, <&vdev0vring0>, 242*4882a593Smuzhiyun <&vdev0vring1>, <&vdev0buffer>; 243*4882a593Smuzhiyun mboxes = <&ipcc 0>, <&ipcc 1>, <&ipcc 2>; 244*4882a593Smuzhiyun mbox-names = "vq0", "vq1", "shutdown"; 245*4882a593Smuzhiyun interrupt-parent = <&exti>; 246*4882a593Smuzhiyun interrupts = <68 1>; 247*4882a593Smuzhiyun status = "okay"; 248*4882a593Smuzhiyun}; 249*4882a593Smuzhiyun 250*4882a593Smuzhiyun&rng1 { 251*4882a593Smuzhiyun status = "okay"; 252*4882a593Smuzhiyun}; 253*4882a593Smuzhiyun 254*4882a593Smuzhiyun&rtc { 255*4882a593Smuzhiyun status = "okay"; 256*4882a593Smuzhiyun}; 257*4882a593Smuzhiyun 258*4882a593Smuzhiyun&sdmmc2 { 259*4882a593Smuzhiyun pinctrl-names = "default", "opendrain", "sleep"; 260*4882a593Smuzhiyun pinctrl-0 = <&sdmmc2_b4_pins_a &sdmmc2_d47_pins_d>; 261*4882a593Smuzhiyun pinctrl-1 = <&sdmmc2_b4_od_pins_a &sdmmc2_d47_pins_d>; 262*4882a593Smuzhiyun pinctrl-2 = <&sdmmc2_b4_sleep_pins_a &sdmmc2_d47_sleep_pins_d>; 263*4882a593Smuzhiyun non-removable; 264*4882a593Smuzhiyun no-sd; 265*4882a593Smuzhiyun no-sdio; 266*4882a593Smuzhiyun st,neg-edge; 267*4882a593Smuzhiyun bus-width = <8>; 268*4882a593Smuzhiyun vmmc-supply = <&v3v3>; 269*4882a593Smuzhiyun vqmmc-supply = <&vdd>; 270*4882a593Smuzhiyun mmc-ddr-3_3v; 271*4882a593Smuzhiyun status = "okay"; 272*4882a593Smuzhiyun}; 273*4882a593Smuzhiyun 274