2 * Copyright 2013 Freescale Semiconductor, Inc.
4 * This file is dual-licensed: you can use it either under the terms
5 * of the GPL or the X11 license, at your option. Note that this dual
6 * licensing only applies to this file, and not this project as a
9 * a) This file is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU General Public License
11 * version 2 as published by the Free Software Foundation.
13 * This file is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
20 * b) Permission is hereby granted, free of charge, to any person
21 * obtaining a copy of this software and associated documentation
22 * files (the "Software"), to deal in the Software without
23 * restriction, including without limitation the rights to use,
24 * copy, modify, merge, publish, distribute, sublicense, and/or
25 * sell copies of the Software, and to permit persons to whom the
26 * Software is furnished to do so, subject to the following
29 * The above copyright notice and this permission notice shall be
30 * included in all copies or substantial portions of the Software.
32 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
33 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
34 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
35 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
36 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
37 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
38 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
39 * OTHER DEALINGS IN THE SOFTWARE.
42 #include "vf610-pinfunc.h"
43 #include <dt-bindings/clock/vf610-clock.h>
44 #include <dt-bindings/interrupt-controller/irq.h>
45 #include <dt-bindings/gpio/gpio.h>
69 compatible = "fixed-clock";
71 clock-frequency = <24000000>;
75 compatible = "fixed-clock";
77 clock-frequency = <32768>;
80 reboot: syscon-reboot {
81 compatible = "syscon-reboot";
90 compatible = "simple-bus";
91 interrupt-parent = <&mscm_ir>;
94 aips0: aips-bus@40000000 {
95 compatible = "fsl,aips-bus", "simple-bus";
98 reg = <0x40000000 0x00070000>;
101 mscm_cpucfg: cpucfg@40001000 {
102 compatible = "fsl,vf610-mscm-cpucfg", "syscon";
103 reg = <0x40001000 0x800>;
106 mscm_ir: interrupt-controller@40001800 {
107 compatible = "fsl,vf610-mscm-ir";
108 reg = <0x40001800 0x400>;
109 fsl,cpucfg = <&mscm_cpucfg>;
110 interrupt-controller;
111 #interrupt-cells = <2>;
114 edma0: dma-controller@40018000 {
116 compatible = "fsl,vf610-edma";
117 reg = <0x40018000 0x2000>,
121 interrupts = <8 IRQ_TYPE_LEVEL_HIGH>,
122 <9 IRQ_TYPE_LEVEL_HIGH>;
123 interrupt-names = "edma-tx", "edma-err";
124 clock-names = "dmamux0", "dmamux1";
125 clocks = <&clks VF610_CLK_DMAMUX0>,
126 <&clks VF610_CLK_DMAMUX1>;
130 can0: flexcan@40020000 {
131 compatible = "fsl,vf610-flexcan";
132 reg = <0x40020000 0x4000>;
133 interrupts = <58 IRQ_TYPE_LEVEL_HIGH>;
134 clocks = <&clks VF610_CLK_FLEXCAN0>,
135 <&clks VF610_CLK_FLEXCAN0>;
136 clock-names = "ipg", "per";
140 uart0: serial@40027000 {
141 compatible = "fsl,vf610-lpuart";
142 reg = <0x40027000 0x1000>;
143 interrupts = <61 IRQ_TYPE_LEVEL_HIGH>;
144 clocks = <&clks VF610_CLK_UART0>;
148 dma-names = "rx","tx";
152 uart1: serial@40028000 {
153 compatible = "fsl,vf610-lpuart";
154 reg = <0x40028000 0x1000>;
155 interrupts = <62 IRQ_TYPE_LEVEL_HIGH>;
156 clocks = <&clks VF610_CLK_UART1>;
160 dma-names = "rx","tx";
164 uart2: serial@40029000 {
165 compatible = "fsl,vf610-lpuart";
166 reg = <0x40029000 0x1000>;
167 interrupts = <63 IRQ_TYPE_LEVEL_HIGH>;
168 clocks = <&clks VF610_CLK_UART2>;
172 dma-names = "rx","tx";
176 uart3: serial@4002a000 {
177 compatible = "fsl,vf610-lpuart";
178 reg = <0x4002a000 0x1000>;
179 interrupts = <64 IRQ_TYPE_LEVEL_HIGH>;
180 clocks = <&clks VF610_CLK_UART3>;
184 dma-names = "rx","tx";
188 dspi0: dspi0@4002c000 {
189 #address-cells = <1>;
191 compatible = "fsl,vf610-dspi";
192 reg = <0x4002c000 0x1000>;
193 interrupts = <67 IRQ_TYPE_LEVEL_HIGH>;
194 clocks = <&clks VF610_CLK_DSPI0>;
195 clock-names = "dspi";
196 spi-num-chipselects = <6>;
197 dmas = <&edma1 1 12>,
199 dma-names = "rx", "tx";
203 dspi1: dspi1@4002d000 {
204 #address-cells = <1>;
206 compatible = "fsl,vf610-dspi";
207 reg = <0x4002d000 0x1000>;
208 interrupts = <68 IRQ_TYPE_LEVEL_HIGH>;
209 clocks = <&clks VF610_CLK_DSPI1>;
210 clock-names = "dspi";
211 spi-num-chipselects = <4>;
212 dmas = <&edma1 1 14>,
214 dma-names = "rx", "tx";
219 compatible = "fsl,vf610-sai";
220 reg = <0x4002f000 0x1000>;
221 interrupts = <84 IRQ_TYPE_LEVEL_HIGH>;
222 clocks = <&clks VF610_CLK_SAI0>,
223 <&clks VF610_CLK_SAI0_DIV>,
224 <&clks 0>, <&clks 0>;
225 clock-names = "bus", "mclk1", "mclk2", "mclk3";
226 dma-names = "tx", "rx";
227 dmas = <&edma0 0 17>,
233 compatible = "fsl,vf610-sai";
234 reg = <0x40030000 0x1000>;
235 interrupts = <85 IRQ_TYPE_LEVEL_HIGH>;
236 clocks = <&clks VF610_CLK_SAI1>,
237 <&clks VF610_CLK_SAI1_DIV>,
238 <&clks 0>, <&clks 0>;
239 clock-names = "bus", "mclk1", "mclk2", "mclk3";
240 dma-names = "tx", "rx";
241 dmas = <&edma0 0 19>,
247 compatible = "fsl,vf610-sai";
248 reg = <0x40031000 0x1000>;
249 interrupts = <86 IRQ_TYPE_LEVEL_HIGH>;
250 clocks = <&clks VF610_CLK_SAI2>,
251 <&clks VF610_CLK_SAI2_DIV>,
252 <&clks 0>, <&clks 0>;
253 clock-names = "bus", "mclk1", "mclk2", "mclk3";
254 dma-names = "tx", "rx";
255 dmas = <&edma0 0 21>,
261 compatible = "fsl,vf610-sai";
262 reg = <0x40032000 0x1000>;
263 interrupts = <87 IRQ_TYPE_LEVEL_HIGH>;
264 clocks = <&clks VF610_CLK_SAI3>,
265 <&clks VF610_CLK_SAI3_DIV>,
266 <&clks 0>, <&clks 0>;
267 clock-names = "bus", "mclk1", "mclk2", "mclk3";
268 dma-names = "tx", "rx";
275 compatible = "fsl,vf610-pit";
276 reg = <0x40037000 0x1000>;
277 interrupts = <39 IRQ_TYPE_LEVEL_HIGH>;
278 clocks = <&clks VF610_CLK_PIT>;
283 compatible = "fsl,vf610-ftm-pwm";
285 reg = <0x40038000 0x1000>;
286 clock-names = "ftm_sys", "ftm_ext",
287 "ftm_fix", "ftm_cnt_clk_en";
288 clocks = <&clks VF610_CLK_FTM0>,
289 <&clks VF610_CLK_FTM0_EXT_SEL>,
290 <&clks VF610_CLK_FTM0_FIX_SEL>,
291 <&clks VF610_CLK_FTM0_EXT_FIX_EN>;
296 compatible = "fsl,vf610-ftm-pwm";
298 reg = <0x40039000 0x1000>;
299 clock-names = "ftm_sys", "ftm_ext",
300 "ftm_fix", "ftm_cnt_clk_en";
301 clocks = <&clks VF610_CLK_FTM1>,
302 <&clks VF610_CLK_FTM1_EXT_SEL>,
303 <&clks VF610_CLK_FTM1_FIX_SEL>,
304 <&clks VF610_CLK_FTM1_EXT_FIX_EN>;
309 compatible = "fsl,vf610-adc";
310 reg = <0x4003b000 0x1000>;
311 interrupts = <53 IRQ_TYPE_LEVEL_HIGH>;
312 clocks = <&clks VF610_CLK_ADC0>;
314 #io-channel-cells = <1>;
316 fsl,adck-max-frequency = <30000000>, <40000000>,
320 tcon0: timing-controller@4003d000 {
321 compatible = "fsl,vf610-tcon";
322 reg = <0x4003d000 0x1000>;
323 clocks = <&clks VF610_CLK_TCON0>;
328 wdoga5: wdog@4003e000 {
329 compatible = "fsl,vf610-wdt", "fsl,imx21-wdt";
330 reg = <0x4003e000 0x1000>;
331 interrupts = <20 IRQ_TYPE_LEVEL_HIGH>;
332 clocks = <&clks VF610_CLK_WDT>;
333 clock-names = "wdog";
337 qspi0: quadspi@40044000 {
338 #address-cells = <1>;
340 compatible = "fsl,vf610-qspi";
341 reg = <0x40044000 0x1000>, <0x20000000 0x10000000>;
342 reg-names = "QuadSPI", "QuadSPI-memory";
343 interrupts = <24 IRQ_TYPE_LEVEL_HIGH>;
344 clocks = <&clks VF610_CLK_QSPI0_EN>,
345 <&clks VF610_CLK_QSPI0>;
346 clock-names = "qspi_en", "qspi";
350 iomuxc: iomuxc@40048000 {
351 compatible = "fsl,vf610-iomuxc";
352 reg = <0x40048000 0x1000>;
355 gpio0: gpio@40049000 {
356 compatible = "fsl,vf610-gpio";
357 reg = <0x40049000 0x1000 0x400ff000 0x40>;
360 interrupts = <107 IRQ_TYPE_LEVEL_HIGH>;
361 interrupt-controller;
362 #interrupt-cells = <2>;
363 gpio-ranges = <&iomuxc 0 0 32>;
366 gpio1: gpio@4004a000 {
367 compatible = "fsl,vf610-gpio";
368 reg = <0x4004a000 0x1000 0x400ff040 0x40>;
371 interrupts = <108 IRQ_TYPE_LEVEL_HIGH>;
372 interrupt-controller;
373 #interrupt-cells = <2>;
374 gpio-ranges = <&iomuxc 0 32 32>;
377 gpio2: gpio@4004b000 {
378 compatible = "fsl,vf610-gpio";
379 reg = <0x4004b000 0x1000 0x400ff080 0x40>;
382 interrupts = <109 IRQ_TYPE_LEVEL_HIGH>;
383 interrupt-controller;
384 #interrupt-cells = <2>;
385 gpio-ranges = <&iomuxc 0 64 32>;
388 gpio3: gpio@4004c000 {
389 compatible = "fsl,vf610-gpio";
390 reg = <0x4004c000 0x1000 0x400ff0c0 0x40>;
393 interrupts = <110 IRQ_TYPE_LEVEL_HIGH>;
394 interrupt-controller;
395 #interrupt-cells = <2>;
396 gpio-ranges = <&iomuxc 0 96 32>;
399 gpio4: gpio@4004d000 {
400 compatible = "fsl,vf610-gpio";
401 reg = <0x4004d000 0x1000 0x400ff100 0x40>;
404 interrupts = <111 IRQ_TYPE_LEVEL_HIGH>;
405 interrupt-controller;
406 #interrupt-cells = <2>;
407 gpio-ranges = <&iomuxc 0 128 7>;
410 anatop: anatop@40050000 {
411 compatible = "fsl,vf610-anatop", "syscon";
412 reg = <0x40050000 0x400>;
415 usbphy0: usbphy@40050800 {
416 compatible = "fsl,vf610-usbphy";
417 reg = <0x40050800 0x400>;
418 interrupts = <50 IRQ_TYPE_LEVEL_HIGH>;
419 clocks = <&clks VF610_CLK_USBPHY0>;
420 fsl,anatop = <&anatop>;
424 usbphy1: usbphy@40050c00 {
425 compatible = "fsl,vf610-usbphy";
426 reg = <0x40050c00 0x400>;
427 interrupts = <51 IRQ_TYPE_LEVEL_HIGH>;
428 clocks = <&clks VF610_CLK_USBPHY1>;
429 fsl,anatop = <&anatop>;
434 compatible = "fsl,vf610-dcu";
435 reg = <0x40058000 0x1200>;
436 interrupts = <30 IRQ_TYPE_LEVEL_HIGH>;
437 clocks = <&clks VF610_CLK_DCU0>,
438 <&clks VF610_CLK_DCU0_DIV>;
439 clock-names = "dcu", "pix";
445 #address-cells = <1>;
447 compatible = "fsl,vf610-i2c";
448 reg = <0x40066000 0x1000>;
449 interrupts = <71 IRQ_TYPE_LEVEL_HIGH>;
450 clocks = <&clks VF610_CLK_I2C0>;
452 dmas = <&edma0 0 50>,
454 dma-names = "rx","tx";
459 #address-cells = <1>;
461 compatible = "fsl,vf610-i2c";
462 reg = <0x40067000 0x1000>;
463 interrupts = <72 IRQ_TYPE_LEVEL_HIGH>;
464 clocks = <&clks VF610_CLK_I2C1>;
466 dmas = <&edma0 0 52>,
468 dma-names = "rx","tx";
473 compatible = "fsl,vf610-ccm";
474 reg = <0x4006b000 0x1000>;
475 clocks = <&sxosc>, <&fxosc>;
476 clock-names = "sxosc", "fxosc";
480 usbdev0: usb@40034000 {
481 compatible = "fsl,vf610-usb", "fsl,imx27-usb";
482 reg = <0x40034000 0x800>;
483 interrupts = <75 IRQ_TYPE_LEVEL_HIGH>;
484 clocks = <&clks VF610_CLK_USBC0>;
485 fsl,usbphy = <&usbphy0>;
486 fsl,usbmisc = <&usbmisc0 0>;
487 dr_mode = "peripheral";
491 usbmisc0: usb@40034800 {
493 compatible = "fsl,vf610-usbmisc";
494 reg = <0x40034800 0x200>;
495 clocks = <&clks VF610_CLK_USBC0>;
500 compatible = "fsl,vf610-src", "syscon";
501 reg = <0x4006e000 0x1000>;
502 interrupts = <96 IRQ_TYPE_LEVEL_HIGH>;
506 aips1: aips-bus@40080000 {
507 compatible = "fsl,aips-bus", "simple-bus";
508 #address-cells = <1>;
510 reg = <0x40080000 0x0007f000>;
513 edma1: dma-controller@40098000 {
515 compatible = "fsl,vf610-edma";
516 reg = <0x40098000 0x2000>,
520 interrupts = <10 IRQ_TYPE_LEVEL_HIGH>,
521 <11 IRQ_TYPE_LEVEL_HIGH>;
522 interrupt-names = "edma-tx", "edma-err";
523 clock-names = "dmamux0", "dmamux1";
524 clocks = <&clks VF610_CLK_DMAMUX2>,
525 <&clks VF610_CLK_DMAMUX3>;
529 ocotp: ocotp@400a5000 {
530 compatible = "fsl,vf610-ocotp";
531 reg = <0x400a5000 0x1000>;
532 clocks = <&clks VF610_CLK_OCOTP>;
535 snvs0: snvs@400a7000 {
536 compatible = "fsl,sec-v4.0-mon", "syscon", "simple-mfd";
537 reg = <0x400a7000 0x2000>;
539 snvsrtc: snvs-rtc-lp {
540 compatible = "fsl,sec-v4.0-mon-rtc-lp";
543 interrupts = <100 IRQ_TYPE_LEVEL_HIGH>;
544 clocks = <&clks VF610_CLK_SNVS>;
545 clock-names = "snvs-rtc";
549 uart4: serial@400a9000 {
550 compatible = "fsl,vf610-lpuart";
551 reg = <0x400a9000 0x1000>;
552 interrupts = <65 IRQ_TYPE_LEVEL_HIGH>;
553 clocks = <&clks VF610_CLK_UART4>;
558 uart5: serial@400aa000 {
559 compatible = "fsl,vf610-lpuart";
560 reg = <0x400aa000 0x1000>;
561 interrupts = <66 IRQ_TYPE_LEVEL_HIGH>;
562 clocks = <&clks VF610_CLK_UART5>;
567 dspi2: dspi2@400ac000 {
568 #address-cells = <1>;
570 compatible = "fsl,vf610-dspi";
571 reg = <0x400ac000 0x1000>;
572 interrupts = <69 IRQ_TYPE_LEVEL_HIGH>;
573 clocks = <&clks VF610_CLK_DSPI2>;
574 clock-names = "dspi";
575 spi-num-chipselects = <2>;
576 dmas = <&edma1 0 10>,
578 dma-names = "rx", "tx";
582 dspi3: dspi3@400ad000 {
583 #address-cells = <1>;
585 compatible = "fsl,vf610-dspi";
586 reg = <0x400ad000 0x1000>;
587 interrupts = <70 IRQ_TYPE_LEVEL_HIGH>;
588 clocks = <&clks VF610_CLK_DSPI3>;
589 clock-names = "dspi";
590 spi-num-chipselects = <2>;
591 dmas = <&edma1 0 12>,
593 dma-names = "rx", "tx";
598 compatible = "fsl,vf610-adc";
599 reg = <0x400bb000 0x1000>;
600 interrupts = <54 IRQ_TYPE_LEVEL_HIGH>;
601 clocks = <&clks VF610_CLK_ADC1>;
603 #io-channel-cells = <1>;
605 fsl,adck-max-frequency = <30000000>, <40000000>,
609 esdhc0: esdhc@400b1000 {
610 compatible = "fsl,imx53-esdhc";
611 reg = <0x400b1000 0x1000>;
612 interrupts = <27 IRQ_TYPE_LEVEL_HIGH>;
613 clocks = <&clks VF610_CLK_IPG_BUS>,
614 <&clks VF610_CLK_PLATFORM_BUS>,
615 <&clks VF610_CLK_ESDHC0>;
616 clock-names = "ipg", "ahb", "per";
620 esdhc1: esdhc@400b2000 {
621 compatible = "fsl,imx53-esdhc";
622 reg = <0x400b2000 0x1000>;
623 interrupts = <28 IRQ_TYPE_LEVEL_HIGH>;
624 clocks = <&clks VF610_CLK_IPG_BUS>,
625 <&clks VF610_CLK_PLATFORM_BUS>,
626 <&clks VF610_CLK_ESDHC1>;
627 clock-names = "ipg", "ahb", "per";
631 usbh1: usb@400b4000 {
632 compatible = "fsl,vf610-usb", "fsl,imx27-usb";
633 reg = <0x400b4000 0x800>;
634 interrupts = <76 IRQ_TYPE_LEVEL_HIGH>;
635 clocks = <&clks VF610_CLK_USBC1>;
636 fsl,usbphy = <&usbphy1>;
637 fsl,usbmisc = <&usbmisc1 0>;
642 usbmisc1: usb@400b4800 {
644 compatible = "fsl,vf610-usbmisc";
645 reg = <0x400b4800 0x200>;
646 clocks = <&clks VF610_CLK_USBC1>;
651 compatible = "fsl,ftm-timer";
652 reg = <0x400b8000 0x1000 0x400b9000 0x1000>;
653 interrupts = <44 IRQ_TYPE_LEVEL_HIGH>;
654 clock-names = "ftm-evt", "ftm-src",
655 "ftm-evt-counter-en", "ftm-src-counter-en";
656 clocks = <&clks VF610_CLK_FTM2>,
657 <&clks VF610_CLK_FTM3>,
658 <&clks VF610_CLK_FTM2_EXT_FIX_EN>,
659 <&clks VF610_CLK_FTM3_EXT_FIX_EN>;
663 qspi1: quadspi@400c4000 {
664 #address-cells = <1>;
666 compatible = "fsl,vf610-qspi";
667 reg = <0x400c4000 0x1000>, <0x50000000 0x10000000>;
668 reg-names = "QuadSPI", "QuadSPI-memory";
669 interrupts = <25 IRQ_TYPE_LEVEL_HIGH>;
670 clocks = <&clks VF610_CLK_QSPI1_EN>,
671 <&clks VF610_CLK_QSPI1>;
672 clock-names = "qspi_en", "qspi";
677 compatible = "fsl,vf610-dac";
678 reg = <0x400cc000 1000>;
679 interrupts = <55 IRQ_TYPE_LEVEL_HIGH>;
681 clocks = <&clks VF610_CLK_DAC0>;
686 compatible = "fsl,vf610-dac";
687 reg = <0x400cd000 1000>;
688 interrupts = <56 IRQ_TYPE_LEVEL_HIGH>;
690 clocks = <&clks VF610_CLK_DAC1>;
694 fec0: ethernet@400d0000 {
695 compatible = "fsl,mvf600-fec";
696 reg = <0x400d0000 0x1000>;
697 interrupts = <78 IRQ_TYPE_LEVEL_HIGH>;
698 clocks = <&clks VF610_CLK_ENET0>,
699 <&clks VF610_CLK_ENET0>,
700 <&clks VF610_CLK_ENET>;
701 clock-names = "ipg", "ahb", "ptp";
705 fec1: ethernet@400d1000 {
706 compatible = "fsl,mvf600-fec";
707 reg = <0x400d1000 0x1000>;
708 interrupts = <79 IRQ_TYPE_LEVEL_HIGH>;
709 clocks = <&clks VF610_CLK_ENET1>,
710 <&clks VF610_CLK_ENET1>,
711 <&clks VF610_CLK_ENET>;
712 clock-names = "ipg", "ahb", "ptp";
716 can1: flexcan@400d4000 {
717 compatible = "fsl,vf610-flexcan";
718 reg = <0x400d4000 0x4000>;
719 interrupts = <59 IRQ_TYPE_LEVEL_HIGH>;
720 clocks = <&clks VF610_CLK_FLEXCAN1>,
721 <&clks VF610_CLK_FLEXCAN1>;
722 clock-names = "ipg", "per";
727 #address-cells = <1>;
729 compatible = "fsl,vf610-nfc";
730 reg = <0x400e0000 0x4000>;
731 interrupts = <83 IRQ_TYPE_LEVEL_HIGH>;
732 clocks = <&clks VF610_CLK_NFC>;
738 #address-cells = <1>;
740 compatible = "fsl,vf610-i2c";
741 reg = <0x400e6000 0x1000>;
742 interrupts = <73 IRQ_TYPE_LEVEL_HIGH>;
743 clocks = <&clks VF610_CLK_I2C2>;
745 dmas = <&edma0 1 36>,
747 dma-names = "rx","tx";
752 #address-cells = <1>;
754 compatible = "fsl,vf610-i2c";
755 reg = <0x400e7000 0x1000>;
756 interrupts = <74 IRQ_TYPE_LEVEL_HIGH>;
757 clocks = <&clks VF610_CLK_I2C3>;
759 dmas = <&edma0 1 38>,
761 dma-names = "rx","tx";
767 compatible = "iio-hwmon";
768 io-channels = <&adc0 16>, <&adc1 16>;