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 , 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";
100 mscm_cpucfg: cpucfg@40001000 {
101 compatible = "fsl,vf610-mscm-cpucfg", "syscon";
102 reg = <0x40001000 0x800>;
105 mscm_ir: interrupt-controller@40001800 {
106 compatible = "fsl,vf610-mscm-ir";
107 reg = <0x40001800 0x400>;
108 fsl,cpucfg = <&mscm_cpucfg>;
109 interrupt-controller;
110 #interrupt-cells = <2>;
113 edma0: dma-controller@40018000 {
115 compatible = "fsl,vf610-edma";
116 reg = <0x40018000 0x2000>,
120 interrupts = <8 IRQ_TYPE_LEVEL_HIGH>,
121 <9 IRQ_TYPE_LEVEL_HIGH>;
122 interrupt-names = "edma-tx", "edma-err";
123 clock-names = "dmamux0", "dmamux1";
124 clocks = <&clks VF610_CLK_DMAMUX0>,
125 <&clks VF610_CLK_DMAMUX1>;
129 can0: flexcan@40020000 {
130 compatible = "fsl,vf610-flexcan";
131 reg = <0x40020000 0x4000>;
132 interrupts = <58 IRQ_TYPE_LEVEL_HIGH>;
133 clocks = <&clks VF610_CLK_FLEXCAN0>,
134 <&clks VF610_CLK_FLEXCAN0>;
135 clock-names = "ipg", "per";
139 uart0: serial@40027000 {
140 compatible = "fsl,vf610-lpuart";
141 reg = <0x40027000 0x1000>;
142 interrupts = <61 IRQ_TYPE_LEVEL_HIGH>;
143 clocks = <&clks VF610_CLK_UART0>;
147 dma-names = "rx","tx";
151 uart1: serial@40028000 {
152 compatible = "fsl,vf610-lpuart";
153 reg = <0x40028000 0x1000>;
154 interrupts = <62 IRQ_TYPE_LEVEL_HIGH>;
155 clocks = <&clks VF610_CLK_UART1>;
159 dma-names = "rx","tx";
163 uart2: serial@40029000 {
164 compatible = "fsl,vf610-lpuart";
165 reg = <0x40029000 0x1000>;
166 interrupts = <63 IRQ_TYPE_LEVEL_HIGH>;
167 clocks = <&clks VF610_CLK_UART2>;
171 dma-names = "rx","tx";
175 uart3: serial@4002a000 {
176 compatible = "fsl,vf610-lpuart";
177 reg = <0x4002a000 0x1000>;
178 interrupts = <64 IRQ_TYPE_LEVEL_HIGH>;
179 clocks = <&clks VF610_CLK_UART3>;
183 dma-names = "rx","tx";
187 dspi0: dspi0@4002c000 {
188 #address-cells = <1>;
190 compatible = "fsl,vf610-dspi";
191 reg = <0x4002c000 0x1000>;
192 interrupts = <67 IRQ_TYPE_LEVEL_HIGH>;
193 clocks = <&clks VF610_CLK_DSPI0>;
194 clock-names = "dspi";
195 spi-num-chipselects = <6>;
199 dspi1: dspi1@4002d000 {
200 #address-cells = <1>;
202 compatible = "fsl,vf610-dspi";
203 reg = <0x4002d000 0x1000>;
204 interrupts = <68 IRQ_TYPE_LEVEL_HIGH>;
205 clocks = <&clks VF610_CLK_DSPI1>;
206 clock-names = "dspi";
207 spi-num-chipselects = <4>;
212 compatible = "fsl,vf610-sai";
213 reg = <0x4002f000 0x1000>;
214 interrupts = <84 IRQ_TYPE_LEVEL_HIGH>;
215 clocks = <&clks VF610_CLK_SAI0>,
216 <&clks VF610_CLK_SAI0_DIV>,
217 <&clks 0>, <&clks 0>;
218 clock-names = "bus", "mclk1", "mclk2", "mclk3";
219 dma-names = "tx", "rx";
220 dmas = <&edma0 0 17>,
226 compatible = "fsl,vf610-sai";
227 reg = <0x40030000 0x1000>;
228 interrupts = <85 IRQ_TYPE_LEVEL_HIGH>;
229 clocks = <&clks VF610_CLK_SAI1>,
230 <&clks VF610_CLK_SAI1_DIV>,
231 <&clks 0>, <&clks 0>;
232 clock-names = "bus", "mclk1", "mclk2", "mclk3";
233 dma-names = "tx", "rx";
234 dmas = <&edma0 0 19>,
240 compatible = "fsl,vf610-sai";
241 reg = <0x40031000 0x1000>;
242 interrupts = <86 IRQ_TYPE_LEVEL_HIGH>;
243 clocks = <&clks VF610_CLK_SAI2>,
244 <&clks VF610_CLK_SAI2_DIV>,
245 <&clks 0>, <&clks 0>;
246 clock-names = "bus", "mclk1", "mclk2", "mclk3";
247 dma-names = "tx", "rx";
248 dmas = <&edma0 0 21>,
254 compatible = "fsl,vf610-sai";
255 reg = <0x40032000 0x1000>;
256 interrupts = <87 IRQ_TYPE_LEVEL_HIGH>;
257 clocks = <&clks VF610_CLK_SAI3>,
258 <&clks VF610_CLK_SAI3_DIV>,
259 <&clks 0>, <&clks 0>;
260 clock-names = "bus", "mclk1", "mclk2", "mclk3";
261 dma-names = "tx", "rx";
268 compatible = "fsl,vf610-pit";
269 reg = <0x40037000 0x1000>;
270 interrupts = <39 IRQ_TYPE_LEVEL_HIGH>;
271 clocks = <&clks VF610_CLK_PIT>;
276 compatible = "fsl,vf610-ftm-pwm";
278 reg = <0x40038000 0x1000>;
279 clock-names = "ftm_sys", "ftm_ext",
280 "ftm_fix", "ftm_cnt_clk_en";
281 clocks = <&clks VF610_CLK_FTM0>,
282 <&clks VF610_CLK_FTM0_EXT_SEL>,
283 <&clks VF610_CLK_FTM0_FIX_SEL>,
284 <&clks VF610_CLK_FTM0_EXT_FIX_EN>;
289 compatible = "fsl,vf610-ftm-pwm";
291 reg = <0x40039000 0x1000>;
292 clock-names = "ftm_sys", "ftm_ext",
293 "ftm_fix", "ftm_cnt_clk_en";
294 clocks = <&clks VF610_CLK_FTM1>,
295 <&clks VF610_CLK_FTM1_EXT_SEL>,
296 <&clks VF610_CLK_FTM1_FIX_SEL>,
297 <&clks VF610_CLK_FTM1_EXT_FIX_EN>;
302 compatible = "fsl,vf610-adc";
303 reg = <0x4003b000 0x1000>;
304 interrupts = <53 IRQ_TYPE_LEVEL_HIGH>;
305 clocks = <&clks VF610_CLK_ADC0>;
307 #io-channel-cells = <1>;
309 fsl,adck-max-frequency = <30000000>, <40000000>,
313 wdoga5: wdog@4003e000 {
314 compatible = "fsl,vf610-wdt", "fsl,imx21-wdt";
315 reg = <0x4003e000 0x1000>;
316 interrupts = <20 IRQ_TYPE_LEVEL_HIGH>;
317 clocks = <&clks VF610_CLK_WDT>;
318 clock-names = "wdog";
322 qspi0: quadspi@40044000 {
323 #address-cells = <1>;
325 compatible = "fsl,vf610-qspi";
326 reg = <0x40044000 0x1000>, <0x20000000 0x10000000>;
327 reg-names = "QuadSPI", "QuadSPI-memory";
328 interrupts = <24 IRQ_TYPE_LEVEL_HIGH>;
329 clocks = <&clks VF610_CLK_QSPI0_EN>,
330 <&clks VF610_CLK_QSPI0>;
331 clock-names = "qspi_en", "qspi";
335 iomuxc: iomuxc@40048000 {
336 compatible = "fsl,vf610-iomuxc";
337 reg = <0x40048000 0x1000>;
340 gpio0: gpio@40049000 {
341 compatible = "fsl,vf610-gpio";
342 reg = <0x40049000 0x1000 0x400ff000 0x40>;
345 interrupts = <107 IRQ_TYPE_LEVEL_HIGH>;
346 interrupt-controller;
347 #interrupt-cells = <2>;
348 gpio-ranges = <&iomuxc 0 0 32>;
351 gpio1: gpio@4004a000 {
352 compatible = "fsl,vf610-gpio";
353 reg = <0x4004a000 0x1000 0x400ff040 0x40>;
356 interrupts = <108 IRQ_TYPE_LEVEL_HIGH>;
357 interrupt-controller;
358 #interrupt-cells = <2>;
359 gpio-ranges = <&iomuxc 0 32 32>;
362 gpio2: gpio@4004b000 {
363 compatible = "fsl,vf610-gpio";
364 reg = <0x4004b000 0x1000 0x400ff080 0x40>;
367 interrupts = <109 IRQ_TYPE_LEVEL_HIGH>;
368 interrupt-controller;
369 #interrupt-cells = <2>;
370 gpio-ranges = <&iomuxc 0 64 32>;
373 gpio3: gpio@4004c000 {
374 compatible = "fsl,vf610-gpio";
375 reg = <0x4004c000 0x1000 0x400ff0c0 0x40>;
378 interrupts = <110 IRQ_TYPE_LEVEL_HIGH>;
379 interrupt-controller;
380 #interrupt-cells = <2>;
381 gpio-ranges = <&iomuxc 0 96 32>;
384 gpio4: gpio@4004d000 {
385 compatible = "fsl,vf610-gpio";
386 reg = <0x4004d000 0x1000 0x400ff100 0x40>;
389 interrupts = <111 IRQ_TYPE_LEVEL_HIGH>;
390 interrupt-controller;
391 #interrupt-cells = <2>;
392 gpio-ranges = <&iomuxc 0 128 7>;
395 anatop: anatop@40050000 {
396 compatible = "fsl,vf610-anatop", "syscon";
397 reg = <0x40050000 0x400>;
400 usbphy0: usbphy@40050800 {
401 compatible = "fsl,vf610-usbphy";
402 reg = <0x40050800 0x400>;
403 interrupts = <50 IRQ_TYPE_LEVEL_HIGH>;
404 clocks = <&clks VF610_CLK_USBPHY0>;
405 fsl,anatop = <&anatop>;
409 usbphy1: usbphy@40050c00 {
410 compatible = "fsl,vf610-usbphy";
411 reg = <0x40050c00 0x400>;
412 interrupts = <51 IRQ_TYPE_LEVEL_HIGH>;
413 clocks = <&clks VF610_CLK_USBPHY1>;
414 fsl,anatop = <&anatop>;
419 #address-cells = <1>;
421 compatible = "fsl,vf610-i2c";
422 reg = <0x40066000 0x1000>;
423 interrupts = <71 IRQ_TYPE_LEVEL_HIGH>;
424 clocks = <&clks VF610_CLK_I2C0>;
426 dmas = <&edma0 0 50>,
428 dma-names = "rx","tx";
433 #address-cells = <1>;
435 compatible = "fsl,vf610-i2c";
436 reg = <0x40067000 0x1000>;
437 interrupts = <72 IRQ_TYPE_LEVEL_HIGH>;
438 clocks = <&clks VF610_CLK_I2C1>;
440 dmas = <&edma0 0 52>,
442 dma-names = "rx","tx";
447 compatible = "fsl,vf610-ccm";
448 reg = <0x4006b000 0x1000>;
449 clocks = <&sxosc>, <&fxosc>;
450 clock-names = "sxosc", "fxosc";
454 usbdev0: usb@40034000 {
455 compatible = "fsl,vf610-usb", "fsl,imx27-usb";
456 reg = <0x40034000 0x800>;
457 interrupts = <75 IRQ_TYPE_LEVEL_HIGH>;
458 clocks = <&clks VF610_CLK_USBC0>;
459 fsl,usbphy = <&usbphy0>;
460 fsl,usbmisc = <&usbmisc0 0>;
461 dr_mode = "peripheral";
465 usbmisc0: usb@40034800 {
467 compatible = "fsl,vf610-usbmisc";
468 reg = <0x40034800 0x200>;
469 clocks = <&clks VF610_CLK_USBC0>;
474 compatible = "fsl,vf610-src", "syscon";
475 reg = <0x4006e000 0x1000>;
476 interrupts = <96 IRQ_TYPE_LEVEL_HIGH>;
480 aips1: aips-bus@40080000 {
481 compatible = "fsl,aips-bus", "simple-bus";
482 #address-cells = <1>;
486 edma1: dma-controller@40098000 {
488 compatible = "fsl,vf610-edma";
489 reg = <0x40098000 0x2000>,
493 interrupts = <10 IRQ_TYPE_LEVEL_HIGH>,
494 <11 IRQ_TYPE_LEVEL_HIGH>;
495 interrupt-names = "edma-tx", "edma-err";
496 clock-names = "dmamux0", "dmamux1";
497 clocks = <&clks VF610_CLK_DMAMUX2>,
498 <&clks VF610_CLK_DMAMUX3>;
502 snvs0: snvs@400a7000 {
503 compatible = "fsl,sec-v4.0-mon", "syscon", "simple-mfd";
504 reg = <0x400a7000 0x2000>;
506 snvsrtc: snvs-rtc-lp {
507 compatible = "fsl,sec-v4.0-mon-rtc-lp";
510 interrupts = <100 IRQ_TYPE_LEVEL_HIGH>;
511 clocks = <&clks VF610_CLK_SNVS>;
512 clock-names = "snvs-rtc";
516 uart4: serial@400a9000 {
517 compatible = "fsl,vf610-lpuart";
518 reg = <0x400a9000 0x1000>;
519 interrupts = <65 IRQ_TYPE_LEVEL_HIGH>;
520 clocks = <&clks VF610_CLK_UART4>;
525 uart5: serial@400aa000 {
526 compatible = "fsl,vf610-lpuart";
527 reg = <0x400aa000 0x1000>;
528 interrupts = <66 IRQ_TYPE_LEVEL_HIGH>;
529 clocks = <&clks VF610_CLK_UART5>;
534 dspi2: dspi2@400ac000 {
535 #address-cells = <1>;
537 compatible = "fsl,vf610-dspi";
538 reg = <0x400ac000 0x1000>;
539 interrupts = <69 IRQ_TYPE_LEVEL_HIGH>;
540 clocks = <&clks VF610_CLK_DSPI2>;
541 clock-names = "dspi";
542 spi-num-chipselects = <2>;
546 dspi3: dspi3@400ad000 {
547 #address-cells = <1>;
549 compatible = "fsl,vf610-dspi";
550 reg = <0x400ad000 0x1000>;
551 interrupts = <70 IRQ_TYPE_LEVEL_HIGH>;
552 clocks = <&clks VF610_CLK_DSPI3>;
553 clock-names = "dspi";
554 spi-num-chipselects = <2>;
559 compatible = "fsl,vf610-adc";
560 reg = <0x400bb000 0x1000>;
561 interrupts = <54 IRQ_TYPE_LEVEL_HIGH>;
562 clocks = <&clks VF610_CLK_ADC1>;
564 #io-channel-cells = <1>;
566 fsl,adck-max-frequency = <30000000>, <40000000>,
570 esdhc0: esdhc@400b1000 {
571 compatible = "fsl,imx53-esdhc";
572 reg = <0x400b1000 0x1000>;
573 interrupts = <27 IRQ_TYPE_LEVEL_HIGH>;
574 clocks = <&clks VF610_CLK_IPG_BUS>,
575 <&clks VF610_CLK_PLATFORM_BUS>,
576 <&clks VF610_CLK_ESDHC0>;
577 clock-names = "ipg", "ahb", "per";
581 esdhc1: esdhc@400b2000 {
582 compatible = "fsl,imx53-esdhc";
583 reg = <0x400b2000 0x1000>;
584 interrupts = <28 IRQ_TYPE_LEVEL_HIGH>;
585 clocks = <&clks VF610_CLK_IPG_BUS>,
586 <&clks VF610_CLK_PLATFORM_BUS>,
587 <&clks VF610_CLK_ESDHC1>;
588 clock-names = "ipg", "ahb", "per";
592 usbh1: usb@400b4000 {
593 compatible = "fsl,vf610-usb", "fsl,imx27-usb";
594 reg = <0x400b4000 0x800>;
595 interrupts = <76 IRQ_TYPE_LEVEL_HIGH>;
596 clocks = <&clks VF610_CLK_USBC1>;
597 fsl,usbphy = <&usbphy1>;
598 fsl,usbmisc = <&usbmisc1 0>;
603 usbmisc1: usb@400b4800 {
605 compatible = "fsl,vf610-usbmisc";
606 reg = <0x400b4800 0x200>;
607 clocks = <&clks VF610_CLK_USBC1>;
612 compatible = "fsl,ftm-timer";
613 reg = <0x400b8000 0x1000 0x400b9000 0x1000>;
614 interrupts = <44 IRQ_TYPE_LEVEL_HIGH>;
615 clock-names = "ftm-evt", "ftm-src",
616 "ftm-evt-counter-en", "ftm-src-counter-en";
617 clocks = <&clks VF610_CLK_FTM2>,
618 <&clks VF610_CLK_FTM3>,
619 <&clks VF610_CLK_FTM2_EXT_FIX_EN>,
620 <&clks VF610_CLK_FTM3_EXT_FIX_EN>;
624 qspi1: quadspi@400c4000 {
625 #address-cells = <1>;
627 compatible = "fsl,vf610-qspi";
628 reg = <0x400c4000 0x1000>, <0x50000000 0x10000000>;
629 reg-names = "QuadSPI", "QuadSPI-memory";
630 interrupts = <25 IRQ_TYPE_LEVEL_HIGH>;
631 clocks = <&clks VF610_CLK_QSPI1_EN>,
632 <&clks VF610_CLK_QSPI1>;
633 clock-names = "qspi_en", "qspi";
638 compatible = "fsl,vf610-dac";
639 reg = <0x400cc000 1000>;
640 interrupts = <55 IRQ_TYPE_LEVEL_HIGH>;
642 clocks = <&clks VF610_CLK_DAC0>;
647 compatible = "fsl,vf610-dac";
648 reg = <0x400cd000 1000>;
649 interrupts = <56 IRQ_TYPE_LEVEL_HIGH>;
651 clocks = <&clks VF610_CLK_DAC1>;
655 fec0: ethernet@400d0000 {
656 compatible = "fsl,mvf600-fec";
657 reg = <0x400d0000 0x1000>;
658 interrupts = <78 IRQ_TYPE_LEVEL_HIGH>;
659 clocks = <&clks VF610_CLK_ENET0>,
660 <&clks VF610_CLK_ENET0>,
661 <&clks VF610_CLK_ENET>;
662 clock-names = "ipg", "ahb", "ptp";
666 fec1: ethernet@400d1000 {
667 compatible = "fsl,mvf600-fec";
668 reg = <0x400d1000 0x1000>;
669 interrupts = <79 IRQ_TYPE_LEVEL_HIGH>;
670 clocks = <&clks VF610_CLK_ENET1>,
671 <&clks VF610_CLK_ENET1>,
672 <&clks VF610_CLK_ENET>;
673 clock-names = "ipg", "ahb", "ptp";
677 can1: flexcan@400d4000 {
678 compatible = "fsl,vf610-flexcan";
679 reg = <0x400d4000 0x4000>;
680 interrupts = <59 IRQ_TYPE_LEVEL_HIGH>;
681 clocks = <&clks VF610_CLK_FLEXCAN1>,
682 <&clks VF610_CLK_FLEXCAN1>;
683 clock-names = "ipg", "per";
688 #address-cells = <1>;
690 compatible = "fsl,vf610-nfc";
691 reg = <0x400e0000 0x4000>;
692 interrupts = <83 IRQ_TYPE_LEVEL_HIGH>;
693 clocks = <&clks VF610_CLK_NFC>;
699 #address-cells = <1>;
701 compatible = "fsl,vf610-i2c";
702 reg = <0x400e6000 0x1000>;
703 interrupts = <73 IRQ_TYPE_LEVEL_HIGH>;
704 clocks = <&clks VF610_CLK_I2C2>;
706 dmas = <&edma0 1 36>,
708 dma-names = "rx","tx";
713 #address-cells = <1>;
715 compatible = "fsl,vf610-i2c";
716 reg = <0x400e7000 0x1000>;
717 interrupts = <74 IRQ_TYPE_LEVEL_HIGH>;
718 clocks = <&clks VF610_CLK_I2C3>;
720 dmas = <&edma0 1 38>,
722 dma-names = "rx","tx";
728 compatible = "iio-hwmon";
729 io-channels = <&adc0 16>, <&adc1 16>;