All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/6] ARM: dts: imx21: add i.MX21 SoC device tree
@ 2018-12-22 10:51 Alexander Shiyan
  2018-12-22 10:51 ` [PATCH 2/6] ARM i.MX21: Add devicetree support Alexander Shiyan
                   ` (4 more replies)
  0 siblings, 5 replies; 9+ messages in thread
From: Alexander Shiyan @ 2018-12-22 10:51 UTC (permalink / raw)
  To: linux-arm-kernel
  Cc: Alexander Shiyan, Russell King, NXP Linux Team,
	Pengutronix Kernel Team, Fabio Estevam, Shawn Guo

It adds initial device tree support for Freescale i.MX21 SoC.

Signed-off-by: Alexander Shiyan <shc_work@mail.ru>
---
 arch/arm/boot/dts/imx21-pinfunc.h | 441 ++++++++++++++++++++++++++++++++++++
 arch/arm/boot/dts/imx21.dtsi      | 465 ++++++++++++++++++++++++++++++++++++++
 2 files changed, 906 insertions(+)
 create mode 100644 arch/arm/boot/dts/imx21-pinfunc.h
 create mode 100644 arch/arm/boot/dts/imx21.dtsi

diff --git a/arch/arm/boot/dts/imx21-pinfunc.h b/arch/arm/boot/dts/imx21-pinfunc.h
new file mode 100644
index 0000000..6787b23
--- /dev/null
+++ b/arch/arm/boot/dts/imx21-pinfunc.h
@@ -0,0 +1,441 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+/* Author: Alexander Shiyan <shc_work@mail.ru> */
+
+#ifndef __DTS_IMX21_PINFUNC_H
+#define __DTS_IMX21_PINFUNC_H
+
+/*
+ * The pin function ID is a tuple of
+ * <pin mux_id>
+ * mux_id consists of
+ * function + (direction << 2) + (gpio_oconf << 4) + (gpio_iconfa << 8) + (gpio_iconfb << 10)
+ *
+ * function:      0 - Primary function
+ *                1 - Alternate function
+ *                2 - GPIO
+ * direction:     0 - Input
+ *                1 - Output
+ * gpio_oconf:    0 - A_IN
+ *                1 - B_IN
+ *                2 - C_IN
+ *                3 - Data Register
+ * gpio_iconfa/b: 0 - GPIO_IN
+ *                1 - Interrupt Status Register
+ *                2 - 0
+ *                3 - 1
+ *
+ * 'pin' is an integer between 5 and 0xb6. i.MX21 has 6 ports with 32 configurable
+ * configurable pins each. 'pin' is PORT * 32 + PORT_PIN, PORT_PIN is the pin
+ * number on the specific port (between 0 and 31).
+ */
+
+#define MX21_PAD_LSCLK__LSCLK			0x05 0x004
+#define MX21_PAD_LSCLK__BMI_CLK_CS		0x05 0x001
+#define MX21_PAD_LSCLK__GPIO1_5			0x05 0x032
+#define MX21_PAD_LD0__LD0			0x06 0x004
+#define MX21_PAD_LD0__BMI_D0			0x06 0x001
+#define MX21_PAD_LD0__GPIO1_6			0x06 0x032
+#define MX21_PAD_LD0__SLCDC1_DAT0		0x06 0x006
+#define MX21_PAD_LD1__LD1			0x07 0x004
+#define MX21_PAD_LD1__BMI_D1			0x07 0x001
+#define MX21_PAD_LD1__GPIO1_7			0x07 0x032
+#define MX21_PAD_LD1__SLCDC1_DAT1		0x07 0x006
+#define MX21_PAD_LD2__LD2			0x08 0x004
+#define MX21_PAD_LD2__BMI_D2			0x08 0x001
+#define MX21_PAD_LD2__GPIO1_8			0x08 0x032
+#define MX21_PAD_LD2__SLCDC1_DAT2		0x08 0x006
+#define MX21_PAD_LD3__LD3			0x09 0x004
+#define MX21_PAD_LD3__BMI_D3			0x09 0x001
+#define MX21_PAD_LD3__GPIO1_9			0x09 0x032
+#define MX21_PAD_LD3__SLCDC1_DAT3		0x09 0x006
+#define MX21_PAD_LD4__LD4			0x0a 0x004
+#define MX21_PAD_LD4__BMI_D4			0x0a 0x001
+#define MX21_PAD_LD4__GPIO1_10			0x0a 0x032
+#define MX21_PAD_LD4__SLCDC1_DAT4		0x0a 0x006
+#define MX21_PAD_LD5__LD5			0x0b 0x004
+#define MX21_PAD_LD5__BMI_D5			0x0b 0x001
+#define MX21_PAD_LD5__GPIO1_11			0x0b 0x032
+#define MX21_PAD_LD5__SLCDC1_DAT5		0x0b 0x006
+#define MX21_PAD_LD6__LD6			0x0c 0x004
+#define MX21_PAD_LD6__BMI_D6			0x0c 0x001
+#define MX21_PAD_LD6__GPIO1_12			0x0c 0x032
+#define MX21_PAD_LD6__SLCDC1_DAT6		0x0c 0x006
+#define MX21_PAD_LD7__LD7			0x0d 0x004
+#define MX21_PAD_LD7__BMI_D7			0x0d 0x001
+#define MX21_PAD_LD7__GPIO1_13			0x0d 0x032
+#define MX21_PAD_LD7__SLCDC1_DAT7		0x0d 0x006
+#define MX21_PAD_LD8__LD8			0x0e 0x004
+#define MX21_PAD_LD8__BMI_D8			0x0e 0x001
+#define MX21_PAD_LD8__GPIO1_14			0x0e 0x032
+#define MX21_PAD_LD8__SLCDC1_DAT8		0x0e 0x006
+#define MX21_PAD_LD8__SLCDC1_DAT0		0x0e 0x026
+#define MX21_PAD_LD9__LD9			0x0f 0x004
+#define MX21_PAD_LD9__BMI_D9			0x0f 0x001
+#define MX21_PAD_LD9__GPIO1_15			0x0f 0x032
+#define MX21_PAD_LD9__SLCDC1_DAT9		0x0f 0x006
+#define MX21_PAD_LD9__SLCDC1_DAT1		0x0f 0x026
+#define MX21_PAD_LD10__LD10			0x10 0x004
+#define MX21_PAD_LD10__BMI_D10			0x10 0x001
+#define MX21_PAD_LD10__GPIO1_16			0x10 0x032
+#define MX21_PAD_LD10__SLCDC1_DAT10		0x10 0x006
+#define MX21_PAD_LD10__SLCDC1_DAT2		0x10 0x026
+#define MX21_PAD_LD11__LD11			0x11 0x004
+#define MX21_PAD_LD11__BMI_D11			0x11 0x001
+#define MX21_PAD_LD11__GPIO1_17			0x11 0x032
+#define MX21_PAD_LD11__SLCDC1_DAT11		0x11 0x006
+#define MX21_PAD_LD11__SLCDC1_DAT3		0x11 0x026
+#define MX21_PAD_LD12__LD12			0x12 0x004
+#define MX21_PAD_LD12__BMI_D12			0x12 0x001
+#define MX21_PAD_LD12__GPIO1_18			0x12 0x032
+#define MX21_PAD_LD12__SLCDC1_DAT12		0x12 0x006
+#define MX21_PAD_LD12__SLCDC1_DAT4		0x12 0x026
+#define MX21_PAD_LD13__LD13			0x13 0x004
+#define MX21_PAD_LD13__BMI_D13			0x13 0x001
+#define MX21_PAD_LD13__GPIO1_19			0x13 0x032
+#define MX21_PAD_LD13__SLCDC1_DAT13		0x13 0x006
+#define MX21_PAD_LD13__SLCDC1_DAT5		0x13 0x026
+#define MX21_PAD_LD14__LD14			0x14 0x004
+#define MX21_PAD_LD14__BMI_D14			0x14 0x001
+#define MX21_PAD_LD14__GPIO1_20			0x14 0x032
+#define MX21_PAD_LD14__SLCDC1_DAT14		0x14 0x006
+#define MX21_PAD_LD14__SLCDC1_DAT6		0x14 0x026
+#define MX21_PAD_LD15__LD15			0x15 0x004
+#define MX21_PAD_LD15__BMI_D15			0x15 0x001
+#define MX21_PAD_LD15__GPIO1_21			0x15 0x032
+#define MX21_PAD_LD15__SLCDC1_DAT15		0x15 0x006
+#define MX21_PAD_LD15__SLCDC1_DAT7		0x15 0x026
+#define MX21_PAD_LD16__LD16			0x16 0x004
+#define MX21_PAD_LD16__BMI_READ_REQ		0x16 0x005
+#define MX21_PAD_LD16__GPIO1_22			0x16 0x032
+#define MX21_PAD_LD15__EXT_DMAGRANT		0x16 0x006
+#define MX21_PAD_LD17__LD17			0x17 0x004
+#define MX21_PAD_LD17__BMI_WRITE		0x17 0x001
+#define MX21_PAD_LD17__GPIO1_23			0x17 0x032
+#define MX21_PAD_REV__REV			0x18 0x004
+#define MX21_PAD_REV__GPIO1_24			0x18 0x032
+#define MX21_PAD_REV__SLCDC1_D0			0x18 0x006
+#define MX21_PAD_CLS__CLS			0x19 0x004
+#define MX21_PAD_CLS__GPIO1_25			0x19 0x032
+#define MX21_PAD_CLS__SLCDC1_RS			0x19 0x006
+#define MX21_PAD_PS__PS				0x1a 0x004
+#define MX21_PAD_PS__GPIO1_26			0x1a 0x032
+#define MX21_PAD_PS__SLCDC1_CS			0x1a 0x006
+#define MX21_PAD_SPL_SPR__SPL_SPR		0x1b 0x004
+#define MX21_PAD_SPL_SPR__GPIO1_27		0x1b 0x032
+#define MX21_PAD_SPL_SPR__SLCDC1_CLK		0x1b 0x006
+#define MX21_PAD_HSYNC__HSYNC			0x1c 0x004
+#define MX21_PAD_HSYNC__GPIO1_28		0x1c 0x032
+#define MX21_PAD_VSYNC__VSYNC			0x1d 0x004
+#define MX21_PAD_VSYNC__BMI_RXF_FULL		0x1d 0x005
+#define MX21_PAD_VSYNC__GPIO1_29		0x1d 0x032
+#define MX21_PAD_VSYNC__BMI_WAIT		0x1d 0x002
+#define MX21_PAD_CONTRAST__CONTRAST		0x1e 0x004
+#define MX21_PAD_CONTRAST__BMI_READ		0x1e 0x005
+#define MX21_PAD_CONTRAST__GPIO1_30		0x1e 0x032
+#define MX21_PAD_OE_ACD__OE_ACD			0x1f 0x004
+#define MX21_PAD_OE_ACD__GPIO1_31		0x1f 0x032
+#define MX21_PAD_SD2_D0__SD2_D0			0x24 0x000
+#define MX21_PAD_SD2_D0__GPIO2_4		0x24 0x032
+#define MX21_PAD_SD2_D1__SD2_D1			0x25 0x000
+#define MX21_PAD_SD2_D1__GPIO2_5		0x25 0x032
+#define MX21_PAD_SD2_D2__SD2_D2			0x26 0x000
+#define MX21_PAD_SD2_D2__GPIO2_6		0x26 0x032
+#define MX21_PAD_SD2_D2__SLCDC1_D0		0x26 0x006
+#define MX21_PAD_SD2_D3__SD2_D3			0x27 0x000
+#define MX21_PAD_SD2_D3__GPIO2_7		0x27 0x032
+#define MX21_PAD_SD2_D3__SLCDC1_RS		0x27 0x006
+#define MX21_PAD_SD2_CMD__SD2_CMD		0x28 0x000
+#define MX21_PAD_SD2_CMD__GPIO2_8		0x28 0x032
+#define MX21_PAD_SD2_CMD__SLCDC1_CS		0x28 0x006
+#define MX21_PAD_SD2_CLK__SD2_CLK		0x29 0x004
+#define MX21_PAD_SD2_CLK__GPIO2_9		0x29 0x032
+#define MX21_PAD_SD2_CLK__SLCDC1_CLK		0x29 0x006
+#define MX21_PAD_CSI_D0__CSI_D0			0x2a 0x000
+#define MX21_PAD_CSI_D0__GPIO2_10		0x2a 0x032
+#define MX21_PAD_CSI_D1__CSI_D1			0x2b 0x000
+#define MX21_PAD_CSI_D1__GPIO2_11		0x2b 0x032
+#define MX21_PAD_CSI_D2__CSI_D2			0x2c 0x000
+#define MX21_PAD_CSI_D2__GPIO2_12		0x2c 0x032
+#define MX21_PAD_CSI_D3__CSI_D3			0x2d 0x000
+#define MX21_PAD_CSI_D3__GPIO2_13		0x2d 0x032
+#define MX21_PAD_CSI_D4__CSI_D4			0x2e 0x000
+#define MX21_PAD_CSI_D4__GPIO2_14		0x2e 0x032
+#define MX21_PAD_CSI_MCLK__CSI_MCLK		0x2f 0x004
+#define MX21_PAD_CSI_MCLK__GPIO2_15		0x2f 0x032
+#define MX21_PAD_CSI_PIXCLK__CSI_PIXCLK		0x30 0x000
+#define MX21_PAD_CSI_PIXCLK__GPIO2_16		0x30 0x032
+#define MX21_PAD_CSI_D5__CSI_D5			0x31 0x000
+#define MX21_PAD_CSI_D5__GPIO2_17		0x31 0x032
+#define MX21_PAD_CSI_D6__CSI_D6			0x32 0x000
+#define MX21_PAD_CSI_D6__GPIO2_18		0x32 0x032
+#define MX21_PAD_CSI_D7__CSI_D7			0x33 0x000
+#define MX21_PAD_CSI_D7__GPIO2_19		0x33 0x032
+#define MX21_PAD_CSI_VSYNC__CSI_VSYNC		0x34 0x000
+#define MX21_PAD_CSI_VSYNC__GPIO2_20		0x34 0x032
+#define MX21_PAD_CSI_HSYNC__CSI_HSYNC		0x35 0x000
+#define MX21_PAD_CSI_HSYNC__GPIO2_21		0x35 0x032
+#define MX21_PAD_USB_BYP__USB_BYP		0x36 0x000
+#define MX21_PAD_USB_BYP__GPIO2_22		0x36 0x032
+#define MX21_PAD_USB_PWR__USB_PWR		0x37 0x004
+#define MX21_PAD_USB_PWR__GPIO2_23		0x37 0x032
+#define MX21_PAD_USB_OC__USB_OC			0x38 0x000
+#define MX21_PAD_USB_OC__GPIO2_24		0x38 0x032
+#define MX21_PAD_USBH_ON__USBH_ON		0x39 0x004
+#define MX21_PAD_USBH_ON__GPIO2_25		0x39 0x032
+#define MX21_PAD_USBH_ON__SLCDC1_DAT0		0x39 0x006
+#define MX21_PAD_USBH1_FS__USBH1_FS		0x3a 0x004
+#define MX21_PAD_USBH1_FS__UART4_RTS		0x3a 0x001
+#define MX21_PAD_USBH1_FS__GPIO2_26		0x3a 0x032
+#define MX21_PAD_USBH1_FS__SLCDC1_DAT1		0x3a 0x006
+#define MX21_PAD_USBH1_FS__USBH1_RXDAT		0x3a 0x026
+#define MX21_PAD_USBH1_OE__USBH1_OE		0x3b 0x000
+#define MX21_PAD_USBH1_OE__GPIO2_27		0x3b 0x032
+#define MX21_PAD_USBH1_OE__SLCDC1_DAT2		0x3b 0x006
+#define MX21_PAD_USBH1_TXDM__USBH1_TXDM		0x3c 0x004
+#define MX21_PAD_USBH1_TXDM__UART4_TXD		0x3c 0x005
+#define MX21_PAD_USBH1_TXDM__GPIO2_28		0x3c 0x032
+#define MX21_PAD_USBH1_TXDM__SLCDC1_DAT3	0x3c 0x006
+#define MX21_PAD_USBH1_TXDP__USBH1_TXDP		0x3d 0x004
+#define MX21_PAD_USBH1_TXDP__UART4_CTS		0x3d 0x005
+#define MX21_PAD_USBH1_TXDP__GPIO2_29		0x3d 0x032
+#define MX21_PAD_USBH1_TXDP__SLCDC1_DAT4	0x3d 0x006
+#define MX21_PAD_USBH1_TXDP__UART4_RXD		0x3d 0x002
+#define MX21_PAD_USBH1_RXDM__USBH1_RXDM		0x3e 0x000
+#define MX21_PAD_USBH1_RXDM__GPIO2_30		0x3e 0x032
+#define MX21_PAD_USBH1_RXDM__SLCDC1_DAT5	0x3e 0x006
+#define MX21_PAD_USBH1_RXDM__UART4_CTS		0x3e 0x026
+#define MX21_PAD_USBH1_RXDP__USBH1_RXDP		0x3f 0x000
+#define MX21_PAD_USBH1_RXDP__UART4_RXD		0x3f 0x001
+#define MX21_PAD_USBH1_RXDP__GPIO2_31		0x3f 0x032
+#define MX21_PAD_USBH1_RXDP__SLCDC1_DAT6	0x3f 0x006
+#define MX21_PAD_USBH1_RXDP__UART4_RTS		0x3f 0x002
+#define MX21_PAD_USBG_SDA__USBG_SDA		0x45 0x000
+#define MX21_PAD_USBG_SDA__GPIO3_5		0x45 0x032
+#define MX21_PAD_USBG_SDA__SLCDC1_DAT7		0x45 0x006
+#define MX21_PAD_USBG_SCL__USBG_SCL		0x46 0x000
+#define MX21_PAD_USBG_SCL__GPIO3_6		0x46 0x032
+#define MX21_PAD_USBG_SCL__SLCDC1_DAT8		0x46 0x006
+#define MX21_PAD_USBG_ON__USBG_ON		0x47 0x004
+#define MX21_PAD_USBG_ON__GPIO3_7		0x47 0x032
+#define MX21_PAD_USBG_ON__SLCDC1_DAT9		0x47 0x006
+#define MX21_PAD_USBG_FS__USBG_FS		0x48 0x004
+#define MX21_PAD_USBG_FS__GPIO3_8		0x48 0x032
+#define MX21_PAD_USBG_FS__SLCDC1_DAT10		0x48 0x006
+#define MX21_PAD_USBG_FS__USBBG_TXR_INT		0x48 0x002
+#define MX21_PAD_USBG_OE__USBG_OE		0x49 0x004
+#define MX21_PAD_USBG_OE__GPIO3_9		0x49 0x032
+#define MX21_PAD_USBG_OE__SLCDC1_DAT11		0x49 0x006
+#define MX21_PAD_USBG_TXDM__USBG_TXDM		0x4a 0x004
+#define MX21_PAD_USBG_TXDM__GPIO3_10		0x4a 0x032
+#define MX21_PAD_USBG_TXDM__SLCDC1_DAT12	0x4a 0x006
+#define MX21_PAD_USBG_TXDP__USBG_TXDP		0x4b 0x004
+#define MX21_PAD_USBG_TXDP__GPIO3_11		0x4b 0x032
+#define MX21_PAD_USBG_TXDP__SLCDC1_DAT13	0x4b 0x006
+#define MX21_PAD_USBG_RXDM__USBG_RXDM		0x4c 0x000
+#define MX21_PAD_USBG_RXDM__GPIO3_12		0x4c 0x032
+#define MX21_PAD_USBG_RXDM__SLCDC1_DAT14	0x4c 0x006
+#define MX21_PAD_USBG_RXDP__USBG_RXDP		0x4d 0x000
+#define MX21_PAD_USBG_RXDP__GPIO3_13		0x4d 0x032
+#define MX21_PAD_USBG_RXDP__SLCDC1_DAT15	0x4d 0x006
+#define MX21_PAD_TOUT__TOUT			0x4e 0x004
+#define MX21_PAD_TOUT__GPIO3_14			0x4e 0x032
+#define MX21_PAD_TOUT__SYS_CLK			0x4e 0x006
+#define MX21_PAD_TIN__TIN			0x4f 0x000
+#define MX21_PAD_TIN__GPIO3_15			0x4f 0x032
+#define MX21_PAD_TIN__WKGD			0x4f 0x002
+#define MX21_PAD_SAP_FS__SAP_FS			0x50 0x000
+#define MX21_PAD_SAP_FS__GPIO3_16		0x50 0x032
+#define MX21_PAD_SAP_RXD__SAP_RXD		0x51 0x000
+#define MX21_PAD_SAP_RXD__GPIO3_17		0x51 0x032
+#define MX21_PAD_SAP_TXD__SAP_TXD		0x52 0x000
+#define MX21_PAD_SAP_TXD__GPIO3_18		0x52 0x032
+#define MX21_PAD_SAP_CLK__SAP_CLK		0x53 0x000
+#define MX21_PAD_SAP_CLK__GPIO3_19		0x53 0x032
+#define MX21_PAD_SSI1_FS__SSI1_FS		0x54 0x000
+#define MX21_PAD_SSI1_FS__GPIO3_20		0x54 0x032
+#define MX21_PAD_SSI1_RXD__SSI1_RXD		0x55 0x000
+#define MX21_PAD_SSI1_RXD__GPIO3_21		0x55 0x032
+#define MX21_PAD_SSI1_TXD__SSI1_TXD		0x56 0x000
+#define MX21_PAD_SSI1_TXD__GPIO3_22		0x56 0x032
+#define MX21_PAD_SSI1_CLK__SSI1_CLK		0x57 0x000
+#define MX21_PAD_SSI1_CLK__GPIO3_23		0x57 0x032
+#define MX21_PAD_SSI2_FS__SSI2_FS		0x58 0x000
+#define MX21_PAD_SSI2_FS__GPIO3_24		0x58 0x032
+#define MX21_PAD_SSI2_RXD__SSI2_RXD		0x59 0x000
+#define MX21_PAD_SSI2_RXD__GPIO3_25		0x59 0x032
+#define MX21_PAD_SSI2_TXD__SSI2_TXD		0x5a 0x000
+#define MX21_PAD_SSI2_TXD__GPIO3_26		0x5a 0x032
+#define MX21_PAD_SSI2_CLK__SSI2_CLK		0x5b 0x000
+#define MX21_PAD_SSI2_CLK__GPIO3_27		0x5b 0x032
+#define MX21_PAD_SSI3_FS__SSI3_FS		0x5c 0x000
+#define MX21_PAD_SSI3_FS__SLCDC2_D0		0x5c 0x001
+#define MX21_PAD_SSI3_FS__GPIO3_28		0x5c 0x032
+#define MX21_PAD_SSI3_RXD__SSI3_RXD		0x5d 0x000
+#define MX21_PAD_SSI3_RXD__SLCDC2_RS		0x5d 0x001
+#define MX21_PAD_SSI3_RXD__GPIO3_29		0x5d 0x032
+#define MX21_PAD_SSI3_TXD__SSI3_TXD		0x5e 0x000
+#define MX21_PAD_SSI3_TXD__SLCDC2_CS		0x5e 0x001
+#define MX21_PAD_SSI3_TXD__GPIO3_30		0x5e 0x032
+#define MX21_PAD_SSI3_CLK__SSI3_CLK		0x5f 0x000
+#define MX21_PAD_SSI3_CLK__SLCDC2_CLK		0x5f 0x001
+#define MX21_PAD_SSI3_CLK__GPIO3_31		0x5f 0x032
+#define MX21_PAD_I2C_DATA__I2C_DATA		0x71 0x000
+#define MX21_PAD_I2C_DATA__GPIO4_17		0x71 0x032
+#define MX21_PAD_I2C_CLK__I2C_CLK		0x72 0x000
+#define MX21_PAD_I2C_CLK__GPIO4_18		0x72 0x032
+#define MX21_PAD_CSPI2_SS2__CSPI2_SS2		0x73 0x000
+#define MX21_PAD_CSPI2_SS2__GPIO4_19		0x73 0x032
+#define MX21_PAD_CSPI2_SS2__USBH2_RXDM		0x73 0x002
+#define MX21_PAD_CSPI2_SS1__CSPI2_SS1		0x74 0x000
+#define MX21_PAD_CSPI2_SS1__GPIO4_20		0x74 0x032
+#define MX21_PAD_CSPI2_SS1__USBH2_RXDP		0x74 0x002
+#define MX21_PAD_CSPI2_SS0__CSPI2_SS0		0x75 0x000
+#define MX21_PAD_CSPI2_SS0__USBH2_FS		0x75 0x006
+#define MX21_PAD_CSPI2_SS0__GPIO4_21		0x75 0x032
+#define MX21_PAD_CSPI2_SCLK__CSPI2_SCLK		0x76 0x000
+#define MX21_PAD_CSPI2_SCLK__USBH2_OE		0x76 0x006
+#define MX21_PAD_CSPI2_SCLK__GPIO4_22		0x76 0x032
+#define MX21_PAD_CSPI2_MISO__CSPI2_MISO		0x77 0x000
+#define MX21_PAD_CSPI2_MISO__GPIO4_23		0x77 0x032
+#define MX21_PAD_CSPI2_MISO__USBH2_TXDM		0x77 0x006
+#define MX21_PAD_CSPI2_MOSI__CSPI2_MOSI		0x78 0x000
+#define MX21_PAD_CSPI2_MOSI__GPIO4_24		0x78 0x032
+#define MX21_PAD_CSPI2_MOSI__USBH2_TXDP		0x78 0x006
+#define MX21_PAD_CSPI1_RDY__CSPI1_RDY		0x79 0x000
+#define MX21_PAD_CSPI1_RDY__GPIO4_25		0x79 0x032
+#define MX21_PAD_CSPI1_RDY__EXT_DMAREQ		0x79 0x002
+#define MX21_PAD_CSPI1_SS2__CSPI1_SS2		0x7a 0x000
+#define MX21_PAD_CSPI1_SS2__GPIO4_26		0x7a 0x032
+#define MX21_PAD_CSPI1_SS2__USBG_RXDAT		0x7a 0x002
+#define MX21_PAD_CSPI1_SS1__CSPI1_SS1		0x7b 0x000
+#define MX21_PAD_CSPI1_SS1__GPIO4_27		0x7b 0x032
+#define MX21_PAD_CSPI1_SS1__EXT_DMA_GRANT	0x7b 0x016
+#define MX21_PAD_CSPI1_SS0__CSPI1_SS0		0x7c 0x000
+#define MX21_PAD_CSPI1_SS0__GPIO4_28		0x7c 0x032
+#define MX21_PAD_CSPI1_SCLK__CSPI1_SCLK		0x7d 0x000
+#define MX21_PAD_CSPI1_SCLK__GPIO4_29		0x7d 0x032
+#define MX21_PAD_CSPI1_MISO__CSPI1_MISO		0x7e 0x000
+#define MX21_PAD_CSPI1_MISO__GPIO4_30		0x7e 0x032
+#define MX21_PAD_CSPI1_MOSI__CSPI1_MOSI		0x7f 0x000
+#define MX21_PAD_CSPI1_MOSI__GPIO4_31		0x7f 0x032
+#define MX21_PAD_TEST_WB2__TEST_WB2		0x80 0x000
+#define MX21_PAD_TEST_WB2__KP_COL6		0x80 0x001
+#define MX21_PAD_TEST_WB2__GPIO5_0		0x80 0x032
+#define MX21_PAD_TEST_WB1__TEST_WB1		0x81 0x000
+#define MX21_PAD_TEST_WB1__KP_ROW6		0x81 0x001
+#define MX21_PAD_TEST_WB1__GPIO5_1		0x81 0x032
+#define MX21_PAD_TEST_WB0__TEST_WB0		0x82 0x000
+#define MX21_PAD_TEST_WB0__KP_ROW7		0x82 0x001
+#define MX21_PAD_TEST_WB0__GPIO5_2		0x82 0x032
+#define MX21_PAD_UART2_CTS__UART2_CTS		0x83 0x004
+#define MX21_PAD_UART2_CTS__KP_COL7		0x83 0x001
+#define MX21_PAD_UART2_CTS__GPIO5_3		0x83 0x032
+#define MX21_PAD_UART2_RTS__UART2_RTS		0x84 0x000
+#define MX21_PAD_UART2_RTS__KP_ROW7		0x84 0x001
+#define MX21_PAD_UART2_RTS__GPIO5_4		0x84 0x032
+#define MX21_PAD_PWMO__PWMO			0x85 0x004
+#define MX21_PAD_PWMO__GPIO5_5			0x85 0x032
+#define MX21_PAD_PWMO__PC_SPKOUT		0x85 0x006
+#define MX21_PAD_PWMO__TOUT2			0x85 0x016
+#define MX21_PAD_PWMO__TOUT3			0x85 0x026
+#define MX21_PAD_UART2_TXD__UART2_TXD		0x86 0x004
+#define MX21_PAD_UART2_TXD__KP_COL6		0x86 0x001
+#define MX21_PAD_UART2_TXD__GPIO5_6		0x86 0x032
+#define MX21_PAD_UART2_RXD__UART2_RXD		0x87 0x000
+#define MX21_PAD_UART2_RXD__KP_ROW6		0x87 0x001
+#define MX21_PAD_UART2_RXD__GPIO5_7		0x87 0x032
+#define MX21_PAD_UART3_TXD__UART3_TXD		0x88 0x004
+#define MX21_PAD_UART3_TXD__GPIO5_8		0x88 0x032
+#define MX21_PAD_UART3_TXD__IR_TXD		0x88 0x006
+#define MX21_PAD_UART3_RXD__UART3_RXD		0x89 0x000
+#define MX21_PAD_UART3_RXD__GPIO5_9		0x89 0x032
+#define MX21_PAD_UART3_RXD__IR_RXD		0x89 0x002
+#define MX21_PAD_UART3_CTS__UART3_CTS		0x8a 0x004
+#define MX21_PAD_UART3_CTS__GPIO5_10		0x8a 0x032
+#define MX21_PAD_UART3_RTS__UART3_RTS		0x8b 0x000
+#define MX21_PAD_UART3_RTS__GPIO5_11		0x8b 0x032
+#define MX21_PAD_UART1_TXD__UART1_TXD		0x8c 0x004
+#define MX21_PAD_UART1_TXD__GPIO5_12		0x8c 0x032
+#define MX21_PAD_UART1_RXD__UART1_RXD		0x8d 0x000
+#define MX21_PAD_UART1_RXD__GPIO5_13		0x8d 0x032
+#define MX21_PAD_UART1_CTS__UART1_CTS		0x8e 0x004
+#define MX21_PAD_UART1_CTS__GPIO5_14		0x8e 0x032
+#define MX21_PAD_UART1_RTS__UART1_RTS		0x8f 0x000
+#define MX21_PAD_UART1_RTS__GPIO5_15		0x8f 0x032
+#define MX21_PAD_RTCK__RTCK			0x90 0x004
+#define MX21_PAD_RTCK__OWIRE			0x90 0x001
+#define MX21_PAD_RTCK__GPIO5_16			0x90 0x032
+#define MX21_PAD_RESET_OUT__RESET_OUT		0x91 0x004
+#define MX21_PAD_RESET_OUT__GPIO5_17		0x91 0x032
+#define MX21_PAD_SD1_D0__SD1_D0			0x92 0x000
+#define MX21_PAD_SD1_D0__CSPI3_MISO		0x92 0x001
+#define MX21_PAD_SD1_D0__GPIO5_18		0x92 0x032
+#define MX21_PAD_SD1_D1__SD1_D1			0x93 0x000
+#define MX21_PAD_SD1_D1__GPIO5_19		0x93 0x032
+#define MX21_PAD_SD1_D2__SD1_D2			0x94 0x000
+#define MX21_PAD_SD1_D2__GPIO5_20		0x94 0x032
+#define MX21_PAD_SD1_D3__SD1_D3			0x95 0x000
+#define MX21_PAD_SD1_D3__CSPI3_SS		0x95 0x005
+#define MX21_PAD_SD1_D3__GPIO5_21		0x95 0x032
+#define MX21_PAD_SD1_CMD__SD1_CMD		0x96 0x000
+#define MX21_PAD_SD1_CMD__CSPI3_MOSI		0x96 0x005
+#define MX21_PAD_SD1_CMD__GPIO5_22		0x96 0x032
+#define MX21_PAD_SD1_CLK__SD1_CLK		0x97 0x004
+#define MX21_PAD_SD1_CLK__CSPI3_SCLK		0x97 0x005
+#define MX21_PAD_SD1_CLK__GPIO5_23		0x97 0x032
+#define MX21_PAD_NFRB__NFRB			0xa0 0x000
+#define MX21_PAD_NFRB__GPIO6_0			0xa0 0x032
+#define MX21_PAD_NFRB__PC_RST			0xa0 0x006
+#define MX21_PAD_NFCE__NFCE			0xa1 0x004
+#define MX21_PAD_NFCE__GPIO6_1			0xa1 0x032
+#define MX21_PAD_NFCE__PC_CE1			0xa1 0x006
+#define MX21_PAD_NFWP__NFWP			0xa2 0x004
+#define MX21_PAD_NFWP__GPIO6_2			0xa2 0x032
+#define MX21_PAD_NFWP__PC_CE2			0xa2 0x006
+#define MX21_PAD_NFCLE__NFCLE			0xa3 0x004
+#define MX21_PAD_NFCLE__GPIO6_3			0xa3 0x032
+#define MX21_PAD_NFCLE__PC_POE			0xa3 0x006
+#define MX21_PAD_NFALE__NFALE			0xa4 0x004
+#define MX21_PAD_NFALE__GPIO6_4			0xa4 0x032
+#define MX21_PAD_NFALE__PC_OE			0xa4 0x006
+#define MX21_PAD_NFRE__NFRE			0xa5 0x004
+#define MX21_PAD_NFRE__GPIO6_5			0xa5 0x032
+#define MX21_PAD_NFRE__PC_RW			0xa5 0x006
+#define MX21_PAD_NFWE__NFWE			0xa6 0x004
+#define MX21_PAD_NFWE__GPIO6_6			0xa6 0x032
+#define MX21_PAD_NFWE__PC_BVD2			0xa6 0x002
+#define MX21_PAD_NFIO0__NFIO0			0xa7 0x000
+#define MX21_PAD_NFIO0__GPIO6_7			0xa7 0x032
+#define MX21_PAD_NFIO0__PC_BVD2			0xa7 0x002
+#define MX21_PAD_NFIO1__NFIO1			0xa8 0x000
+#define MX21_PAD_NFIO1__GPIO6_8			0xa8 0x032
+#define MX21_PAD_NFIO1__PC_VS2			0xa8 0x002
+#define MX21_PAD_NFIO2__NFIO2			0xa9 0x000
+#define MX21_PAD_NFIO2__GPIO6_9			0xa9 0x032
+#define MX21_PAD_NFIO2__PC_VS1			0xa9 0x002
+#define MX21_PAD_NFIO3__NFIO3			0xaa 0x004
+#define MX21_PAD_NFIO3__GPIO6_10		0xaa 0x032
+#define MX21_PAD_NFIO3__PC_WP			0xaa 0x002
+#define MX21_PAD_NFIO4__NFIO4			0xab 0x000
+#define MX21_PAD_NFIO4__GPIO6_11		0xab 0x032
+#define MX21_PAD_NFIO4__PC_READY		0xab 0x002
+#define MX21_PAD_NFIO5__NFIO5			0xac 0x000
+#define MX21_PAD_NFIO5__GPIO6_12		0xac 0x032
+#define MX21_PAD_NFIO5__PC_WAIT			0xac 0x002
+#define MX21_PAD_NFIO6__NFIO6			0xad 0x000
+#define MX21_PAD_NFIO6__GPIO6_13		0xad 0x032
+#define MX21_PAD_NFIO6__PC_CD2			0xad 0x002
+#define MX21_PAD_NFIO7__NFIO7			0xae 0x000
+#define MX21_PAD_NFIO7__GPIO6_14		0xae 0x032
+#define MX21_PAD_NFIO7__PC_CD1			0xae 0x002
+#define MX21_PAD_CLKO__CLKO			0xaf 0x004
+#define MX21_PAD_CLKO__GPIO6_15			0xaf 0x032
+#define MX21_PAD_RESERVED__RESERVED		0xb0 0x000
+#define MX21_PAD_RESERVED__GPIO6_16		0xb0 0x032
+#define MX21_PAD_CS4__CS4			0xb5 0x004
+#define MX21_PAD_CS4__GPIO6_21			0xb5 0x032
+#define MX21_PAD_CS4__DTACK			0xb5 0x002
+#define MX21_PAD_CS5__CS5			0xb6 0x004
+#define MX21_PAD_CS5__GPIO6_22			0xb6 0x032
+
+#endif
diff --git a/arch/arm/boot/dts/imx21.dtsi b/arch/arm/boot/dts/imx21.dtsi
new file mode 100644
index 0000000..e2f09dd
--- /dev/null
+++ b/arch/arm/boot/dts/imx21.dtsi
@@ -0,0 +1,465 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+/* Author: Alexander Shiyan <shc_work@mail.ru> */
+
+#include "imx21-pinfunc.h"
+
+#include <dt-bindings/clock/imx21-clock.h>
+
+/ {
+	#address-cells = <1>;
+	#size-cells = <1>;
+
+	chosen {};
+
+	memory {
+		device_type = "memory";
+	};
+
+	aliases {
+		gpio0 = &gpio1;
+		gpio1 = &gpio2;
+		gpio2 = &gpio3;
+		gpio3 = &gpio4;
+		gpio4 = &gpio5;
+		gpio5 = &gpio6;
+		i2c0 = &i2c;
+		serial0 = &serial1;
+		serial1 = &serial2;
+		serial2 = &serial3;
+		serial3 = &serial4;
+		spi0 = &cspi1;
+		spi1 = &cspi2;
+		spi2 = &cspi3;
+	};
+
+	aitc: aitc-interrupt-controller@10040000 {
+		compatible = "fsl,imx21-aitc", "fsl,avic";
+		interrupt-controller;
+		#interrupt-cells = <1>;
+		reg = <0x10040000 0x1000>;
+	};
+
+	clocks {
+		clk_ckil: ckil {
+			compatible = "fsl,imx-ckil", "fixed-clock";
+			#clock-cells = <0>;
+			clock-frequency = <32768>;
+		};
+
+		clk_ckih: ckih {
+			compatible = "fsl,imx-ckih", "fixed-clock";
+			#clock-cells = <0>;
+			clock-frequency = <26000000>;
+		};
+	};
+
+	cpus {
+		#size-cells = <0>;
+		#address-cells = <1>;
+
+		cpu: cpu@0 {
+			device_type = "cpu";
+			reg = <0>;
+			compatible = "arm,arm926ej-s";
+			operating-points = <266000 1550000>;
+			clock-latency = <62500>;
+			clocks = <&clks IMX21_CLK_FCLK>;
+			voltage-tolerance = <6>;
+		};
+	};
+
+	soc {
+		#address-cells = <1>;
+		#size-cells = <1>;
+		compatible = "simple-bus";
+		interrupt-parent = <&aitc>;
+		ranges;
+
+		aipi1: aipi@10000000 {
+			compatible = "fsl,aipi-bus", "simple-bus";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			reg = <0x10000000 0x20000>;
+			ranges;
+
+			dma: dma@10001000 {
+				compatible = "fsl,imx21-dma";
+				reg = <0x10001000 0x1000>;
+				interrupts = <32>;
+				clocks = <&clks IMX21_CLK_DMA_GATE>,
+					 <&clks IMX21_CLK_DMA_HCLK_GATE>;
+				clock-names = "ipg", "ahb";
+				#dma-cells = <1>;
+				#dma-channels = <16>;
+			};
+
+			wdog: wdog@10002000 {
+				compatible = "fsl,imx21-wdt";
+				reg = <0x10002000 0x1000>;
+				interrupts = <27>;
+				clocks = <&clks IMX21_CLK_WDOG_GATE>;
+			};
+
+			gpt1: timer@10003000 {
+				compatible = "fsl,imx21-gpt";
+				reg = <0x10003000 0x1000>;
+				interrupts = <26>;
+				clocks = <&clks IMX21_CLK_GPT1_IPG_GATE>,
+					 <&clks IMX21_CLK_PER1>;
+				clock-names = "ipg", "per";
+			};
+
+			gpt2: timer@10004000 {
+				compatible = "fsl,imx21-gpt";
+				reg = <0x10004000 0x1000>;
+				interrupts = <25>;
+				clocks = <&clks IMX21_CLK_GPT2_IPG_GATE>,
+					 <&clks IMX21_CLK_PER1>;
+				clock-names = "ipg", "per";
+			};
+
+			gpt3: timer@10005000 {
+				compatible = "fsl,imx21-gpt";
+				reg = <0x10005000 0x1000>;
+				interrupts = <24>;
+				clocks = <&clks IMX21_CLK_GPT3_IPG_GATE>,
+					 <&clks IMX21_CLK_PER1>;
+				clock-names = "ipg", "per";
+			};
+
+			pwm: pwm@10006000 {
+				#pwm-cells = <2>;
+				compatible = "fsl,imx21-pwm", "fsl,imx1-pwm";
+				reg = <0x10006000 0x1000>;
+				interrupts = <23>;
+				clocks = <&clks IMX21_CLK_PWM_IPG_GATE>,
+					 <&clks IMX21_CLK_PER1>;
+				clock-names = "ipg", "per";
+			};
+
+			rtc: rtc@10007000 {
+				compatible = "fsl,imx21-rtc";
+				reg = <0x10007000 0x1000>;
+				interrupts = <22>;
+				clocks = <&clks IMX21_CLK_CKIL>,
+					 <&clks IMX21_CLK_RTC_GATE>;
+				clock-names = "ref", "ipg";
+			};
+
+			kpp: kpp@10008000 {
+				compatible = "fsl,imx21-kpp";
+				reg = <0x10008000 0x1000>;
+				interrupts = <21>;
+				clocks = <&clks IMX21_CLK_KPP_GATE>;
+				status = "disabled";
+			};
+
+			owire: owire@10009000 {
+				compatible = "fsl,imx21-owire";
+				reg = <0x10009000 0x1000>;
+				clocks = <&clks IMX21_CLK_OWIRE_GATE>;
+				status = "disabled";
+			};
+
+			serial1: serial@1000a000 {
+				compatible = "fsl,imx21-uart";
+				reg = <0x1000a000 0x1000>;
+				interrupts = <20>;
+				clocks = <&clks IMX21_CLK_UART1_IPG_GATE>,
+					 <&clks IMX21_CLK_PER1>;
+				clock-names = "ipg", "per";
+				dmas = <&dma 26>, <&dma 27>;
+				dma-names = "rx", "tx";
+				status = "disabled";
+			};
+
+			serial2: serial@1000b000 {
+				compatible = "fsl,imx21-uart";
+				reg = <0x1000b000 0x1000>;
+				interrupts = <19>;
+				clocks = <&clks IMX21_CLK_UART2_IPG_GATE>,
+					 <&clks IMX21_CLK_PER1>;
+				clock-names = "ipg", "per";
+				dmas = <&dma 24>, <&dma 25>;
+				dma-names = "rx", "tx";
+				status = "disabled";
+			};
+
+			serial3: serial@1000c000 {
+				compatible = "fsl,imx21-uart";
+				reg = <0x1000c000 0x1000>;
+				interrupts = <18>;
+				clocks = <&clks IMX21_CLK_UART3_IPG_GATE>,
+					 <&clks IMX21_CLK_PER1>;
+				clock-names = "ipg", "per";
+				dmas = <&dma 22>, <&dma 23>;
+				dma-names = "rx", "tx";
+				status = "disabled";
+			};
+
+			serial4: serial@1000d000 {
+				compatible = "fsl,imx21-uart";
+				reg = <0x1000d000 0x1000>;
+				interrupts = <17>;
+				clocks = <&clks IMX21_CLK_UART4_IPG_GATE>,
+					 <&clks IMX21_CLK_PER1>;
+				clock-names = "ipg", "per";
+				dmas = <&dma 20>, <&dma 21>;
+				dma-names = "rx", "tx";
+				status = "disabled";
+			};
+
+			cspi1: spi@1000e000 {
+				#address-cells = <1>;
+				#size-cells = <0>;
+				compatible = "fsl,imx21-cspi";
+				reg = <0x1000e000 0x1000>;
+				interrupts = <16>;
+				clocks = <&clks IMX21_CLK_CSPI1_IPG_GATE>,
+					 <&clks IMX21_CLK_PER2>;
+				clock-names = "ipg", "per";
+				dmas = <&dma 18>, <&dma 19>;
+				dma-names = "rx", "tx";
+				status = "disabled";
+			};
+
+			cspi2: spi@1000f000 {
+				#address-cells = <1>;
+				#size-cells = <0>;
+				compatible = "fsl,imx21-cspi";
+				reg = <0x1000f000 0x1000>;
+				interrupts = <15>;
+				clocks = <&clks IMX21_CLK_CSPI2_IPG_GATE>,
+					 <&clks IMX21_CLK_PER2>;
+				clock-names = "ipg", "per";
+				dmas = <&dma 16>, <&dma 17>;
+				dma-names = "rx", "tx";
+				status = "disabled";
+			};
+
+			ssi1: ssi@10010000 {
+				#sound-dai-cells = <0>;
+				compatible ="fsl,imx21-ssi";
+				reg = <0x10010000 0x1000>;
+				interrupts = <14>;
+				clocks = <&clks IMX21_CLK_SSI1_BAUD_GATE>;
+				dmas = <&dma 12>, <&dma 13>, <&dma 14>, <&dma 15>;
+				dma-names = "rx0", "tx0", "rx1", "tx1";
+				fsl,fifo-depth = <8>;
+				status = "disabled";
+			};
+
+			ssi2: ssi@10011000 {
+				#sound-dai-cells = <0>;
+				compatible = "fsl,imx21-ssi";
+				reg = <0x10011000 0x1000>;
+				interrupts = <13>;
+				clocks = <&clks IMX21_CLK_SSI2_BAUD_GATE>;
+				dmas = <&dma 8>, <&dma 9>, <&dma 10>, <&dma 11>;
+				dma-names = "rx0", "tx0", "rx1", "tx1";
+				fsl,fifo-depth = <8>;
+				status = "disabled";
+			};
+
+			i2c: i2c@10012000 {
+				#address-cells = <1>;
+				#size-cells = <0>;
+				compatible = "fsl,imx21-i2c";
+				reg = <0x10012000 0x1000>;
+				interrupts = <12>;
+				clocks = <&clks IMX21_CLK_I2C_GATE>;
+				status = "disabled";
+			};
+
+			sdhci1: sdhci@10013000 {
+				compatible = "fsl,imx21-mmc";
+				reg = <0x10013000 0x1000>;
+				interrupts = <11>;
+				clocks = <&clks IMX21_CLK_SDHC1_IPG_GATE>,
+					 <&clks IMX21_CLK_PER2>;
+				clock-names = "ipg", "per";
+				dmas = <&dma 7>;
+				dma-names = "rx-tx";
+				bus-width = <4>;
+				status = "disabled";
+			};
+
+			sdhci2: sdhci@10014000 {
+				compatible = "fsl,imx21-mmc";
+				reg = <0x10014000 0x1000>;
+				interrupts = <10>;
+				clocks = <&clks IMX21_CLK_SDHC2_IPG_GATE>,
+					 <&clks IMX21_CLK_PER2>;
+				clock-names = "ipg", "per";
+				dmas = <&dma 6>;
+				dma-names = "rx-tx";
+				bus-width = <4>;
+				status = "disabled";
+			};
+
+			iomuxc: iomuxc@10015000 {
+				compatible = "fsl,imx27-iomuxc";
+				reg = <0x10015000 0x600>;
+				#address-cells = <1>;
+				#size-cells = <1>;
+				ranges;
+
+				gpio1: gpio@10015000 {
+					compatible = "fsl,imx21-gpio";
+					reg = <0x10015000 0x100>;
+					clocks = <&clks IMX21_CLK_GPIO_GATE>;
+					interrupts = <8>;
+					gpio-controller;
+					#gpio-cells = <2>;
+					interrupt-controller;
+					#interrupt-cells = <2>;
+				};
+
+				gpio2: gpio@10015100 {
+					compatible = "fsl,imx21-gpio";
+					reg = <0x10015100 0x100>;
+					clocks = <&clks IMX21_CLK_GPIO_GATE>;
+					interrupts = <8>;
+					gpio-controller;
+					#gpio-cells = <2>;
+					interrupt-controller;
+					#interrupt-cells = <2>;
+				};
+
+				gpio3: gpio@10015200 {
+					compatible = "fsl,imx21-gpio";
+					reg = <0x10015200 0x100>;
+					clocks = <&clks IMX21_CLK_GPIO_GATE>;
+					interrupts = <8>;
+					gpio-controller;
+					#gpio-cells = <2>;
+					interrupt-controller;
+					#interrupt-cells = <2>;
+				};
+
+				gpio4: gpio@10015300 {
+					compatible = "fsl,imx21-gpio";
+					reg = <0x10015300 0x100>;
+					clocks = <&clks IMX21_CLK_GPIO_GATE>;
+					interrupts = <8>;
+					gpio-controller;
+					#gpio-cells = <2>;
+					interrupt-controller;
+					#interrupt-cells = <2>;
+				};
+
+				gpio5: gpio@10015400 {
+					compatible = "fsl,imx21-gpio";
+					reg = <0x10015400 0x100>;
+					clocks = <&clks IMX21_CLK_GPIO_GATE>;
+					interrupts = <8>;
+					gpio-controller;
+					#gpio-cells = <2>;
+					interrupt-controller;
+					#interrupt-cells = <2>;
+				};
+
+				gpio6: gpio@10015500 {
+					compatible = "fsl,imx21-gpio";
+					reg = <0x10015500 0x100>;
+					clocks = <&clks IMX21_CLK_GPIO_GATE>;
+					interrupts = <8>;
+					gpio-controller;
+					#gpio-cells = <2>;
+					interrupt-controller;
+					#interrupt-cells = <2>;
+				};
+			};
+
+			audmux: audmux@10016000 {
+				compatible = "fsl,imx21-audmux";
+				reg = <0x10016000 0x1000>;
+				clocks = <&clks IMX21_CLK_DUMMY>;
+				clock-names = "audmux";
+				status = "disabled";
+			};
+
+			cspi3: spi@10017000 {
+				#address-cells = <1>;
+				#size-cells = <0>;
+				compatible = "fsl,imx21-cspi";
+				reg = <0x10017000 0x1000>;
+				interrupts = <6>;
+				clocks = <&clks IMX21_CLK_CSPI3_IPG_GATE>,
+					 <&clks IMX21_CLK_PER2>;
+				clock-names = "ipg", "per";
+				dmas = <&dma 1>, <&dma 2>;
+				dma-names = "rx", "tx";
+				status = "disabled";
+			};
+		};
+
+		aipi2: aipi@10020000 {
+			compatible = "fsl,aipi-bus", "simple-bus";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			reg = <0x10020000 0x20000>;
+			ranges;
+
+
+			fb: lcdc@10021000 {
+				compatible = "fsl,imx21-fb";
+				interrupts = <61>;
+				reg = <0x10021000 0x1000>;
+				clocks = <&clks IMX21_CLK_LCDC_IPG_GATE>,
+					 <&clks IMX21_CLK_LCDC_HCLK_GATE>,
+					 <&clks IMX21_CLK_PER3>;
+				clock-names = "ipg", "ahb", "per";
+				status = "disabled";
+			};
+
+			emmaprp: emmaprp@10026400 {
+				compatible = "fsl,imx21-emmaprp";
+				reg = <0x10026400 0x100>;
+				interrupts = <51>;
+				clocks = <&clks IMX21_CLK_EMMA_GATE>,
+					 <&clks IMX21_CLK_EMMA_HCLK_GATE>;
+				clock-names = "ipg", "ahb";
+				status = "disabled";
+			};
+
+			clks: ccm@10027000{
+				compatible = "fsl,imx21-ccm";
+				reg = <0x10027000 0x1000>;
+				#clock-cells = <1>;
+			};
+		};
+
+		eim: eim@df001000 {
+			#address-cells = <2>;
+			#size-cells = <1>;
+			compatible = "fsl,imx21-weim", "fsl,imx1-weim";
+			reg = <0xdf001000 0x1000>;
+			clocks = <&clks IMX21_CLK_HCLK>;
+			ranges = <
+				0 0 0xc8000000 0x04000000
+				1 0 0xcc000000 0x04000000
+				2 0 0xd0000000 0x01000000
+				3 0 0xd1000000 0x01000000
+				4 0 0xd2000000 0x01000000
+				5 0 0xd3000000 0x01000000
+			>;
+			status = "disabled";
+		};
+
+		nandfc: nand@df003000 {
+			#address-cells = <1>;
+			#size-cells = <1>;
+			compatible = "fsl,imx21-nand";
+			reg = <0xdf003000 0x1000>;
+			interrupts = <29>;
+			clocks = <&clks IMX21_CLK_NFC_GATE>;
+			status = "disabled";
+		};
+
+		vram: vram@ffffe800 {
+			compatible = "mmio-sram";
+			reg = <0xffffe800 0x1800>;
+		};
+	};
+};
-- 
2.10.2


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2019-01-12  7:05 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-12-22 10:51 [PATCH 1/6] ARM: dts: imx21: add i.MX21 SoC device tree Alexander Shiyan
2018-12-22 10:51 ` [PATCH 2/6] ARM i.MX21: Add devicetree support Alexander Shiyan
2019-01-12  2:53   ` Shawn Guo
2019-01-12  5:17     ` Alexander Shiyan
2019-01-12  7:04       ` Shawn Guo
2018-12-22 10:51 ` [PATCH 3/6] ARM: dts: imx21: Add support for the i.MX21 Freescale ADS board Alexander Shiyan
2018-12-22 10:51 ` [PATCH 4/6] ARM: i.MX: Remove i.MX21 Freescale ADS board support Alexander Shiyan
2018-12-22 10:51 ` [PATCH 5/6] ARM: i.MX: Move SOC_IMX21 into 'Device tree only' Alexander Shiyan
2018-12-22 10:52 ` [PATCH 6/6] ARM: i.MX: Remove i.MX21 non-DT device registration helpers Alexander Shiyan

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.