lpc32xx: import device tree from Linux
authorTrevor Woerner <twoerner@gmail.com>
Fri, 11 Jun 2021 02:37:03 +0000 (22:37 -0400)
committerTom Rini <trini@konsulko.com>
Tue, 6 Jul 2021 18:11:50 +0000 (14:11 -0400)
Import the dtsi, dts, and clock binding files for the lpc32xx ea3250 board
directly and unmodified from the latest Linux kernel.

Signed-off-by: Trevor Woerner <twoerner@gmail.com>
arch/arm/dts/lpc3250-ea3250.dts [new file with mode: 0644]
arch/arm/dts/lpc32xx.dtsi [new file with mode: 0644]
include/dt-bindings/clock/lpc32xx-clock.h [new file with mode: 0644]

diff --git a/arch/arm/dts/lpc3250-ea3250.dts b/arch/arm/dts/lpc3250-ea3250.dts
new file mode 100644 (file)
index 0000000..63c6f17
--- /dev/null
@@ -0,0 +1,273 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Embedded Artists LPC3250 board
+ *
+ * Copyright 2012 Roland Stigge <stigge@antcom.de>
+ */
+
+/dts-v1/;
+#include "lpc32xx.dtsi"
+
+/ {
+       model = "Embedded Artists LPC3250 board based on NXP LPC3250";
+       compatible = "ea,ea3250", "nxp,lpc3250";
+
+       memory@80000000 {
+               device_type = "memory";
+               reg = <0x80000000 0x4000000>;
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+               autorepeat;
+
+               button {
+                       label = "Interrupt Key";
+                       linux,code = <103>;
+                       gpios = <&gpio 4 1 0>; /* GPI_P3 1 */
+               };
+
+               key1 {
+                       label = "KEY1";
+                       linux,code = <1>;
+                       gpios = <&pca9532 0 0>;
+               };
+
+               key2 {
+                       label = "KEY2";
+                       linux,code = <2>;
+                       gpios = <&pca9532 1 0>;
+               };
+
+               key3 {
+                       label = "KEY3";
+                       linux,code = <3>;
+                       gpios = <&pca9532 2 0>;
+               };
+
+               key4 {
+                       label = "KEY4";
+                       linux,code = <4>;
+                       gpios = <&pca9532 3 0>;
+               };
+
+               joy0 {
+                       label = "Joystick Key 0";
+                       linux,code = <10>;
+                       gpios = <&gpio 2 0 0>; /* P2.0 */
+               };
+
+               joy1 {
+                       label = "Joystick Key 1";
+                       linux,code = <11>;
+                       gpios = <&gpio 2 1 0>; /* P2.1 */
+               };
+
+               joy2 {
+                       label = "Joystick Key 2";
+                       linux,code = <12>;
+                       gpios = <&gpio 2 2 0>; /* P2.2 */
+               };
+
+               joy3 {
+                       label = "Joystick Key 3";
+                       linux,code = <13>;
+                       gpios = <&gpio 2 3 0>; /* P2.3 */
+               };
+
+               joy4 {
+                       label = "Joystick Key 4";
+                       linux,code = <14>;
+                       gpios = <&gpio 2 4 0>; /* P2.4 */
+               };
+       };
+
+       leds {
+               compatible = "gpio-leds";
+
+               /* LEDs on OEM Board */
+
+               led1 {
+                       gpios = <&gpio 5 14 1>; /* GPO_P3 14, GPIO 93, active low */
+                       linux,default-trigger = "timer";
+                       default-state = "off";
+               };
+
+               led2 {
+                       gpios = <&gpio 2 10 1>; /* P2.10, active low */
+                       default-state = "off";
+               };
+
+               led3 {
+                       gpios = <&gpio 2 11 1>; /* P2.11, active low */
+                       default-state = "off";
+               };
+
+               led4 {
+                       gpios = <&gpio 2 12 1>; /* P2.12, active low */
+                       default-state = "off";
+               };
+
+               /* LEDs on Base Board */
+
+               lede1 {
+                       gpios = <&pca9532 8 0>;
+                       default-state = "off";
+               };
+               lede2 {
+                       gpios = <&pca9532 9 0>;
+                       default-state = "off";
+               };
+               lede3 {
+                       gpios = <&pca9532 10 0>;
+                       default-state = "off";
+               };
+               lede4 {
+                       gpios = <&pca9532 11 0>;
+                       default-state = "off";
+               };
+               lede5 {
+                       gpios = <&pca9532 12 0>;
+                       default-state = "off";
+               };
+               lede6 {
+                       gpios = <&pca9532 13 0>;
+                       default-state = "off";
+               };
+               lede7 {
+                       gpios = <&pca9532 14 0>;
+                       default-state = "off";
+               };
+               lede8 {
+                       gpios = <&pca9532 15 0>;
+                       default-state = "off";
+               };
+       };
+};
+
+/* 3-axis accelerometer X,Y,Z (or AD-IN instead of Z) */
+&adc {
+       status = "okay";
+};
+
+&i2c1 {
+       clock-frequency = <100000>;
+
+       uda1380: uda1380@18 {
+               compatible = "nxp,uda1380";
+               reg = <0x18>;
+               power-gpio = <&gpio 3 10 0>;
+               reset-gpio = <&gpio 3 2 0>;
+               dac-clk = "wspll";
+       };
+
+       eeprom@50 {
+               compatible = "atmel,24c256";
+               reg = <0x50>;
+       };
+
+       eeprom@57 {
+               compatible = "atmel,24c64";
+               reg = <0x57>;
+       };
+
+       pca9532: pca9532@60 {
+               compatible = "nxp,pca9532";
+               gpio-controller;
+               #gpio-cells = <2>;
+               reg = <0x60>;
+       };
+};
+
+&i2c2 {
+       clock-frequency = <100000>;
+};
+
+&i2cusb {
+       clock-frequency = <100000>;
+
+       isp1301: usb-transceiver@2d {
+               compatible = "nxp,isp1301";
+               reg = <0x2d>;
+       };
+};
+
+&mac {
+       phy-mode = "rmii";
+       use-iram;
+       status = "okay";
+};
+
+/* Here, choose exactly one from: ohci, usbd */
+&ohci /* &usbd */ {
+       transceiver = <&isp1301>;
+       status = "okay";
+};
+
+&sd {
+       wp-gpios = <&pca9532 5 0>;
+       cd-gpios = <&pca9532 4 0>;
+       cd-inverted;
+       bus-width = <4>;
+       status = "okay";
+};
+
+/* 128MB Flash via SLC NAND controller */
+&slc {
+       status = "okay";
+
+       nxp,wdr-clks = <14>;
+       nxp,wwidth = <260000000>;
+       nxp,whold = <104000000>;
+       nxp,wsetup = <200000000>;
+       nxp,rdr-clks = <14>;
+       nxp,rwidth = <34666666>;
+       nxp,rhold = <104000000>;
+       nxp,rsetup = <200000000>;
+       nand-on-flash-bbt;
+       gpios = <&gpio 5 19 1>; /* GPO_P3 19, active low */
+
+       partitions {
+               compatible = "fixed-partitions";
+               #address-cells = <1>;
+               #size-cells = <1>;
+
+               mtd0@0 {
+                       label = "ea3250-boot";
+                       reg = <0x00000000 0x00080000>;
+                       read-only;
+               };
+
+               mtd1@80000 {
+                       label = "ea3250-uboot";
+                       reg = <0x00080000 0x000c0000>;
+                       read-only;
+               };
+
+               mtd2@140000 {
+                       label = "ea3250-kernel";
+                       reg = <0x00140000 0x00400000>;
+               };
+
+               mtd3@540000 {
+                       label = "ea3250-rootfs";
+                       reg = <0x00540000 0x07ac0000>;
+               };
+       };
+};
+
+&uart1 {
+       status = "okay";
+};
+
+&uart3 {
+       status = "okay";
+};
+
+&uart5 {
+       status = "okay";
+};
+
+&uart6 {
+       status = "okay";
+};
diff --git a/arch/arm/dts/lpc32xx.dtsi b/arch/arm/dts/lpc32xx.dtsi
new file mode 100644 (file)
index 0000000..c87066d
--- /dev/null
@@ -0,0 +1,508 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * NXP LPC32xx SoC
+ *
+ * Copyright (C) 2015-2019 Vladimir Zapolskiy <vz@mleia.com>
+ * Copyright 2012 Roland Stigge <stigge@antcom.de>
+ */
+
+#include <dt-bindings/clock/lpc32xx-clock.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+
+/ {
+       #address-cells = <1>;
+       #size-cells = <1>;
+       compatible = "nxp,lpc3220";
+       interrupt-parent = <&mic>;
+
+       cpus {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               cpu@0 {
+                       compatible = "arm,arm926ej-s";
+                       device_type = "cpu";
+                       reg = <0x0>;
+               };
+       };
+
+       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>;
+               compatible = "simple-bus";
+               ranges = <0x00000000 0x00000000 0x10000000>,
+                        <0x20000000 0x20000000 0x30000000>,
+                        <0xe0000000 0xe0000000 0x04000000>;
+
+               iram: sram@8000000 {
+                       compatible = "mmio-sram";
+                       reg = <0x08000000 0x20000>;
+
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges = <0x00000000 0x08000000 0x20000>;
+               };
+
+               /*
+                * Enable either SLC or MLC
+                */
+               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 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk LPC32XX_CLK_MLC>;
+                       status = "disabled";
+               };
+
+               dma: dma@31000000 {
+                       compatible = "arm,pl080", "arm,primecell";
+                       reg = <0x31000000 0x1000>;
+                       interrupts = <28 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk LPC32XX_CLK_DMA>;
+                       clock-names = "apb_pclk";
+               };
+
+               usb {
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       compatible = "simple-bus";
+                       ranges = <0x0 0x31020000 0x00001000>;
+
+                       /*
+                        * Enable either ohci or usbd (gadget)!
+                        */
+                       ohci: ohci@0 {
+                               compatible = "nxp,ohci-nxp", "usb-ohci";
+                               reg = <0x0 0x300>;
+                               interrupt-parent = <&sic1>;
+                               interrupts = <27 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&usbclk LPC32XX_USB_CLK_HOST>;
+                               status = "disabled";
+                       };
+
+                       usbd: usbd@0 {
+                               compatible = "nxp,lpc3220-udc";
+                               reg = <0x0 0x300>;
+                               interrupt-parent = <&sic1>;
+                               interrupts = <29 IRQ_TYPE_LEVEL_HIGH>,
+                                            <30 IRQ_TYPE_LEVEL_HIGH>,
+                                            <28 IRQ_TYPE_LEVEL_HIGH>,
+                                            <26 IRQ_TYPE_LEVEL_LOW>;
+                               clocks = <&usbclk LPC32XX_USB_CLK_DEVICE>;
+                               status = "disabled";
+                       };
+
+                       i2cusb: i2c@300 {
+                               compatible = "nxp,pnx-i2c";
+                               reg = <0x300 0x100>;
+                               interrupt-parent = <&sic1>;
+                               interrupts = <31 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&usbclk LPC32XX_USB_CLK_I2C>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                       };
+
+                       usbclk: clock-controller@f00 {
+                               compatible = "nxp,lpc3220-usb-clk";
+                               reg = <0xf00 0x100>;
+                               #clock-cells = <1>;
+                       };
+               };
+
+               clcd: clcd@31040000 {
+                       compatible = "arm,pl111", "arm,primecell";
+                       reg = <0x31040000 0x1000>;
+                       interrupts = <14 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk LPC32XX_CLK_LCD>, <&clk LPC32XX_CLK_LCD>;
+                       clock-names = "clcdclk", "apb_pclk";
+                       status = "disabled";
+               };
+
+               mac: ethernet@31060000 {
+                       compatible = "nxp,lpc-eth";
+                       reg = <0x31060000 0x1000>;
+                       interrupts = <29 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk LPC32XX_CLK_MAC>;
+                       status = "disabled";
+               };
+
+               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>;
+
+                       ranges = <0 0xe0000000 0x01000000>,
+                                <1 0xe1000000 0x01000000>,
+                                <2 0xe2000000 0x01000000>,
+                                <3 0xe3000000 0x01000000>;
+                       status = "disabled";
+               };
+
+               apb {
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       compatible = "simple-bus";
+                       ranges = <0x20000000 0x20000000 0x30000000>;
+
+                       /*
+                        * ssp0 and spi1 are shared pins;
+                        * enable one in your board dts, as needed.
+                        */
+                       ssp0: spi@20084000 {
+                               compatible = "arm,pl022", "arm,primecell";
+                               reg = <0x20084000 0x1000>;
+                               interrupts = <20 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&clk LPC32XX_CLK_SSP0>;
+                               clock-names = "apb_pclk";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               status = "disabled";
+                       };
+
+                       spi1: spi@20088000 {
+                               compatible = "nxp,lpc3220-spi";
+                               reg = <0x20088000 0x1000>;
+                               clocks = <&clk LPC32XX_CLK_SPI1>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               status = "disabled";
+                       };
+
+                       /*
+                        * ssp1 and spi2 are shared pins;
+                        * enable one in your board dts, as needed.
+                        */
+                       ssp1: spi@2008c000 {
+                               compatible = "arm,pl022", "arm,primecell";
+                               reg = <0x2008c000 0x1000>;
+                               interrupts = <21 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&clk LPC32XX_CLK_SSP1>;
+                               clock-names = "apb_pclk";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               status = "disabled";
+                       };
+
+                       spi2: spi@20090000 {
+                               compatible = "nxp,lpc3220-spi";
+                               reg = <0x20090000 0x1000>;
+                               clocks = <&clk LPC32XX_CLK_SPI2>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               status = "disabled";
+                       };
+
+                       i2s0: i2s@20094000 {
+                               compatible = "nxp,lpc3220-i2s";
+                               reg = <0x20094000 0x1000>;
+                               status = "disabled";
+                       };
+
+                       sd: sd@20098000 {
+                               compatible = "arm,pl18x", "arm,primecell";
+                               reg = <0x20098000 0x1000>;
+                               interrupts = <15 IRQ_TYPE_LEVEL_HIGH>,
+                                            <13 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&clk LPC32XX_CLK_SD>;
+                               clock-names = "apb_pclk";
+                               status = "disabled";
+                       };
+
+                       i2s1: i2s@2009c000 {
+                               compatible = "nxp,lpc3220-i2s";
+                               reg = <0x2009c000 0x1000>;
+                               status = "disabled";
+                       };
+
+                       /* UART5 first since it is the default console, ttyS0 */
+                       uart5: serial@40090000 {
+                               /* actually, ns16550a w/ 64 byte fifos! */
+                               compatible = "nxp,lpc3220-uart";
+                               reg = <0x40090000 0x1000>;
+                               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 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 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 IRQ_TYPE_LEVEL_HIGH>;
+                               reg-shift = <2>;
+                               clocks = <&clk LPC32XX_CLK_UART6>;
+                               status = "disabled";
+                       };
+
+                       i2c1: i2c@400a0000 {
+                               compatible = "nxp,pnx-i2c";
+                               reg = <0x400a0000 0x100>;
+                               interrupt-parent = <&sic1>;
+                               interrupts = <19 IRQ_TYPE_LEVEL_LOW>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               clocks = <&clk LPC32XX_CLK_I2C1>;
+                       };
+
+                       i2c2: i2c@400a8000 {
+                               compatible = "nxp,pnx-i2c";
+                               reg = <0x400a8000 0x100>;
+                               interrupt-parent = <&sic1>;
+                               interrupts = <18 IRQ_TYPE_LEVEL_LOW>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               clocks = <&clk LPC32XX_CLK_I2C2>;
+                       };
+
+                       mpwm: mpwm@400e8000 {
+                               compatible = "nxp,lpc3220-motor-pwm";
+                               reg = <0x400e8000 0x78>;
+                               status = "disabled";
+                               #pwm-cells = <2>;
+                       };
+               };
+
+               fab {
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       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@40008000 {
+                               compatible = "nxp,lpc3220-mic";
+                               reg = <0x40008000 0x4000>;
+                               interrupt-controller;
+                               #interrupt-cells = <2>;
+                       };
+
+                       sic1: interrupt-controller@4000c000 {
+                               compatible = "nxp,lpc3220-sic";
+                               reg = <0x4000c000 0x4000>;
+                               interrupt-controller;
+                               #interrupt-cells = <2>;
+
+                               interrupt-parent = <&mic>;
+                               interrupts = <0 IRQ_TYPE_LEVEL_LOW>,
+                                            <30 IRQ_TYPE_LEVEL_LOW>;
+                               };
+
+                       sic2: interrupt-controller@40010000 {
+                               compatible = "nxp,lpc3220-sic";
+                               reg = <0x40010000 0x4000>;
+                               interrupt-controller;
+                               #interrupt-cells = <2>;
+
+                               interrupt-parent = <&mic>;
+                               interrupts = <1 IRQ_TYPE_LEVEL_LOW>,
+                                            <31 IRQ_TYPE_LEVEL_LOW>;
+                       };
+
+                       uart1: serial@40014000 {
+                               compatible = "nxp,lpc3220-hsuart";
+                               reg = <0x40014000 0x1000>;
+                               interrupts = <26 IRQ_TYPE_LEVEL_HIGH>;
+                               status = "disabled";
+                       };
+
+                       uart2: serial@40018000 {
+                               compatible = "nxp,lpc3220-hsuart";
+                               reg = <0x40018000 0x1000>;
+                               interrupts = <25 IRQ_TYPE_LEVEL_HIGH>;
+                               status = "disabled";
+                       };
+
+                       uart7: serial@4001c000 {
+                               compatible = "nxp,lpc3220-hsuart";
+                               reg = <0x4001c000 0x1000>;
+                               interrupts = <24 IRQ_TYPE_LEVEL_HIGH>;
+                               status = "disabled";
+                       };
+
+                       rtc: rtc@40024000 {
+                               compatible = "nxp,lpc3220-rtc";
+                               reg = <0x40024000 0x1000>;
+                               interrupt-parent = <&sic1>;
+                               interrupts = <20 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&clk LPC32XX_CLK_RTC>;
+                       };
+
+                       gpio: gpio@40028000 {
+                               compatible = "nxp,lpc3220-gpio";
+                               reg = <0x40028000 0x1000>;
+                               gpio-controller;
+                               #gpio-cells = <3>; /* bank, pin, flags */
+                       };
+
+                       timer4: timer@4002c000 {
+                               compatible = "nxp,lpc3220-timer";
+                               reg = <0x4002c000 0x1000>;
+                               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 = <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>;
+                               clocks = <&clk LPC32XX_CLK_TIMER0>;
+                               clock-names = "timerclk";
+                               interrupts = <16 IRQ_TYPE_LEVEL_LOW>;
+                       };
+
+                       /*
+                        * TSC vs. ADC: Since those two share the same
+                        * hardware, you need to choose from one of the
+                        * following two and do 'status = "okay";' for one of
+                        * them
+                        */
+
+                       adc: adc@40048000 {
+                               compatible = "nxp,lpc3220-adc";
+                               reg = <0x40048000 0x1000>;
+                               interrupt-parent = <&sic1>;
+                               interrupts = <7 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&clk LPC32XX_CLK_ADC>;
+                               status = "disabled";
+                       };
+
+                       tsc: tsc@40048000 {
+                               compatible = "nxp,lpc3220-tsc";
+                               reg = <0x40048000 0x1000>;
+                               interrupt-parent = <&sic1>;
+                               interrupts = <7 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&clk LPC32XX_CLK_ADC>;
+                               status = "disabled";
+                       };
+
+                       timer1: timer@4004c000 {
+                               compatible = "nxp,lpc3220-timer";
+                               reg = <0x4004c000 0x1000>;
+                               interrupts = <17 IRQ_TYPE_LEVEL_LOW>;
+                               clocks = <&clk LPC32XX_CLK_TIMER1>;
+                               clock-names = "timerclk";
+                       };
+
+                       key: key@40050000 {
+                               compatible = "nxp,lpc3220-key";
+                               reg = <0x40050000 0x1000>;
+                               clocks = <&clk LPC32XX_CLK_KEY>;
+                               interrupt-parent = <&sic1>;
+                               interrupts = <22 IRQ_TYPE_LEVEL_HIGH>;
+                               status = "disabled";
+                       };
+
+                       timer2: timer@40058000 {
+                               compatible = "nxp,lpc3220-timer";
+                               reg = <0x40058000 0x1000>;
+                               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>;
+                               assigned-clocks = <&clk LPC32XX_CLK_PWM1>;
+                               assigned-clock-parents = <&clk LPC32XX_CLK_PERIPH>;
+                               status = "disabled";
+                       };
+
+                       pwm2: pwm@4005c004 {
+                               compatible = "nxp,lpc3220-pwm";
+                               reg = <0x4005c004 0x4>;
+                               clocks = <&clk LPC32XX_CLK_PWM2>;
+                               assigned-clocks = <&clk LPC32XX_CLK_PWM2>;
+                               assigned-clock-parents = <&clk LPC32XX_CLK_PERIPH>;
+                               status = "disabled";
+                       };
+
+                       timer3: timer@40060000 {
+                               compatible = "nxp,lpc3220-timer";
+                               reg = <0x40060000 0x1000>;
+                               interrupts = <19 IRQ_TYPE_LEVEL_LOW>;
+                               clocks = <&clk LPC32XX_CLK_TIMER3>;
+                               clock-names = "timerclk";
+                               status = "disabled";
+                       };
+               };
+       };
+};
diff --git a/include/dt-bindings/clock/lpc32xx-clock.h b/include/dt-bindings/clock/lpc32xx-clock.h
new file mode 100644 (file)
index 0000000..e624d3a
--- /dev/null
@@ -0,0 +1,58 @@
+/*
+ * Copyright (c) 2015 Vladimir Zapolskiy <vz@mleia.com>
+ *
+ * This code is released using a dual license strategy: BSD/GPL
+ * You can choose the licence that better fits your requirements.
+ *
+ * Released under the terms of 3-clause BSD License
+ * Released under the terms of GNU General Public License Version 2.0
+ *
+ */
+
+#ifndef __DT_BINDINGS_LPC32XX_CLOCK_H
+#define __DT_BINDINGS_LPC32XX_CLOCK_H
+
+/* LPC32XX System Control Block clocks */
+#define LPC32XX_CLK_RTC                1
+#define LPC32XX_CLK_DMA                2
+#define LPC32XX_CLK_MLC                3
+#define LPC32XX_CLK_SLC                4
+#define LPC32XX_CLK_LCD                5
+#define LPC32XX_CLK_MAC                6
+#define LPC32XX_CLK_SD         7
+#define LPC32XX_CLK_DDRAM      8
+#define LPC32XX_CLK_SSP0       9
+#define LPC32XX_CLK_SSP1       10
+#define LPC32XX_CLK_UART3      11
+#define LPC32XX_CLK_UART4      12
+#define LPC32XX_CLK_UART5      13
+#define LPC32XX_CLK_UART6      14
+#define LPC32XX_CLK_IRDA       15
+#define LPC32XX_CLK_I2C1       16
+#define LPC32XX_CLK_I2C2       17
+#define LPC32XX_CLK_TIMER0     18
+#define LPC32XX_CLK_TIMER1     19
+#define LPC32XX_CLK_TIMER2     20
+#define LPC32XX_CLK_TIMER3     21
+#define LPC32XX_CLK_TIMER4     22
+#define LPC32XX_CLK_TIMER5     23
+#define LPC32XX_CLK_WDOG       24
+#define LPC32XX_CLK_I2S0       25
+#define LPC32XX_CLK_I2S1       26
+#define LPC32XX_CLK_SPI1       27
+#define LPC32XX_CLK_SPI2       28
+#define LPC32XX_CLK_MCPWM      29
+#define LPC32XX_CLK_HSTIMER    30
+#define LPC32XX_CLK_KEY                31
+#define LPC32XX_CLK_PWM1       32
+#define LPC32XX_CLK_PWM2       33
+#define LPC32XX_CLK_ADC                34
+#define LPC32XX_CLK_HCLK_PLL   35
+#define LPC32XX_CLK_PERIPH     36
+
+/* LPC32XX USB clocks */
+#define LPC32XX_USB_CLK_I2C    1
+#define LPC32XX_USB_CLK_DEVICE 2
+#define LPC32XX_USB_CLK_HOST   3
+
+#endif /* __DT_BINDINGS_LPC32XX_CLOCK_H */