]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - arch/arm/boot/dts/lpc32xx.dtsi
Merge branches 'for-4.6/upstream-fixes', 'for-4.7/asus', 'for-4.7/hidraw' and 'for...
[karo-tx-linux.git] / arch / arm / boot / dts / lpc32xx.dtsi
index c85cf979725e0c5f83c2570014605cc7da4ad096..c58d8da9ea2a1356b52c8905aaeae36a61ce5f37 100644 (file)
@@ -13,6 +13,9 @@
 
 #include "skeleton.dtsi"
 
+#include <dt-bindings/clock/lpc32xx-clock.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+
 / {
        compatible = "nxp,lpc3220";
        interrupt-parent = <&mic>;
                };
        };
 
+       clocks {
+               xtal_32k: xtal_32k {
+                       compatible = "fixed-clock";
+                       #clock-cells = <0>;
+                       clock-frequency = <32768>;
+                       clock-output-names = "xtal_32k";
+               };
+
+               xtal: xtal {
+                       compatible = "fixed-clock";
+                       #clock-cells = <0>;
+                       clock-frequency = <13000000>;
+                       clock-output-names = "xtal";
+               };
+       };
+
        ahb {
                #address-cells = <1>;
                #size-cells = <1>;
                slc: flash@20020000 {
                        compatible = "nxp,lpc3220-slc";
                        reg = <0x20020000 0x1000>;
+                       clocks = <&clk LPC32XX_CLK_SLC>;
                        status = "disabled";
                };
 
                mlc: flash@200a8000 {
                        compatible = "nxp,lpc3220-mlc";
                        reg = <0x200a8000 0x11000>;
-                       interrupts = <11 0>;
+                       interrupts = <11 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk LPC32XX_CLK_MLC>;
                        status = "disabled";
                };
 
                dma: dma@31000000 {
                        compatible = "arm,pl080", "arm,primecell";
                        reg = <0x31000000 0x1000>;
-                       interrupts = <0x1c 0>;
+                       interrupts = <28 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk LPC32XX_CLK_DMA>;
+                       clock-names = "apb_pclk";
                };
 
                usb {
                        ohci: ohci@0 {
                                compatible = "nxp,ohci-nxp", "usb-ohci";
                                reg = <0x0 0x300>;
-                               interrupts = <0x3b 0>;
+                               interrupts = <59 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&usbclk LPC32XX_USB_CLK_HOST>;
                                status = "disabled";
                        };
 
                        usbd: usbd@0 {
                                compatible = "nxp,lpc3220-udc";
                                reg = <0x0 0x300>;
-                               interrupts = <0x3d 0>, <0x3e 0>, <0x3c 0>, <0x3a 0>;
+                               interrupts = <61 IRQ_TYPE_LEVEL_HIGH>,
+                                            <62 IRQ_TYPE_LEVEL_HIGH>,
+                                            <60 IRQ_TYPE_LEVEL_HIGH>,
+                                            <58 IRQ_TYPE_LEVEL_LOW>;
+                               clocks = <&usbclk LPC32XX_USB_CLK_DEVICE>;
                                status = "disabled";
                        };
 
                        i2cusb: i2c@300 {
                                compatible = "nxp,pnx-i2c";
                                reg = <0x300 0x100>;
-                               interrupts = <0x3f 0>;
+                               interrupts = <63 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&usbclk LPC32XX_USB_CLK_I2C>;
                                #address-cells = <1>;
                                #size-cells = <0>;
                                pnx,timeout = <0x64>;
                        };
+
+                       usbclk: clock-controller@f00 {
+                               compatible = "nxp,lpc3220-usb-clk";
+                               reg = <0xf00 0x100>;
+                               #clock-cells = <1>;
+                       };
                };
 
                clcd: clcd@31040000 {
                        compatible = "arm,pl110", "arm,primecell";
                        reg = <0x31040000 0x1000>;
-                       interrupts = <0x0e 0>;
+                       interrupts = <14 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk LPC32XX_CLK_LCD>;
+                       clock-names = "apb_pclk";
                        status = "disabled";
                };
 
                mac: ethernet@31060000 {
                        compatible = "nxp,lpc-eth";
                        reg = <0x31060000 0x1000>;
-                       interrupts = <0x1d 0>;
+                       interrupts = <29 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk LPC32XX_CLK_MAC>;
                };
 
                emc: memory-controller@31080000 {
                        compatible = "arm,pl175", "arm,primecell";
                        reg = <0x31080000 0x1000>;
+                       clocks = <&clk LPC32XX_CLK_DDRAM>, <&clk LPC32XX_CLK_DDRAM>;
+                       clock-names = "mpmcclk", "apb_pclk";
                        #address-cells = <1>;
                        #size-cells = <1>;
 
                        ssp0: ssp@20084000 {
                                compatible = "arm,pl022", "arm,primecell";
                                reg = <0x20084000 0x1000>;
-                               interrupts = <0x14 0>;
+                               interrupts = <20 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&clk LPC32XX_CLK_SSP0>;
+                               clock-names = "apb_pclk";
                        };
 
                        spi1: spi@20088000 {
                        ssp1: ssp@2008c000 {
                                compatible = "arm,pl022", "arm,primecell";
                                reg = <0x2008c000 0x1000>;
-                               interrupts = <0x15 0>;
+                               interrupts = <21 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&clk LPC32XX_CLK_SSP1>;
+                               clock-names = "apb_pclk";
                        };
 
                        spi2: spi@20090000 {
                        sd: sd@20098000 {
                                compatible = "arm,pl18x", "arm,primecell";
                                reg = <0x20098000 0x1000>;
-                               interrupts = <0x0f 0>, <0x0d 0>;
+                               interrupts = <15 IRQ_TYPE_LEVEL_HIGH>,
+                                            <13 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&clk LPC32XX_CLK_SD>;
+                               clock-names = "apb_pclk";
                                status = "disabled";
                        };
 
                                /* actually, ns16550a w/ 64 byte fifos! */
                                compatible = "nxp,lpc3220-uart";
                                reg = <0x40090000 0x1000>;
-                               interrupts = <9 0>;
-                               clock-frequency = <13000000>;
+                               interrupts = <9 IRQ_TYPE_LEVEL_HIGH>;
                                reg-shift = <2>;
+                               clocks = <&clk LPC32XX_CLK_UART5>;
                                status = "disabled";
                        };
 
                        uart3: serial@40080000 {
                                compatible = "nxp,lpc3220-uart";
                                reg = <0x40080000 0x1000>;
-                               interrupts = <7 0>;
-                               clock-frequency = <13000000>;
+                               interrupts = <7 IRQ_TYPE_LEVEL_HIGH>;
                                reg-shift = <2>;
+                               clocks = <&clk LPC32XX_CLK_UART3>;
                                status = "disabled";
                        };
 
                        uart4: serial@40088000 {
                                compatible = "nxp,lpc3220-uart";
                                reg = <0x40088000 0x1000>;
-                               interrupts = <8 0>;
-                               clock-frequency = <13000000>;
+                               interrupts = <8 IRQ_TYPE_LEVEL_HIGH>;
                                reg-shift = <2>;
+                               clocks = <&clk LPC32XX_CLK_UART4>;
                                status = "disabled";
                        };
 
                        uart6: serial@40098000 {
                                compatible = "nxp,lpc3220-uart";
                                reg = <0x40098000 0x1000>;
-                               interrupts = <10 0>;
-                               clock-frequency = <13000000>;
+                               interrupts = <10 IRQ_TYPE_LEVEL_HIGH>;
                                reg-shift = <2>;
+                               clocks = <&clk LPC32XX_CLK_UART6>;
                                status = "disabled";
                        };
 
                        i2c1: i2c@400A0000 {
                                compatible = "nxp,pnx-i2c";
                                reg = <0x400A0000 0x100>;
-                               interrupts = <0x33 0>;
+                               interrupts = <51 IRQ_TYPE_LEVEL_LOW>;
                                #address-cells = <1>;
                                #size-cells = <0>;
                                pnx,timeout = <0x64>;
+                               clocks = <&clk LPC32XX_CLK_I2C1>;
                        };
 
                        i2c2: i2c@400A8000 {
                                compatible = "nxp,pnx-i2c";
                                reg = <0x400A8000 0x100>;
-                               interrupts = <0x32 0>;
+                               interrupts = <50 IRQ_TYPE_LEVEL_LOW>;
                                #address-cells = <1>;
                                #size-cells = <0>;
                                pnx,timeout = <0x64>;
+                               clocks = <&clk LPC32XX_CLK_I2C2>;
                        };
 
                        mpwm: mpwm@400E8000 {
                        compatible = "simple-bus";
                        ranges = <0x20000000 0x20000000 0x30000000>;
 
+                       /* System Control Block */
+                       scb {
+                               compatible = "simple-bus";
+                               ranges = <0x0 0x040004000 0x00001000>;
+                               #address-cells = <1>;
+                               #size-cells = <1>;
+
+                               clk: clock-controller@0 {
+                                       compatible = "nxp,lpc3220-clk";
+                                       reg = <0x00 0x114>;
+                                       #clock-cells = <1>;
+
+                                       clocks = <&xtal_32k>, <&xtal>;
+                                       clock-names = "xtal_32k", "xtal";
+                               };
+                       };
+
                        /*
                         * MIC Interrupt controller includes:
                         *   MIC @40008000
                        uart1: serial@40014000 {
                                compatible = "nxp,lpc3220-hsuart";
                                reg = <0x40014000 0x1000>;
-                               interrupts = <26 0>;
+                               interrupts = <26 IRQ_TYPE_LEVEL_HIGH>;
                                status = "disabled";
                        };
 
                        uart2: serial@40018000 {
                                compatible = "nxp,lpc3220-hsuart";
                                reg = <0x40018000 0x1000>;
-                               interrupts = <25 0>;
+                               interrupts = <25 IRQ_TYPE_LEVEL_HIGH>;
                                status = "disabled";
                        };
 
                        uart7: serial@4001c000 {
                                compatible = "nxp,lpc3220-hsuart";
                                reg = <0x4001c000 0x1000>;
-                               interrupts = <24 0>;
+                               interrupts = <24 IRQ_TYPE_LEVEL_HIGH>;
                                status = "disabled";
                        };
 
                        rtc: rtc@40024000 {
                                compatible = "nxp,lpc3220-rtc";
                                reg = <0x40024000 0x1000>;
-                               interrupts = <0x34 0>;
+                               interrupts = <52 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&clk LPC32XX_CLK_RTC>;
                        };
 
                        gpio: gpio@40028000 {
                        timer4: timer@4002C000 {
                                compatible = "nxp,lpc3220-timer";
                                reg = <0x4002C000 0x1000>;
-                               interrupts = <0x3 0>;
+                               interrupts = <3 IRQ_TYPE_LEVEL_LOW>;
+                               clocks = <&clk LPC32XX_CLK_TIMER4>;
+                               clock-names = "timerclk";
                                status = "disabled";
                        };
 
                        timer5: timer@40030000 {
                                compatible = "nxp,lpc3220-timer";
                                reg = <0x40030000 0x1000>;
-                               interrupts = <0x4 0>;
+                               interrupts = <4 IRQ_TYPE_LEVEL_LOW>;
+                               clocks = <&clk LPC32XX_CLK_TIMER5>;
+                               clock-names = "timerclk";
                                status = "disabled";
                        };
 
                        watchdog: watchdog@4003C000 {
                                compatible = "nxp,pnx4008-wdt";
                                reg = <0x4003C000 0x1000>;
+                               clocks = <&clk LPC32XX_CLK_WDOG>;
                        };
 
                        timer0: timer@40044000 {
                                compatible = "nxp,lpc3220-timer";
                                reg = <0x40044000 0x1000>;
-                               interrupts = <0x10 0>;
+                               clocks = <&clk LPC32XX_CLK_TIMER0>;
+                               clock-names = "timerclk";
+                               interrupts = <16 IRQ_TYPE_LEVEL_LOW>;
                        };
 
                        /*
                        adc: adc@40048000 {
                                compatible = "nxp,lpc3220-adc";
                                reg = <0x40048000 0x1000>;
-                               interrupts = <0x27 0>;
+                               interrupts = <39 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&clk LPC32XX_CLK_ADC>;
                                status = "disabled";
                        };
 
                        tsc: tsc@40048000 {
                                compatible = "nxp,lpc3220-tsc";
                                reg = <0x40048000 0x1000>;
-                               interrupts = <0x27 0>;
+                               interrupts = <39 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&clk LPC32XX_CLK_ADC>;
                                status = "disabled";
                        };
 
                        timer1: timer@4004C000 {
                                compatible = "nxp,lpc3220-timer";
                                reg = <0x4004C000 0x1000>;
-                               interrupts = <0x11 0>;
+                               interrupts = <17 IRQ_TYPE_LEVEL_LOW>;
+                               clocks = <&clk LPC32XX_CLK_TIMER1>;
+                               clock-names = "timerclk";
                        };
 
                        key: key@40050000 {
                                compatible = "nxp,lpc3220-key";
                                reg = <0x40050000 0x1000>;
-                               interrupts = <54 0>;
+                               interrupts = <54 IRQ_TYPE_LEVEL_HIGH>;
                                status = "disabled";
                        };
 
                        timer2: timer@40058000 {
                                compatible = "nxp,lpc3220-timer";
                                reg = <0x40058000 0x1000>;
-                               interrupts = <0x12 0>;
+                               interrupts = <18 IRQ_TYPE_LEVEL_LOW>;
+                               clocks = <&clk LPC32XX_CLK_TIMER2>;
+                               clock-names = "timerclk";
                                status = "disabled";
                        };
 
                        pwm1: pwm@4005C000 {
                                compatible = "nxp,lpc3220-pwm";
                                reg = <0x4005C000 0x4>;
+                               clocks = <&clk LPC32XX_CLK_PWM1>;
                                status = "disabled";
                        };
 
                        pwm2: pwm@4005C004 {
                                compatible = "nxp,lpc3220-pwm";
                                reg = <0x4005C004 0x4>;
+                               clocks = <&clk LPC32XX_CLK_PWM2>;
                                status = "disabled";
                        };
 
                        timer3: timer@40060000 {
                                compatible = "nxp,lpc3220-timer";
                                reg = <0x40060000 0x1000>;
-                               interrupts = <0x13 0>;
+                               interrupts = <19 IRQ_TYPE_LEVEL_LOW>;
+                               clocks = <&clk LPC32XX_CLK_TIMER3>;
+                               clock-names = "timerclk";
                                status = "disabled";
                        };
                };