sun5i-a13.dtsi revision 284090
1/* 2 * Copyright 2012 Maxime Ripard 3 * 4 * Maxime Ripard <maxime.ripard@free-electrons.com> 5 * 6 * The code contained herein is licensed under the GNU General Public 7 * License. You may obtain a copy of the GNU General Public License 8 * Version 2 or later at the following locations: 9 * 10 * http://www.opensource.org/licenses/gpl-license.html 11 * http://www.gnu.org/copyleft/gpl.html 12 */ 13 14#include "skeleton.dtsi" 15 16#include <dt-bindings/thermal/thermal.h> 17 18#include <dt-bindings/dma/sun4i-a10.h> 19#include <dt-bindings/pinctrl/sun4i-a10.h> 20 21/ { 22 interrupt-parent = <&intc>; 23 24 chosen { 25 #address-cells = <1>; 26 #size-cells = <1>; 27 ranges; 28 29 framebuffer@0 { 30 compatible = "allwinner,simple-framebuffer", 31 "simple-framebuffer"; 32 allwinner,pipeline = "de_be0-lcd0"; 33 clocks = <&pll5 1>, <&ahb_gates 36>, <&ahb_gates 44>; 34 status = "disabled"; 35 }; 36 }; 37 38 cpus { 39 #address-cells = <1>; 40 #size-cells = <0>; 41 42 cpu0: cpu@0 { 43 device_type = "cpu"; 44 compatible = "arm,cortex-a8"; 45 reg = <0x0>; 46 clocks = <&cpu>; 47 clock-latency = <244144>; /* 8 32k periods */ 48 operating-points = < 49 /* kHz uV */ 50 1104000 1500000 51 1008000 1400000 52 912000 1350000 53 864000 1300000 54 624000 1200000 55 576000 1200000 56 432000 1200000 57 >; 58 #cooling-cells = <2>; 59 cooling-min-level = <0>; 60 cooling-max-level = <6>; 61 }; 62 }; 63 64 thermal-zones { 65 cpu_thermal { 66 /* milliseconds */ 67 polling-delay-passive = <250>; 68 polling-delay = <1000>; 69 thermal-sensors = <&rtp>; 70 71 cooling-maps { 72 map0 { 73 trip = <&cpu_alert0>; 74 cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; 75 }; 76 }; 77 78 trips { 79 cpu_alert0: cpu_alert0 { 80 /* milliCelsius */ 81 temperature = <850000>; 82 hysteresis = <2000>; 83 type = "passive"; 84 }; 85 86 cpu_crit: cpu_crit { 87 /* milliCelsius */ 88 temperature = <100000>; 89 hysteresis = <2000>; 90 type = "critical"; 91 }; 92 }; 93 }; 94 }; 95 96 memory { 97 reg = <0x40000000 0x20000000>; 98 }; 99 100 clocks { 101 #address-cells = <1>; 102 #size-cells = <1>; 103 ranges; 104 105 /* 106 * This is a dummy clock, to be used as placeholder on 107 * other mux clocks when a specific parent clock is not 108 * yet implemented. It should be dropped when the driver 109 * is complete. 110 */ 111 dummy: dummy { 112 #clock-cells = <0>; 113 compatible = "fixed-clock"; 114 clock-frequency = <0>; 115 }; 116 117 osc24M: clk@01c20050 { 118 #clock-cells = <0>; 119 compatible = "allwinner,sun4i-a10-osc-clk"; 120 reg = <0x01c20050 0x4>; 121 clock-frequency = <24000000>; 122 clock-output-names = "osc24M"; 123 }; 124 125 osc32k: clk@0 { 126 #clock-cells = <0>; 127 compatible = "fixed-clock"; 128 clock-frequency = <32768>; 129 clock-output-names = "osc32k"; 130 }; 131 132 pll1: clk@01c20000 { 133 #clock-cells = <0>; 134 compatible = "allwinner,sun4i-a10-pll1-clk"; 135 reg = <0x01c20000 0x4>; 136 clocks = <&osc24M>; 137 clock-output-names = "pll1"; 138 }; 139 140 pll4: clk@01c20018 { 141 #clock-cells = <0>; 142 compatible = "allwinner,sun4i-a10-pll1-clk"; 143 reg = <0x01c20018 0x4>; 144 clocks = <&osc24M>; 145 clock-output-names = "pll4"; 146 }; 147 148 pll5: clk@01c20020 { 149 #clock-cells = <1>; 150 compatible = "allwinner,sun4i-a10-pll5-clk"; 151 reg = <0x01c20020 0x4>; 152 clocks = <&osc24M>; 153 clock-output-names = "pll5_ddr", "pll5_other"; 154 }; 155 156 pll6: clk@01c20028 { 157 #clock-cells = <1>; 158 compatible = "allwinner,sun4i-a10-pll6-clk"; 159 reg = <0x01c20028 0x4>; 160 clocks = <&osc24M>; 161 clock-output-names = "pll6_sata", "pll6_other", "pll6"; 162 }; 163 164 /* dummy is 200M */ 165 cpu: cpu@01c20054 { 166 #clock-cells = <0>; 167 compatible = "allwinner,sun4i-a10-cpu-clk"; 168 reg = <0x01c20054 0x4>; 169 clocks = <&osc32k>, <&osc24M>, <&pll1>, <&dummy>; 170 clock-output-names = "cpu"; 171 }; 172 173 axi: axi@01c20054 { 174 #clock-cells = <0>; 175 compatible = "allwinner,sun4i-a10-axi-clk"; 176 reg = <0x01c20054 0x4>; 177 clocks = <&cpu>; 178 clock-output-names = "axi"; 179 }; 180 181 axi_gates: clk@01c2005c { 182 #clock-cells = <1>; 183 compatible = "allwinner,sun4i-a10-axi-gates-clk"; 184 reg = <0x01c2005c 0x4>; 185 clocks = <&axi>; 186 clock-output-names = "axi_dram"; 187 }; 188 189 ahb: ahb@01c20054 { 190 #clock-cells = <0>; 191 compatible = "allwinner,sun4i-a10-ahb-clk"; 192 reg = <0x01c20054 0x4>; 193 clocks = <&axi>; 194 clock-output-names = "ahb"; 195 }; 196 197 ahb_gates: clk@01c20060 { 198 #clock-cells = <1>; 199 compatible = "allwinner,sun5i-a13-ahb-gates-clk"; 200 reg = <0x01c20060 0x8>; 201 clocks = <&ahb>; 202 clock-output-names = "ahb_usbotg", "ahb_ehci", "ahb_ohci", 203 "ahb_ss", "ahb_dma", "ahb_bist", "ahb_mmc0", 204 "ahb_mmc1", "ahb_mmc2", "ahb_nand", "ahb_sdram", 205 "ahb_spi0", "ahb_spi1", "ahb_spi2", "ahb_stimer", 206 "ahb_ve", "ahb_lcd", "ahb_csi", "ahb_de_be", 207 "ahb_de_fe", "ahb_iep", "ahb_mali400"; 208 }; 209 210 apb0: apb0@01c20054 { 211 #clock-cells = <0>; 212 compatible = "allwinner,sun4i-a10-apb0-clk"; 213 reg = <0x01c20054 0x4>; 214 clocks = <&ahb>; 215 clock-output-names = "apb0"; 216 }; 217 218 apb0_gates: clk@01c20068 { 219 #clock-cells = <1>; 220 compatible = "allwinner,sun5i-a13-apb0-gates-clk"; 221 reg = <0x01c20068 0x4>; 222 clocks = <&apb0>; 223 clock-output-names = "apb0_codec", "apb0_pio", "apb0_ir"; 224 }; 225 226 apb1: clk@01c20058 { 227 #clock-cells = <0>; 228 compatible = "allwinner,sun4i-a10-apb1-clk"; 229 reg = <0x01c20058 0x4>; 230 clocks = <&osc24M>, <&pll6 1>, <&osc32k>; 231 clock-output-names = "apb1"; 232 }; 233 234 apb1_gates: clk@01c2006c { 235 #clock-cells = <1>; 236 compatible = "allwinner,sun5i-a13-apb1-gates-clk"; 237 reg = <0x01c2006c 0x4>; 238 clocks = <&apb1>; 239 clock-output-names = "apb1_i2c0", "apb1_i2c1", 240 "apb1_i2c2", "apb1_uart1", "apb1_uart3"; 241 }; 242 243 nand_clk: clk@01c20080 { 244 #clock-cells = <0>; 245 compatible = "allwinner,sun4i-a10-mod0-clk"; 246 reg = <0x01c20080 0x4>; 247 clocks = <&osc24M>, <&pll6 1>, <&pll5 1>; 248 clock-output-names = "nand"; 249 }; 250 251 ms_clk: clk@01c20084 { 252 #clock-cells = <0>; 253 compatible = "allwinner,sun4i-a10-mod0-clk"; 254 reg = <0x01c20084 0x4>; 255 clocks = <&osc24M>, <&pll6 1>, <&pll5 1>; 256 clock-output-names = "ms"; 257 }; 258 259 mmc0_clk: clk@01c20088 { 260 #clock-cells = <1>; 261 compatible = "allwinner,sun4i-a10-mmc-clk"; 262 reg = <0x01c20088 0x4>; 263 clocks = <&osc24M>, <&pll6 1>, <&pll5 1>; 264 clock-output-names = "mmc0", 265 "mmc0_output", 266 "mmc0_sample"; 267 }; 268 269 mmc1_clk: clk@01c2008c { 270 #clock-cells = <1>; 271 compatible = "allwinner,sun4i-a10-mmc-clk"; 272 reg = <0x01c2008c 0x4>; 273 clocks = <&osc24M>, <&pll6 1>, <&pll5 1>; 274 clock-output-names = "mmc1", 275 "mmc1_output", 276 "mmc1_sample"; 277 }; 278 279 mmc2_clk: clk@01c20090 { 280 #clock-cells = <1>; 281 compatible = "allwinner,sun4i-a10-mmc-clk"; 282 reg = <0x01c20090 0x4>; 283 clocks = <&osc24M>, <&pll6 1>, <&pll5 1>; 284 clock-output-names = "mmc2", 285 "mmc2_output", 286 "mmc2_sample"; 287 }; 288 289 ts_clk: clk@01c20098 { 290 #clock-cells = <0>; 291 compatible = "allwinner,sun4i-a10-mod0-clk"; 292 reg = <0x01c20098 0x4>; 293 clocks = <&osc24M>, <&pll6 1>, <&pll5 1>; 294 clock-output-names = "ts"; 295 }; 296 297 ss_clk: clk@01c2009c { 298 #clock-cells = <0>; 299 compatible = "allwinner,sun4i-a10-mod0-clk"; 300 reg = <0x01c2009c 0x4>; 301 clocks = <&osc24M>, <&pll6 1>, <&pll5 1>; 302 clock-output-names = "ss"; 303 }; 304 305 spi0_clk: clk@01c200a0 { 306 #clock-cells = <0>; 307 compatible = "allwinner,sun4i-a10-mod0-clk"; 308 reg = <0x01c200a0 0x4>; 309 clocks = <&osc24M>, <&pll6 1>, <&pll5 1>; 310 clock-output-names = "spi0"; 311 }; 312 313 spi1_clk: clk@01c200a4 { 314 #clock-cells = <0>; 315 compatible = "allwinner,sun4i-a10-mod0-clk"; 316 reg = <0x01c200a4 0x4>; 317 clocks = <&osc24M>, <&pll6 1>, <&pll5 1>; 318 clock-output-names = "spi1"; 319 }; 320 321 spi2_clk: clk@01c200a8 { 322 #clock-cells = <0>; 323 compatible = "allwinner,sun4i-a10-mod0-clk"; 324 reg = <0x01c200a8 0x4>; 325 clocks = <&osc24M>, <&pll6 1>, <&pll5 1>; 326 clock-output-names = "spi2"; 327 }; 328 329 ir0_clk: clk@01c200b0 { 330 #clock-cells = <0>; 331 compatible = "allwinner,sun4i-a10-mod0-clk"; 332 reg = <0x01c200b0 0x4>; 333 clocks = <&osc24M>, <&pll6 1>, <&pll5 1>; 334 clock-output-names = "ir0"; 335 }; 336 337 usb_clk: clk@01c200cc { 338 #clock-cells = <1>; 339 #reset-cells = <1>; 340 compatible = "allwinner,sun5i-a13-usb-clk"; 341 reg = <0x01c200cc 0x4>; 342 clocks = <&pll6 1>; 343 clock-output-names = "usb_ohci0", "usb_phy"; 344 }; 345 346 mbus_clk: clk@01c2015c { 347 #clock-cells = <0>; 348 compatible = "allwinner,sun5i-a13-mbus-clk"; 349 reg = <0x01c2015c 0x4>; 350 clocks = <&osc24M>, <&pll6 1>, <&pll5 1>; 351 clock-output-names = "mbus"; 352 }; 353 }; 354 355 soc@01c00000 { 356 compatible = "simple-bus"; 357 #address-cells = <1>; 358 #size-cells = <1>; 359 ranges; 360 361 dma: dma-controller@01c02000 { 362 compatible = "allwinner,sun4i-a10-dma"; 363 reg = <0x01c02000 0x1000>; 364 interrupts = <27>; 365 clocks = <&ahb_gates 6>; 366 #dma-cells = <2>; 367 }; 368 369 spi0: spi@01c05000 { 370 compatible = "allwinner,sun4i-a10-spi"; 371 reg = <0x01c05000 0x1000>; 372 interrupts = <10>; 373 clocks = <&ahb_gates 20>, <&spi0_clk>; 374 clock-names = "ahb", "mod"; 375 dmas = <&dma SUN4I_DMA_DEDICATED 27>, 376 <&dma SUN4I_DMA_DEDICATED 26>; 377 dma-names = "rx", "tx"; 378 status = "disabled"; 379 #address-cells = <1>; 380 #size-cells = <0>; 381 }; 382 383 spi1: spi@01c06000 { 384 compatible = "allwinner,sun4i-a10-spi"; 385 reg = <0x01c06000 0x1000>; 386 interrupts = <11>; 387 clocks = <&ahb_gates 21>, <&spi1_clk>; 388 clock-names = "ahb", "mod"; 389 dmas = <&dma SUN4I_DMA_DEDICATED 9>, 390 <&dma SUN4I_DMA_DEDICATED 8>; 391 dma-names = "rx", "tx"; 392 status = "disabled"; 393 #address-cells = <1>; 394 #size-cells = <0>; 395 }; 396 397 mmc0: mmc@01c0f000 { 398 compatible = "allwinner,sun5i-a13-mmc"; 399 reg = <0x01c0f000 0x1000>; 400 clocks = <&ahb_gates 8>, 401 <&mmc0_clk 0>, 402 <&mmc0_clk 1>, 403 <&mmc0_clk 2>; 404 clock-names = "ahb", 405 "mmc", 406 "output", 407 "sample"; 408 interrupts = <32>; 409 status = "disabled"; 410 }; 411 412 mmc2: mmc@01c11000 { 413 compatible = "allwinner,sun5i-a13-mmc"; 414 reg = <0x01c11000 0x1000>; 415 clocks = <&ahb_gates 10>, 416 <&mmc2_clk 0>, 417 <&mmc2_clk 1>, 418 <&mmc2_clk 2>; 419 clock-names = "ahb", 420 "mmc", 421 "output", 422 "sample"; 423 interrupts = <34>; 424 status = "disabled"; 425 }; 426 427 usbphy: phy@01c13400 { 428 #phy-cells = <1>; 429 compatible = "allwinner,sun5i-a13-usb-phy"; 430 reg = <0x01c13400 0x10 0x01c14800 0x4>; 431 reg-names = "phy_ctrl", "pmu1"; 432 clocks = <&usb_clk 8>; 433 clock-names = "usb_phy"; 434 resets = <&usb_clk 0>, <&usb_clk 1>; 435 reset-names = "usb0_reset", "usb1_reset"; 436 status = "disabled"; 437 }; 438 439 ehci0: usb@01c14000 { 440 compatible = "allwinner,sun5i-a13-ehci", "generic-ehci"; 441 reg = <0x01c14000 0x100>; 442 interrupts = <39>; 443 clocks = <&ahb_gates 1>; 444 phys = <&usbphy 1>; 445 phy-names = "usb"; 446 status = "disabled"; 447 }; 448 449 ohci0: usb@01c14400 { 450 compatible = "allwinner,sun5i-a13-ohci", "generic-ohci"; 451 reg = <0x01c14400 0x100>; 452 interrupts = <40>; 453 clocks = <&usb_clk 6>, <&ahb_gates 2>; 454 phys = <&usbphy 1>; 455 phy-names = "usb"; 456 status = "disabled"; 457 }; 458 459 spi2: spi@01c17000 { 460 compatible = "allwinner,sun4i-a10-spi"; 461 reg = <0x01c17000 0x1000>; 462 interrupts = <12>; 463 clocks = <&ahb_gates 22>, <&spi2_clk>; 464 clock-names = "ahb", "mod"; 465 dmas = <&dma SUN4I_DMA_DEDICATED 29>, 466 <&dma SUN4I_DMA_DEDICATED 28>; 467 dma-names = "rx", "tx"; 468 status = "disabled"; 469 #address-cells = <1>; 470 #size-cells = <0>; 471 }; 472 473 intc: interrupt-controller@01c20400 { 474 compatible = "allwinner,sun4i-a10-ic"; 475 reg = <0x01c20400 0x400>; 476 interrupt-controller; 477 #interrupt-cells = <1>; 478 }; 479 480 pio: pinctrl@01c20800 { 481 compatible = "allwinner,sun5i-a13-pinctrl"; 482 reg = <0x01c20800 0x400>; 483 interrupts = <28>; 484 clocks = <&apb0_gates 5>; 485 gpio-controller; 486 interrupt-controller; 487 #interrupt-cells = <2>; 488 #size-cells = <0>; 489 #gpio-cells = <3>; 490 491 uart1_pins_a: uart1@0 { 492 allwinner,pins = "PE10", "PE11"; 493 allwinner,function = "uart1"; 494 allwinner,drive = <SUN4I_PINCTRL_10_MA>; 495 allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; 496 }; 497 498 uart1_pins_b: uart1@1 { 499 allwinner,pins = "PG3", "PG4"; 500 allwinner,function = "uart1"; 501 allwinner,drive = <SUN4I_PINCTRL_10_MA>; 502 allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; 503 }; 504 505 i2c0_pins_a: i2c0@0 { 506 allwinner,pins = "PB0", "PB1"; 507 allwinner,function = "i2c0"; 508 allwinner,drive = <SUN4I_PINCTRL_10_MA>; 509 allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; 510 }; 511 512 i2c1_pins_a: i2c1@0 { 513 allwinner,pins = "PB15", "PB16"; 514 allwinner,function = "i2c1"; 515 allwinner,drive = <SUN4I_PINCTRL_10_MA>; 516 allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; 517 }; 518 519 i2c2_pins_a: i2c2@0 { 520 allwinner,pins = "PB17", "PB18"; 521 allwinner,function = "i2c2"; 522 allwinner,drive = <SUN4I_PINCTRL_10_MA>; 523 allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; 524 }; 525 526 mmc0_pins_a: mmc0@0 { 527 allwinner,pins = "PF0","PF1","PF2","PF3","PF4","PF5"; 528 allwinner,function = "mmc0"; 529 allwinner,drive = <SUN4I_PINCTRL_30_MA>; 530 allwinner,pull = <SUN4I_PINCTRL_NO_PULL>; 531 }; 532 }; 533 534 timer@01c20c00 { 535 compatible = "allwinner,sun4i-a10-timer"; 536 reg = <0x01c20c00 0x90>; 537 interrupts = <22>; 538 clocks = <&osc24M>; 539 }; 540 541 wdt: watchdog@01c20c90 { 542 compatible = "allwinner,sun4i-a10-wdt"; 543 reg = <0x01c20c90 0x10>; 544 }; 545 546 lradc: lradc@01c22800 { 547 compatible = "allwinner,sun4i-a10-lradc-keys"; 548 reg = <0x01c22800 0x100>; 549 interrupts = <31>; 550 status = "disabled"; 551 }; 552 553 sid: eeprom@01c23800 { 554 compatible = "allwinner,sun4i-a10-sid"; 555 reg = <0x01c23800 0x10>; 556 }; 557 558 rtp: rtp@01c25000 { 559 compatible = "allwinner,sun4i-a10-ts"; 560 reg = <0x01c25000 0x100>; 561 interrupts = <29>; 562 #thermal-sensor-cells = <0>; 563 }; 564 565 uart1: serial@01c28400 { 566 compatible = "snps,dw-apb-uart"; 567 reg = <0x01c28400 0x400>; 568 interrupts = <2>; 569 reg-shift = <2>; 570 reg-io-width = <4>; 571 clocks = <&apb1_gates 17>; 572 status = "disabled"; 573 }; 574 575 uart3: serial@01c28c00 { 576 compatible = "snps,dw-apb-uart"; 577 reg = <0x01c28c00 0x400>; 578 interrupts = <4>; 579 reg-shift = <2>; 580 reg-io-width = <4>; 581 clocks = <&apb1_gates 19>; 582 status = "disabled"; 583 }; 584 585 i2c0: i2c@01c2ac00 { 586 compatible = "allwinner,sun5i-a13-i2c", "allwinner,sun4i-a10-i2c"; 587 reg = <0x01c2ac00 0x400>; 588 interrupts = <7>; 589 clocks = <&apb1_gates 0>; 590 status = "disabled"; 591 #address-cells = <1>; 592 #size-cells = <0>; 593 }; 594 595 i2c1: i2c@01c2b000 { 596 compatible = "allwinner,sun5i-a13-i2c", "allwinner,sun4i-a10-i2c"; 597 reg = <0x01c2b000 0x400>; 598 interrupts = <8>; 599 clocks = <&apb1_gates 1>; 600 status = "disabled"; 601 #address-cells = <1>; 602 #size-cells = <0>; 603 }; 604 605 i2c2: i2c@01c2b400 { 606 compatible = "allwinner,sun5i-a13-i2c", "allwinner,sun4i-a10-i2c"; 607 reg = <0x01c2b400 0x400>; 608 interrupts = <9>; 609 clocks = <&apb1_gates 2>; 610 status = "disabled"; 611 #address-cells = <1>; 612 #size-cells = <0>; 613 }; 614 615 timer@01c60000 { 616 compatible = "allwinner,sun5i-a13-hstimer"; 617 reg = <0x01c60000 0x1000>; 618 interrupts = <82>, <83>; 619 clocks = <&ahb_gates 28>; 620 }; 621 }; 622}; 623