sun6i-a31.dtsi (35774B)
1/* 2 * Copyright 2013 Maxime Ripard 3 * 4 * Maxime Ripard <maxime.ripard@free-electrons.com> 5 * 6 * This file is dual-licensed: you can use it either under the terms 7 * of the GPL or the X11 license, at your option. Note that this dual 8 * licensing only applies to this file, and not this project as a 9 * whole. 10 * 11 * a) This file is free software; you can redistribute it and/or 12 * modify it under the terms of the GNU General Public License as 13 * published by the Free Software Foundation; either version 2 of the 14 * License, or (at your option) any later version. 15 * 16 * This file is distributed in the hope that it will be useful, 17 * but WITHOUT ANY WARRANTY; without even the implied warranty of 18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19 * GNU General Public License for more details. 20 * 21 * Or, alternatively, 22 * 23 * b) Permission is hereby granted, free of charge, to any person 24 * obtaining a copy of this software and associated documentation 25 * files (the "Software"), to deal in the Software without 26 * restriction, including without limitation the rights to use, 27 * copy, modify, merge, publish, distribute, sublicense, and/or 28 * sell copies of the Software, and to permit persons to whom the 29 * Software is furnished to do so, subject to the following 30 * conditions: 31 * 32 * The above copyright notice and this permission notice shall be 33 * included in all copies or substantial portions of the Software. 34 * 35 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 36 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 37 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 38 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 39 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 40 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 41 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 42 * OTHER DEALINGS IN THE SOFTWARE. 43 */ 44 45#include <dt-bindings/interrupt-controller/arm-gic.h> 46#include <dt-bindings/thermal/thermal.h> 47 48#include <dt-bindings/clock/sun6i-a31-ccu.h> 49#include <dt-bindings/reset/sun6i-a31-ccu.h> 50 51/ { 52 interrupt-parent = <&gic>; 53 #address-cells = <1>; 54 #size-cells = <1>; 55 56 aliases { 57 ethernet0 = &gmac; 58 }; 59 60 chosen { 61 #address-cells = <1>; 62 #size-cells = <1>; 63 ranges; 64 65 simplefb_hdmi: framebuffer-lcd0-hdmi { 66 compatible = "allwinner,simple-framebuffer", 67 "simple-framebuffer"; 68 allwinner,pipeline = "de_be0-lcd0-hdmi"; 69 clocks = <&ccu CLK_AHB1_BE0>, <&ccu CLK_AHB1_LCD0>, 70 <&ccu CLK_AHB1_HDMI>, <&ccu CLK_DRAM_BE0>, 71 <&ccu CLK_IEP_DRC0>, <&ccu CLK_BE0>, 72 <&ccu CLK_LCD0_CH1>, <&ccu CLK_HDMI>; 73 status = "disabled"; 74 }; 75 76 simplefb_lcd: framebuffer-lcd0 { 77 compatible = "allwinner,simple-framebuffer", 78 "simple-framebuffer"; 79 allwinner,pipeline = "de_be0-lcd0"; 80 clocks = <&ccu CLK_AHB1_BE0>, <&ccu CLK_AHB1_LCD0>, 81 <&ccu CLK_DRAM_BE0>, <&ccu CLK_IEP_DRC0>, 82 <&ccu CLK_BE0>, <&ccu CLK_LCD0_CH0>; 83 status = "disabled"; 84 }; 85 }; 86 87 timer { 88 compatible = "arm,armv7-timer"; 89 interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>, 90 <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>, 91 <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>, 92 <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>; 93 clock-frequency = <24000000>; 94 arm,cpu-registers-not-fw-configured; 95 }; 96 97 cpus { 98 enable-method = "allwinner,sun6i-a31"; 99 #address-cells = <1>; 100 #size-cells = <0>; 101 102 cpu0: cpu@0 { 103 compatible = "arm,cortex-a7"; 104 device_type = "cpu"; 105 reg = <0>; 106 clocks = <&ccu CLK_CPU>; 107 clock-latency = <244144>; /* 8 32k periods */ 108 operating-points = 109 /* kHz uV */ 110 <1008000 1200000>, 111 <864000 1200000>, 112 <720000 1100000>, 113 <480000 1000000>; 114 #cooling-cells = <2>; 115 }; 116 117 cpu1: cpu@1 { 118 compatible = "arm,cortex-a7"; 119 device_type = "cpu"; 120 reg = <1>; 121 clocks = <&ccu CLK_CPU>; 122 clock-latency = <244144>; /* 8 32k periods */ 123 operating-points = 124 /* kHz uV */ 125 <1008000 1200000>, 126 <864000 1200000>, 127 <720000 1100000>, 128 <480000 1000000>; 129 #cooling-cells = <2>; 130 }; 131 132 cpu2: cpu@2 { 133 compatible = "arm,cortex-a7"; 134 device_type = "cpu"; 135 reg = <2>; 136 clocks = <&ccu CLK_CPU>; 137 clock-latency = <244144>; /* 8 32k periods */ 138 operating-points = 139 /* kHz uV */ 140 <1008000 1200000>, 141 <864000 1200000>, 142 <720000 1100000>, 143 <480000 1000000>; 144 #cooling-cells = <2>; 145 }; 146 147 cpu3: cpu@3 { 148 compatible = "arm,cortex-a7"; 149 device_type = "cpu"; 150 reg = <3>; 151 clocks = <&ccu CLK_CPU>; 152 clock-latency = <244144>; /* 8 32k periods */ 153 operating-points = 154 /* kHz uV */ 155 <1008000 1200000>, 156 <864000 1200000>, 157 <720000 1100000>, 158 <480000 1000000>; 159 #cooling-cells = <2>; 160 }; 161 }; 162 163 thermal-zones { 164 cpu-thermal { 165 /* milliseconds */ 166 polling-delay-passive = <250>; 167 polling-delay = <1000>; 168 thermal-sensors = <&rtp>; 169 170 cooling-maps { 171 map0 { 172 trip = <&cpu_alert0>; 173 cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, 174 <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, 175 <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>, 176 <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; 177 }; 178 }; 179 180 trips { 181 cpu_alert0: cpu_alert0 { 182 /* milliCelsius */ 183 temperature = <70000>; 184 hysteresis = <2000>; 185 type = "passive"; 186 }; 187 188 cpu_crit: cpu_crit { 189 /* milliCelsius */ 190 temperature = <100000>; 191 hysteresis = <2000>; 192 type = "critical"; 193 }; 194 }; 195 }; 196 }; 197 198 pmu { 199 compatible = "arm,cortex-a7-pmu"; 200 interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>, 201 <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>, 202 <GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>, 203 <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>; 204 }; 205 206 clocks { 207 #address-cells = <1>; 208 #size-cells = <1>; 209 ranges; 210 211 osc24M: clk-24M { 212 #clock-cells = <0>; 213 compatible = "fixed-clock"; 214 clock-frequency = <24000000>; 215 clock-accuracy = <50000>; 216 clock-output-names = "osc24M"; 217 }; 218 219 osc32k: clk-32k { 220 #clock-cells = <0>; 221 compatible = "fixed-clock"; 222 clock-frequency = <32768>; 223 clock-accuracy = <50000>; 224 clock-output-names = "ext_osc32k"; 225 }; 226 227 /* 228 * The following two are dummy clocks, placeholders 229 * used in the gmac_tx clock. The gmac driver will 230 * choose one parent depending on the PHY interface 231 * mode, using clk_set_rate auto-reparenting. 232 * 233 * The actual TX clock rate is not controlled by the 234 * gmac_tx clock. 235 */ 236 mii_phy_tx_clk: clk-mii-phy-tx { 237 #clock-cells = <0>; 238 compatible = "fixed-clock"; 239 clock-frequency = <25000000>; 240 clock-output-names = "mii_phy_tx"; 241 }; 242 243 gmac_int_tx_clk: clk-gmac-int-tx { 244 #clock-cells = <0>; 245 compatible = "fixed-clock"; 246 clock-frequency = <125000000>; 247 clock-output-names = "gmac_int_tx"; 248 }; 249 250 gmac_tx_clk: clk@1c200d0 { 251 #clock-cells = <0>; 252 compatible = "allwinner,sun7i-a20-gmac-clk"; 253 reg = <0x01c200d0 0x4>; 254 clocks = <&mii_phy_tx_clk>, <&gmac_int_tx_clk>; 255 clock-output-names = "gmac_tx"; 256 }; 257 }; 258 259 de: display-engine { 260 compatible = "allwinner,sun6i-a31-display-engine"; 261 allwinner,pipelines = <&fe0>, <&fe1>; 262 status = "disabled"; 263 }; 264 265 soc { 266 compatible = "simple-bus"; 267 #address-cells = <1>; 268 #size-cells = <1>; 269 ranges; 270 271 dma: dma-controller@1c02000 { 272 compatible = "allwinner,sun6i-a31-dma"; 273 reg = <0x01c02000 0x1000>; 274 interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>; 275 clocks = <&ccu CLK_AHB1_DMA>; 276 resets = <&ccu RST_AHB1_DMA>; 277 #dma-cells = <1>; 278 }; 279 280 tcon0: lcd-controller@1c0c000 { 281 compatible = "allwinner,sun6i-a31-tcon"; 282 reg = <0x01c0c000 0x1000>; 283 interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>; 284 dmas = <&dma 11>; 285 resets = <&ccu RST_AHB1_LCD0>, 286 <&ccu RST_AHB1_LVDS>; 287 reset-names = "lcd", 288 "lvds"; 289 clocks = <&ccu CLK_AHB1_LCD0>, 290 <&ccu CLK_LCD0_CH0>, 291 <&ccu CLK_LCD0_CH1>, 292 <&ccu 15>; 293 clock-names = "ahb", 294 "tcon-ch0", 295 "tcon-ch1", 296 "lvds-alt"; 297 clock-output-names = "tcon0-pixel-clock"; 298 #clock-cells = <0>; 299 300 ports { 301 #address-cells = <1>; 302 #size-cells = <0>; 303 304 tcon0_in: port@0 { 305 #address-cells = <1>; 306 #size-cells = <0>; 307 reg = <0>; 308 309 tcon0_in_drc0: endpoint@0 { 310 reg = <0>; 311 remote-endpoint = <&drc0_out_tcon0>; 312 }; 313 314 tcon0_in_drc1: endpoint@1 { 315 reg = <1>; 316 remote-endpoint = <&drc1_out_tcon0>; 317 }; 318 }; 319 320 tcon0_out: port@1 { 321 #address-cells = <1>; 322 #size-cells = <0>; 323 reg = <1>; 324 325 tcon0_out_hdmi: endpoint@1 { 326 reg = <1>; 327 remote-endpoint = <&hdmi_in_tcon0>; 328 allwinner,tcon-channel = <1>; 329 }; 330 }; 331 }; 332 }; 333 334 tcon1: lcd-controller@1c0d000 { 335 compatible = "allwinner,sun6i-a31-tcon"; 336 reg = <0x01c0d000 0x1000>; 337 interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>; 338 dmas = <&dma 12>; 339 resets = <&ccu RST_AHB1_LCD1>, 340 <&ccu RST_AHB1_LVDS>; 341 reset-names = "lcd", "lvds"; 342 clocks = <&ccu CLK_AHB1_LCD1>, 343 <&ccu CLK_LCD1_CH0>, 344 <&ccu CLK_LCD1_CH1>, 345 <&ccu 15>; 346 clock-names = "ahb", 347 "tcon-ch0", 348 "tcon-ch1", 349 "lvds-alt"; 350 clock-output-names = "tcon1-pixel-clock"; 351 #clock-cells = <0>; 352 353 ports { 354 #address-cells = <1>; 355 #size-cells = <0>; 356 357 tcon1_in: port@0 { 358 #address-cells = <1>; 359 #size-cells = <0>; 360 reg = <0>; 361 362 tcon1_in_drc0: endpoint@0 { 363 reg = <0>; 364 remote-endpoint = <&drc0_out_tcon1>; 365 }; 366 367 tcon1_in_drc1: endpoint@1 { 368 reg = <1>; 369 remote-endpoint = <&drc1_out_tcon1>; 370 }; 371 }; 372 373 tcon1_out: port@1 { 374 #address-cells = <1>; 375 #size-cells = <0>; 376 reg = <1>; 377 378 tcon1_out_hdmi: endpoint@1 { 379 reg = <1>; 380 remote-endpoint = <&hdmi_in_tcon1>; 381 allwinner,tcon-channel = <1>; 382 }; 383 }; 384 }; 385 }; 386 387 mmc0: mmc@1c0f000 { 388 compatible = "allwinner,sun7i-a20-mmc"; 389 reg = <0x01c0f000 0x1000>; 390 clocks = <&ccu CLK_AHB1_MMC0>, 391 <&ccu CLK_MMC0>, 392 <&ccu CLK_MMC0_OUTPUT>, 393 <&ccu CLK_MMC0_SAMPLE>; 394 clock-names = "ahb", 395 "mmc", 396 "output", 397 "sample"; 398 resets = <&ccu RST_AHB1_MMC0>; 399 reset-names = "ahb"; 400 interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>; 401 pinctrl-names = "default"; 402 pinctrl-0 = <&mmc0_pins>; 403 status = "disabled"; 404 #address-cells = <1>; 405 #size-cells = <0>; 406 }; 407 408 mmc1: mmc@1c10000 { 409 compatible = "allwinner,sun7i-a20-mmc"; 410 reg = <0x01c10000 0x1000>; 411 clocks = <&ccu CLK_AHB1_MMC1>, 412 <&ccu CLK_MMC1>, 413 <&ccu CLK_MMC1_OUTPUT>, 414 <&ccu CLK_MMC1_SAMPLE>; 415 clock-names = "ahb", 416 "mmc", 417 "output", 418 "sample"; 419 resets = <&ccu RST_AHB1_MMC1>; 420 reset-names = "ahb"; 421 interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>; 422 pinctrl-names = "default"; 423 pinctrl-0 = <&mmc1_pins>; 424 status = "disabled"; 425 #address-cells = <1>; 426 #size-cells = <0>; 427 }; 428 429 mmc2: mmc@1c11000 { 430 compatible = "allwinner,sun7i-a20-mmc"; 431 reg = <0x01c11000 0x1000>; 432 clocks = <&ccu CLK_AHB1_MMC2>, 433 <&ccu CLK_MMC2>, 434 <&ccu CLK_MMC2_OUTPUT>, 435 <&ccu CLK_MMC2_SAMPLE>; 436 clock-names = "ahb", 437 "mmc", 438 "output", 439 "sample"; 440 resets = <&ccu RST_AHB1_MMC2>; 441 reset-names = "ahb"; 442 interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>; 443 status = "disabled"; 444 #address-cells = <1>; 445 #size-cells = <0>; 446 }; 447 448 mmc3: mmc@1c12000 { 449 compatible = "allwinner,sun7i-a20-mmc"; 450 reg = <0x01c12000 0x1000>; 451 clocks = <&ccu CLK_AHB1_MMC3>, 452 <&ccu CLK_MMC3>, 453 <&ccu CLK_MMC3_OUTPUT>, 454 <&ccu CLK_MMC3_SAMPLE>; 455 clock-names = "ahb", 456 "mmc", 457 "output", 458 "sample"; 459 resets = <&ccu RST_AHB1_MMC3>; 460 reset-names = "ahb"; 461 interrupts = <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>; 462 status = "disabled"; 463 #address-cells = <1>; 464 #size-cells = <0>; 465 }; 466 467 hdmi: hdmi@1c16000 { 468 compatible = "allwinner,sun6i-a31-hdmi"; 469 reg = <0x01c16000 0x1000>; 470 interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>; 471 clocks = <&ccu CLK_AHB1_HDMI>, <&ccu CLK_HDMI>, 472 <&ccu CLK_HDMI_DDC>, 473 <&ccu CLK_PLL_VIDEO0_2X>, 474 <&ccu CLK_PLL_VIDEO1_2X>; 475 clock-names = "ahb", "mod", "ddc", "pll-0", "pll-1"; 476 resets = <&ccu RST_AHB1_HDMI>; 477 dma-names = "ddc-tx", "ddc-rx", "audio-tx"; 478 dmas = <&dma 13>, <&dma 13>, <&dma 14>; 479 status = "disabled"; 480 481 ports { 482 #address-cells = <1>; 483 #size-cells = <0>; 484 485 hdmi_in: port@0 { 486 #address-cells = <1>; 487 #size-cells = <0>; 488 reg = <0>; 489 490 hdmi_in_tcon0: endpoint@0 { 491 reg = <0>; 492 remote-endpoint = <&tcon0_out_hdmi>; 493 }; 494 495 hdmi_in_tcon1: endpoint@1 { 496 reg = <1>; 497 remote-endpoint = <&tcon1_out_hdmi>; 498 }; 499 }; 500 501 hdmi_out: port@1 { 502 reg = <1>; 503 }; 504 }; 505 }; 506 507 usb_otg: usb@1c19000 { 508 compatible = "allwinner,sun6i-a31-musb"; 509 reg = <0x01c19000 0x0400>; 510 clocks = <&ccu CLK_AHB1_OTG>; 511 resets = <&ccu RST_AHB1_OTG>; 512 interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>; 513 interrupt-names = "mc"; 514 phys = <&usbphy 0>; 515 phy-names = "usb"; 516 extcon = <&usbphy 0>; 517 dr_mode = "otg"; 518 status = "disabled"; 519 }; 520 521 usbphy: phy@1c19400 { 522 compatible = "allwinner,sun6i-a31-usb-phy"; 523 reg = <0x01c19400 0x10>, 524 <0x01c1a800 0x4>, 525 <0x01c1b800 0x4>; 526 reg-names = "phy_ctrl", 527 "pmu1", 528 "pmu2"; 529 clocks = <&ccu CLK_USB_PHY0>, 530 <&ccu CLK_USB_PHY1>, 531 <&ccu CLK_USB_PHY2>; 532 clock-names = "usb0_phy", 533 "usb1_phy", 534 "usb2_phy"; 535 resets = <&ccu RST_USB_PHY0>, 536 <&ccu RST_USB_PHY1>, 537 <&ccu RST_USB_PHY2>; 538 reset-names = "usb0_reset", 539 "usb1_reset", 540 "usb2_reset"; 541 status = "disabled"; 542 #phy-cells = <1>; 543 }; 544 545 ehci0: usb@1c1a000 { 546 compatible = "allwinner,sun6i-a31-ehci", "generic-ehci"; 547 reg = <0x01c1a000 0x100>; 548 interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>; 549 clocks = <&ccu CLK_AHB1_EHCI0>; 550 resets = <&ccu RST_AHB1_EHCI0>; 551 phys = <&usbphy 1>; 552 phy-names = "usb"; 553 status = "disabled"; 554 }; 555 556 ohci0: usb@1c1a400 { 557 compatible = "allwinner,sun6i-a31-ohci", "generic-ohci"; 558 reg = <0x01c1a400 0x100>; 559 interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>; 560 clocks = <&ccu CLK_AHB1_OHCI0>, <&ccu CLK_USB_OHCI0>; 561 resets = <&ccu RST_AHB1_OHCI0>; 562 phys = <&usbphy 1>; 563 phy-names = "usb"; 564 status = "disabled"; 565 }; 566 567 ehci1: usb@1c1b000 { 568 compatible = "allwinner,sun6i-a31-ehci", "generic-ehci"; 569 reg = <0x01c1b000 0x100>; 570 interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>; 571 clocks = <&ccu CLK_AHB1_EHCI1>; 572 resets = <&ccu RST_AHB1_EHCI1>; 573 phys = <&usbphy 2>; 574 phy-names = "usb"; 575 status = "disabled"; 576 }; 577 578 ohci1: usb@1c1b400 { 579 compatible = "allwinner,sun6i-a31-ohci", "generic-ohci"; 580 reg = <0x01c1b400 0x100>; 581 interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>; 582 clocks = <&ccu CLK_AHB1_OHCI1>, <&ccu CLK_USB_OHCI1>; 583 resets = <&ccu RST_AHB1_OHCI1>; 584 phys = <&usbphy 2>; 585 phy-names = "usb"; 586 status = "disabled"; 587 }; 588 589 ohci2: usb@1c1c400 { 590 compatible = "allwinner,sun6i-a31-ohci", "generic-ohci"; 591 reg = <0x01c1c400 0x100>; 592 interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>; 593 clocks = <&ccu CLK_AHB1_OHCI2>, <&ccu CLK_USB_OHCI2>; 594 resets = <&ccu RST_AHB1_OHCI2>; 595 status = "disabled"; 596 }; 597 598 ccu: clock@1c20000 { 599 compatible = "allwinner,sun6i-a31-ccu"; 600 reg = <0x01c20000 0x400>; 601 clocks = <&osc24M>, <&rtc 0>; 602 clock-names = "hosc", "losc"; 603 #clock-cells = <1>; 604 #reset-cells = <1>; 605 }; 606 607 pio: pinctrl@1c20800 { 608 compatible = "allwinner,sun6i-a31-pinctrl"; 609 reg = <0x01c20800 0x400>; 610 interrupt-parent = <&r_intc>; 611 interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>, 612 <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>, 613 <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>, 614 <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>; 615 clocks = <&ccu CLK_APB1_PIO>, <&osc24M>, <&rtc 0>; 616 clock-names = "apb", "hosc", "losc"; 617 gpio-controller; 618 interrupt-controller; 619 #interrupt-cells = <3>; 620 #gpio-cells = <3>; 621 622 gmac_gmii_pins: gmac-gmii-pins { 623 pins = "PA0", "PA1", "PA2", "PA3", 624 "PA4", "PA5", "PA6", "PA7", 625 "PA8", "PA9", "PA10", "PA11", 626 "PA12", "PA13", "PA14", "PA15", 627 "PA16", "PA17", "PA18", "PA19", 628 "PA20", "PA21", "PA22", "PA23", 629 "PA24", "PA25", "PA26", "PA27"; 630 function = "gmac"; 631 /* 632 * data lines in GMII mode run at 125MHz and 633 * might need a higher signal drive strength 634 */ 635 drive-strength = <30>; 636 }; 637 638 gmac_mii_pins: gmac-mii-pins { 639 pins = "PA0", "PA1", "PA2", "PA3", 640 "PA8", "PA9", "PA11", 641 "PA12", "PA13", "PA14", "PA19", 642 "PA20", "PA21", "PA22", "PA23", 643 "PA24", "PA26", "PA27"; 644 function = "gmac"; 645 }; 646 647 gmac_rgmii_pins: gmac-rgmii-pins { 648 pins = "PA0", "PA1", "PA2", "PA3", 649 "PA9", "PA10", "PA11", 650 "PA12", "PA13", "PA14", "PA19", 651 "PA20", "PA25", "PA26", "PA27"; 652 function = "gmac"; 653 /* 654 * data lines in RGMII mode use DDR mode 655 * and need a higher signal drive strength 656 */ 657 drive-strength = <40>; 658 }; 659 660 i2c0_pins: i2c0-pins { 661 pins = "PH14", "PH15"; 662 function = "i2c0"; 663 }; 664 665 i2c1_pins: i2c1-pins { 666 pins = "PH16", "PH17"; 667 function = "i2c1"; 668 }; 669 670 i2c2_pins: i2c2-pins { 671 pins = "PH18", "PH19"; 672 function = "i2c2"; 673 }; 674 675 lcd0_rgb888_pins: lcd0-rgb888-pins { 676 pins = "PD0", "PD1", "PD2", "PD3", 677 "PD4", "PD5", "PD6", "PD7", 678 "PD8", "PD9", "PD10", "PD11", 679 "PD12", "PD13", "PD14", "PD15", 680 "PD16", "PD17", "PD18", "PD19", 681 "PD20", "PD21", "PD22", "PD23", 682 "PD24", "PD25", "PD26", "PD27"; 683 function = "lcd0"; 684 }; 685 686 mmc0_pins: mmc0-pins { 687 pins = "PF0", "PF1", "PF2", 688 "PF3", "PF4", "PF5"; 689 function = "mmc0"; 690 drive-strength = <30>; 691 bias-pull-up; 692 }; 693 694 mmc1_pins: mmc1-pins { 695 pins = "PG0", "PG1", "PG2", "PG3", 696 "PG4", "PG5"; 697 function = "mmc1"; 698 drive-strength = <30>; 699 bias-pull-up; 700 }; 701 702 mmc2_4bit_pins: mmc2-4bit-pins { 703 pins = "PC6", "PC7", "PC8", "PC9", 704 "PC10", "PC11"; 705 function = "mmc2"; 706 drive-strength = <30>; 707 bias-pull-up; 708 }; 709 710 mmc2_8bit_emmc_pins: mmc2-8bit-emmc-pins { 711 pins = "PC6", "PC7", "PC8", "PC9", 712 "PC10", "PC11", "PC12", 713 "PC13", "PC14", "PC15", 714 "PC24"; 715 function = "mmc2"; 716 drive-strength = <30>; 717 bias-pull-up; 718 }; 719 720 mmc3_8bit_emmc_pins: mmc3-8bit-emmc-pins { 721 pins = "PC6", "PC7", "PC8", "PC9", 722 "PC10", "PC11", "PC12", 723 "PC13", "PC14", "PC15", 724 "PC24"; 725 function = "mmc3"; 726 drive-strength = <40>; 727 bias-pull-up; 728 }; 729 730 spdif_tx_pin: spdif-tx-pin { 731 pins = "PH28"; 732 function = "spdif"; 733 }; 734 735 uart0_ph_pins: uart0-ph-pins { 736 pins = "PH20", "PH21"; 737 function = "uart0"; 738 }; 739 }; 740 741 timer@1c20c00 { 742 compatible = "allwinner,sun4i-a10-timer"; 743 reg = <0x01c20c00 0xa0>; 744 interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>, 745 <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>, 746 <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>, 747 <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>, 748 <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>, 749 <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>; 750 clocks = <&osc24M>; 751 }; 752 753 wdt1: watchdog@1c20ca0 { 754 compatible = "allwinner,sun6i-a31-wdt"; 755 reg = <0x01c20ca0 0x20>; 756 interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>; 757 clocks = <&osc24M>; 758 }; 759 760 spdif: spdif@1c21000 { 761 #sound-dai-cells = <0>; 762 compatible = "allwinner,sun6i-a31-spdif"; 763 reg = <0x01c21000 0x400>; 764 interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>; 765 clocks = <&ccu CLK_APB1_SPDIF>, <&ccu CLK_SPDIF>; 766 resets = <&ccu RST_APB1_SPDIF>; 767 clock-names = "apb", "spdif"; 768 dmas = <&dma 2>, <&dma 2>; 769 dma-names = "rx", "tx"; 770 status = "disabled"; 771 }; 772 773 i2s0: i2s@1c22000 { 774 #sound-dai-cells = <0>; 775 compatible = "allwinner,sun6i-a31-i2s"; 776 reg = <0x01c22000 0x400>; 777 interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>; 778 clocks = <&ccu CLK_APB1_DAUDIO0>, <&ccu CLK_DAUDIO0>; 779 resets = <&ccu RST_APB1_DAUDIO0>; 780 clock-names = "apb", "mod"; 781 dmas = <&dma 3>, <&dma 3>; 782 dma-names = "rx", "tx"; 783 status = "disabled"; 784 }; 785 786 i2s1: i2s@1c22400 { 787 #sound-dai-cells = <0>; 788 compatible = "allwinner,sun6i-a31-i2s"; 789 reg = <0x01c22400 0x400>; 790 interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>; 791 clocks = <&ccu CLK_APB1_DAUDIO1>, <&ccu CLK_DAUDIO1>; 792 resets = <&ccu RST_APB1_DAUDIO1>; 793 clock-names = "apb", "mod"; 794 dmas = <&dma 4>, <&dma 4>; 795 dma-names = "rx", "tx"; 796 status = "disabled"; 797 }; 798 799 lradc: lradc@1c22800 { 800 compatible = "allwinner,sun4i-a10-lradc-keys"; 801 reg = <0x01c22800 0x100>; 802 interrupt-parent = <&r_intc>; 803 interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>; 804 status = "disabled"; 805 }; 806 807 rtp: rtp@1c25000 { 808 compatible = "allwinner,sun6i-a31-ts"; 809 reg = <0x01c25000 0x100>; 810 interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>; 811 #thermal-sensor-cells = <0>; 812 }; 813 814 uart0: serial@1c28000 { 815 compatible = "snps,dw-apb-uart"; 816 reg = <0x01c28000 0x400>; 817 interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>; 818 reg-shift = <2>; 819 reg-io-width = <4>; 820 clocks = <&ccu CLK_APB2_UART0>; 821 resets = <&ccu RST_APB2_UART0>; 822 dmas = <&dma 6>, <&dma 6>; 823 dma-names = "rx", "tx"; 824 status = "disabled"; 825 }; 826 827 uart1: serial@1c28400 { 828 compatible = "snps,dw-apb-uart"; 829 reg = <0x01c28400 0x400>; 830 interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>; 831 reg-shift = <2>; 832 reg-io-width = <4>; 833 clocks = <&ccu CLK_APB2_UART1>; 834 resets = <&ccu RST_APB2_UART1>; 835 dmas = <&dma 7>, <&dma 7>; 836 dma-names = "rx", "tx"; 837 status = "disabled"; 838 }; 839 840 uart2: serial@1c28800 { 841 compatible = "snps,dw-apb-uart"; 842 reg = <0x01c28800 0x400>; 843 interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>; 844 reg-shift = <2>; 845 reg-io-width = <4>; 846 clocks = <&ccu CLK_APB2_UART2>; 847 resets = <&ccu RST_APB2_UART2>; 848 dmas = <&dma 8>, <&dma 8>; 849 dma-names = "rx", "tx"; 850 status = "disabled"; 851 }; 852 853 uart3: serial@1c28c00 { 854 compatible = "snps,dw-apb-uart"; 855 reg = <0x01c28c00 0x400>; 856 interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>; 857 reg-shift = <2>; 858 reg-io-width = <4>; 859 clocks = <&ccu CLK_APB2_UART3>; 860 resets = <&ccu RST_APB2_UART3>; 861 dmas = <&dma 9>, <&dma 9>; 862 dma-names = "rx", "tx"; 863 status = "disabled"; 864 }; 865 866 uart4: serial@1c29000 { 867 compatible = "snps,dw-apb-uart"; 868 reg = <0x01c29000 0x400>; 869 interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>; 870 reg-shift = <2>; 871 reg-io-width = <4>; 872 clocks = <&ccu CLK_APB2_UART4>; 873 resets = <&ccu RST_APB2_UART4>; 874 dmas = <&dma 10>, <&dma 10>; 875 dma-names = "rx", "tx"; 876 status = "disabled"; 877 }; 878 879 uart5: serial@1c29400 { 880 compatible = "snps,dw-apb-uart"; 881 reg = <0x01c29400 0x400>; 882 interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>; 883 reg-shift = <2>; 884 reg-io-width = <4>; 885 clocks = <&ccu CLK_APB2_UART5>; 886 resets = <&ccu RST_APB2_UART5>; 887 dmas = <&dma 22>, <&dma 22>; 888 dma-names = "rx", "tx"; 889 status = "disabled"; 890 }; 891 892 i2c0: i2c@1c2ac00 { 893 compatible = "allwinner,sun6i-a31-i2c"; 894 reg = <0x01c2ac00 0x400>; 895 interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>; 896 clocks = <&ccu CLK_APB2_I2C0>; 897 resets = <&ccu RST_APB2_I2C0>; 898 pinctrl-names = "default"; 899 pinctrl-0 = <&i2c0_pins>; 900 status = "disabled"; 901 #address-cells = <1>; 902 #size-cells = <0>; 903 }; 904 905 i2c1: i2c@1c2b000 { 906 compatible = "allwinner,sun6i-a31-i2c"; 907 reg = <0x01c2b000 0x400>; 908 interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>; 909 clocks = <&ccu CLK_APB2_I2C1>; 910 resets = <&ccu RST_APB2_I2C1>; 911 pinctrl-names = "default"; 912 pinctrl-0 = <&i2c1_pins>; 913 status = "disabled"; 914 #address-cells = <1>; 915 #size-cells = <0>; 916 }; 917 918 i2c2: i2c@1c2b400 { 919 compatible = "allwinner,sun6i-a31-i2c"; 920 reg = <0x01c2b400 0x400>; 921 interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>; 922 clocks = <&ccu CLK_APB2_I2C2>; 923 resets = <&ccu RST_APB2_I2C2>; 924 pinctrl-names = "default"; 925 pinctrl-0 = <&i2c2_pins>; 926 status = "disabled"; 927 #address-cells = <1>; 928 #size-cells = <0>; 929 }; 930 931 i2c3: i2c@1c2b800 { 932 compatible = "allwinner,sun6i-a31-i2c"; 933 reg = <0x01c2b800 0x400>; 934 interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>; 935 clocks = <&ccu CLK_APB2_I2C3>; 936 resets = <&ccu RST_APB2_I2C3>; 937 status = "disabled"; 938 #address-cells = <1>; 939 #size-cells = <0>; 940 }; 941 942 gmac: ethernet@1c30000 { 943 compatible = "allwinner,sun7i-a20-gmac"; 944 reg = <0x01c30000 0x1054>; 945 interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>; 946 interrupt-names = "macirq"; 947 clocks = <&ccu CLK_AHB1_EMAC>, <&gmac_tx_clk>; 948 clock-names = "stmmaceth", "allwinner_gmac_tx"; 949 resets = <&ccu RST_AHB1_EMAC>; 950 reset-names = "stmmaceth"; 951 snps,pbl = <2>; 952 snps,fixed-burst; 953 snps,force_sf_dma_mode; 954 status = "disabled"; 955 956 mdio: mdio { 957 compatible = "snps,dwmac-mdio"; 958 #address-cells = <1>; 959 #size-cells = <0>; 960 }; 961 }; 962 963 crypto: crypto-engine@1c15000 { 964 compatible = "allwinner,sun6i-a31-crypto", 965 "allwinner,sun4i-a10-crypto"; 966 reg = <0x01c15000 0x1000>; 967 interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>; 968 clocks = <&ccu CLK_AHB1_SS>, <&ccu CLK_SS>; 969 clock-names = "ahb", "mod"; 970 resets = <&ccu RST_AHB1_SS>; 971 reset-names = "ahb"; 972 }; 973 974 codec: codec@1c22c00 { 975 #sound-dai-cells = <0>; 976 compatible = "allwinner,sun6i-a31-codec"; 977 reg = <0x01c22c00 0x400>; 978 interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>; 979 clocks = <&ccu CLK_APB1_CODEC>, <&ccu CLK_CODEC>; 980 clock-names = "apb", "codec"; 981 resets = <&ccu RST_APB1_CODEC>; 982 dmas = <&dma 15>, <&dma 15>; 983 dma-names = "rx", "tx"; 984 status = "disabled"; 985 }; 986 987 timer@1c60000 { 988 compatible = "allwinner,sun6i-a31-hstimer", 989 "allwinner,sun7i-a20-hstimer"; 990 reg = <0x01c60000 0x1000>; 991 interrupts = <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>, 992 <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>, 993 <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>, 994 <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>; 995 clocks = <&ccu CLK_AHB1_HSTIMER>; 996 resets = <&ccu RST_AHB1_HSTIMER>; 997 }; 998 999 spi0: spi@1c68000 { 1000 compatible = "allwinner,sun6i-a31-spi"; 1001 reg = <0x01c68000 0x1000>; 1002 interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>; 1003 clocks = <&ccu CLK_AHB1_SPI0>, <&ccu CLK_SPI0>; 1004 clock-names = "ahb", "mod"; 1005 dmas = <&dma 23>, <&dma 23>; 1006 dma-names = "rx", "tx"; 1007 resets = <&ccu RST_AHB1_SPI0>; 1008 status = "disabled"; 1009 #address-cells = <1>; 1010 #size-cells = <0>; 1011 }; 1012 1013 spi1: spi@1c69000 { 1014 compatible = "allwinner,sun6i-a31-spi"; 1015 reg = <0x01c69000 0x1000>; 1016 interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>; 1017 clocks = <&ccu CLK_AHB1_SPI1>, <&ccu CLK_SPI1>; 1018 clock-names = "ahb", "mod"; 1019 dmas = <&dma 24>, <&dma 24>; 1020 dma-names = "rx", "tx"; 1021 resets = <&ccu RST_AHB1_SPI1>; 1022 status = "disabled"; 1023 #address-cells = <1>; 1024 #size-cells = <0>; 1025 }; 1026 1027 spi2: spi@1c6a000 { 1028 compatible = "allwinner,sun6i-a31-spi"; 1029 reg = <0x01c6a000 0x1000>; 1030 interrupts = <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>; 1031 clocks = <&ccu CLK_AHB1_SPI2>, <&ccu CLK_SPI2>; 1032 clock-names = "ahb", "mod"; 1033 dmas = <&dma 25>, <&dma 25>; 1034 dma-names = "rx", "tx"; 1035 resets = <&ccu RST_AHB1_SPI2>; 1036 status = "disabled"; 1037 #address-cells = <1>; 1038 #size-cells = <0>; 1039 }; 1040 1041 spi3: spi@1c6b000 { 1042 compatible = "allwinner,sun6i-a31-spi"; 1043 reg = <0x01c6b000 0x1000>; 1044 interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>; 1045 clocks = <&ccu CLK_AHB1_SPI3>, <&ccu CLK_SPI3>; 1046 clock-names = "ahb", "mod"; 1047 dmas = <&dma 26>, <&dma 26>; 1048 dma-names = "rx", "tx"; 1049 resets = <&ccu RST_AHB1_SPI3>; 1050 status = "disabled"; 1051 #address-cells = <1>; 1052 #size-cells = <0>; 1053 }; 1054 1055 gic: interrupt-controller@1c81000 { 1056 compatible = "arm,gic-400"; 1057 reg = <0x01c81000 0x1000>, 1058 <0x01c82000 0x2000>, 1059 <0x01c84000 0x2000>, 1060 <0x01c86000 0x2000>; 1061 interrupt-controller; 1062 #interrupt-cells = <3>; 1063 interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>; 1064 }; 1065 1066 fe0: display-frontend@1e00000 { 1067 compatible = "allwinner,sun6i-a31-display-frontend"; 1068 reg = <0x01e00000 0x20000>; 1069 interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>; 1070 clocks = <&ccu CLK_AHB1_FE0>, <&ccu CLK_FE0>, 1071 <&ccu CLK_DRAM_FE0>; 1072 clock-names = "ahb", "mod", 1073 "ram"; 1074 resets = <&ccu RST_AHB1_FE0>; 1075 1076 ports { 1077 #address-cells = <1>; 1078 #size-cells = <0>; 1079 1080 fe0_out: port@1 { 1081 #address-cells = <1>; 1082 #size-cells = <0>; 1083 reg = <1>; 1084 1085 fe0_out_be0: endpoint@0 { 1086 reg = <0>; 1087 remote-endpoint = <&be0_in_fe0>; 1088 }; 1089 1090 fe0_out_be1: endpoint@1 { 1091 reg = <1>; 1092 remote-endpoint = <&be1_in_fe0>; 1093 }; 1094 }; 1095 }; 1096 }; 1097 1098 fe1: display-frontend@1e20000 { 1099 compatible = "allwinner,sun6i-a31-display-frontend"; 1100 reg = <0x01e20000 0x20000>; 1101 interrupts = <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>; 1102 clocks = <&ccu CLK_AHB1_FE1>, <&ccu CLK_FE1>, 1103 <&ccu CLK_DRAM_FE1>; 1104 clock-names = "ahb", "mod", 1105 "ram"; 1106 resets = <&ccu RST_AHB1_FE1>; 1107 1108 ports { 1109 #address-cells = <1>; 1110 #size-cells = <0>; 1111 1112 fe1_out: port@1 { 1113 #address-cells = <1>; 1114 #size-cells = <0>; 1115 reg = <1>; 1116 1117 fe1_out_be0: endpoint@0 { 1118 reg = <0>; 1119 remote-endpoint = <&be0_in_fe1>; 1120 }; 1121 1122 fe1_out_be1: endpoint@1 { 1123 reg = <1>; 1124 remote-endpoint = <&be1_in_fe1>; 1125 }; 1126 }; 1127 }; 1128 }; 1129 1130 be1: display-backend@1e40000 { 1131 compatible = "allwinner,sun6i-a31-display-backend"; 1132 reg = <0x01e40000 0x10000>; 1133 interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>; 1134 clocks = <&ccu CLK_AHB1_BE1>, <&ccu CLK_BE1>, 1135 <&ccu CLK_DRAM_BE1>; 1136 clock-names = "ahb", "mod", 1137 "ram"; 1138 resets = <&ccu RST_AHB1_BE1>; 1139 1140 ports { 1141 #address-cells = <1>; 1142 #size-cells = <0>; 1143 1144 be1_in: port@0 { 1145 #address-cells = <1>; 1146 #size-cells = <0>; 1147 reg = <0>; 1148 1149 be1_in_fe0: endpoint@0 { 1150 reg = <0>; 1151 remote-endpoint = <&fe0_out_be1>; 1152 }; 1153 1154 be1_in_fe1: endpoint@1 { 1155 reg = <1>; 1156 remote-endpoint = <&fe1_out_be1>; 1157 }; 1158 }; 1159 1160 be1_out: port@1 { 1161 #address-cells = <1>; 1162 #size-cells = <0>; 1163 reg = <1>; 1164 1165 be1_out_drc1: endpoint@1 { 1166 reg = <1>; 1167 remote-endpoint = <&drc1_in_be1>; 1168 }; 1169 }; 1170 }; 1171 }; 1172 1173 drc1: drc@1e50000 { 1174 compatible = "allwinner,sun6i-a31-drc"; 1175 reg = <0x01e50000 0x10000>; 1176 interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>; 1177 clocks = <&ccu CLK_AHB1_DRC1>, <&ccu CLK_IEP_DRC1>, 1178 <&ccu CLK_DRAM_DRC1>; 1179 clock-names = "ahb", "mod", 1180 "ram"; 1181 resets = <&ccu RST_AHB1_DRC1>; 1182 1183 ports { 1184 #address-cells = <1>; 1185 #size-cells = <0>; 1186 1187 drc1_in: port@0 { 1188 #address-cells = <1>; 1189 #size-cells = <0>; 1190 reg = <0>; 1191 1192 drc1_in_be1: endpoint@1 { 1193 reg = <1>; 1194 remote-endpoint = <&be1_out_drc1>; 1195 }; 1196 }; 1197 1198 drc1_out: port@1 { 1199 #address-cells = <1>; 1200 #size-cells = <0>; 1201 reg = <1>; 1202 1203 drc1_out_tcon0: endpoint@0 { 1204 reg = <0>; 1205 remote-endpoint = <&tcon0_in_drc1>; 1206 }; 1207 1208 drc1_out_tcon1: endpoint@1 { 1209 reg = <1>; 1210 remote-endpoint = <&tcon1_in_drc1>; 1211 }; 1212 }; 1213 }; 1214 }; 1215 1216 be0: display-backend@1e60000 { 1217 compatible = "allwinner,sun6i-a31-display-backend"; 1218 reg = <0x01e60000 0x10000>; 1219 interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>; 1220 clocks = <&ccu CLK_AHB1_BE0>, <&ccu CLK_BE0>, 1221 <&ccu CLK_DRAM_BE0>; 1222 clock-names = "ahb", "mod", 1223 "ram"; 1224 resets = <&ccu RST_AHB1_BE0>; 1225 1226 ports { 1227 #address-cells = <1>; 1228 #size-cells = <0>; 1229 1230 be0_in: port@0 { 1231 #address-cells = <1>; 1232 #size-cells = <0>; 1233 reg = <0>; 1234 1235 be0_in_fe0: endpoint@0 { 1236 reg = <0>; 1237 remote-endpoint = <&fe0_out_be0>; 1238 }; 1239 1240 be0_in_fe1: endpoint@1 { 1241 reg = <1>; 1242 remote-endpoint = <&fe1_out_be0>; 1243 }; 1244 }; 1245 1246 be0_out: port@1 { 1247 reg = <1>; 1248 1249 be0_out_drc0: endpoint { 1250 remote-endpoint = <&drc0_in_be0>; 1251 }; 1252 }; 1253 }; 1254 }; 1255 1256 drc0: drc@1e70000 { 1257 compatible = "allwinner,sun6i-a31-drc"; 1258 reg = <0x01e70000 0x10000>; 1259 interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>; 1260 clocks = <&ccu CLK_AHB1_DRC0>, <&ccu CLK_IEP_DRC0>, 1261 <&ccu CLK_DRAM_DRC0>; 1262 clock-names = "ahb", "mod", 1263 "ram"; 1264 resets = <&ccu RST_AHB1_DRC0>; 1265 1266 ports { 1267 #address-cells = <1>; 1268 #size-cells = <0>; 1269 1270 drc0_in: port@0 { 1271 reg = <0>; 1272 1273 drc0_in_be0: endpoint { 1274 remote-endpoint = <&be0_out_drc0>; 1275 }; 1276 }; 1277 1278 drc0_out: port@1 { 1279 #address-cells = <1>; 1280 #size-cells = <0>; 1281 reg = <1>; 1282 1283 drc0_out_tcon0: endpoint@0 { 1284 reg = <0>; 1285 remote-endpoint = <&tcon0_in_drc0>; 1286 }; 1287 1288 drc0_out_tcon1: endpoint@1 { 1289 reg = <1>; 1290 remote-endpoint = <&tcon1_in_drc0>; 1291 }; 1292 }; 1293 }; 1294 }; 1295 1296 rtc: rtc@1f00000 { 1297 #clock-cells = <1>; 1298 compatible = "allwinner,sun6i-a31-rtc"; 1299 reg = <0x01f00000 0x54>; 1300 interrupt-parent = <&r_intc>; 1301 interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>, 1302 <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>; 1303 clocks = <&osc32k>; 1304 clock-output-names = "osc32k"; 1305 }; 1306 1307 r_intc: interrupt-controller@1f00c00 { 1308 compatible = "allwinner,sun6i-a31-r-intc"; 1309 interrupt-controller; 1310 #interrupt-cells = <3>; 1311 reg = <0x01f00c00 0x400>; 1312 interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>; 1313 }; 1314 1315 prcm@1f01400 { 1316 compatible = "allwinner,sun6i-a31-prcm"; 1317 reg = <0x01f01400 0x200>; 1318 1319 ar100: ar100_clk { 1320 compatible = "allwinner,sun6i-a31-ar100-clk"; 1321 #clock-cells = <0>; 1322 clocks = <&rtc 0>, <&osc24M>, 1323 <&ccu CLK_PLL_PERIPH>, 1324 <&ccu CLK_PLL_PERIPH>; 1325 clock-output-names = "ar100"; 1326 }; 1327 1328 ahb0: ahb0_clk { 1329 compatible = "fixed-factor-clock"; 1330 #clock-cells = <0>; 1331 clock-div = <1>; 1332 clock-mult = <1>; 1333 clocks = <&ar100>; 1334 clock-output-names = "ahb0"; 1335 }; 1336 1337 apb0: apb0_clk { 1338 compatible = "allwinner,sun6i-a31-apb0-clk"; 1339 #clock-cells = <0>; 1340 clocks = <&ahb0>; 1341 clock-output-names = "apb0"; 1342 }; 1343 1344 apb0_gates: apb0_gates_clk { 1345 compatible = "allwinner,sun6i-a31-apb0-gates-clk"; 1346 #clock-cells = <1>; 1347 clocks = <&apb0>; 1348 clock-output-names = "apb0_pio", "apb0_ir", 1349 "apb0_timer", "apb0_p2wi", 1350 "apb0_uart", "apb0_1wire", 1351 "apb0_i2c"; 1352 }; 1353 1354 ir_clk: ir_clk { 1355 #clock-cells = <0>; 1356 compatible = "allwinner,sun4i-a10-mod0-clk"; 1357 clocks = <&rtc 0>, <&osc24M>; 1358 clock-output-names = "ir"; 1359 }; 1360 1361 apb0_rst: apb0_rst { 1362 compatible = "allwinner,sun6i-a31-clock-reset"; 1363 #reset-cells = <1>; 1364 }; 1365 }; 1366 1367 cpucfg@1f01c00 { 1368 compatible = "allwinner,sun6i-a31-cpuconfig"; 1369 reg = <0x01f01c00 0x300>; 1370 }; 1371 1372 ir: ir@1f02000 { 1373 compatible = "allwinner,sun6i-a31-ir"; 1374 clocks = <&apb0_gates 1>, <&ir_clk>; 1375 clock-names = "apb", "ir"; 1376 resets = <&apb0_rst 1>; 1377 interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>; 1378 reg = <0x01f02000 0x40>; 1379 status = "disabled"; 1380 }; 1381 1382 r_pio: pinctrl@1f02c00 { 1383 compatible = "allwinner,sun6i-a31-r-pinctrl"; 1384 reg = <0x01f02c00 0x400>; 1385 interrupt-parent = <&r_intc>; 1386 interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>, 1387 <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>; 1388 clocks = <&apb0_gates 0>, <&osc24M>, <&rtc 0>; 1389 clock-names = "apb", "hosc", "losc"; 1390 resets = <&apb0_rst 0>; 1391 gpio-controller; 1392 interrupt-controller; 1393 #interrupt-cells = <3>; 1394 #gpio-cells = <3>; 1395 1396 s_ir_rx_pin: s-ir-rx-pin { 1397 pins = "PL4"; 1398 function = "s_ir"; 1399 }; 1400 1401 s_p2wi_pins: s-p2wi-pins { 1402 pins = "PL0", "PL1"; 1403 function = "s_p2wi"; 1404 }; 1405 }; 1406 1407 p2wi: i2c@1f03400 { 1408 compatible = "allwinner,sun6i-a31-p2wi"; 1409 reg = <0x01f03400 0x400>; 1410 interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>; 1411 clocks = <&apb0_gates 3>; 1412 clock-frequency = <100000>; 1413 resets = <&apb0_rst 3>; 1414 pinctrl-names = "default"; 1415 pinctrl-0 = <&s_p2wi_pins>; 1416 status = "disabled"; 1417 #address-cells = <1>; 1418 #size-cells = <0>; 1419 }; 1420 }; 1421};