1/* 2 * Copyright 2012 Stefan Roese 3 * Stefan Roese <sr@denx.de> 4 * 5 * This file is dual-licensed: you can use it either under the terms 6 * of the GPL or the X11 license, at your option. Note that this dual 7 * licensing only applies to this file, and not this project as a 8 * whole. 9 * 10 * a) This library is free software; you can redistribute it and/or 11 * modify it under the terms of the GNU General Public License as 12 * published by the Free Software Foundation; either version 2 of the 13 * License, or (at your option) any later version. 14 * 15 * This library is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU General Public License for more details. 19 * 20 * Or, alternatively, 21 * 22 * b) Permission is hereby granted, free of charge, to any person 23 * obtaining a copy of this software and associated documentation 24 * files (the "Software"), to deal in the Software without 25 * restriction, including without limitation the rights to use, 26 * copy, modify, merge, publish, distribute, sublicense, and/or 27 * sell copies of the Software, and to permit persons to whom the 28 * Software is furnished to do so, subject to the following 29 * conditions: 30 * 31 * The above copyright notice and this permission notice shall be 32 * included in all copies or substantial portions of the Software. 33 * 34 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 35 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 36 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 37 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 38 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 39 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 40 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 41 * OTHER DEALINGS IN THE SOFTWARE. 42 */ 43 44#include <dt-bindings/thermal/thermal.h> 45#include <dt-bindings/dma/sun4i-a10.h> 46#include <dt-bindings/clock/sun4i-a10-ccu.h> 47#include <dt-bindings/reset/sun4i-a10-ccu.h> 48 49/ { 50 #address-cells = <1>; 51 #size-cells = <1>; 52 interrupt-parent = <&intc>; 53 54 aliases { 55 ethernet0 = &emac; 56 }; 57 58 chosen { 59 #address-cells = <1>; 60 #size-cells = <1>; 61 ranges; 62 63 framebuffer-lcd0-hdmi { 64 compatible = "allwinner,simple-framebuffer", 65 "simple-framebuffer"; 66 allwinner,pipeline = "de_be0-lcd0-hdmi"; 67 clocks = <&ccu CLK_AHB_LCD0>, <&ccu CLK_AHB_HDMI0>, 68 <&ccu CLK_AHB_DE_BE0>, <&ccu CLK_DE_BE0>, 69 <&ccu CLK_TCON0_CH1>, <&ccu CLK_DRAM_DE_BE0>; 70 status = "disabled"; 71 }; 72 73 framebuffer-fe0-lcd0-hdmi { 74 compatible = "allwinner,simple-framebuffer", 75 "simple-framebuffer"; 76 allwinner,pipeline = "de_fe0-de_be0-lcd0-hdmi"; 77 clocks = <&ccu CLK_AHB_LCD0>, <&ccu CLK_AHB_HDMI0>, 78 <&ccu CLK_AHB_DE_BE0>, <&ccu CLK_AHB_DE_FE0>, 79 <&ccu CLK_DE_BE0>, <&ccu CLK_DE_FE0>, 80 <&ccu CLK_TCON0_CH1>, <&ccu CLK_HDMI>, 81 <&ccu CLK_DRAM_DE_FE0>, <&ccu CLK_DRAM_DE_BE0>; 82 status = "disabled"; 83 }; 84 85 framebuffer-fe0-lcd0 { 86 compatible = "allwinner,simple-framebuffer", 87 "simple-framebuffer"; 88 allwinner,pipeline = "de_fe0-de_be0-lcd0"; 89 clocks = <&ccu CLK_AHB_LCD0>, <&ccu CLK_AHB_DE_BE0>, 90 <&ccu CLK_AHB_DE_FE0>, <&ccu CLK_DE_BE0>, 91 <&ccu CLK_DE_FE0>, <&ccu CLK_TCON0_CH0>, 92 <&ccu CLK_DRAM_DE_FE0>, <&ccu CLK_DRAM_DE_BE0>; 93 status = "disabled"; 94 }; 95 96 framebuffer-fe0-lcd0-tve0 { 97 compatible = "allwinner,simple-framebuffer", 98 "simple-framebuffer"; 99 allwinner,pipeline = "de_fe0-de_be0-lcd0-tve0"; 100 clocks = <&ccu CLK_AHB_TVE0>, <&ccu CLK_AHB_LCD0>, 101 <&ccu CLK_AHB_DE_BE0>, <&ccu CLK_AHB_DE_FE0>, 102 <&ccu CLK_DE_BE0>, <&ccu CLK_DE_FE0>, 103 <&ccu CLK_TCON0_CH1>, <&ccu CLK_DRAM_TVE0>, 104 <&ccu CLK_DRAM_DE_FE0>, <&ccu CLK_DRAM_DE_BE0>; 105 status = "disabled"; 106 }; 107 }; 108 109 cpus { 110 #address-cells = <1>; 111 #size-cells = <0>; 112 cpu0: cpu@0 { 113 device_type = "cpu"; 114 compatible = "arm,cortex-a8"; 115 reg = <0x0>; 116 clocks = <&ccu CLK_CPU>; 117 clock-latency = <244144>; /* 8 32k periods */ 118 operating-points = < 119 /* kHz uV */ 120 1008000 1400000 121 912000 1350000 122 864000 1300000 123 624000 1250000 124 >; 125 #cooling-cells = <2>; 126 }; 127 }; 128 129 thermal-zones { 130 cpu-thermal { 131 /* milliseconds */ 132 polling-delay-passive = <250>; 133 polling-delay = <1000>; 134 thermal-sensors = <&rtp>; 135 136 cooling-maps { 137 map0 { 138 trip = <&cpu_alert0>; 139 cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; 140 }; 141 }; 142 143 trips { 144 cpu_alert0: cpu-alert0 { 145 /* milliCelsius */ 146 temperature = <85000>; 147 hysteresis = <2000>; 148 type = "passive"; 149 }; 150 151 cpu_crit: cpu-crit { 152 /* milliCelsius */ 153 temperature = <100000>; 154 hysteresis = <2000>; 155 type = "critical"; 156 }; 157 }; 158 }; 159 }; 160 161 clocks { 162 #address-cells = <1>; 163 #size-cells = <1>; 164 ranges; 165 166 osc24M: clk-24M { 167 #clock-cells = <0>; 168 compatible = "fixed-clock"; 169 clock-frequency = <24000000>; 170 clock-output-names = "osc24M"; 171 }; 172 173 osc32k: clk-32k { 174 #clock-cells = <0>; 175 compatible = "fixed-clock"; 176 clock-frequency = <32768>; 177 clock-output-names = "osc32k"; 178 }; 179 }; 180 181 de: display-engine { 182 compatible = "allwinner,sun4i-a10-display-engine"; 183 allwinner,pipelines = <&fe0>, <&fe1>; 184 status = "disabled"; 185 }; 186 187 pmu { 188 compatible = "arm,cortex-a8-pmu"; 189 interrupts = <3>; 190 }; 191 192 reserved-memory { 193 #address-cells = <1>; 194 #size-cells = <1>; 195 ranges; 196 197 /* Address must be kept in the lower 256 MiBs of DRAM for VE. */ 198 default-pool { 199 compatible = "shared-dma-pool"; 200 size = <0x6000000>; 201 alloc-ranges = <0x40000000 0x10000000>; 202 reusable; 203 linux,cma-default; 204 }; 205 }; 206 207 soc { 208 compatible = "simple-bus"; 209 #address-cells = <1>; 210 #size-cells = <1>; 211 ranges; 212 213 system-control@1c00000 { 214 compatible = "allwinner,sun4i-a10-system-control"; 215 reg = <0x01c00000 0x30>; 216 #address-cells = <1>; 217 #size-cells = <1>; 218 ranges; 219 220 sram_a: sram@0 { 221 compatible = "mmio-sram"; 222 reg = <0x00000000 0xc000>; 223 #address-cells = <1>; 224 #size-cells = <1>; 225 ranges = <0 0x00000000 0xc000>; 226 227 emac_sram: sram-section@8000 { 228 compatible = "allwinner,sun4i-a10-sram-a3-a4"; 229 reg = <0x8000 0x4000>; 230 status = "disabled"; 231 }; 232 }; 233 234 sram_d: sram@10000 { 235 compatible = "mmio-sram"; 236 reg = <0x00010000 0x1000>; 237 #address-cells = <1>; 238 #size-cells = <1>; 239 ranges = <0 0x00010000 0x1000>; 240 241 otg_sram: sram-section@0 { 242 compatible = "allwinner,sun4i-a10-sram-d"; 243 reg = <0x0000 0x1000>; 244 status = "disabled"; 245 }; 246 }; 247 248 sram_c: sram@1d00000 { 249 compatible = "mmio-sram"; 250 reg = <0x01d00000 0xd0000>; 251 #address-cells = <1>; 252 #size-cells = <1>; 253 ranges = <0 0x01d00000 0xd0000>; 254 255 ve_sram: sram-section@0 { 256 compatible = "allwinner,sun4i-a10-sram-c1"; 257 reg = <0x000000 0x80000>; 258 }; 259 }; 260 }; 261 262 dma: dma-controller@1c02000 { 263 compatible = "allwinner,sun4i-a10-dma"; 264 reg = <0x01c02000 0x1000>; 265 interrupts = <27>; 266 clocks = <&ccu CLK_AHB_DMA>; 267 #dma-cells = <2>; 268 }; 269 270 nfc: nand-controller@1c03000 { 271 compatible = "allwinner,sun4i-a10-nand"; 272 reg = <0x01c03000 0x1000>; 273 interrupts = <37>; 274 clocks = <&ccu CLK_AHB_NAND>, <&ccu CLK_NAND>; 275 clock-names = "ahb", "mod"; 276 dmas = <&dma SUN4I_DMA_DEDICATED 3>; 277 dma-names = "rxtx"; 278 status = "disabled"; 279 #address-cells = <1>; 280 #size-cells = <0>; 281 }; 282 283 spi0: spi@1c05000 { 284 compatible = "allwinner,sun4i-a10-spi"; 285 reg = <0x01c05000 0x1000>; 286 interrupts = <10>; 287 clocks = <&ccu CLK_AHB_SPI0>, <&ccu CLK_SPI0>; 288 clock-names = "ahb", "mod"; 289 dmas = <&dma SUN4I_DMA_DEDICATED 27>, 290 <&dma SUN4I_DMA_DEDICATED 26>; 291 dma-names = "rx", "tx"; 292 status = "disabled"; 293 #address-cells = <1>; 294 #size-cells = <0>; 295 }; 296 297 spi1: spi@1c06000 { 298 compatible = "allwinner,sun4i-a10-spi"; 299 reg = <0x01c06000 0x1000>; 300 interrupts = <11>; 301 clocks = <&ccu CLK_AHB_SPI1>, <&ccu CLK_SPI1>; 302 clock-names = "ahb", "mod"; 303 dmas = <&dma SUN4I_DMA_DEDICATED 9>, 304 <&dma SUN4I_DMA_DEDICATED 8>; 305 dma-names = "rx", "tx"; 306 pinctrl-names = "default"; 307 pinctrl-0 = <&spi1_pins>, <&spi1_cs0_pin>; 308 status = "disabled"; 309 #address-cells = <1>; 310 #size-cells = <0>; 311 }; 312 313 emac: ethernet@1c0b000 { 314 compatible = "allwinner,sun4i-a10-emac"; 315 reg = <0x01c0b000 0x1000>; 316 interrupts = <55>; 317 clocks = <&ccu CLK_AHB_EMAC>; 318 allwinner,sram = <&emac_sram 1>; 319 pinctrl-names = "default"; 320 pinctrl-0 = <&emac_pins>; 321 status = "disabled"; 322 }; 323 324 mdio: mdio@1c0b080 { 325 compatible = "allwinner,sun4i-a10-mdio"; 326 reg = <0x01c0b080 0x14>; 327 status = "disabled"; 328 #address-cells = <1>; 329 #size-cells = <0>; 330 }; 331 332 tcon0: lcd-controller@1c0c000 { 333 compatible = "allwinner,sun4i-a10-tcon"; 334 reg = <0x01c0c000 0x1000>; 335 interrupts = <44>; 336 resets = <&ccu RST_TCON0>; 337 reset-names = "lcd"; 338 clocks = <&ccu CLK_AHB_LCD0>, 339 <&ccu CLK_TCON0_CH0>, 340 <&ccu CLK_TCON0_CH1>; 341 clock-names = "ahb", 342 "tcon-ch0", 343 "tcon-ch1"; 344 clock-output-names = "tcon0-pixel-clock"; 345 #clock-cells = <0>; 346 dmas = <&dma SUN4I_DMA_DEDICATED 14>; 347 348 ports { 349 #address-cells = <1>; 350 #size-cells = <0>; 351 352 tcon0_in: port@0 { 353 #address-cells = <1>; 354 #size-cells = <0>; 355 reg = <0>; 356 357 tcon0_in_be0: endpoint@0 { 358 reg = <0>; 359 remote-endpoint = <&be0_out_tcon0>; 360 }; 361 362 tcon0_in_be1: endpoint@1 { 363 reg = <1>; 364 remote-endpoint = <&be1_out_tcon0>; 365 }; 366 }; 367 368 tcon0_out: port@1 { 369 #address-cells = <1>; 370 #size-cells = <0>; 371 reg = <1>; 372 373 tcon0_out_hdmi: endpoint@1 { 374 reg = <1>; 375 remote-endpoint = <&hdmi_in_tcon0>; 376 allwinner,tcon-channel = <1>; 377 }; 378 }; 379 }; 380 }; 381 382 tcon1: lcd-controller@1c0d000 { 383 compatible = "allwinner,sun4i-a10-tcon"; 384 reg = <0x01c0d000 0x1000>; 385 interrupts = <45>; 386 resets = <&ccu RST_TCON1>; 387 reset-names = "lcd"; 388 clocks = <&ccu CLK_AHB_LCD1>, 389 <&ccu CLK_TCON1_CH0>, 390 <&ccu CLK_TCON1_CH1>; 391 clock-names = "ahb", 392 "tcon-ch0", 393 "tcon-ch1"; 394 clock-output-names = "tcon1-pixel-clock"; 395 #clock-cells = <0>; 396 dmas = <&dma SUN4I_DMA_DEDICATED 15>; 397 398 ports { 399 #address-cells = <1>; 400 #size-cells = <0>; 401 402 tcon1_in: port@0 { 403 #address-cells = <1>; 404 #size-cells = <0>; 405 reg = <0>; 406 407 tcon1_in_be0: endpoint@0 { 408 reg = <0>; 409 remote-endpoint = <&be0_out_tcon1>; 410 }; 411 412 tcon1_in_be1: endpoint@1 { 413 reg = <1>; 414 remote-endpoint = <&be1_out_tcon1>; 415 }; 416 }; 417 418 tcon1_out: port@1 { 419 #address-cells = <1>; 420 #size-cells = <0>; 421 reg = <1>; 422 423 tcon1_out_hdmi: endpoint@1 { 424 reg = <1>; 425 remote-endpoint = <&hdmi_in_tcon1>; 426 allwinner,tcon-channel = <1>; 427 }; 428 }; 429 }; 430 }; 431 432 video-codec@1c0e000 { 433 compatible = "allwinner,sun4i-a10-video-engine"; 434 reg = <0x01c0e000 0x1000>; 435 clocks = <&ccu CLK_AHB_VE>, <&ccu CLK_VE>, 436 <&ccu CLK_DRAM_VE>; 437 clock-names = "ahb", "mod", "ram"; 438 resets = <&ccu RST_VE>; 439 interrupts = <53>; 440 allwinner,sram = <&ve_sram 1>; 441 }; 442 443 mmc0: mmc@1c0f000 { 444 compatible = "allwinner,sun4i-a10-mmc"; 445 reg = <0x01c0f000 0x1000>; 446 clocks = <&ccu CLK_AHB_MMC0>, <&ccu CLK_MMC0>; 447 clock-names = "ahb", "mmc"; 448 interrupts = <32>; 449 pinctrl-names = "default"; 450 pinctrl-0 = <&mmc0_pins>; 451 status = "disabled"; 452 #address-cells = <1>; 453 #size-cells = <0>; 454 }; 455 456 mmc1: mmc@1c10000 { 457 compatible = "allwinner,sun4i-a10-mmc"; 458 reg = <0x01c10000 0x1000>; 459 clocks = <&ccu CLK_AHB_MMC1>, <&ccu CLK_MMC1>; 460 clock-names = "ahb", "mmc"; 461 interrupts = <33>; 462 status = "disabled"; 463 #address-cells = <1>; 464 #size-cells = <0>; 465 }; 466 467 mmc2: mmc@1c11000 { 468 compatible = "allwinner,sun4i-a10-mmc"; 469 reg = <0x01c11000 0x1000>; 470 clocks = <&ccu CLK_AHB_MMC2>, <&ccu CLK_MMC2>; 471 clock-names = "ahb", "mmc"; 472 interrupts = <34>; 473 status = "disabled"; 474 #address-cells = <1>; 475 #size-cells = <0>; 476 }; 477 478 mmc3: mmc@1c12000 { 479 compatible = "allwinner,sun4i-a10-mmc"; 480 reg = <0x01c12000 0x1000>; 481 clocks = <&ccu CLK_AHB_MMC3>, <&ccu CLK_MMC3>; 482 clock-names = "ahb", "mmc"; 483 interrupts = <35>; 484 status = "disabled"; 485 #address-cells = <1>; 486 #size-cells = <0>; 487 }; 488 489 usb_otg: usb@1c13000 { 490 compatible = "allwinner,sun4i-a10-musb"; 491 reg = <0x01c13000 0x0400>; 492 clocks = <&ccu CLK_AHB_OTG>; 493 interrupts = <38>; 494 interrupt-names = "mc"; 495 phys = <&usbphy 0>; 496 phy-names = "usb"; 497 extcon = <&usbphy 0>; 498 allwinner,sram = <&otg_sram 1>; 499 dr_mode = "otg"; 500 status = "disabled"; 501 }; 502 503 usbphy: phy@1c13400 { 504 #phy-cells = <1>; 505 compatible = "allwinner,sun4i-a10-usb-phy"; 506 reg = <0x01c13400 0x10>, <0x01c14800 0x4>, <0x01c1c800 0x4>; 507 reg-names = "phy_ctrl", "pmu1", "pmu2"; 508 clocks = <&ccu CLK_USB_PHY>; 509 clock-names = "usb_phy"; 510 resets = <&ccu RST_USB_PHY0>, 511 <&ccu RST_USB_PHY1>, 512 <&ccu RST_USB_PHY2>; 513 reset-names = "usb0_reset", "usb1_reset", "usb2_reset"; 514 status = "disabled"; 515 }; 516 517 ehci0: usb@1c14000 { 518 compatible = "allwinner,sun4i-a10-ehci", "generic-ehci"; 519 reg = <0x01c14000 0x100>; 520 interrupts = <39>; 521 clocks = <&ccu CLK_AHB_EHCI0>; 522 phys = <&usbphy 1>; 523 phy-names = "usb"; 524 status = "disabled"; 525 }; 526 527 ohci0: usb@1c14400 { 528 compatible = "allwinner,sun4i-a10-ohci", "generic-ohci"; 529 reg = <0x01c14400 0x100>; 530 interrupts = <64>; 531 clocks = <&ccu CLK_USB_OHCI0>, <&ccu CLK_AHB_OHCI0>; 532 phys = <&usbphy 1>; 533 phy-names = "usb"; 534 status = "disabled"; 535 }; 536 537 crypto: crypto-engine@1c15000 { 538 compatible = "allwinner,sun4i-a10-crypto"; 539 reg = <0x01c15000 0x1000>; 540 interrupts = <86>; 541 clocks = <&ccu CLK_AHB_SS>, <&ccu CLK_SS>; 542 clock-names = "ahb", "mod"; 543 }; 544 545 hdmi: hdmi@1c16000 { 546 compatible = "allwinner,sun4i-a10-hdmi"; 547 reg = <0x01c16000 0x1000>; 548 interrupts = <58>; 549 clocks = <&ccu CLK_AHB_HDMI0>, <&ccu CLK_HDMI>, 550 <&ccu CLK_PLL_VIDEO0_2X>, 551 <&ccu CLK_PLL_VIDEO1_2X>; 552 clock-names = "ahb", "mod", "pll-0", "pll-1"; 553 dmas = <&dma SUN4I_DMA_NORMAL 16>, 554 <&dma SUN4I_DMA_NORMAL 16>, 555 <&dma SUN4I_DMA_DEDICATED 24>; 556 dma-names = "ddc-tx", "ddc-rx", "audio-tx"; 557 status = "disabled"; 558 559 ports { 560 #address-cells = <1>; 561 #size-cells = <0>; 562 563 hdmi_in: port@0 { 564 #address-cells = <1>; 565 #size-cells = <0>; 566 reg = <0>; 567 568 hdmi_in_tcon0: endpoint@0 { 569 reg = <0>; 570 remote-endpoint = <&tcon0_out_hdmi>; 571 }; 572 573 hdmi_in_tcon1: endpoint@1 { 574 reg = <1>; 575 remote-endpoint = <&tcon1_out_hdmi>; 576 }; 577 }; 578 579 hdmi_out: port@1 { 580 reg = <1>; 581 }; 582 }; 583 }; 584 585 spi2: spi@1c17000 { 586 compatible = "allwinner,sun4i-a10-spi"; 587 reg = <0x01c17000 0x1000>; 588 interrupts = <12>; 589 clocks = <&ccu CLK_AHB_SPI2>, <&ccu CLK_SPI2>; 590 clock-names = "ahb", "mod"; 591 dmas = <&dma SUN4I_DMA_DEDICATED 29>, 592 <&dma SUN4I_DMA_DEDICATED 28>; 593 dma-names = "rx", "tx"; 594 status = "disabled"; 595 #address-cells = <1>; 596 #size-cells = <0>; 597 }; 598 599 ahci: sata@1c18000 { 600 compatible = "allwinner,sun4i-a10-ahci"; 601 reg = <0x01c18000 0x1000>; 602 interrupts = <56>; 603 clocks = <&ccu CLK_AHB_SATA>, <&ccu CLK_SATA>; 604 status = "disabled"; 605 }; 606 607 ehci1: usb@1c1c000 { 608 compatible = "allwinner,sun4i-a10-ehci", "generic-ehci"; 609 reg = <0x01c1c000 0x100>; 610 interrupts = <40>; 611 clocks = <&ccu CLK_AHB_EHCI1>; 612 phys = <&usbphy 2>; 613 phy-names = "usb"; 614 status = "disabled"; 615 }; 616 617 ohci1: usb@1c1c400 { 618 compatible = "allwinner,sun4i-a10-ohci", "generic-ohci"; 619 reg = <0x01c1c400 0x100>; 620 interrupts = <65>; 621 clocks = <&ccu CLK_USB_OHCI1>, <&ccu CLK_AHB_OHCI1>; 622 phys = <&usbphy 2>; 623 phy-names = "usb"; 624 status = "disabled"; 625 }; 626 627 csi1: csi@1c1d000 { 628 compatible = "allwinner,sun4i-a10-csi1"; 629 reg = <0x01c1d000 0x1000>; 630 interrupts = <43>; 631 clocks = <&ccu CLK_AHB_CSI1>, <&ccu CLK_DRAM_CSI1>; 632 clock-names = "bus", "ram"; 633 resets = <&ccu RST_CSI1>; 634 status = "disabled"; 635 }; 636 637 spi3: spi@1c1f000 { 638 compatible = "allwinner,sun4i-a10-spi"; 639 reg = <0x01c1f000 0x1000>; 640 interrupts = <50>; 641 clocks = <&ccu CLK_AHB_SPI3>, <&ccu CLK_SPI3>; 642 clock-names = "ahb", "mod"; 643 dmas = <&dma SUN4I_DMA_DEDICATED 31>, 644 <&dma SUN4I_DMA_DEDICATED 30>; 645 dma-names = "rx", "tx"; 646 status = "disabled"; 647 #address-cells = <1>; 648 #size-cells = <0>; 649 }; 650 651 ccu: clock@1c20000 { 652 compatible = "allwinner,sun4i-a10-ccu"; 653 reg = <0x01c20000 0x400>; 654 clocks = <&osc24M>, <&osc32k>; 655 clock-names = "hosc", "losc"; 656 #clock-cells = <1>; 657 #reset-cells = <1>; 658 }; 659 660 intc: interrupt-controller@1c20400 { 661 compatible = "allwinner,sun4i-a10-ic"; 662 reg = <0x01c20400 0x400>; 663 interrupt-controller; 664 #interrupt-cells = <1>; 665 }; 666 667 pio: pinctrl@1c20800 { 668 compatible = "allwinner,sun4i-a10-pinctrl"; 669 reg = <0x01c20800 0x400>; 670 interrupts = <28>; 671 clocks = <&ccu CLK_APB0_PIO>, <&osc24M>, <&osc32k>; 672 clock-names = "apb", "hosc", "losc"; 673 gpio-controller; 674 interrupt-controller; 675 #interrupt-cells = <3>; 676 #gpio-cells = <3>; 677 678 can0_ph_pins: can0-ph-pins { 679 pins = "PH20", "PH21"; 680 function = "can"; 681 }; 682 683 /omit-if-no-ref/ 684 csi1_8bits_pg_pins: csi1-8bits-pg-pins { 685 pins = "PG0", "PG2", "PG3", "PG4", "PG5", 686 "PG6", "PG7", "PG8", "PG9", "PG10", 687 "PG11"; 688 function = "csi1"; 689 }; 690 691 /omit-if-no-ref/ 692 csi1_24bits_ph_pins: csi1-24bits-ph-pins { 693 pins = "PH0", "PH1", "PH2", "PH3", "PH4", 694 "PH5", "PH6", "PH7", "PH8", "PH9", 695 "PH10", "PH11", "PH12", "PH13", "PH14", 696 "PH15", "PH16", "PH17", "PH18", "PH19", 697 "PH20", "PH21", "PH22", "PH23", "PH24", 698 "PH25", "PH26", "PH27"; 699 function = "csi1"; 700 }; 701 702 /omit-if-no-ref/ 703 csi1_clk_pg_pin: csi1-clk-pg-pin { 704 pins = "PG1"; 705 function = "csi1"; 706 }; 707 708 emac_pins: emac0-pins { 709 pins = "PA0", "PA1", "PA2", 710 "PA3", "PA4", "PA5", "PA6", 711 "PA7", "PA8", "PA9", "PA10", 712 "PA11", "PA12", "PA13", "PA14", 713 "PA15", "PA16"; 714 function = "emac"; 715 }; 716 717 i2c0_pins: i2c0-pins { 718 pins = "PB0", "PB1"; 719 function = "i2c0"; 720 }; 721 722 i2c1_pins: i2c1-pins { 723 pins = "PB18", "PB19"; 724 function = "i2c1"; 725 }; 726 727 i2c2_pins: i2c2-pins { 728 pins = "PB20", "PB21"; 729 function = "i2c2"; 730 }; 731 732 ir0_rx_pins: ir0-rx-pin { 733 pins = "PB4"; 734 function = "ir0"; 735 }; 736 737 ir0_tx_pins: ir0-tx-pin { 738 pins = "PB3"; 739 function = "ir0"; 740 }; 741 742 ir1_rx_pins: ir1-rx-pin { 743 pins = "PB23"; 744 function = "ir1"; 745 }; 746 747 ir1_tx_pins: ir1-tx-pin { 748 pins = "PB22"; 749 function = "ir1"; 750 }; 751 752 mmc0_pins: mmc0-pins { 753 pins = "PF0", "PF1", "PF2", 754 "PF3", "PF4", "PF5"; 755 function = "mmc0"; 756 drive-strength = <30>; 757 bias-pull-up; 758 }; 759 760 ps2_ch0_pins: ps2-ch0-pins { 761 pins = "PI20", "PI21"; 762 function = "ps2"; 763 }; 764 765 ps2_ch1_ph_pins: ps2-ch1-ph-pins { 766 pins = "PH12", "PH13"; 767 function = "ps2"; 768 }; 769 770 pwm0_pin: pwm0-pin { 771 pins = "PB2"; 772 function = "pwm"; 773 }; 774 775 pwm1_pin: pwm1-pin { 776 pins = "PI3"; 777 function = "pwm"; 778 }; 779 780 spdif_tx_pin: spdif-tx-pin { 781 pins = "PB13"; 782 function = "spdif"; 783 bias-pull-up; 784 }; 785 786 spi0_pi_pins: spi0-pi-pins { 787 pins = "PI11", "PI12", "PI13"; 788 function = "spi0"; 789 }; 790 791 spi0_cs0_pi_pin: spi0-cs0-pi-pin { 792 pins = "PI10"; 793 function = "spi0"; 794 }; 795 796 spi1_pins: spi1-pins { 797 pins = "PI17", "PI18", "PI19"; 798 function = "spi1"; 799 }; 800 801 spi1_cs0_pin: spi1-cs0-pin { 802 pins = "PI16"; 803 function = "spi1"; 804 }; 805 806 spi2_pb_pins: spi2-pb-pins { 807 pins = "PB15", "PB16", "PB17"; 808 function = "spi2"; 809 }; 810 811 spi2_pc_pins: spi2-pc-pins { 812 pins = "PC20", "PC21", "PC22"; 813 function = "spi2"; 814 }; 815 816 spi2_cs0_pb_pin: spi2-cs0-pb-pin { 817 pins = "PB14"; 818 function = "spi2"; 819 }; 820 821 spi2_cs0_pc_pins: spi2-cs0-pc-pin { 822 pins = "PC19"; 823 function = "spi2"; 824 }; 825 826 uart0_pb_pins: uart0-pb-pins { 827 pins = "PB22", "PB23"; 828 function = "uart0"; 829 }; 830 831 uart0_pf_pins: uart0-pf-pins { 832 pins = "PF2", "PF4"; 833 function = "uart0"; 834 }; 835 836 uart1_pins: uart1-pins { 837 pins = "PA10", "PA11"; 838 function = "uart1"; 839 }; 840 }; 841 842 timer@1c20c00 { 843 compatible = "allwinner,sun4i-a10-timer"; 844 reg = <0x01c20c00 0x90>; 845 interrupts = <22>, 846 <23>, 847 <24>, 848 <25>, 849 <67>, 850 <68>; 851 clocks = <&osc24M>; 852 }; 853 854 wdt: watchdog@1c20c90 { 855 compatible = "allwinner,sun4i-a10-wdt"; 856 reg = <0x01c20c90 0x10>; 857 interrupts = <24>; 858 clocks = <&osc24M>; 859 }; 860 861 rtc: rtc@1c20d00 { 862 compatible = "allwinner,sun4i-a10-rtc"; 863 reg = <0x01c20d00 0x20>; 864 interrupts = <24>; 865 }; 866 867 pwm: pwm@1c20e00 { 868 compatible = "allwinner,sun4i-a10-pwm"; 869 reg = <0x01c20e00 0xc>; 870 clocks = <&osc24M>; 871 #pwm-cells = <3>; 872 status = "disabled"; 873 }; 874 875 spdif: spdif@1c21000 { 876 #sound-dai-cells = <0>; 877 compatible = "allwinner,sun4i-a10-spdif"; 878 reg = <0x01c21000 0x400>; 879 interrupts = <13>; 880 clocks = <&ccu CLK_APB0_SPDIF>, <&ccu CLK_SPDIF>; 881 clock-names = "apb", "spdif"; 882 dmas = <&dma SUN4I_DMA_NORMAL 2>, 883 <&dma SUN4I_DMA_NORMAL 2>; 884 dma-names = "rx", "tx"; 885 status = "disabled"; 886 }; 887 888 ir0: ir@1c21800 { 889 compatible = "allwinner,sun4i-a10-ir"; 890 clocks = <&ccu CLK_APB0_IR0>, <&ccu CLK_IR0>; 891 clock-names = "apb", "ir"; 892 interrupts = <5>; 893 reg = <0x01c21800 0x40>; 894 status = "disabled"; 895 }; 896 897 ir1: ir@1c21c00 { 898 compatible = "allwinner,sun4i-a10-ir"; 899 clocks = <&ccu CLK_APB0_IR1>, <&ccu CLK_IR1>; 900 clock-names = "apb", "ir"; 901 interrupts = <6>; 902 reg = <0x01c21c00 0x40>; 903 status = "disabled"; 904 }; 905 906 i2s0: i2s@1c22400 { 907 #sound-dai-cells = <0>; 908 compatible = "allwinner,sun4i-a10-i2s"; 909 reg = <0x01c22400 0x400>; 910 interrupts = <16>; 911 clocks = <&ccu CLK_APB0_I2S0>, <&ccu CLK_I2S0>; 912 clock-names = "apb", "mod"; 913 dmas = <&dma SUN4I_DMA_NORMAL 3>, 914 <&dma SUN4I_DMA_NORMAL 3>; 915 dma-names = "rx", "tx"; 916 status = "disabled"; 917 }; 918 919 lradc: lradc@1c22800 { 920 compatible = "allwinner,sun4i-a10-lradc-keys"; 921 reg = <0x01c22800 0x100>; 922 interrupts = <31>; 923 status = "disabled"; 924 }; 925 926 codec: codec@1c22c00 { 927 #sound-dai-cells = <0>; 928 compatible = "allwinner,sun4i-a10-codec"; 929 reg = <0x01c22c00 0x40>; 930 interrupts = <30>; 931 clocks = <&ccu CLK_APB0_CODEC>, <&ccu CLK_CODEC>; 932 clock-names = "apb", "codec"; 933 dmas = <&dma SUN4I_DMA_NORMAL 19>, 934 <&dma SUN4I_DMA_NORMAL 19>; 935 dma-names = "rx", "tx"; 936 status = "disabled"; 937 }; 938 939 sid: eeprom@1c23800 { 940 compatible = "allwinner,sun4i-a10-sid"; 941 reg = <0x01c23800 0x10>; 942 }; 943 944 rtp: rtp@1c25000 { 945 compatible = "allwinner,sun4i-a10-ts"; 946 reg = <0x01c25000 0x100>; 947 interrupts = <29>; 948 #thermal-sensor-cells = <0>; 949 }; 950 951 uart0: serial@1c28000 { 952 compatible = "snps,dw-apb-uart"; 953 reg = <0x01c28000 0x400>; 954 interrupts = <1>; 955 reg-shift = <2>; 956 reg-io-width = <4>; 957 clocks = <&ccu CLK_APB1_UART0>; 958 status = "disabled"; 959 }; 960 961 uart1: serial@1c28400 { 962 compatible = "snps,dw-apb-uart"; 963 reg = <0x01c28400 0x400>; 964 interrupts = <2>; 965 reg-shift = <2>; 966 reg-io-width = <4>; 967 clocks = <&ccu CLK_APB1_UART1>; 968 status = "disabled"; 969 }; 970 971 uart2: serial@1c28800 { 972 compatible = "snps,dw-apb-uart"; 973 reg = <0x01c28800 0x400>; 974 interrupts = <3>; 975 reg-shift = <2>; 976 reg-io-width = <4>; 977 clocks = <&ccu CLK_APB1_UART2>; 978 status = "disabled"; 979 }; 980 981 uart3: serial@1c28c00 { 982 compatible = "snps,dw-apb-uart"; 983 reg = <0x01c28c00 0x400>; 984 interrupts = <4>; 985 reg-shift = <2>; 986 reg-io-width = <4>; 987 clocks = <&ccu CLK_APB1_UART3>; 988 status = "disabled"; 989 }; 990 991 uart4: serial@1c29000 { 992 compatible = "snps,dw-apb-uart"; 993 reg = <0x01c29000 0x400>; 994 interrupts = <17>; 995 reg-shift = <2>; 996 reg-io-width = <4>; 997 clocks = <&ccu CLK_APB1_UART4>; 998 status = "disabled"; 999 }; 1000 1001 uart5: serial@1c29400 { 1002 compatible = "snps,dw-apb-uart"; 1003 reg = <0x01c29400 0x400>; 1004 interrupts = <18>; 1005 reg-shift = <2>; 1006 reg-io-width = <4>; 1007 clocks = <&ccu CLK_APB1_UART5>; 1008 status = "disabled"; 1009 }; 1010 1011 uart6: serial@1c29800 { 1012 compatible = "snps,dw-apb-uart"; 1013 reg = <0x01c29800 0x400>; 1014 interrupts = <19>; 1015 reg-shift = <2>; 1016 reg-io-width = <4>; 1017 clocks = <&ccu CLK_APB1_UART6>; 1018 status = "disabled"; 1019 }; 1020 1021 uart7: serial@1c29c00 { 1022 compatible = "snps,dw-apb-uart"; 1023 reg = <0x01c29c00 0x400>; 1024 interrupts = <20>; 1025 reg-shift = <2>; 1026 reg-io-width = <4>; 1027 clocks = <&ccu CLK_APB1_UART7>; 1028 status = "disabled"; 1029 }; 1030 1031 ps20: ps2@1c2a000 { 1032 compatible = "allwinner,sun4i-a10-ps2"; 1033 reg = <0x01c2a000 0x400>; 1034 interrupts = <62>; 1035 clocks = <&ccu CLK_APB1_PS20>; 1036 status = "disabled"; 1037 }; 1038 1039 ps21: ps2@1c2a400 { 1040 compatible = "allwinner,sun4i-a10-ps2"; 1041 reg = <0x01c2a400 0x400>; 1042 interrupts = <63>; 1043 clocks = <&ccu CLK_APB1_PS21>; 1044 status = "disabled"; 1045 }; 1046 1047 i2c0: i2c@1c2ac00 { 1048 compatible = "allwinner,sun4i-a10-i2c"; 1049 reg = <0x01c2ac00 0x400>; 1050 interrupts = <7>; 1051 clocks = <&ccu CLK_APB1_I2C0>; 1052 pinctrl-names = "default"; 1053 pinctrl-0 = <&i2c0_pins>; 1054 status = "disabled"; 1055 #address-cells = <1>; 1056 #size-cells = <0>; 1057 }; 1058 1059 i2c1: i2c@1c2b000 { 1060 compatible = "allwinner,sun4i-a10-i2c"; 1061 reg = <0x01c2b000 0x400>; 1062 interrupts = <8>; 1063 clocks = <&ccu CLK_APB1_I2C1>; 1064 pinctrl-names = "default"; 1065 pinctrl-0 = <&i2c1_pins>; 1066 status = "disabled"; 1067 #address-cells = <1>; 1068 #size-cells = <0>; 1069 }; 1070 1071 i2c2: i2c@1c2b400 { 1072 compatible = "allwinner,sun4i-a10-i2c"; 1073 reg = <0x01c2b400 0x400>; 1074 interrupts = <9>; 1075 clocks = <&ccu CLK_APB1_I2C2>; 1076 pinctrl-names = "default"; 1077 pinctrl-0 = <&i2c2_pins>; 1078 status = "disabled"; 1079 #address-cells = <1>; 1080 #size-cells = <0>; 1081 }; 1082 1083 can0: can@1c2bc00 { 1084 compatible = "allwinner,sun4i-a10-can"; 1085 reg = <0x01c2bc00 0x400>; 1086 interrupts = <26>; 1087 clocks = <&ccu CLK_APB1_CAN>; 1088 status = "disabled"; 1089 }; 1090 1091 mali: gpu@1c40000 { 1092 compatible = "allwinner,sun4i-a10-mali", "arm,mali-400"; 1093 reg = <0x01c40000 0x10000>; 1094 interrupts = <69>, 1095 <70>, 1096 <71>, 1097 <72>, 1098 <73>; 1099 interrupt-names = "gp", 1100 "gpmmu", 1101 "pp0", 1102 "ppmmu0", 1103 "pmu"; 1104 clocks = <&ccu CLK_AHB_GPU>, <&ccu CLK_GPU>; 1105 clock-names = "bus", "core"; 1106 resets = <&ccu RST_GPU>; 1107 1108 assigned-clocks = <&ccu CLK_GPU>; 1109 assigned-clock-rates = <384000000>; 1110 }; 1111 1112 fe0: display-frontend@1e00000 { 1113 compatible = "allwinner,sun4i-a10-display-frontend"; 1114 reg = <0x01e00000 0x20000>; 1115 interrupts = <47>; 1116 clocks = <&ccu CLK_AHB_DE_FE0>, <&ccu CLK_DE_FE0>, 1117 <&ccu CLK_DRAM_DE_FE0>; 1118 clock-names = "ahb", "mod", 1119 "ram"; 1120 resets = <&ccu RST_DE_FE0>; 1121 1122 ports { 1123 #address-cells = <1>; 1124 #size-cells = <0>; 1125 1126 fe0_out: port@1 { 1127 #address-cells = <1>; 1128 #size-cells = <0>; 1129 reg = <1>; 1130 1131 fe0_out_be0: endpoint@0 { 1132 reg = <0>; 1133 remote-endpoint = <&be0_in_fe0>; 1134 }; 1135 1136 fe0_out_be1: endpoint@1 { 1137 reg = <1>; 1138 remote-endpoint = <&be1_in_fe0>; 1139 }; 1140 }; 1141 }; 1142 }; 1143 1144 fe1: display-frontend@1e20000 { 1145 compatible = "allwinner,sun4i-a10-display-frontend"; 1146 reg = <0x01e20000 0x20000>; 1147 interrupts = <48>; 1148 clocks = <&ccu CLK_AHB_DE_FE1>, <&ccu CLK_DE_FE1>, 1149 <&ccu CLK_DRAM_DE_FE1>; 1150 clock-names = "ahb", "mod", 1151 "ram"; 1152 resets = <&ccu RST_DE_FE1>; 1153 1154 ports { 1155 #address-cells = <1>; 1156 #size-cells = <0>; 1157 1158 fe1_out: port@1 { 1159 #address-cells = <1>; 1160 #size-cells = <0>; 1161 reg = <1>; 1162 1163 fe1_out_be0: endpoint@0 { 1164 reg = <0>; 1165 remote-endpoint = <&be0_in_fe1>; 1166 }; 1167 1168 fe1_out_be1: endpoint@1 { 1169 reg = <1>; 1170 remote-endpoint = <&be1_in_fe1>; 1171 }; 1172 }; 1173 }; 1174 }; 1175 1176 be1: display-backend@1e40000 { 1177 compatible = "allwinner,sun4i-a10-display-backend"; 1178 reg = <0x01e40000 0x10000>; 1179 interrupts = <48>; 1180 clocks = <&ccu CLK_AHB_DE_BE1>, <&ccu CLK_DE_BE1>, 1181 <&ccu CLK_DRAM_DE_BE1>; 1182 clock-names = "ahb", "mod", 1183 "ram"; 1184 resets = <&ccu RST_DE_BE1>; 1185 1186 ports { 1187 #address-cells = <1>; 1188 #size-cells = <0>; 1189 1190 be1_in: port@0 { 1191 #address-cells = <1>; 1192 #size-cells = <0>; 1193 reg = <0>; 1194 1195 be1_in_fe0: endpoint@0 { 1196 reg = <0>; 1197 remote-endpoint = <&fe0_out_be1>; 1198 }; 1199 1200 be1_in_fe1: endpoint@1 { 1201 reg = <1>; 1202 remote-endpoint = <&fe1_out_be1>; 1203 }; 1204 }; 1205 1206 be1_out: port@1 { 1207 #address-cells = <1>; 1208 #size-cells = <0>; 1209 reg = <1>; 1210 1211 be1_out_tcon0: endpoint@0 { 1212 reg = <0>; 1213 remote-endpoint = <&tcon0_in_be1>; 1214 }; 1215 1216 be1_out_tcon1: endpoint@1 { 1217 reg = <1>; 1218 remote-endpoint = <&tcon1_in_be1>; 1219 }; 1220 }; 1221 }; 1222 }; 1223 1224 be0: display-backend@1e60000 { 1225 compatible = "allwinner,sun4i-a10-display-backend"; 1226 reg = <0x01e60000 0x10000>; 1227 interrupts = <47>; 1228 clocks = <&ccu CLK_AHB_DE_BE0>, <&ccu CLK_DE_BE0>, 1229 <&ccu CLK_DRAM_DE_BE0>; 1230 clock-names = "ahb", "mod", 1231 "ram"; 1232 resets = <&ccu RST_DE_BE0>; 1233 1234 ports { 1235 #address-cells = <1>; 1236 #size-cells = <0>; 1237 1238 be0_in: port@0 { 1239 #address-cells = <1>; 1240 #size-cells = <0>; 1241 reg = <0>; 1242 1243 be0_in_fe0: endpoint@0 { 1244 reg = <0>; 1245 remote-endpoint = <&fe0_out_be0>; 1246 }; 1247 1248 be0_in_fe1: endpoint@1 { 1249 reg = <1>; 1250 remote-endpoint = <&fe1_out_be0>; 1251 }; 1252 }; 1253 1254 be0_out: port@1 { 1255 #address-cells = <1>; 1256 #size-cells = <0>; 1257 reg = <1>; 1258 1259 be0_out_tcon0: endpoint@0 { 1260 reg = <0>; 1261 remote-endpoint = <&tcon0_in_be0>; 1262 }; 1263 1264 be0_out_tcon1: endpoint@1 { 1265 reg = <1>; 1266 remote-endpoint = <&tcon1_in_be0>; 1267 }; 1268 }; 1269 }; 1270 }; 1271 }; 1272}; 1273