1 // SPDX-License-Identifier: GPL-2.0+ 2 3 #include <dt-bindings/gpio/gpio.h> 4 #include <dt-bindings/interrupt-controller/irq.h> 5 #include <dt-bindings/interrupt-controller/arm-gic.h> 6 #include <dt-bindings/pinctrl/rockchip.h> 7 #include <dt-bindings/clock/rk3036-cru.h> 8 #include "skeleton.dtsi" 9 10 / { 11 compatible = "rockchip,rk3036"; 12 13 interrupt-parent = <&gic>; 14 15 aliases { 16 gpio0 = &gpio0; 17 gpio1 = &gpio1; 18 gpio2 = &gpio2; 19 i2c1 = &i2c1; 20 serial0 = &uart0; 21 serial1 = &uart1; 22 serial2 = &uart2; 23 mmc0 = &emmc; 24 mmc1 = &sdmmc; 25 }; 26 27 memory { 28 device_type = "memory"; 29 reg = <0x60000000 0x40000000>; 30 }; 31 32 arm-pmu { 33 compatible = "arm,cortex-a7-pmu"; 34 interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>, 35 <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>; 36 interrupt-affinity = <&cpu0>, <&cpu1>; 37 }; 38 39 cpus { 40 #address-cells = <1>; 41 #size-cells = <0>; 42 enable-method = "rockchip,rk3036-smp"; 43 44 cpu0: cpu@f00 { 45 device_type = "cpu"; 46 compatible = "arm,cortex-a7"; 47 reg = <0xf00>; 48 operating-points = < 49 /* KHz uV */ 50 816000 1000000 51 >; 52 #cooling-cells = <2>; /* min followed by max */ 53 clock-latency = <40000>; 54 clocks = <&cru ARMCLK>; 55 resets = <&cru SRST_CORE0>; 56 }; 57 cpu1: cpu@f01 { 58 device_type = "cpu"; 59 compatible = "arm,cortex-a7"; 60 reg = <0xf01>; 61 resets = <&cru SRST_CORE1>; 62 }; 63 }; 64 65 amba { 66 compatible = "arm,amba-bus"; 67 #address-cells = <1>; 68 #size-cells = <1>; 69 ranges; 70 71 pdma: pdma@20078000 { 72 compatible = "arm,pl330", "arm,primecell"; 73 reg = <0x20078000 0x4000>; 74 arm,pl330-broken-no-flushp; 75 interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>, 76 <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>; 77 #dma-cells = <1>; 78 clocks = <&cru ACLK_DMAC2>; 79 clock-names = "apb_pclk"; 80 }; 81 }; 82 83 xin24m: oscillator { 84 compatible = "fixed-clock"; 85 clock-frequency = <24000000>; 86 clock-output-names = "xin24m"; 87 #clock-cells = <0>; 88 }; 89 90 timer { 91 compatible = "arm,armv7-timer"; 92 arm,cpu-registers-not-fw-configured; 93 interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>, 94 <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>, 95 <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>, 96 <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>; 97 clock-frequency = <24000000>; 98 }; 99 100 cru: clock-controller@20000000 { 101 compatible = "rockchip,rk3036-cru"; 102 reg = <0x20000000 0x1000>; 103 rockchip,grf = <&grf>; 104 #clock-cells = <1>; 105 #reset-cells = <1>; 106 assigned-clocks = <&cru PLL_GPLL>; 107 assigned-clock-rates = <594000000>; 108 }; 109 110 uart0: serial@20060000 { 111 compatible = "rockchip,rk3036-uart", "snps,dw-apb-uart"; 112 reg = <0x20060000 0x100>; 113 interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>; 114 reg-shift = <2>; 115 reg-io-width = <4>; 116 clock-frequency = <24000000>; 117 clocks = <&cru SCLK_UART0>, <&cru PCLK_UART0>; 118 clock-names = "baudclk", "apb_pclk"; 119 pinctrl-names = "default"; 120 pinctrl-0 = <&uart0_xfer &uart0_cts &uart0_rts>; 121 }; 122 123 uart1: serial@20064000 { 124 compatible = "rockchip,rk3036-uart", "snps,dw-apb-uart"; 125 reg = <0x20064000 0x100>; 126 interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>; 127 reg-shift = <2>; 128 reg-io-width = <4>; 129 clock-frequency = <24000000>; 130 clocks = <&cru SCLK_UART1>, <&cru PCLK_UART1>; 131 clock-names = "baudclk", "apb_pclk"; 132 pinctrl-names = "default"; 133 pinctrl-0 = <&uart1_xfer>; 134 }; 135 136 uart2: serial@20068000 { 137 compatible = "rockchip,rk3036-uart", "snps,dw-apb-uart"; 138 reg = <0x20068000 0x100>; 139 interrupts = <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>; 140 reg-shift = <2>; 141 reg-io-width = <4>; 142 clock-frequency = <24000000>; 143 clocks = <&cru SCLK_UART2>, <&cru PCLK_UART2>; 144 clock-names = "baudclk", "apb_pclk"; 145 pinctrl-names = "default"; 146 pinctrl-0 = <&uart2_xfer>; 147 }; 148 149 pwm0: pwm@20050000 { 150 compatible = "rockchip,rk2928-pwm"; 151 reg = <0x20050000 0x10>; 152 #pwm-cells = <3>; 153 pinctrl-names = "default"; 154 pinctrl-0 = <&pwm0_pin>; 155 clocks = <&cru PCLK_PWM>; 156 clock-names = "pwm"; 157 status = "disabled"; 158 }; 159 160 pwm1: pwm@20050010 { 161 compatible = "rockchip,rk2928-pwm"; 162 reg = <0x20050010 0x10>; 163 #pwm-cells = <3>; 164 pinctrl-names = "default"; 165 pinctrl-0 = <&pwm1_pin>; 166 clocks = <&cru PCLK_PWM>; 167 clock-names = "pwm"; 168 status = "disabled"; 169 }; 170 171 pwm2: pwm@20050020 { 172 compatible = "rockchip,rk2928-pwm"; 173 reg = <0x20050020 0x10>; 174 #pwm-cells = <3>; 175 pinctrl-names = "default"; 176 pinctrl-0 = <&pwm2_pin>; 177 clocks = <&cru PCLK_PWM>; 178 clock-names = "pwm"; 179 status = "disabled"; 180 }; 181 182 pwm3: pwm@20050030 { 183 compatible = "rockchip,rk2928-pwm"; 184 reg = <0x20050030 0x10>; 185 #pwm-cells = <2>; 186 pinctrl-names = "default"; 187 pinctrl-0 = <&pwm3_pin>; 188 clocks = <&cru PCLK_PWM>; 189 clock-names = "pwm"; 190 status = "disabled"; 191 }; 192 193 sram: sram@10080000 { 194 compatible = "rockchip,rk3036-smp-sram", "mmio-sram"; 195 reg = <0x10080000 0x2000>; 196 }; 197 198 gic: interrupt-controller@10139000 { 199 compatible = "arm,gic-400"; 200 interrupt-controller; 201 #interrupt-cells = <3>; 202 #address-cells = <0>; 203 204 reg = <0x10139000 0x1000>, 205 <0x1013a000 0x1000>, 206 <0x1013c000 0x2000>, 207 <0x1013e000 0x2000>; 208 interrupts = <GIC_PPI 9 0xf04>; 209 }; 210 211 grf: syscon@20008000 { 212 compatible = "rockchip,rk3036-grf", "syscon"; 213 reg = <0x20008000 0x1000>; 214 }; 215 216 usb_otg: usb@10180000 { 217 compatible = "rockchip,rk3288-usb", "rockchip,rk3066-usb", 218 "snps,dwc2"; 219 reg = <0x10180000 0x40000>; 220 interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>; 221 clocks = <&cru HCLK_OTG0>; 222 clock-names = "otg"; 223 dr_mode = "otg"; 224 g-np-tx-fifo-size = <16>; 225 g-rx-fifo-size = <275>; 226 g-tx-fifo-size = <256 128 128 64 64 32>; 227 g-use-dma; 228 status = "disabled"; 229 }; 230 231 usb_host: usb@101c0000 { 232 compatible = "rockchip,rk3288-usb", "rockchip,rk3066-usb", 233 "snps,dwc2"; 234 reg = <0x101c0000 0x40000>; 235 interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>; 236 clocks = <&cru HCLK_OTG1>; 237 clock-names = "otg"; 238 dr_mode = "host"; 239 status = "disabled"; 240 }; 241 242 emmc: dwmmc@1021c000 { 243 compatible = "rockchip,rk3288-dw-mshc"; 244 clock-frequency = <37500000>; 245 max-frequency = <37500000>; 246 clocks = <&cru HCLK_EMMC>, <&cru SCLK_EMMC>, 247 <&cru SCLK_EMMC_DRV>, <&cru SCLK_EMMC_SAMPLE>; 248 clock-names = "biu", "ciu", "ciu_drv", "ciu_sample"; 249 dmas = <&pdma 12>; 250 dma-names = "rx-tx"; 251 fifo-depth = <0x100>; 252 interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>; 253 reg = <0x1021c000 0x4000>; 254 broken-cd; 255 bus-width = <8>; 256 cap-mmc-highspeed; 257 mmc-ddr-1_8v; 258 disable-wp; 259 fifo-mode; 260 non-removable; 261 num-slots = <1>; 262 default-sample-phase = <158>; 263 pinctrl-names = "default"; 264 pinctrl-0 = <&emmc_clk &emmc_cmd &emmc_bus8>; 265 }; 266 267 sdmmc: dwmmc@10214000 { 268 compatible = "rockchip,rk3036-dw-mshc", "rockchip,rk3288-dw-mshc"; 269 reg = <0x10214000 0x4000>; 270 clock-frequency = <37500000>; 271 max-frequency = <37500000>; 272 clocks = <&cru HCLK_SDMMC>, <&cru SCLK_SDMMC>; 273 clock-names = "biu", "ciu"; 274 fifo-depth = <0x100>; 275 interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>; 276 status = "disabled"; 277 }; 278 279 pinctrl: pinctrl { 280 compatible = "rockchip,rk3036-pinctrl"; 281 rockchip,grf = <&grf>; 282 #address-cells = <1>; 283 #size-cells = <1>; 284 ranges; 285 286 gpio0: gpio0@2007c000 { 287 compatible = "rockchip,gpio-bank"; 288 reg = <0x2007c000 0x100>; 289 interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>; 290 clocks = <&cru PCLK_GPIO0>; 291 292 gpio-controller; 293 #gpio-cells = <2>; 294 295 interrupt-controller; 296 #interrupt-cells = <2>; 297 }; 298 299 gpio1: gpio1@20080000 { 300 compatible = "rockchip,gpio-bank"; 301 reg = <0x20080000 0x100>; 302 interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>; 303 clocks = <&cru PCLK_GPIO1>; 304 305 gpio-controller; 306 #gpio-cells = <2>; 307 308 interrupt-controller; 309 #interrupt-cells = <2>; 310 }; 311 312 gpio2: gpio2@20084000 { 313 compatible = "rockchip,gpio-bank"; 314 reg = <0x20084000 0x100>; 315 interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>; 316 clocks = <&cru PCLK_GPIO2>; 317 318 gpio-controller; 319 #gpio-cells = <2>; 320 321 interrupt-controller; 322 #interrupt-cells = <2>; 323 }; 324 325 pcfg_pull_up: pcfg-pull-up { 326 bias-pull-up; 327 }; 328 329 pcfg_pull_down: pcfg-pull-down { 330 bias-pull-down; 331 }; 332 333 pcfg_pull_none: pcfg-pull-none { 334 bias-disable; 335 }; 336 337 emmc { 338 /* 339 * We run eMMC at max speed; bump up drive strength. 340 * We also have external pulls, so disable the internal ones. 341 */ 342 emmc_clk: emmc-clk { 343 rockchip,pins = <2 4 RK_FUNC_2 &pcfg_pull_none>; 344 }; 345 346 emmc_cmd: emmc-cmd { 347 rockchip,pins = <2 1 RK_FUNC_2 &pcfg_pull_none>; 348 }; 349 350 emmc_bus8: emmc-bus8 { 351 rockchip,pins = <1 24 RK_FUNC_2 &pcfg_pull_none>, 352 <1 25 RK_FUNC_2 &pcfg_pull_none>, 353 <1 26 RK_FUNC_2 &pcfg_pull_none>, 354 <1 27 RK_FUNC_2 &pcfg_pull_none>; 355 /* 356 <1 28 RK_FUNC_2 &pcfg_pull_up>, 357 <1 29 RK_FUNC_2 &pcfg_pull_up>, 358 <1 30 RK_FUNC_2 &pcfg_pull_up>, 359 <1 31 RK_FUNC_2 &pcfg_pull_up>; 360 */ 361 }; 362 }; 363 364 uart0 { 365 uart0_xfer: uart0-xfer { 366 rockchip,pins = <0 16 RK_FUNC_1 &pcfg_pull_none>, 367 <0 17 RK_FUNC_1 &pcfg_pull_none>; 368 }; 369 370 uart0_cts: uart0-cts { 371 rockchip,pins = <0 18 RK_FUNC_1 &pcfg_pull_none>; 372 }; 373 374 uart0_rts: uart0-rts { 375 rockchip,pins = <0 19 RK_FUNC_1 &pcfg_pull_none>; 376 }; 377 }; 378 379 uart1 { 380 uart1_xfer: uart1-xfer { 381 rockchip,pins = <2 22 RK_FUNC_1 &pcfg_pull_none>, 382 <2 23 RK_FUNC_1 &pcfg_pull_none>; 383 }; 384 /* no rts / cts for uart1 */ 385 }; 386 387 uart2 { 388 uart2_xfer: uart2-xfer { 389 rockchip,pins = <1 18 RK_FUNC_2 &pcfg_pull_none>, 390 <1 19 RK_FUNC_2 &pcfg_pull_none>; 391 }; 392 /* no rts / cts for uart2 */ 393 }; 394 395 pwm0 { 396 pwm0_pin: pwm0-pin { 397 rockchip,pins = <0 0 RK_FUNC_2 &pcfg_pull_none>; 398 }; 399 }; 400 401 pwm1 { 402 pwm1_pin: pwm1-pin { 403 rockchip,pins = <0 1 RK_FUNC_2 &pcfg_pull_none>; 404 }; 405 }; 406 407 pwm2 { 408 pwm2_pin: pwm2-pin { 409 rockchip,pins = <0 1 2 &pcfg_pull_none>; 410 }; 411 }; 412 413 pwm3 { 414 pwm3_pin: pwm3-pin { 415 rockchip,pins = <0 27 1 &pcfg_pull_none>; 416 }; 417 }; 418 419 i2c1 { 420 i2c1_xfer: i2c1-xfer { 421 rockchip,pins = <0 2 RK_FUNC_1 &pcfg_pull_none>, 422 <0 3 RK_FUNC_1 &pcfg_pull_none>; 423 }; 424 }; 425 }; 426 427 i2c1: i2c@20056000 { 428 compatible = "rockchip,rk3288-i2c"; 429 reg = <0x20056000 0x1000>; 430 interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>; 431 #address-cells = <1>; 432 #size-cells = <0>; 433 clock-names = "i2c"; 434 clocks = <&cru PCLK_I2C1>; 435 pinctrl-names = "default"; 436 pinctrl-0 = <&i2c1_xfer>; 437 status = "disabled"; 438 }; 439 }; 440