aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOlof Johansson <olof@lixom.net>2014-07-19 15:12:57 -0400
committerOlof Johansson <olof@lixom.net>2014-07-19 15:12:57 -0400
commit1409f3fd5bdb548b0e11a109baa1087680b60c5a (patch)
tree6f02880dba9f40de619e076a9370f31b181f662b
parentf097748f39411a5c41b5c6de664995b37334bf55 (diff)
parent69603fbbc4798e8d02cb822edf5dce3f8a625427 (diff)
Merge tag 'imx-dt-3.17' of git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux into next/dt
Merge "ARM: imx: device tree updates for 3.17" from Shawn Guo: The i.MX device tree updates for 3.17: - Add device tree sources and pin function header for i.MX6SX SoC - Initial imx6sx-sdb board support with FEC, MMC, USB, PMIC, Audio and GPIO key enabled - New board support: mbimxsd25 and mbimxsd27 from Eukrea, aristainetos imx6dl boards, Rex Pro and Basic, Ka-Ro TX6 - Restructure imx6qdl-wandboard.dtsi for new rev C1 board - Split M28EVK and M53EVK into SoM and EVK parts - A few correction around SDMA, SSI and SATA device nodes - Add eSATA support for Cubox-i board - Updates on edmqmx6 to enable PCIe, I2C and CAN - Use DT macro for clock ID for imx27 and imx6qdl - Add FlexCAN support for VF610 SoC * tag 'imx-dt-3.17' of git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux: (125 commits) ARM: dts: vf610: add FlexCAN node ARM: dts: add initial Rex Basic board support ARM: dts: add initial Rex Pro board support ARM: dts: mx5: Split M53EVK into SoM and EVK parts ARM: dts: imx6: RIoTboard explicitly define pad settings ARM: dts: vf610: fix length of eshdc1 register property ARM: dts: Restructure imx6qdl-wandboard.dtsi for new rev C1 board. ARM: dts: imx53: correct clock-names of SATA node ARM: imx6: Align ssi nodes between mx6 variants ARM: i.MX27 clk: dts: Use clock defines in DTS files ARM: dts: imx: correct sdma compatbile for imx6sl and imx6sx ARM: dts: imx6sx-sdb: Add audio support ARM: dts: imx6sx: Pass the fsl,fifo-depth property ARM: dts: imx6sx: Fix sdma node ARM: dts: imx6: edmqmx6: Add can bus ARM: dts: imx6: edmqmx6: Add two other i2c buses ARM: dts: imx6: edmqmx6: Add PCIe support ARM: dts: imx25-pdk: Add USB OTG support ARM: dts: i.MX53: add aipstz nodes ARM: dts: mxs: Split M28EVK into SoM and EVK parts ... Signed-off-by: Olof Johansson <olof@lixom.net>
-rw-r--r--Documentation/devicetree/bindings/clock/imx1-clock.txt26
-rw-r--r--Documentation/devicetree/bindings/clock/imx21-clock.txt28
-rw-r--r--Documentation/devicetree/bindings/clock/imx27-clock.txt127
-rw-r--r--Documentation/devicetree/bindings/clock/imx6q-clock.txt220
-rw-r--r--arch/arm/boot/dts/Makefile19
-rw-r--r--arch/arm/boot/dts/imx25-eukrea-mbimxsd25-baseboard-cmo-qvga.dts73
-rw-r--r--arch/arm/boot/dts/imx25-eukrea-mbimxsd25-baseboard-dvi-svga.dts45
-rw-r--r--arch/arm/boot/dts/imx25-eukrea-mbimxsd25-baseboard-dvi-vga.dts45
-rw-r--r--arch/arm/boot/dts/imx25-eukrea-mbimxsd25-baseboard.dts1
-rw-r--r--arch/arm/boot/dts/imx25-pdk.dts8
-rw-r--r--arch/arm/boot/dts/imx25.dtsi8
-rw-r--r--arch/arm/boot/dts/imx27-eukrea-cpuimx27.dtsi296
-rw-r--r--arch/arm/boot/dts/imx27-eukrea-mbimxsd27-baseboard.dts273
-rw-r--r--arch/arm/boot/dts/imx27-pdk.dts2
-rw-r--r--arch/arm/boot/dts/imx27-phytec-phycore-rdk.dts2
-rw-r--r--arch/arm/boot/dts/imx27-phytec-phycore-som.dtsi3
-rw-r--r--arch/arm/boot/dts/imx27.dtsi115
-rw-r--r--arch/arm/boot/dts/imx28-cfa10036.dts22
-rw-r--r--arch/arm/boot/dts/imx28-m28.dtsi87
-rw-r--r--arch/arm/boot/dts/imx28-m28evk.dts62
-rw-r--r--arch/arm/boot/dts/imx35-eukrea-mbimxsd35-baseboard.dts1
-rw-r--r--arch/arm/boot/dts/imx35.dtsi8
-rw-r--r--arch/arm/boot/dts/imx50.dtsi8
-rw-r--r--arch/arm/boot/dts/imx51-babbage.dts2
-rw-r--r--arch/arm/boot/dts/imx51-eukrea-mbimxsd51-baseboard.dts1
-rw-r--r--arch/arm/boot/dts/imx51.dtsi3
-rw-r--r--arch/arm/boot/dts/imx53-m53.dtsi140
-rw-r--r--arch/arm/boot/dts/imx53-m53evk.dts113
-rw-r--r--arch/arm/boot/dts/imx53-mba53.dts1
-rw-r--r--arch/arm/boot/dts/imx53-qsb-common.dtsi1
-rw-r--r--arch/arm/boot/dts/imx53-tx53.dtsi1
-rw-r--r--arch/arm/boot/dts/imx53-voipac-bsb.dts1
-rw-r--r--arch/arm/boot/dts/imx53.dtsi15
-rw-r--r--arch/arm/boot/dts/imx6dl-aristainetos_4.dts85
-rw-r--r--arch/arm/boot/dts/imx6dl-aristainetos_7.dts74
-rw-r--r--arch/arm/boot/dts/imx6dl-gw51xx.dts2
-rw-r--r--arch/arm/boot/dts/imx6dl-gw52xx.dts2
-rw-r--r--arch/arm/boot/dts/imx6dl-gw53xx.dts2
-rw-r--r--arch/arm/boot/dts/imx6dl-gw54xx.dts2
-rw-r--r--arch/arm/boot/dts/imx6dl-rex-basic.dts30
-rw-r--r--arch/arm/boot/dts/imx6dl-riotboard.dts33
-rw-r--r--arch/arm/boot/dts/imx6dl-tx6dl-comtft.dts103
-rw-r--r--arch/arm/boot/dts/imx6dl-tx6u-801x.dts177
-rw-r--r--arch/arm/boot/dts/imx6dl-tx6u-811x.dts150
-rw-r--r--arch/arm/boot/dts/imx6dl-wandboard-revb1.dts22
-rw-r--r--arch/arm/boot/dts/imx6dl-wandboard.dts2
-rw-r--r--arch/arm/boot/dts/imx6dl.dtsi17
-rw-r--r--arch/arm/boot/dts/imx6q-cubox-i.dts4
-rw-r--r--arch/arm/boot/dts/imx6q-dmo-edmqmx6.dts54
-rw-r--r--arch/arm/boot/dts/imx6q-gw51xx.dts2
-rw-r--r--arch/arm/boot/dts/imx6q-gw52xx.dts2
-rw-r--r--arch/arm/boot/dts/imx6q-gw53xx.dts2
-rw-r--r--arch/arm/boot/dts/imx6q-gw5400-a.dts5
-rw-r--r--arch/arm/boot/dts/imx6q-gw54xx.dts2
-rw-r--r--arch/arm/boot/dts/imx6q-rex-pro.dts34
-rw-r--r--arch/arm/boot/dts/imx6q-tx6q-1010-comtft.dts103
-rw-r--r--arch/arm/boot/dts/imx6q-tx6q-1010.dts177
-rw-r--r--arch/arm/boot/dts/imx6q-tx6q-1020-comtft.dts136
-rw-r--r--arch/arm/boot/dts/imx6q-tx6q-1020.dts210
-rw-r--r--arch/arm/boot/dts/imx6q-tx6q-1110.dts154
-rw-r--r--arch/arm/boot/dts/imx6q-udoo.dts32
-rw-r--r--arch/arm/boot/dts/imx6q-wandboard-revb1.dts26
-rw-r--r--arch/arm/boot/dts/imx6q-wandboard.dts2
-rw-r--r--arch/arm/boot/dts/imx6q.dtsi35
-rw-r--r--arch/arm/boot/dts/imx6qdl-aristainetos.dtsi418
-rw-r--r--arch/arm/boot/dts/imx6qdl-gw52xx.dtsi5
-rw-r--r--arch/arm/boot/dts/imx6qdl-gw53xx.dtsi5
-rw-r--r--arch/arm/boot/dts/imx6qdl-gw54xx.dtsi6
-rw-r--r--arch/arm/boot/dts/imx6qdl-nitrogen6x.dtsi1
-rw-r--r--arch/arm/boot/dts/imx6qdl-phytec-pfla02.dtsi1
-rw-r--r--arch/arm/boot/dts/imx6qdl-rex.dtsi357
-rw-r--r--arch/arm/boot/dts/imx6qdl-sabrelite.dtsi1
-rw-r--r--arch/arm/boot/dts/imx6qdl-sabresd.dtsi2
-rw-r--r--arch/arm/boot/dts/imx6qdl-tx6.dtsi696
-rw-r--r--arch/arm/boot/dts/imx6qdl-wandboard-revb1.dtsi42
-rw-r--r--arch/arm/boot/dts/imx6qdl-wandboard-revc1.dtsi41
-rw-r--r--arch/arm/boot/dts/imx6qdl-wandboard.dtsi22
-rw-r--r--arch/arm/boot/dts/imx6qdl.dtsi161
-rw-r--r--arch/arm/boot/dts/imx6sl-evk.dts17
-rw-r--r--arch/arm/boot/dts/imx6sl.dtsi12
-rw-r--r--arch/arm/boot/dts/imx6sx-pinfunc.h1544
-rw-r--r--arch/arm/boot/dts/imx6sx-sdb.dts479
-rw-r--r--arch/arm/boot/dts/imx6sx.dtsi1208
-rw-r--r--arch/arm/boot/dts/vf610.dtsi25
-rw-r--r--arch/arm/configs/imx_v4_v5_defconfig5
-rw-r--r--arch/arm/configs/imx_v6_v7_defconfig9
-rw-r--r--arch/arm/configs/multi_v7_defconfig2
-rw-r--r--arch/arm/configs/mxs_defconfig1
-rw-r--r--arch/arm/mach-imx/Kconfig59
-rw-r--r--arch/arm/mach-imx/Makefile11
-rw-r--r--arch/arm/mach-imx/clk-imx1.c151
-rw-r--r--arch/arm/mach-imx/clk-imx21.c299
-rw-r--r--arch/arm/mach-imx/clk-imx25.c47
-rw-r--r--arch/arm/mach-imx/clk-imx27.c452
-rw-r--r--arch/arm/mach-imx/clk-imx31.c6
-rw-r--r--arch/arm/mach-imx/clk-imx35.c6
-rw-r--r--arch/arm/mach-imx/clk-imx51-imx53.c256
-rw-r--r--arch/arm/mach-imx/clk-imx6q.c542
-rw-r--r--arch/arm/mach-imx/clk-imx6sl.c11
-rw-r--r--arch/arm/mach-imx/clk-imx6sx.c25
-rw-r--r--arch/arm/mach-imx/clk-vf610.c8
-rw-r--r--arch/arm/mach-imx/clk.c10
-rw-r--r--arch/arm/mach-imx/clk.h9
-rw-r--r--arch/arm/mach-imx/common.h32
-rw-r--r--arch/arm/mach-imx/cpu-imx5.c25
-rw-r--r--arch/arm/mach-imx/cpu.c13
-rw-r--r--arch/arm/mach-imx/cpuidle-imx6q.c6
-rw-r--r--arch/arm/mach-imx/crm-regs-imx5.h600
-rw-r--r--arch/arm/mach-imx/devices-imx51.h66
-rw-r--r--arch/arm/mach-imx/devices/Kconfig9
-rw-r--r--arch/arm/mach-imx/devices/Makefile2
-rw-r--r--arch/arm/mach-imx/devices/devices-common.h26
-rw-r--r--arch/arm/mach-imx/devices/platform-fec.c12
-rw-r--r--arch/arm/mach-imx/devices/platform-fsl-usb2-udc.c5
-rw-r--r--arch/arm/mach-imx/devices/platform-imx-i2c.c26
-rw-r--r--arch/arm/mach-imx/devices/platform-imx-keypad.c10
-rw-r--r--arch/arm/mach-imx/devices/platform-imx-ssi.c20
-rw-r--r--arch/arm/mach-imx/devices/platform-imx-uart.c22
-rw-r--r--arch/arm/mach-imx/devices/platform-imx2-wdt.c18
-rw-r--r--arch/arm/mach-imx/devices/platform-imx_udc.c75
-rw-r--r--arch/arm/mach-imx/devices/platform-mx1-camera.c42
-rw-r--r--arch/arm/mach-imx/devices/platform-mxc-ehci.c9
-rw-r--r--arch/arm/mach-imx/devices/platform-mxc_nand.c5
-rw-r--r--arch/arm/mach-imx/devices/platform-mxc_rnga.c5
-rw-r--r--arch/arm/mach-imx/devices/platform-pata_imx.c10
-rw-r--r--arch/arm/mach-imx/devices/platform-sdhci-esdhc-imx.c24
-rw-r--r--arch/arm/mach-imx/devices/platform-spi_imx.c27
-rw-r--r--arch/arm/mach-imx/ehci-imx25.c1
-rw-r--r--arch/arm/mach-imx/ehci-imx27.c1
-rw-r--r--arch/arm/mach-imx/ehci-imx31.c1
-rw-r--r--arch/arm/mach-imx/ehci-imx35.c1
-rw-r--r--arch/arm/mach-imx/ehci-imx5.c171
-rw-r--r--arch/arm/mach-imx/ehci.h43
-rw-r--r--arch/arm/mach-imx/gpc.c5
-rw-r--r--arch/arm/mach-imx/hardware.h2
-rw-r--r--arch/arm/mach-imx/imx25-dt.c6
-rw-r--r--arch/arm/mach-imx/imx27-dt.c6
-rw-r--r--arch/arm/mach-imx/imx31-dt.c2
-rw-r--r--arch/arm/mach-imx/imx35-dt.c2
-rw-r--r--arch/arm/mach-imx/iomux-mx51.h827
-rw-r--r--arch/arm/mach-imx/mach-armadillo5x0.c1
-rw-r--r--arch/arm/mach-imx/mach-cpuimx27.c1
-rw-r--r--arch/arm/mach-imx/mach-cpuimx35.c1
-rw-r--r--arch/arm/mach-imx/mach-eukrea_cpuimx25.c1
-rw-r--r--arch/arm/mach-imx/mach-imx27_visstrim_m10.c1
-rw-r--r--arch/arm/mach-imx/mach-imx27ipcam.c77
-rw-r--r--arch/arm/mach-imx/mach-imx27lite.c83
-rw-r--r--arch/arm/mach-imx/mach-imx50.c5
-rw-r--r--arch/arm/mach-imx/mach-imx51.c (renamed from arch/arm/mach-imx/imx51-dt.c)45
-rw-r--r--arch/arm/mach-imx/mach-imx53.c19
-rw-r--r--arch/arm/mach-imx/mach-imx6q.c4
-rw-r--r--arch/arm/mach-imx/mach-imx6sl.c2
-rw-r--r--arch/arm/mach-imx/mach-imx6sx.c10
-rw-r--r--arch/arm/mach-imx/mach-mx25_3ds.c1
-rw-r--r--arch/arm/mach-imx/mach-mx27_3ds.c1
-rw-r--r--arch/arm/mach-imx/mach-mx31_3ds.c1
-rw-r--r--arch/arm/mach-imx/mach-mx31lilly.c1
-rw-r--r--arch/arm/mach-imx/mach-mx31lite.c1
-rw-r--r--arch/arm/mach-imx/mach-mx31moboard.c5
-rw-r--r--arch/arm/mach-imx/mach-mx35_3ds.c1
-rw-r--r--arch/arm/mach-imx/mach-pca100.c1
-rw-r--r--arch/arm/mach-imx/mach-pcm037.c1
-rw-r--r--arch/arm/mach-imx/mach-pcm038.c1
-rw-r--r--arch/arm/mach-imx/mach-pcm043.c1
-rw-r--r--arch/arm/mach-imx/mach-vf610.c2
-rw-r--r--arch/arm/mach-imx/mach-vpr200.c1
-rw-r--r--arch/arm/mach-imx/mm-imx5.c155
-rw-r--r--arch/arm/mach-imx/mx1-camera-fiq-ksym.c18
-rw-r--r--arch/arm/mach-imx/mx1-camera-fiq.S35
-rw-r--r--arch/arm/mach-imx/mx31moboard-devboard.c5
-rw-r--r--arch/arm/mach-imx/mx31moboard-marxbot.c5
-rw-r--r--arch/arm/mach-imx/mx31moboard-smartbot.c5
-rw-r--r--arch/arm/mach-imx/mx51.h346
-rw-r--r--arch/arm/mach-imx/mx53.h342
-rw-r--r--arch/arm/mach-imx/mxc.h7
-rw-r--r--arch/arm/mach-imx/pm-imx5.c98
-rw-r--r--arch/arm/mach-imx/pm-imx6.c67
-rw-r--r--arch/arm/mach-imx/system.c24
-rw-r--r--arch/arm/mach-imx/time.c55
-rw-r--r--arch/arm/mach-imx/tzic.c9
-rw-r--r--drivers/bus/imx-weim.c4
-rw-r--r--include/dt-bindings/clock/imx1-clock.h40
-rw-r--r--include/dt-bindings/clock/imx21-clock.h80
-rw-r--r--include/dt-bindings/clock/imx27-clock.h108
-rw-r--r--include/dt-bindings/clock/imx6qdl-clock.h224
-rw-r--r--include/dt-bindings/clock/vf610-clock.h4
-rw-r--r--include/linux/platform_data/camera-mx1.h35
-rw-r--r--include/linux/platform_data/usb-ehci-mxc.h46
-rw-r--r--include/linux/platform_data/usb-imx_udc.h23
189 files changed, 9498 insertions, 5052 deletions
diff --git a/Documentation/devicetree/bindings/clock/imx1-clock.txt b/Documentation/devicetree/bindings/clock/imx1-clock.txt
new file mode 100644
index 000000000000..b7adf4e3ea98
--- /dev/null
+++ b/Documentation/devicetree/bindings/clock/imx1-clock.txt
@@ -0,0 +1,26 @@
1* Clock bindings for Freescale i.MX1 CPUs
2
3Required properties:
4- compatible: Should be "fsl,imx1-ccm".
5- reg: Address and length of the register set.
6- #clock-cells: Should be <1>.
7
8The clock consumer should specify the desired clock by having the clock
9ID in its "clocks" phandle cell. See include/dt-bindings/clock/imx1-clock.h
10for the full list of i.MX1 clock IDs.
11
12Examples:
13 clks: ccm@0021b000 {
14 #clock-cells = <1>;
15 compatible = "fsl,imx1-ccm";
16 reg = <0x0021b000 0x1000>;
17 };
18
19 pwm: pwm@00208000 {
20 #pwm-cells = <2>;
21 compatible = "fsl,imx1-pwm";
22 reg = <0x00208000 0x1000>;
23 interrupts = <34>;
24 clocks = <&clks IMX1_CLK_DUMMY>, <&clks IMX1_CLK_PER1>;
25 clock-names = "ipg", "per";
26 };
diff --git a/Documentation/devicetree/bindings/clock/imx21-clock.txt b/Documentation/devicetree/bindings/clock/imx21-clock.txt
new file mode 100644
index 000000000000..c3b0db437c48
--- /dev/null
+++ b/Documentation/devicetree/bindings/clock/imx21-clock.txt
@@ -0,0 +1,28 @@
1* Clock bindings for Freescale i.MX21
2
3Required properties:
4- compatible : Should be "fsl,imx21-ccm".
5- reg : Address and length of the register set.
6- interrupts : Should contain CCM interrupt.
7- #clock-cells: Should be <1>.
8
9The clock consumer should specify the desired clock by having the clock
10ID in its "clocks" phandle cell. See include/dt-bindings/clock/imx21-clock.h
11for the full list of i.MX21 clock IDs.
12
13Examples:
14 clks: ccm@10027000{
15 compatible = "fsl,imx21-ccm";
16 reg = <0x10027000 0x800>;
17 #clock-cells = <1>;
18 };
19
20 uart1: serial@1000a000 {
21 compatible = "fsl,imx21-uart";
22 reg = <0x1000a000 0x1000>;
23 interrupts = <20>;
24 clocks = <&clks IMX21_CLK_UART1_IPG_GATE>,
25 <&clks IMX21_CLK_PER1>;
26 clock-names = "ipg", "per";
27 status = "disabled";
28 };
diff --git a/Documentation/devicetree/bindings/clock/imx27-clock.txt b/Documentation/devicetree/bindings/clock/imx27-clock.txt
index 6bc9fd2c6631..cc05de9ec393 100644
--- a/Documentation/devicetree/bindings/clock/imx27-clock.txt
+++ b/Documentation/devicetree/bindings/clock/imx27-clock.txt
@@ -7,117 +7,22 @@ Required properties:
7- #clock-cells: Should be <1> 7- #clock-cells: Should be <1>
8 8
9The clock consumer should specify the desired clock by having the clock 9The clock consumer should specify the desired clock by having the clock
10ID in its "clocks" phandle cell. The following is a full list of i.MX27 10ID in its "clocks" phandle cell. See include/dt-bindings/clock/imx27-clock.h
11clocks and IDs. 11for the full list of i.MX27 clock IDs.
12
13 Clock ID
14 -----------------------
15 dummy 0
16 ckih 1
17 ckil 2
18 mpll 3
19 spll 4
20 mpll_main2 5
21 ahb 6
22 ipg 7
23 nfc_div 8
24 per1_div 9
25 per2_div 10
26 per3_div 11
27 per4_div 12
28 vpu_sel 13
29 vpu_div 14
30 usb_div 15
31 cpu_sel 16
32 clko_sel 17
33 cpu_div 18
34 clko_div 19
35 ssi1_sel 20
36 ssi2_sel 21
37 ssi1_div 22
38 ssi2_div 23
39 clko_en 24
40 ssi2_ipg_gate 25
41 ssi1_ipg_gate 26
42 slcdc_ipg_gate 27
43 sdhc3_ipg_gate 28
44 sdhc2_ipg_gate 29
45 sdhc1_ipg_gate 30
46 scc_ipg_gate 31
47 sahara_ipg_gate 32
48 rtc_ipg_gate 33
49 pwm_ipg_gate 34
50 owire_ipg_gate 35
51 lcdc_ipg_gate 36
52 kpp_ipg_gate 37
53 iim_ipg_gate 38
54 i2c2_ipg_gate 39
55 i2c1_ipg_gate 40
56 gpt6_ipg_gate 41
57 gpt5_ipg_gate 42
58 gpt4_ipg_gate 43
59 gpt3_ipg_gate 44
60 gpt2_ipg_gate 45
61 gpt1_ipg_gate 46
62 gpio_ipg_gate 47
63 fec_ipg_gate 48
64 emma_ipg_gate 49
65 dma_ipg_gate 50
66 cspi3_ipg_gate 51
67 cspi2_ipg_gate 52
68 cspi1_ipg_gate 53
69 nfc_baud_gate 54
70 ssi2_baud_gate 55
71 ssi1_baud_gate 56
72 vpu_baud_gate 57
73 per4_gate 58
74 per3_gate 59
75 per2_gate 60
76 per1_gate 61
77 usb_ahb_gate 62
78 slcdc_ahb_gate 63
79 sahara_ahb_gate 64
80 lcdc_ahb_gate 65
81 vpu_ahb_gate 66
82 fec_ahb_gate 67
83 emma_ahb_gate 68
84 emi_ahb_gate 69
85 dma_ahb_gate 70
86 csi_ahb_gate 71
87 brom_ahb_gate 72
88 ata_ahb_gate 73
89 wdog_ipg_gate 74
90 usb_ipg_gate 75
91 uart6_ipg_gate 76
92 uart5_ipg_gate 77
93 uart4_ipg_gate 78
94 uart3_ipg_gate 79
95 uart2_ipg_gate 80
96 uart1_ipg_gate 81
97 ckih_div1p5 82
98 fpm 83
99 mpll_osc_sel 84
100 mpll_sel 85
101 spll_gate 86
102 mshc_div 87
103 rtic_ipg_gate 88
104 mshc_ipg_gate 89
105 rtic_ahb_gate 90
106 mshc_baud_gate 91
107 12
108Examples: 13Examples:
14 clks: ccm@10027000{
15 compatible = "fsl,imx27-ccm";
16 reg = <0x10027000 0x1000>;
17 #clock-cells = <1>;
18 };
109 19
110clks: ccm@10027000{ 20 uart1: serial@1000a000 {
111 compatible = "fsl,imx27-ccm"; 21 compatible = "fsl,imx27-uart", "fsl,imx21-uart";
112 reg = <0x10027000 0x1000>; 22 reg = <0x1000a000 0x1000>;
113 #clock-cells = <1>; 23 interrupts = <20>;
114}; 24 clocks = <&clks IMX27_CLK_UART1_IPG_GATE>,
115 25 <&clks IMX27_CLK_PER1_GATE>;
116uart1: serial@1000a000 { 26 clock-names = "ipg", "per";
117 compatible = "fsl,imx27-uart", "fsl,imx21-uart"; 27 status = "disabled";
118 reg = <0x1000a000 0x1000>; 28 };
119 interrupts = <20>;
120 clocks = <&clks 81>, <&clks 61>;
121 clock-names = "ipg", "per";
122 status = "disabled";
123};
diff --git a/Documentation/devicetree/bindings/clock/imx6q-clock.txt b/Documentation/devicetree/bindings/clock/imx6q-clock.txt
index 90ec91fe5ce0..9252912a5b0e 100644
--- a/Documentation/devicetree/bindings/clock/imx6q-clock.txt
+++ b/Documentation/devicetree/bindings/clock/imx6q-clock.txt
@@ -7,223 +7,13 @@ Required properties:
7- #clock-cells: Should be <1> 7- #clock-cells: Should be <1>
8 8
9The clock consumer should specify the desired clock by having the clock 9The clock consumer should specify the desired clock by having the clock
10ID in its "clocks" phandle cell. The following is a full list of i.MX6Q 10ID in its "clocks" phandle cell. See include/dt-bindings/clock/imx6qdl-clock.h
11clocks and IDs. 11for the full list of i.MX6 Quad and DualLite clock IDs.
12
13 Clock ID
14 ---------------------------
15 dummy 0
16 ckil 1
17 ckih 2
18 osc 3
19 pll2_pfd0_352m 4
20 pll2_pfd1_594m 5
21 pll2_pfd2_396m 6
22 pll3_pfd0_720m 7
23 pll3_pfd1_540m 8
24 pll3_pfd2_508m 9
25 pll3_pfd3_454m 10
26 pll2_198m 11
27 pll3_120m 12
28 pll3_80m 13
29 pll3_60m 14
30 twd 15
31 step 16
32 pll1_sw 17
33 periph_pre 18
34 periph2_pre 19
35 periph_clk2_sel 20
36 periph2_clk2_sel 21
37 axi_sel 22
38 esai_sel 23
39 asrc_sel 24
40 spdif_sel 25
41 gpu2d_axi 26
42 gpu3d_axi 27
43 gpu2d_core_sel 28
44 gpu3d_core_sel 29
45 gpu3d_shader_sel 30
46 ipu1_sel 31
47 ipu2_sel 32
48 ldb_di0_sel 33
49 ldb_di1_sel 34
50 ipu1_di0_pre_sel 35
51 ipu1_di1_pre_sel 36
52 ipu2_di0_pre_sel 37
53 ipu2_di1_pre_sel 38
54 ipu1_di0_sel 39
55 ipu1_di1_sel 40
56 ipu2_di0_sel 41
57 ipu2_di1_sel 42
58 hsi_tx_sel 43
59 pcie_axi_sel 44
60 ssi1_sel 45
61 ssi2_sel 46
62 ssi3_sel 47
63 usdhc1_sel 48
64 usdhc2_sel 49
65 usdhc3_sel 50
66 usdhc4_sel 51
67 enfc_sel 52
68 emi_sel 53
69 emi_slow_sel 54
70 vdo_axi_sel 55
71 vpu_axi_sel 56
72 cko1_sel 57
73 periph 58
74 periph2 59
75 periph_clk2 60
76 periph2_clk2 61
77 ipg 62
78 ipg_per 63
79 esai_pred 64
80 esai_podf 65
81 asrc_pred 66
82 asrc_podf 67
83 spdif_pred 68
84 spdif_podf 69
85 can_root 70
86 ecspi_root 71
87 gpu2d_core_podf 72
88 gpu3d_core_podf 73
89 gpu3d_shader 74
90 ipu1_podf 75
91 ipu2_podf 76
92 ldb_di0_podf 77
93 ldb_di1_podf 78
94 ipu1_di0_pre 79
95 ipu1_di1_pre 80
96 ipu2_di0_pre 81
97 ipu2_di1_pre 82
98 hsi_tx_podf 83
99 ssi1_pred 84
100 ssi1_podf 85
101 ssi2_pred 86
102 ssi2_podf 87
103 ssi3_pred 88
104 ssi3_podf 89
105 uart_serial_podf 90
106 usdhc1_podf 91
107 usdhc2_podf 92
108 usdhc3_podf 93
109 usdhc4_podf 94
110 enfc_pred 95
111 enfc_podf 96
112 emi_podf 97
113 emi_slow_podf 98
114 vpu_axi_podf 99
115 cko1_podf 100
116 axi 101
117 mmdc_ch0_axi_podf 102
118 mmdc_ch1_axi_podf 103
119 arm 104
120 ahb 105
121 apbh_dma 106
122 asrc 107
123 can1_ipg 108
124 can1_serial 109
125 can2_ipg 110
126 can2_serial 111
127 ecspi1 112
128 ecspi2 113
129 ecspi3 114
130 ecspi4 115
131 ecspi5 116
132 enet 117
133 esai 118
134 gpt_ipg 119
135 gpt_ipg_per 120
136 gpu2d_core 121
137 gpu3d_core 122
138 hdmi_iahb 123
139 hdmi_isfr 124
140 i2c1 125
141 i2c2 126
142 i2c3 127
143 iim 128
144 enfc 129
145 ipu1 130
146 ipu1_di0 131
147 ipu1_di1 132
148 ipu2 133
149 ipu2_di0 134
150 ldb_di0 135
151 ldb_di1 136
152 ipu2_di1 137
153 hsi_tx 138
154 mlb 139
155 mmdc_ch0_axi 140
156 mmdc_ch1_axi 141
157 ocram 142
158 openvg_axi 143
159 pcie_axi 144
160 pwm1 145
161 pwm2 146
162 pwm3 147
163 pwm4 148
164 per1_bch 149
165 gpmi_bch_apb 150
166 gpmi_bch 151
167 gpmi_io 152
168 gpmi_apb 153
169 sata 154
170 sdma 155
171 spba 156
172 ssi1 157
173 ssi2 158
174 ssi3 159
175 uart_ipg 160
176 uart_serial 161
177 usboh3 162
178 usdhc1 163
179 usdhc2 164
180 usdhc3 165
181 usdhc4 166
182 vdo_axi 167
183 vpu_axi 168
184 cko1 169
185 pll1_sys 170
186 pll2_bus 171
187 pll3_usb_otg 172
188 pll4_audio 173
189 pll5_video 174
190 pll8_mlb 175
191 pll7_usb_host 176
192 pll6_enet 177
193 ssi1_ipg 178
194 ssi2_ipg 179
195 ssi3_ipg 180
196 rom 181
197 usbphy1 182
198 usbphy2 183
199 ldb_di0_div_3_5 184
200 ldb_di1_div_3_5 185
201 sata_ref 186
202 sata_ref_100m 187
203 pcie_ref 188
204 pcie_ref_125m 189
205 enet_ref 190
206 usbphy1_gate 191
207 usbphy2_gate 192
208 pll4_post_div 193
209 pll5_post_div 194
210 pll5_video_div 195
211 eim_slow 196
212 spdif 197
213 cko2_sel 198
214 cko2_podf 199
215 cko2 200
216 cko 201
217 vdoa 202
218 pll4_audio_div 203
219 lvds1_sel 204
220 lvds2_sel 205
221 lvds1_gate 206
222 lvds2_gate 207
223 esai_ahb 208
224 12
225Examples: 13Examples:
226 14
15#include <dt-bindings/clock/imx6qdl-clock.h>
16
227clks: ccm@020c4000 { 17clks: ccm@020c4000 {
228 compatible = "fsl,imx6q-ccm"; 18 compatible = "fsl,imx6q-ccm";
229 reg = <0x020c4000 0x4000>; 19 reg = <0x020c4000 0x4000>;
@@ -235,7 +25,7 @@ uart1: serial@02020000 {
235 compatible = "fsl,imx6q-uart", "fsl,imx21-uart"; 25 compatible = "fsl,imx6q-uart", "fsl,imx21-uart";
236 reg = <0x02020000 0x4000>; 26 reg = <0x02020000 0x4000>;
237 interrupts = <0 26 0x04>; 27 interrupts = <0 26 0x04>;
238 clocks = <&clks 160>, <&clks 161>; 28 clocks = <&clks IMX6QDL_CLK_UART_IPG>, <&clks IMX6QDL_CLK_UART_SERIAL>;
239 clock-names = "ipg", "per"; 29 clock-names = "ipg", "per";
240 status = "disabled"; 30 status = "disabled";
241}; 31};
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index df4c195f3d4e..fc7f75a323cf 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -157,10 +157,14 @@ dtb-$(CONFIG_ARCH_MARCO) += marco-evb.dtb
157dtb-$(CONFIG_ARCH_MOXART) += moxart-uc7112lx.dtb 157dtb-$(CONFIG_ARCH_MOXART) += moxart-uc7112lx.dtb
158dtb-$(CONFIG_ARCH_MXC) += \ 158dtb-$(CONFIG_ARCH_MXC) += \
159 imx25-eukrea-mbimxsd25-baseboard.dtb \ 159 imx25-eukrea-mbimxsd25-baseboard.dtb \
160 imx25-eukrea-mbimxsd25-baseboard-cmo-qvga.dtb \
161 imx25-eukrea-mbimxsd25-baseboard-dvi-svga.dtb \
162 imx25-eukrea-mbimxsd25-baseboard-dvi-vga.dtb \
160 imx25-karo-tx25.dtb \ 163 imx25-karo-tx25.dtb \
161 imx25-pdk.dtb \ 164 imx25-pdk.dtb \
162 imx27-apf27.dtb \ 165 imx27-apf27.dtb \
163 imx27-apf27dev.dtb \ 166 imx27-apf27dev.dtb \
167 imx27-eukrea-mbimxsd27-baseboard.dtb \
164 imx27-pdk.dtb \ 168 imx27-pdk.dtb \
165 imx27-phytec-phycore-rdk.dtb \ 169 imx27-phytec-phycore-rdk.dtb \
166 imx27-phytec-phycard-s-rdk.dtb \ 170 imx27-phytec-phycard-s-rdk.dtb \
@@ -182,6 +186,8 @@ dtb-$(CONFIG_ARCH_MXC) += \
182 imx53-tx53-x03x.dtb \ 186 imx53-tx53-x03x.dtb \
183 imx53-tx53-x13x.dtb \ 187 imx53-tx53-x13x.dtb \
184 imx53-voipac-bsb.dtb \ 188 imx53-voipac-bsb.dtb \
189 imx6dl-aristainetos_4.dtb \
190 imx6dl-aristainetos_7.dtb \
185 imx6dl-cubox-i.dtb \ 191 imx6dl-cubox-i.dtb \
186 imx6dl-dfi-fs700-m60.dtb \ 192 imx6dl-dfi-fs700-m60.dtb \
187 imx6dl-gw51xx.dtb \ 193 imx6dl-gw51xx.dtb \
@@ -191,11 +197,16 @@ dtb-$(CONFIG_ARCH_MXC) += \
191 imx6dl-hummingboard.dtb \ 197 imx6dl-hummingboard.dtb \
192 imx6dl-nitrogen6x.dtb \ 198 imx6dl-nitrogen6x.dtb \
193 imx6dl-phytec-pbab01.dtb \ 199 imx6dl-phytec-pbab01.dtb \
200 imx6dl-rex-basic.dtb \
194 imx6dl-riotboard.dtb \ 201 imx6dl-riotboard.dtb \
195 imx6dl-sabreauto.dtb \ 202 imx6dl-sabreauto.dtb \
196 imx6dl-sabrelite.dtb \ 203 imx6dl-sabrelite.dtb \
197 imx6dl-sabresd.dtb \ 204 imx6dl-sabresd.dtb \
205 imx6dl-tx6dl-comtft.dtb \
206 imx6dl-tx6u-801x.dtb \
207 imx6dl-tx6u-811x.dtb \
198 imx6dl-wandboard.dtb \ 208 imx6dl-wandboard.dtb \
209 imx6dl-wandboard-revb1.dtb \
199 imx6q-arm2.dtb \ 210 imx6q-arm2.dtb \
200 imx6q-cm-fx6.dtb \ 211 imx6q-cm-fx6.dtb \
201 imx6q-cubox-i.dtb \ 212 imx6q-cubox-i.dtb \
@@ -209,13 +220,21 @@ dtb-$(CONFIG_ARCH_MXC) += \
209 imx6q-gw54xx.dtb \ 220 imx6q-gw54xx.dtb \
210 imx6q-nitrogen6x.dtb \ 221 imx6q-nitrogen6x.dtb \
211 imx6q-phytec-pbab01.dtb \ 222 imx6q-phytec-pbab01.dtb \
223 imx6q-rex-pro.dtb \
212 imx6q-sabreauto.dtb \ 224 imx6q-sabreauto.dtb \
213 imx6q-sabrelite.dtb \ 225 imx6q-sabrelite.dtb \
214 imx6q-sabresd.dtb \ 226 imx6q-sabresd.dtb \
215 imx6q-sbc6x.dtb \ 227 imx6q-sbc6x.dtb \
216 imx6q-udoo.dtb \ 228 imx6q-udoo.dtb \
217 imx6q-wandboard.dtb \ 229 imx6q-wandboard.dtb \
230 imx6q-wandboard-revb1.dtb \
231 imx6q-tx6q-1010.dtb \
232 imx6q-tx6q-1010-comtft.dtb \
233 imx6q-tx6q-1020.dtb \
234 imx6q-tx6q-1020-comtft.dtb \
235 imx6q-tx6q-1110.dtb \
218 imx6sl-evk.dtb \ 236 imx6sl-evk.dtb \
237 imx6sx-sdb.dtb \
219 vf610-colibri.dtb \ 238 vf610-colibri.dtb \
220 vf610-cosmic.dtb \ 239 vf610-cosmic.dtb \
221 vf610-twr.dtb 240 vf610-twr.dtb
diff --git a/arch/arm/boot/dts/imx25-eukrea-mbimxsd25-baseboard-cmo-qvga.dts b/arch/arm/boot/dts/imx25-eukrea-mbimxsd25-baseboard-cmo-qvga.dts
new file mode 100644
index 000000000000..68d0834a2d1e
--- /dev/null
+++ b/arch/arm/boot/dts/imx25-eukrea-mbimxsd25-baseboard-cmo-qvga.dts
@@ -0,0 +1,73 @@
1/*
2 * Copyright 2013 Eukréa Electromatique <denis@eukrea.com>
3 *
4 * This program is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU General Public License
6 * as published by the Free Software Foundation; either version 2
7 * of the License, or (at your option) any later version.
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 */
13
14#include "imx25-eukrea-mbimxsd25-baseboard.dts"
15
16/ {
17 model = "Eukrea MBIMXSD25 with the CMO-QVGA Display";
18 compatible = "eukrea,mbimxsd25-baseboard-cmo-qvga", "eukrea,mbimxsd25-baseboard", "eukrea,cpuimx25", "fsl,imx25";
19
20 cmo_qvga: display {
21 model = "CMO-QVGA";
22 bits-per-pixel = <16>;
23 fsl,pcr = <0xcad08b80>;
24 bus-width = <18>;
25 native-mode = <&qvga_timings>;
26 display-timings {
27 qvga_timings: 320x240 {
28 clock-frequency = <6500000>;
29 hactive = <320>;
30 vactive = <240>;
31 hback-porch = <30>;
32 hfront-porch = <38>;
33 vback-porch = <20>;
34 vfront-porch = <3>;
35 hsync-len = <15>;
36 vsync-len = <4>;
37 };
38 };
39 };
40
41 regulators {
42 compatible = "simple-bus";
43 #address-cells = <1>;
44 #size-cells = <0>;
45
46 reg_lcd_3v3: regulator@0 {
47 compatible = "regulator-fixed";
48 reg = <0>;
49 pinctrl-names = "default";
50 pinctrl-0 = <&pinctrl_reg_lcd_3v3>;
51 regulator-name = "lcd-3v3";
52 regulator-min-microvolt = <3300000>;
53 regulator-max-microvolt = <3300000>;
54 gpio = <&gpio1 26 GPIO_ACTIVE_HIGH>;
55 enable-active-high;
56 };
57 };
58};
59
60&iomuxc {
61 imx25-eukrea-mbimxsd25-baseboard-cmo-qvga {
62 pinctrl_reg_lcd_3v3: reg_lcd_3v3 {
63 fsl,pins = <MX25_PAD_PWM__GPIO_1_26 0x80000000>;
64 };
65 };
66};
67
68&lcdc {
69 display = <&cmo_qvga>;
70 fsl,lpccr = <0x00a903ff>;
71 lcd-supply = <&reg_lcd_3v3>;
72 status = "okay";
73};
diff --git a/arch/arm/boot/dts/imx25-eukrea-mbimxsd25-baseboard-dvi-svga.dts b/arch/arm/boot/dts/imx25-eukrea-mbimxsd25-baseboard-dvi-svga.dts
new file mode 100644
index 000000000000..8eee2f65fe00
--- /dev/null
+++ b/arch/arm/boot/dts/imx25-eukrea-mbimxsd25-baseboard-dvi-svga.dts
@@ -0,0 +1,45 @@
1/*
2 * Copyright 2013 Eukréa Electromatique <denis@eukrea.com>
3 *
4 * This program is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU General Public License
6 * as published by the Free Software Foundation; either version 2
7 * of the License, or (at your option) any later version.
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 */
13
14#include "imx25-eukrea-mbimxsd25-baseboard.dts"
15
16/ {
17 model = "Eukrea MBIMXSD25 with the DVI-SVGA Display";
18 compatible = "eukrea,mbimxsd25-baseboard-dvi-svga", "eukrea,mbimxsd25-baseboard", "eukrea,cpuimx25", "fsl,imx25";
19
20 dvi_svga: display {
21 model = "DVI-SVGA";
22 bits-per-pixel = <16>;
23 fsl,pcr = <0xfa208b80>;
24 bus-width = <18>;
25 native-mode = <&dvi_svga_timings>;
26 display-timings {
27 dvi_svga_timings: 800x600 {
28 clock-frequency = <40000000>;
29 hactive = <800>;
30 vactive = <600>;
31 hback-porch = <75>;
32 hfront-porch = <75>;
33 vback-porch = <7>;
34 vfront-porch = <75>;
35 hsync-len = <7>;
36 vsync-len = <7>;
37 };
38 };
39 };
40};
41
42&lcdc {
43 display = <&dvi_svga>;
44 status = "okay";
45};
diff --git a/arch/arm/boot/dts/imx25-eukrea-mbimxsd25-baseboard-dvi-vga.dts b/arch/arm/boot/dts/imx25-eukrea-mbimxsd25-baseboard-dvi-vga.dts
new file mode 100644
index 000000000000..447da6263169
--- /dev/null
+++ b/arch/arm/boot/dts/imx25-eukrea-mbimxsd25-baseboard-dvi-vga.dts
@@ -0,0 +1,45 @@
1/*
2 * Copyright 2013 Eukréa Electromatique <denis@eukrea.com>
3 *
4 * This program is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU General Public License
6 * as published by the Free Software Foundation; either version 2
7 * of the License, or (at your option) any later version.
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 */
13
14#include "imx25-eukrea-mbimxsd25-baseboard.dts"
15
16/ {
17 model = "Eukrea MBIMXSD25 with the DVI-VGA Display";
18 compatible = "eukrea,mbimxsd25-baseboard-dvi-vga", "eukrea,mbimxsd25-baseboard", "eukrea,cpuimx25", "fsl,imx25";
19
20 dvi_vga: display {
21 model = "DVI-VGA";
22 bits-per-pixel = <16>;
23 fsl,pcr = <0xfa208b80>;
24 bus-width = <18>;
25 native-mode = <&dvi_vga_timings>;
26 display-timings {
27 dvi_vga_timings: 640x480 {
28 clock-frequency = <31250000>;
29 hactive = <640>;
30 vactive = <480>;
31 hback-porch = <100>;
32 hfront-porch = <100>;
33 vback-porch = <7>;
34 vfront-porch = <100>;
35 hsync-len = <7>;
36 vsync-len = <7>;
37 };
38 };
39 };
40};
41
42&lcdc {
43 display = <&dvi_vga>;
44 status = "okay";
45};
diff --git a/arch/arm/boot/dts/imx25-eukrea-mbimxsd25-baseboard.dts b/arch/arm/boot/dts/imx25-eukrea-mbimxsd25-baseboard.dts
index ad12da38fc92..ed1d0b4578ef 100644
--- a/arch/arm/boot/dts/imx25-eukrea-mbimxsd25-baseboard.dts
+++ b/arch/arm/boot/dts/imx25-eukrea-mbimxsd25-baseboard.dts
@@ -155,7 +155,6 @@
155 155
156&ssi1 { 156&ssi1 {
157 codec-handle = <&tlv320aic23>; 157 codec-handle = <&tlv320aic23>;
158 fsl,mode = "i2s-slave";
159 status = "okay"; 158 status = "okay";
160}; 159};
161 160
diff --git a/arch/arm/boot/dts/imx25-pdk.dts b/arch/arm/boot/dts/imx25-pdk.dts
index c608942b8a3b..9c21b1583762 100644
--- a/arch/arm/boot/dts/imx25-pdk.dts
+++ b/arch/arm/boot/dts/imx25-pdk.dts
@@ -233,7 +233,6 @@
233 233
234&ssi1 { 234&ssi1 {
235 codec-handle = <&codec>; 235 codec-handle = <&codec>;
236 fsl,mode = "i2s-slave";
237 status = "okay"; 236 status = "okay";
238}; 237};
239 238
@@ -249,3 +248,10 @@
249 dr_mode = "host"; 248 dr_mode = "host";
250 status = "okay"; 249 status = "okay";
251}; 250};
251
252&usbotg {
253 phy_type = "utmi";
254 dr_mode = "otg";
255 external-vbus-divider;
256 status = "okay";
257};
diff --git a/arch/arm/boot/dts/imx25.dtsi b/arch/arm/boot/dts/imx25.dtsi
index bb74d9582b7e..c1740396b2c9 100644
--- a/arch/arm/boot/dts/imx25.dtsi
+++ b/arch/arm/boot/dts/imx25.dtsi
@@ -312,7 +312,7 @@
312 gpt4: timer@53f84000 { 312 gpt4: timer@53f84000 {
313 compatible = "fsl,imx25-gpt", "fsl,imx31-gpt"; 313 compatible = "fsl,imx25-gpt", "fsl,imx31-gpt";
314 reg = <0x53f84000 0x4000>; 314 reg = <0x53f84000 0x4000>;
315 clocks = <&clks 9>, <&clks 45>; 315 clocks = <&clks 95>, <&clks 47>;
316 clock-names = "ipg", "per"; 316 clock-names = "ipg", "per";
317 interrupts = <1>; 317 interrupts = <1>;
318 }; 318 };
@@ -320,7 +320,7 @@
320 gpt3: timer@53f88000 { 320 gpt3: timer@53f88000 {
321 compatible = "fsl,imx25-gpt", "fsl,imx31-gpt"; 321 compatible = "fsl,imx25-gpt", "fsl,imx31-gpt";
322 reg = <0x53f88000 0x4000>; 322 reg = <0x53f88000 0x4000>;
323 clocks = <&clks 9>, <&clks 47>; 323 clocks = <&clks 94>, <&clks 47>;
324 clock-names = "ipg", "per"; 324 clock-names = "ipg", "per";
325 interrupts = <29>; 325 interrupts = <29>;
326 }; 326 };
@@ -328,7 +328,7 @@
328 gpt2: timer@53f8c000 { 328 gpt2: timer@53f8c000 {
329 compatible = "fsl,imx25-gpt", "fsl,imx31-gpt"; 329 compatible = "fsl,imx25-gpt", "fsl,imx31-gpt";
330 reg = <0x53f8c000 0x4000>; 330 reg = <0x53f8c000 0x4000>;
331 clocks = <&clks 9>, <&clks 47>; 331 clocks = <&clks 93>, <&clks 47>;
332 clock-names = "ipg", "per"; 332 clock-names = "ipg", "per";
333 interrupts = <53>; 333 interrupts = <53>;
334 }; 334 };
@@ -336,7 +336,7 @@
336 gpt1: timer@53f90000 { 336 gpt1: timer@53f90000 {
337 compatible = "fsl,imx25-gpt", "fsl,imx31-gpt"; 337 compatible = "fsl,imx25-gpt", "fsl,imx31-gpt";
338 reg = <0x53f90000 0x4000>; 338 reg = <0x53f90000 0x4000>;
339 clocks = <&clks 9>, <&clks 47>; 339 clocks = <&clks 92>, <&clks 47>;
340 clock-names = "ipg", "per"; 340 clock-names = "ipg", "per";
341 interrupts = <54>; 341 interrupts = <54>;
342 }; 342 };
diff --git a/arch/arm/boot/dts/imx27-eukrea-cpuimx27.dtsi b/arch/arm/boot/dts/imx27-eukrea-cpuimx27.dtsi
new file mode 100644
index 000000000000..e2242638ea0b
--- /dev/null
+++ b/arch/arm/boot/dts/imx27-eukrea-cpuimx27.dtsi
@@ -0,0 +1,296 @@
1/*
2 * Copyright (C) 2014 Alexander Shiyan <shc_work@mail.ru>
3 *
4 * The code contained herein is licensed under the GNU General Public
5 * License. You may obtain a copy of the GNU General Public License
6 * Version 2 or later at the following locations:
7 *
8 * http://www.opensource.org/licenses/gpl-license.html
9 * http://www.gnu.org/copyleft/gpl.html
10 */
11
12/dts-v1/;
13#include "imx27.dtsi"
14
15/ {
16 model = "Eukrea CPUIMX27";
17 compatible = "eukrea,cpuimx27", "fsl,imx27";
18
19 memory {
20 reg = <0xa0000000 0x04000000>;
21 };
22
23 clocks {
24 #address-cells = <1>;
25 #size-cells = <0>;
26 compatible = "simple-bus";
27
28 clk14745600: clock@0 {
29 #clock-cells = <0>;
30 compatible = "fixed-clock";
31 clock-frequency = <14745600>;
32 reg = <0>;
33 };
34 };
35};
36
37&fec {
38 pinctrl-names = "default";
39 pinctrl-0 = <&pinctrl_fec>;
40 status = "okay";
41};
42
43&i2c1 {
44 pinctrl-names = "default";
45 pinctrl-0 = <&pinctrl_i2c1>;
46 status = "okay";
47
48 pcf8563@51 {
49 compatible = "nxp,pcf8563";
50 reg = <0x51>;
51 };
52};
53
54&nfc {
55 pinctrl-names = "default";
56 pinctrl-0 = <&pinctrl_nfc>;
57 nand-bus-width = <8>;
58 nand-ecc-mode = "hw";
59 nand-on-flash-bbt;
60 status = "okay";
61};
62
63&owire {
64 pinctrl-names = "default";
65 pinctrl-0 = <&pinctrl_owire>;
66 status = "okay";
67};
68
69&sdhci2 {
70 pinctrl-names = "default";
71 pinctrl-0 = <&pinctrl_sdhc2>;
72 bus-width = <4>;
73 non-removable;
74 status = "okay";
75};
76
77&uart4 {
78 pinctrl-names = "default";
79 pinctrl-0 = <&pinctrl_uart4>;
80 fsl,uart-has-rtscts;
81 status = "okay";
82};
83
84&usbh2 {
85 pinctrl-names = "default";
86 pinctrl-0 = <&pinctrl_usbh2>;
87 dr_mode = "host";
88 phy_type = "ulpi";
89 disable-over-current;
90 status = "okay";
91};
92
93&usbotg {
94 pinctrl-names = "default";
95 pinctrl-0 = <&pinctrl_usbotg>;
96 dr_mode = "otg";
97 phy_type = "ulpi";
98 disable-over-current;
99 status = "okay";
100};
101
102&weim {
103 status = "okay";
104
105 nor: nor@0,0 {
106 #address-cells = <1>;
107 #size-cells = <1>;
108 compatible = "cfi-flash";
109 reg = <0 0x00000000 0x04000000>;
110 bank-width = <2>;
111 linux,mtd-name = "physmap-flash.0";
112 fsl,weim-cs-timing = <0x00008f03 0xa0330d01 0x002208c0>;
113 };
114
115 uart8250@3,200000 {
116 pinctrl-names = "default";
117 pinctrl-0 = <&pinctrl_uart8250_1>;
118 compatible = "ns8250";
119 clocks = <&clk14745600>;
120 fsl,weim-cs-timing = <0x0000d603 0x0d1d0d01 0x00d20000>;
121 interrupts = <&gpio2 23 IRQ_TYPE_LEVEL_LOW>;
122 reg = <3 0x200000 0x1000>;
123 reg-shift = <1>;
124 reg-io-width = <1>;
125 no-loopback-test;
126 };
127
128 uart8250@3,400000 {
129 pinctrl-names = "default";
130 pinctrl-0 = <&pinctrl_uart8250_2>;
131 compatible = "ns8250";
132 clocks = <&clk14745600>;
133 fsl,weim-cs-timing = <0x0000d603 0x0d1d0d01 0x00d20000>;
134 interrupts = <&gpio2 22 IRQ_TYPE_LEVEL_LOW>;
135 reg = <3 0x400000 0x1000>;
136 reg-shift = <1>;
137 reg-io-width = <1>;
138 no-loopback-test;
139 };
140
141 uart8250@3,800000 {
142 pinctrl-names = "default";
143 pinctrl-0 = <&pinctrl_uart8250_3>;
144 compatible = "ns8250";
145 clocks = <&clk14745600>;
146 fsl,weim-cs-timing = <0x0000d603 0x0d1d0d01 0x00d20000>;
147 interrupts = <&gpio2 27 IRQ_TYPE_LEVEL_LOW>;
148 reg = <3 0x800000 0x1000>;
149 reg-shift = <1>;
150 reg-io-width = <1>;
151 no-loopback-test;
152 };
153
154 uart8250@3,1000000 {
155 pinctrl-names = "default";
156 pinctrl-0 = <&pinctrl_uart8250_4>;
157 compatible = "ns8250";
158 clocks = <&clk14745600>;
159 fsl,weim-cs-timing = <0x0000d603 0x0d1d0d01 0x00d20000>;
160 interrupts = <&gpio2 30 IRQ_TYPE_LEVEL_LOW>;
161 reg = <3 0x1000000 0x1000>;
162 reg-shift = <1>;
163 reg-io-width = <1>;
164 no-loopback-test;
165 };
166};
167
168&iomuxc {
169 imx27-eukrea-cpuimx27 {
170 pinctrl_fec: fecgrp {
171 fsl,pins = <
172 MX27_PAD_SD3_CMD__FEC_TXD0 0x0
173 MX27_PAD_SD3_CLK__FEC_TXD1 0x0
174 MX27_PAD_ATA_DATA0__FEC_TXD2 0x0
175 MX27_PAD_ATA_DATA1__FEC_TXD3 0x0
176 MX27_PAD_ATA_DATA2__FEC_RX_ER 0x0
177 MX27_PAD_ATA_DATA3__FEC_RXD1 0x0
178 MX27_PAD_ATA_DATA4__FEC_RXD2 0x0
179 MX27_PAD_ATA_DATA5__FEC_RXD3 0x0
180 MX27_PAD_ATA_DATA6__FEC_MDIO 0x0
181 MX27_PAD_ATA_DATA7__FEC_MDC 0x0
182 MX27_PAD_ATA_DATA8__FEC_CRS 0x0
183 MX27_PAD_ATA_DATA9__FEC_TX_CLK 0x0
184 MX27_PAD_ATA_DATA10__FEC_RXD0 0x0
185 MX27_PAD_ATA_DATA11__FEC_RX_DV 0x0
186 MX27_PAD_ATA_DATA12__FEC_RX_CLK 0x0
187 MX27_PAD_ATA_DATA13__FEC_COL 0x0
188 MX27_PAD_ATA_DATA14__FEC_TX_ER 0x0
189 MX27_PAD_ATA_DATA15__FEC_TX_EN 0x0
190 >;
191 };
192
193 pinctrl_i2c1: i2c1grp {
194 fsl,pins = <
195 MX27_PAD_I2C_DATA__I2C_DATA 0x0
196 MX27_PAD_I2C_CLK__I2C_CLK 0x0
197 >;
198 };
199
200 pinctrl_nfc: nfcgrp {
201 fsl,pins = <
202 MX27_PAD_NFRB__NFRB 0x0
203 MX27_PAD_NFCLE__NFCLE 0x0
204 MX27_PAD_NFWP_B__NFWP_B 0x0
205 MX27_PAD_NFCE_B__NFCE_B 0x0
206 MX27_PAD_NFALE__NFALE 0x0
207 MX27_PAD_NFRE_B__NFRE_B 0x0
208 MX27_PAD_NFWE_B__NFWE_B 0x0
209 >;
210 };
211
212 pinctrl_owire: owiregrp {
213 fsl,pins = <
214 MX27_PAD_RTCK__OWIRE 0x0
215 >;
216 };
217
218 pinctrl_sdhc2: sdhc2grp {
219 fsl,pins = <
220 MX27_PAD_SD2_CLK__SD2_CLK 0x0
221 MX27_PAD_SD2_CMD__SD2_CMD 0x0
222 MX27_PAD_SD2_D0__SD2_D0 0x0
223 MX27_PAD_SD2_D1__SD2_D1 0x0
224 MX27_PAD_SD2_D2__SD2_D2 0x0
225 MX27_PAD_SD2_D3__SD2_D3 0x0
226 >;
227 };
228
229 pinctrl_uart4: uart4grp {
230 fsl,pins = <
231 MX27_PAD_USBH1_TXDM__UART4_TXD 0x0
232 MX27_PAD_USBH1_RXDP__UART4_RXD 0x0
233 MX27_PAD_USBH1_TXDP__UART4_CTS 0x0
234 MX27_PAD_USBH1_FS__UART4_RTS 0x0
235 >;
236 };
237
238 pinctrl_uart8250_1: uart82501grp {
239 fsl,pins = <
240 MX27_PAD_USB_PWR__GPIO2_23 0x0
241 >;
242 };
243
244 pinctrl_uart8250_2: uart82502grp {
245 fsl,pins = <
246 MX27_PAD_USBH1_SUSP__GPIO2_22 0x0
247 >;
248 };
249
250 pinctrl_uart8250_3: uart82503grp {
251 fsl,pins = <
252 MX27_PAD_USBH1_OE_B__GPIO2_27 0x0
253 >;
254 };
255
256 pinctrl_uart8250_4: uart82504grp {
257 fsl,pins = <
258 MX27_PAD_USBH1_RXDM__GPIO2_30 0x0
259 >;
260 };
261
262 pinctrl_usbh2: usbh2grp {
263 fsl,pins = <
264 MX27_PAD_USBH2_CLK__USBH2_CLK 0x0
265 MX27_PAD_USBH2_DIR__USBH2_DIR 0x0
266 MX27_PAD_USBH2_NXT__USBH2_NXT 0x0
267 MX27_PAD_USBH2_STP__USBH2_STP 0x0
268 MX27_PAD_CSPI2_SCLK__USBH2_DATA0 0x0
269 MX27_PAD_CSPI2_MOSI__USBH2_DATA1 0x0
270 MX27_PAD_CSPI2_MISO__USBH2_DATA2 0x0
271 MX27_PAD_CSPI2_SS1__USBH2_DATA3 0x0
272 MX27_PAD_CSPI2_SS2__USBH2_DATA4 0x0
273 MX27_PAD_CSPI1_SS2__USBH2_DATA5 0x0
274 MX27_PAD_CSPI2_SS0__USBH2_DATA6 0x0
275 MX27_PAD_USBH2_DATA7__USBH2_DATA7 0x0
276 >;
277 };
278
279 pinctrl_usbotg: usbotggrp {
280 fsl,pins = <
281 MX27_PAD_USBOTG_CLK__USBOTG_CLK 0x0
282 MX27_PAD_USBOTG_DIR__USBOTG_DIR 0x0
283 MX27_PAD_USBOTG_NXT__USBOTG_NXT 0x0
284 MX27_PAD_USBOTG_STP__USBOTG_STP 0x0
285 MX27_PAD_USBOTG_DATA0__USBOTG_DATA0 0x0
286 MX27_PAD_USBOTG_DATA1__USBOTG_DATA1 0x0
287 MX27_PAD_USBOTG_DATA2__USBOTG_DATA2 0x0
288 MX27_PAD_USBOTG_DATA3__USBOTG_DATA3 0x0
289 MX27_PAD_USBOTG_DATA4__USBOTG_DATA4 0x0
290 MX27_PAD_USBOTG_DATA5__USBOTG_DATA5 0x0
291 MX27_PAD_USBOTG_DATA6__USBOTG_DATA6 0x0
292 MX27_PAD_USBOTG_DATA7__USBOTG_DATA7 0x0
293 >;
294 };
295 };
296};
diff --git a/arch/arm/boot/dts/imx27-eukrea-mbimxsd27-baseboard.dts b/arch/arm/boot/dts/imx27-eukrea-mbimxsd27-baseboard.dts
new file mode 100644
index 000000000000..2ab65fc4c1e1
--- /dev/null
+++ b/arch/arm/boot/dts/imx27-eukrea-mbimxsd27-baseboard.dts
@@ -0,0 +1,273 @@
1/*
2 * Copyright (C) 2014 Alexander Shiyan <shc_work@mail.ru>
3 *
4 * The code contained herein is licensed under the GNU General Public
5 * License. You may obtain a copy of the GNU General Public License
6 * Version 2 or later at the following locations:
7 *
8 * http://www.opensource.org/licenses/gpl-license.html
9 * http://www.gnu.org/copyleft/gpl.html
10 */
11
12#include "imx27-eukrea-cpuimx27.dtsi"
13
14/ {
15 model = "Eukrea MBIMXSD27";
16 compatible = "eukrea,mbimxsd27-baseboard", "eukrea,cpuimx27", "fsl,imx27";
17
18 display0: CMO-QVGA {
19 model = "CMO-QVGA";
20 native-mode = <&timing0>;
21 bits-per-pixel = <16>;
22 fsl,pcr = <0xfad08b80>;
23
24 display-timings {
25 timing0: 320x240 {
26 clock-frequency = <6500000>;
27 hactive = <320>;
28 vactive = <240>;
29 hback-porch = <20>;
30 hsync-len = <30>;
31 hfront-porch = <38>;
32 vback-porch = <4>;
33 vsync-len = <3>;
34 vfront-porch = <15>;
35 };
36 };
37 };
38
39 backlight {
40 compatible = "gpio-backlight";
41 pinctrl-names = "default";
42 pinctrl-0 = <&pinctrl_backlight>;
43 gpios = <&gpio5 5 GPIO_ACTIVE_HIGH>;
44 };
45
46 leds {
47 compatible = "gpio-leds";
48 pinctrl-names = "default";
49 pinctrl-0 = <&pinctrl_gpioleds>;
50
51 led1 {
52 label = "system::live";
53 gpios = <&gpio6 16 GPIO_ACTIVE_LOW>;
54 linux,default-trigger = "heartbeat";
55 };
56
57 led2 {
58 label = "system::user";
59 gpios = <&gpio6 19 GPIO_ACTIVE_LOW>;
60 };
61 };
62
63 regulators {
64 #address-cells = <1>;
65 #size-cells = <0>;
66 compatible = "simple-bus";
67
68 reg_lcd: regulator@0 {
69 pinctrl-names = "default";
70 pinctrl-0 = <&pinctrl_lcdreg>;
71 compatible = "regulator-fixed";
72 reg = <0>;
73 regulator-name = "LCD";
74 regulator-min-microvolt = <5000000>;
75 regulator-max-microvolt = <5000000>;
76 gpio = <&gpio1 25 GPIO_ACTIVE_HIGH>;
77 enable-active-high;
78 };
79 };
80};
81
82&cspi1 {
83 pinctrl-0 = <&pinctrl_cspi1>;
84 fsl,spi-num-chipselects = <1>;
85 cs-gpios = <&gpio4 28 GPIO_ACTIVE_LOW>;
86 status = "okay";
87
88 ads7846 {
89 compatible = "ti,ads7846";
90 pinctrl-names = "default";
91 pinctrl-0 = <&pinctrl_touch>;
92 reg = <0>;
93 interrupts = <&gpio4 25 IRQ_TYPE_LEVEL_LOW>;
94 spi-cpol;
95 spi-max-frequency = <1500000>;
96 ti,keep-vref-on;
97 };
98};
99
100&fb {
101 pinctrl-names = "default";
102 pinctrl-0 = <&pinctrl_imxfb>;
103 display = <&display0>;
104 lcd-supply = <&reg_lcd>;
105 fsl,dmacr = <0x00040060>;
106 fsl,lscr1 = <0x00120300>;
107 fsl,lpccr = <0x00a903ff>;
108 status = "okay";
109};
110
111&i2c1 {
112 codec: codec@1a {
113 compatible = "ti,tlv320aic23";
114 reg = <0x1a>;
115 };
116};
117
118&kpp {
119 linux,keymap = <
120 MATRIX_KEY(0, 0, KEY_UP)
121 MATRIX_KEY(0, 1, KEY_DOWN)
122 MATRIX_KEY(1, 0, KEY_RIGHT)
123 MATRIX_KEY(1, 1, KEY_LEFT)
124 >;
125 status = "okay";
126};
127
128&sdhci1 {
129 pinctrl-names = "default";
130 pinctrl-0 = <&pinctrl_sdhc1>;
131 bus-width = <4>;
132 status = "okay";
133};
134
135&ssi1 {
136 pinctrl-names = "default";
137 pinctrl-0 = <&pinctrl_ssi1>;
138 codec-handle = <&codec>;
139 status = "okay";
140};
141
142&uart1 {
143 fsl,uart-has-rtscts;
144 pinctrl-names = "default";
145 pinctrl-0 = <&pinctrl_uart1>;
146 status = "okay";
147};
148
149&uart2 {
150 fsl,uart-has-rtscts;
151 pinctrl-names = "default";
152 pinctrl-0 = <&pinctrl_uart2>;
153 status = "okay";
154};
155
156&uart3 {
157 fsl,uart-has-rtscts;
158 pinctrl-names = "default";
159 pinctrl-0 = <&pinctrl_uart3>;
160 status = "okay";
161};
162
163&iomuxc {
164 imx27-eukrea-cpuimx27-baseboard {
165 pinctrl_cspi1: cspi1grp {
166 fsl,pins = <
167 MX27_PAD_CSPI1_MISO__CSPI1_MISO 0x0
168 MX27_PAD_CSPI1_MOSI__CSPI1_MOSI 0x0
169 MX27_PAD_CSPI1_SCLK__CSPI1_SCLK 0x0
170 MX27_PAD_CSPI1_SS0__GPIO4_28 0x0 /* CS0 */
171 >;
172 };
173
174 pinctrl_backlight: backlightgrp {
175 fsl,pins = <
176 MX27_PAD_PWMO__GPIO5_5 0x0
177 >;
178 };
179
180 pinctrl_gpioleds: gpioledsgrp {
181 fsl,pins = <
182 MX27_PAD_PC_PWRON__GPIO6_16 0x0
183 MX27_PAD_PC_CD2_B__GPIO6_19 0x0
184 >;
185 };
186
187 pinctrl_imxfb: imxfbgrp {
188 fsl,pins = <
189 MX27_PAD_LD0__LD0 0x0
190 MX27_PAD_LD1__LD1 0x0
191 MX27_PAD_LD2__LD2 0x0
192 MX27_PAD_LD3__LD3 0x0
193 MX27_PAD_LD4__LD4 0x0
194 MX27_PAD_LD5__LD5 0x0
195 MX27_PAD_LD6__LD6 0x0
196 MX27_PAD_LD7__LD7 0x0
197 MX27_PAD_LD8__LD8 0x0
198 MX27_PAD_LD9__LD9 0x0
199 MX27_PAD_LD10__LD10 0x0
200 MX27_PAD_LD11__LD11 0x0
201 MX27_PAD_LD12__LD12 0x0
202 MX27_PAD_LD13__LD13 0x0
203 MX27_PAD_LD14__LD14 0x0
204 MX27_PAD_LD15__LD15 0x0
205 MX27_PAD_LD16__LD16 0x0
206 MX27_PAD_LD17__LD17 0x0
207 MX27_PAD_CONTRAST__CONTRAST 0x0
208 MX27_PAD_OE_ACD__OE_ACD 0x0
209 MX27_PAD_HSYNC__HSYNC 0x0
210 MX27_PAD_VSYNC__VSYNC 0x0
211 >;
212 };
213
214 pinctrl_lcdreg: lcdreggrp {
215 fsl,pins = <
216 MX27_PAD_CLS__GPIO1_25 0x0
217 >;
218 };
219
220 pinctrl_sdhc1: sdhc1grp {
221 fsl,pins = <
222 MX27_PAD_SD1_CLK__SD1_CLK 0x0
223 MX27_PAD_SD1_CMD__SD1_CMD 0x0
224 MX27_PAD_SD1_D0__SD1_D0 0x0
225 MX27_PAD_SD1_D1__SD1_D1 0x0
226 MX27_PAD_SD1_D2__SD1_D2 0x0
227 MX27_PAD_SD1_D3__SD1_D3 0x0
228 >;
229 };
230
231 pinctrl_ssi1: ssi1grp {
232 fsl,pins = <
233 MX27_PAD_SSI4_CLK__SSI4_CLK 0x0
234 MX27_PAD_SSI4_FS__SSI4_FS 0x0
235 MX27_PAD_SSI4_RXDAT__SSI4_RXDAT 0x1
236 MX27_PAD_SSI4_TXDAT__SSI4_TXDAT 0x1
237 >;
238 };
239
240 pinctrl_touch: touchgrp {
241 fsl,pins = <
242 MX27_PAD_CSPI1_RDY__GPIO4_25 0x0 /* IRQ */
243 >;
244 };
245
246 pinctrl_uart1: uart1grp {
247 fsl,pins = <
248 MX27_PAD_UART1_TXD__UART1_TXD 0x0
249 MX27_PAD_UART1_RXD__UART1_RXD 0x0
250 MX27_PAD_UART1_CTS__UART1_CTS 0x0
251 MX27_PAD_UART1_RTS__UART1_RTS 0x0
252 >;
253 };
254
255 pinctrl_uart2: uart2grp {
256 fsl,pins = <
257 MX27_PAD_UART2_TXD__UART2_TXD 0x0
258 MX27_PAD_UART2_RXD__UART2_RXD 0x0
259 MX27_PAD_UART2_CTS__UART2_CTS 0x0
260 MX27_PAD_UART2_RTS__UART2_RTS 0x0
261 >;
262 };
263
264 pinctrl_uart3: uart3grp {
265 fsl,pins = <
266 MX27_PAD_UART3_TXD__UART3_TXD 0x0
267 MX27_PAD_UART3_RXD__UART3_RXD 0x0
268 MX27_PAD_UART3_CTS__UART3_CTS 0x0
269 MX27_PAD_UART3_RTS__UART3_RTS 0x0
270 >;
271 };
272 };
273};
diff --git a/arch/arm/boot/dts/imx27-pdk.dts b/arch/arm/boot/dts/imx27-pdk.dts
index 4c317716b510..49450dbbcab8 100644
--- a/arch/arm/boot/dts/imx27-pdk.dts
+++ b/arch/arm/boot/dts/imx27-pdk.dts
@@ -28,7 +28,7 @@
28 usbphy0: usbphy@0 { 28 usbphy0: usbphy@0 {
29 compatible = "usb-nop-xceiv"; 29 compatible = "usb-nop-xceiv";
30 reg = <0>; 30 reg = <0>;
31 clocks = <&clks 0>; 31 clocks = <&clks IMX27_CLK_DUMMY>;
32 clock-names = "main_clk"; 32 clock-names = "main_clk";
33 }; 33 };
34 }; 34 };
diff --git a/arch/arm/boot/dts/imx27-phytec-phycore-rdk.dts b/arch/arm/boot/dts/imx27-phytec-phycore-rdk.dts
index fe02bc7a24fd..538568b0de26 100644
--- a/arch/arm/boot/dts/imx27-phytec-phycore-rdk.dts
+++ b/arch/arm/boot/dts/imx27-phytec-phycore-rdk.dts
@@ -61,7 +61,7 @@
61 compatible = "usb-nop-xceiv"; 61 compatible = "usb-nop-xceiv";
62 reg = <2>; 62 reg = <2>;
63 vcc-supply = <&reg_5v0>; 63 vcc-supply = <&reg_5v0>;
64 clocks = <&clks 0>; 64 clocks = <&clks IMX27_CLK_DUMMY>;
65 clock-names = "main_clk"; 65 clock-names = "main_clk";
66 }; 66 };
67 }; 67 };
diff --git a/arch/arm/boot/dts/imx27-phytec-phycore-som.dtsi b/arch/arm/boot/dts/imx27-phytec-phycore-som.dtsi
index 31e9f7049f73..b4e955e3be8d 100644
--- a/arch/arm/boot/dts/imx27-phytec-phycore-som.dtsi
+++ b/arch/arm/boot/dts/imx27-phytec-phycore-som.dtsi
@@ -51,7 +51,7 @@
51 compatible = "usb-nop-xceiv"; 51 compatible = "usb-nop-xceiv";
52 reg = <0>; 52 reg = <0>;
53 vcc-supply = <&sw3_reg>; 53 vcc-supply = <&sw3_reg>;
54 clocks = <&clks 0>; 54 clocks = <&clks IMX27_CLK_DUMMY>;
55 clock-names = "main_clk"; 55 clock-names = "main_clk";
56 }; 56 };
57 }; 57 };
@@ -310,7 +310,6 @@
310&ssi1 { 310&ssi1 {
311 pinctrl-names = "default"; 311 pinctrl-names = "default";
312 pinctrl-0 = <&pinctrl_ssi1>; 312 pinctrl-0 = <&pinctrl_ssi1>;
313 fsl,mode = "i2s-slave";
314 status = "okay"; 313 status = "okay";
315}; 314};
316 315
diff --git a/arch/arm/boot/dts/imx27.dtsi b/arch/arm/boot/dts/imx27.dtsi
index a75555c39533..107d713e1cbe 100644
--- a/arch/arm/boot/dts/imx27.dtsi
+++ b/arch/arm/boot/dts/imx27.dtsi
@@ -11,9 +11,11 @@
11 11
12#include "skeleton.dtsi" 12#include "skeleton.dtsi"
13#include "imx27-pinfunc.h" 13#include "imx27-pinfunc.h"
14
15#include <dt-bindings/clock/imx27-clock.h>
16#include <dt-bindings/gpio/gpio.h>
14#include <dt-bindings/input/input.h> 17#include <dt-bindings/input/input.h>
15#include <dt-bindings/interrupt-controller/irq.h> 18#include <dt-bindings/interrupt-controller/irq.h>
16#include <dt-bindings/gpio/gpio.h>
17 19
18/ { 20/ {
19 aliases { 21 aliases {
@@ -68,7 +70,7 @@
68 399000 1450000 70 399000 1450000
69 >; 71 >;
70 clock-latency = <62500>; 72 clock-latency = <62500>;
71 clocks = <&clks 18>; 73 clocks = <&clks IMX27_CLK_CPU_DIV>;
72 voltage-tolerance = <5>; 74 voltage-tolerance = <5>;
73 }; 75 };
74 }; 76 };
@@ -91,7 +93,8 @@
91 compatible = "fsl,imx27-dma"; 93 compatible = "fsl,imx27-dma";
92 reg = <0x10001000 0x1000>; 94 reg = <0x10001000 0x1000>;
93 interrupts = <32>; 95 interrupts = <32>;
94 clocks = <&clks 50>, <&clks 70>; 96 clocks = <&clks IMX27_CLK_DMA_IPG_GATE>,
97 <&clks IMX27_CLK_DMA_AHB_GATE>;
95 clock-names = "ipg", "ahb"; 98 clock-names = "ipg", "ahb";
96 #dma-cells = <1>; 99 #dma-cells = <1>;
97 #dma-channels = <16>; 100 #dma-channels = <16>;
@@ -101,14 +104,15 @@
101 compatible = "fsl,imx27-wdt", "fsl,imx21-wdt"; 104 compatible = "fsl,imx27-wdt", "fsl,imx21-wdt";
102 reg = <0x10002000 0x1000>; 105 reg = <0x10002000 0x1000>;
103 interrupts = <27>; 106 interrupts = <27>;
104 clocks = <&clks 74>; 107 clocks = <&clks IMX27_CLK_WDOG_IPG_GATE>;
105 }; 108 };
106 109
107 gpt1: timer@10003000 { 110 gpt1: timer@10003000 {
108 compatible = "fsl,imx27-gpt", "fsl,imx1-gpt"; 111 compatible = "fsl,imx27-gpt", "fsl,imx1-gpt";
109 reg = <0x10003000 0x1000>; 112 reg = <0x10003000 0x1000>;
110 interrupts = <26>; 113 interrupts = <26>;
111 clocks = <&clks 46>, <&clks 61>; 114 clocks = <&clks IMX27_CLK_GPT1_IPG_GATE>,
115 <&clks IMX27_CLK_PER1_GATE>;
112 clock-names = "ipg", "per"; 116 clock-names = "ipg", "per";
113 }; 117 };
114 118
@@ -116,7 +120,8 @@
116 compatible = "fsl,imx27-gpt", "fsl,imx1-gpt"; 120 compatible = "fsl,imx27-gpt", "fsl,imx1-gpt";
117 reg = <0x10004000 0x1000>; 121 reg = <0x10004000 0x1000>;
118 interrupts = <25>; 122 interrupts = <25>;
119 clocks = <&clks 45>, <&clks 61>; 123 clocks = <&clks IMX27_CLK_GPT2_IPG_GATE>,
124 <&clks IMX27_CLK_PER1_GATE>;
120 clock-names = "ipg", "per"; 125 clock-names = "ipg", "per";
121 }; 126 };
122 127
@@ -124,7 +129,8 @@
124 compatible = "fsl,imx27-gpt", "fsl,imx1-gpt"; 129 compatible = "fsl,imx27-gpt", "fsl,imx1-gpt";
125 reg = <0x10005000 0x1000>; 130 reg = <0x10005000 0x1000>;
126 interrupts = <24>; 131 interrupts = <24>;
127 clocks = <&clks 44>, <&clks 61>; 132 clocks = <&clks IMX27_CLK_GPT3_IPG_GATE>,
133 <&clks IMX27_CLK_PER1_GATE>;
128 clock-names = "ipg", "per"; 134 clock-names = "ipg", "per";
129 }; 135 };
130 136
@@ -133,7 +139,8 @@
133 compatible = "fsl,imx27-pwm"; 139 compatible = "fsl,imx27-pwm";
134 reg = <0x10006000 0x1000>; 140 reg = <0x10006000 0x1000>;
135 interrupts = <23>; 141 interrupts = <23>;
136 clocks = <&clks 34>, <&clks 61>; 142 clocks = <&clks IMX27_CLK_PWM_IPG_GATE>,
143 <&clks IMX27_CLK_PER1_GATE>;
137 clock-names = "ipg", "per"; 144 clock-names = "ipg", "per";
138 }; 145 };
139 146
@@ -141,14 +148,14 @@
141 compatible = "fsl,imx27-kpp", "fsl,imx21-kpp"; 148 compatible = "fsl,imx27-kpp", "fsl,imx21-kpp";
142 reg = <0x10008000 0x1000>; 149 reg = <0x10008000 0x1000>;
143 interrupts = <21>; 150 interrupts = <21>;
144 clocks = <&clks 37>; 151 clocks = <&clks IMX27_CLK_KPP_IPG_GATE>;
145 status = "disabled"; 152 status = "disabled";
146 }; 153 };
147 154
148 owire: owire@10009000 { 155 owire: owire@10009000 {
149 compatible = "fsl,imx27-owire", "fsl,imx21-owire"; 156 compatible = "fsl,imx27-owire", "fsl,imx21-owire";
150 reg = <0x10009000 0x1000>; 157 reg = <0x10009000 0x1000>;
151 clocks = <&clks 35>; 158 clocks = <&clks IMX27_CLK_OWIRE_IPG_GATE>;
152 status = "disabled"; 159 status = "disabled";
153 }; 160 };
154 161
@@ -156,7 +163,8 @@
156 compatible = "fsl,imx27-uart", "fsl,imx21-uart"; 163 compatible = "fsl,imx27-uart", "fsl,imx21-uart";
157 reg = <0x1000a000 0x1000>; 164 reg = <0x1000a000 0x1000>;
158 interrupts = <20>; 165 interrupts = <20>;
159 clocks = <&clks 81>, <&clks 61>; 166 clocks = <&clks IMX27_CLK_UART1_IPG_GATE>,
167 <&clks IMX27_CLK_PER1_GATE>;
160 clock-names = "ipg", "per"; 168 clock-names = "ipg", "per";
161 status = "disabled"; 169 status = "disabled";
162 }; 170 };
@@ -165,7 +173,8 @@
165 compatible = "fsl,imx27-uart", "fsl,imx21-uart"; 173 compatible = "fsl,imx27-uart", "fsl,imx21-uart";
166 reg = <0x1000b000 0x1000>; 174 reg = <0x1000b000 0x1000>;
167 interrupts = <19>; 175 interrupts = <19>;
168 clocks = <&clks 80>, <&clks 61>; 176 clocks = <&clks IMX27_CLK_UART2_IPG_GATE>,
177 <&clks IMX27_CLK_PER1_GATE>;
169 clock-names = "ipg", "per"; 178 clock-names = "ipg", "per";
170 status = "disabled"; 179 status = "disabled";
171 }; 180 };
@@ -174,7 +183,8 @@
174 compatible = "fsl,imx27-uart", "fsl,imx21-uart"; 183 compatible = "fsl,imx27-uart", "fsl,imx21-uart";
175 reg = <0x1000c000 0x1000>; 184 reg = <0x1000c000 0x1000>;
176 interrupts = <18>; 185 interrupts = <18>;
177 clocks = <&clks 79>, <&clks 61>; 186 clocks = <&clks IMX27_CLK_UART3_IPG_GATE>,
187 <&clks IMX27_CLK_PER1_GATE>;
178 clock-names = "ipg", "per"; 188 clock-names = "ipg", "per";
179 status = "disabled"; 189 status = "disabled";
180 }; 190 };
@@ -183,7 +193,8 @@
183 compatible = "fsl,imx27-uart", "fsl,imx21-uart"; 193 compatible = "fsl,imx27-uart", "fsl,imx21-uart";
184 reg = <0x1000d000 0x1000>; 194 reg = <0x1000d000 0x1000>;
185 interrupts = <17>; 195 interrupts = <17>;
186 clocks = <&clks 78>, <&clks 61>; 196 clocks = <&clks IMX27_CLK_UART4_IPG_GATE>,
197 <&clks IMX27_CLK_PER1_GATE>;
187 clock-names = "ipg", "per"; 198 clock-names = "ipg", "per";
188 status = "disabled"; 199 status = "disabled";
189 }; 200 };
@@ -194,7 +205,8 @@
194 compatible = "fsl,imx27-cspi"; 205 compatible = "fsl,imx27-cspi";
195 reg = <0x1000e000 0x1000>; 206 reg = <0x1000e000 0x1000>;
196 interrupts = <16>; 207 interrupts = <16>;
197 clocks = <&clks 53>, <&clks 60>; 208 clocks = <&clks IMX27_CLK_CSPI1_IPG_GATE>,
209 <&clks IMX27_CLK_PER2_GATE>;
198 clock-names = "ipg", "per"; 210 clock-names = "ipg", "per";
199 status = "disabled"; 211 status = "disabled";
200 }; 212 };
@@ -205,7 +217,8 @@
205 compatible = "fsl,imx27-cspi"; 217 compatible = "fsl,imx27-cspi";
206 reg = <0x1000f000 0x1000>; 218 reg = <0x1000f000 0x1000>;
207 interrupts = <15>; 219 interrupts = <15>;
208 clocks = <&clks 52>, <&clks 60>; 220 clocks = <&clks IMX27_CLK_CSPI2_IPG_GATE>,
221 <&clks IMX27_CLK_PER2_GATE>;
209 clock-names = "ipg", "per"; 222 clock-names = "ipg", "per";
210 status = "disabled"; 223 status = "disabled";
211 }; 224 };
@@ -215,7 +228,7 @@
215 compatible = "fsl,imx27-ssi", "fsl,imx21-ssi"; 228 compatible = "fsl,imx27-ssi", "fsl,imx21-ssi";
216 reg = <0x10010000 0x1000>; 229 reg = <0x10010000 0x1000>;
217 interrupts = <14>; 230 interrupts = <14>;
218 clocks = <&clks 26>; 231 clocks = <&clks IMX27_CLK_SSI1_IPG_GATE>;
219 dmas = <&dma 12>, <&dma 13>, <&dma 14>, <&dma 15>; 232 dmas = <&dma 12>, <&dma 13>, <&dma 14>, <&dma 15>;
220 dma-names = "rx0", "tx0", "rx1", "tx1"; 233 dma-names = "rx0", "tx0", "rx1", "tx1";
221 fsl,fifo-depth = <8>; 234 fsl,fifo-depth = <8>;
@@ -227,7 +240,7 @@
227 compatible = "fsl,imx27-ssi", "fsl,imx21-ssi"; 240 compatible = "fsl,imx27-ssi", "fsl,imx21-ssi";
228 reg = <0x10011000 0x1000>; 241 reg = <0x10011000 0x1000>;
229 interrupts = <13>; 242 interrupts = <13>;
230 clocks = <&clks 25>; 243 clocks = <&clks IMX27_CLK_SSI2_IPG_GATE>;
231 dmas = <&dma 8>, <&dma 9>, <&dma 10>, <&dma 11>; 244 dmas = <&dma 8>, <&dma 9>, <&dma 10>, <&dma 11>;
232 dma-names = "rx0", "tx0", "rx1", "tx1"; 245 dma-names = "rx0", "tx0", "rx1", "tx1";
233 fsl,fifo-depth = <8>; 246 fsl,fifo-depth = <8>;
@@ -240,7 +253,7 @@
240 compatible = "fsl,imx27-i2c", "fsl,imx21-i2c"; 253 compatible = "fsl,imx27-i2c", "fsl,imx21-i2c";
241 reg = <0x10012000 0x1000>; 254 reg = <0x10012000 0x1000>;
242 interrupts = <12>; 255 interrupts = <12>;
243 clocks = <&clks 40>; 256 clocks = <&clks IMX27_CLK_I2C1_IPG_GATE>;
244 status = "disabled"; 257 status = "disabled";
245 }; 258 };
246 259
@@ -248,7 +261,8 @@
248 compatible = "fsl,imx27-mmc", "fsl,imx21-mmc"; 261 compatible = "fsl,imx27-mmc", "fsl,imx21-mmc";
249 reg = <0x10013000 0x1000>; 262 reg = <0x10013000 0x1000>;
250 interrupts = <11>; 263 interrupts = <11>;
251 clocks = <&clks 30>, <&clks 60>; 264 clocks = <&clks IMX27_CLK_SDHC1_IPG_GATE>,
265 <&clks IMX27_CLK_PER2_GATE>;
252 clock-names = "ipg", "per"; 266 clock-names = "ipg", "per";
253 dmas = <&dma 7>; 267 dmas = <&dma 7>;
254 dma-names = "rx-tx"; 268 dma-names = "rx-tx";
@@ -259,7 +273,8 @@
259 compatible = "fsl,imx27-mmc", "fsl,imx21-mmc"; 273 compatible = "fsl,imx27-mmc", "fsl,imx21-mmc";
260 reg = <0x10014000 0x1000>; 274 reg = <0x10014000 0x1000>;
261 interrupts = <10>; 275 interrupts = <10>;
262 clocks = <&clks 29>, <&clks 60>; 276 clocks = <&clks IMX27_CLK_SDHC2_IPG_GATE>,
277 <&clks IMX27_CLK_PER2_GATE>;
263 clock-names = "ipg", "per"; 278 clock-names = "ipg", "per";
264 dmas = <&dma 6>; 279 dmas = <&dma 6>;
265 dma-names = "rx-tx"; 280 dma-names = "rx-tx";
@@ -276,6 +291,7 @@
276 gpio1: gpio@10015000 { 291 gpio1: gpio@10015000 {
277 compatible = "fsl,imx27-gpio", "fsl,imx21-gpio"; 292 compatible = "fsl,imx27-gpio", "fsl,imx21-gpio";
278 reg = <0x10015000 0x100>; 293 reg = <0x10015000 0x100>;
294 clocks = <&clks IMX27_CLK_GPIO_IPG_GATE>;
279 interrupts = <8>; 295 interrupts = <8>;
280 gpio-controller; 296 gpio-controller;
281 #gpio-cells = <2>; 297 #gpio-cells = <2>;
@@ -286,6 +302,7 @@
286 gpio2: gpio@10015100 { 302 gpio2: gpio@10015100 {
287 compatible = "fsl,imx27-gpio", "fsl,imx21-gpio"; 303 compatible = "fsl,imx27-gpio", "fsl,imx21-gpio";
288 reg = <0x10015100 0x100>; 304 reg = <0x10015100 0x100>;
305 clocks = <&clks IMX27_CLK_GPIO_IPG_GATE>;
289 interrupts = <8>; 306 interrupts = <8>;
290 gpio-controller; 307 gpio-controller;
291 #gpio-cells = <2>; 308 #gpio-cells = <2>;
@@ -296,6 +313,7 @@
296 gpio3: gpio@10015200 { 313 gpio3: gpio@10015200 {
297 compatible = "fsl,imx27-gpio", "fsl,imx21-gpio"; 314 compatible = "fsl,imx27-gpio", "fsl,imx21-gpio";
298 reg = <0x10015200 0x100>; 315 reg = <0x10015200 0x100>;
316 clocks = <&clks IMX27_CLK_GPIO_IPG_GATE>;
299 interrupts = <8>; 317 interrupts = <8>;
300 gpio-controller; 318 gpio-controller;
301 #gpio-cells = <2>; 319 #gpio-cells = <2>;
@@ -306,6 +324,7 @@
306 gpio4: gpio@10015300 { 324 gpio4: gpio@10015300 {
307 compatible = "fsl,imx27-gpio", "fsl,imx21-gpio"; 325 compatible = "fsl,imx27-gpio", "fsl,imx21-gpio";
308 reg = <0x10015300 0x100>; 326 reg = <0x10015300 0x100>;
327 clocks = <&clks IMX27_CLK_GPIO_IPG_GATE>;
309 interrupts = <8>; 328 interrupts = <8>;
310 gpio-controller; 329 gpio-controller;
311 #gpio-cells = <2>; 330 #gpio-cells = <2>;
@@ -316,6 +335,7 @@
316 gpio5: gpio@10015400 { 335 gpio5: gpio@10015400 {
317 compatible = "fsl,imx27-gpio", "fsl,imx21-gpio"; 336 compatible = "fsl,imx27-gpio", "fsl,imx21-gpio";
318 reg = <0x10015400 0x100>; 337 reg = <0x10015400 0x100>;
338 clocks = <&clks IMX27_CLK_GPIO_IPG_GATE>;
319 interrupts = <8>; 339 interrupts = <8>;
320 gpio-controller; 340 gpio-controller;
321 #gpio-cells = <2>; 341 #gpio-cells = <2>;
@@ -326,6 +346,7 @@
326 gpio6: gpio@10015500 { 346 gpio6: gpio@10015500 {
327 compatible = "fsl,imx27-gpio", "fsl,imx21-gpio"; 347 compatible = "fsl,imx27-gpio", "fsl,imx21-gpio";
328 reg = <0x10015500 0x100>; 348 reg = <0x10015500 0x100>;
349 clocks = <&clks IMX27_CLK_GPIO_IPG_GATE>;
329 interrupts = <8>; 350 interrupts = <8>;
330 gpio-controller; 351 gpio-controller;
331 #gpio-cells = <2>; 352 #gpio-cells = <2>;
@@ -337,7 +358,7 @@
337 audmux: audmux@10016000 { 358 audmux: audmux@10016000 {
338 compatible = "fsl,imx27-audmux", "fsl,imx21-audmux"; 359 compatible = "fsl,imx27-audmux", "fsl,imx21-audmux";
339 reg = <0x10016000 0x1000>; 360 reg = <0x10016000 0x1000>;
340 clocks = <&clks 0>; 361 clocks = <&clks IMX27_CLK_DUMMY>;
341 clock-names = "audmux"; 362 clock-names = "audmux";
342 status = "disabled"; 363 status = "disabled";
343 }; 364 };
@@ -348,7 +369,8 @@
348 compatible = "fsl,imx27-cspi"; 369 compatible = "fsl,imx27-cspi";
349 reg = <0x10017000 0x1000>; 370 reg = <0x10017000 0x1000>;
350 interrupts = <6>; 371 interrupts = <6>;
351 clocks = <&clks 51>, <&clks 60>; 372 clocks = <&clks IMX27_CLK_CSPI3_IPG_GATE>,
373 <&clks IMX27_CLK_PER2_GATE>;
352 clock-names = "ipg", "per"; 374 clock-names = "ipg", "per";
353 status = "disabled"; 375 status = "disabled";
354 }; 376 };
@@ -357,7 +379,8 @@
357 compatible = "fsl,imx27-gpt", "fsl,imx1-gpt"; 379 compatible = "fsl,imx27-gpt", "fsl,imx1-gpt";
358 reg = <0x10019000 0x1000>; 380 reg = <0x10019000 0x1000>;
359 interrupts = <4>; 381 interrupts = <4>;
360 clocks = <&clks 43>, <&clks 61>; 382 clocks = <&clks IMX27_CLK_GPT4_IPG_GATE>,
383 <&clks IMX27_CLK_PER1_GATE>;
361 clock-names = "ipg", "per"; 384 clock-names = "ipg", "per";
362 }; 385 };
363 386
@@ -365,7 +388,8 @@
365 compatible = "fsl,imx27-gpt", "fsl,imx1-gpt"; 388 compatible = "fsl,imx27-gpt", "fsl,imx1-gpt";
366 reg = <0x1001a000 0x1000>; 389 reg = <0x1001a000 0x1000>;
367 interrupts = <3>; 390 interrupts = <3>;
368 clocks = <&clks 42>, <&clks 61>; 391 clocks = <&clks IMX27_CLK_GPT5_IPG_GATE>,
392 <&clks IMX27_CLK_PER1_GATE>;
369 clock-names = "ipg", "per"; 393 clock-names = "ipg", "per";
370 }; 394 };
371 395
@@ -373,7 +397,8 @@
373 compatible = "fsl,imx27-uart", "fsl,imx21-uart"; 397 compatible = "fsl,imx27-uart", "fsl,imx21-uart";
374 reg = <0x1001b000 0x1000>; 398 reg = <0x1001b000 0x1000>;
375 interrupts = <49>; 399 interrupts = <49>;
376 clocks = <&clks 77>, <&clks 61>; 400 clocks = <&clks IMX27_CLK_UART5_IPG_GATE>,
401 <&clks IMX27_CLK_PER1_GATE>;
377 clock-names = "ipg", "per"; 402 clock-names = "ipg", "per";
378 status = "disabled"; 403 status = "disabled";
379 }; 404 };
@@ -382,7 +407,8 @@
382 compatible = "fsl,imx27-uart", "fsl,imx21-uart"; 407 compatible = "fsl,imx27-uart", "fsl,imx21-uart";
383 reg = <0x1001c000 0x1000>; 408 reg = <0x1001c000 0x1000>;
384 interrupts = <48>; 409 interrupts = <48>;
385 clocks = <&clks 78>, <&clks 61>; 410 clocks = <&clks IMX27_CLK_UART6_IPG_GATE>,
411 <&clks IMX27_CLK_PER1_GATE>;
386 clock-names = "ipg", "per"; 412 clock-names = "ipg", "per";
387 status = "disabled"; 413 status = "disabled";
388 }; 414 };
@@ -393,7 +419,7 @@
393 compatible = "fsl,imx27-i2c", "fsl,imx21-i2c"; 419 compatible = "fsl,imx27-i2c", "fsl,imx21-i2c";
394 reg = <0x1001d000 0x1000>; 420 reg = <0x1001d000 0x1000>;
395 interrupts = <1>; 421 interrupts = <1>;
396 clocks = <&clks 39>; 422 clocks = <&clks IMX27_CLK_I2C2_IPG_GATE>;
397 status = "disabled"; 423 status = "disabled";
398 }; 424 };
399 425
@@ -401,7 +427,8 @@
401 compatible = "fsl,imx27-mmc", "fsl,imx21-mmc"; 427 compatible = "fsl,imx27-mmc", "fsl,imx21-mmc";
402 reg = <0x1001e000 0x1000>; 428 reg = <0x1001e000 0x1000>;
403 interrupts = <9>; 429 interrupts = <9>;
404 clocks = <&clks 28>, <&clks 60>; 430 clocks = <&clks IMX27_CLK_SDHC3_IPG_GATE>,
431 <&clks IMX27_CLK_PER2_GATE>;
405 clock-names = "ipg", "per"; 432 clock-names = "ipg", "per";
406 dmas = <&dma 36>; 433 dmas = <&dma 36>;
407 dma-names = "rx-tx"; 434 dma-names = "rx-tx";
@@ -412,7 +439,8 @@
412 compatible = "fsl,imx27-gpt", "fsl,imx1-gpt"; 439 compatible = "fsl,imx27-gpt", "fsl,imx1-gpt";
413 reg = <0x1001f000 0x1000>; 440 reg = <0x1001f000 0x1000>;
414 interrupts = <2>; 441 interrupts = <2>;
415 clocks = <&clks 41>, <&clks 61>; 442 clocks = <&clks IMX27_CLK_GPT6_IPG_GATE>,
443 <&clks IMX27_CLK_PER1_GATE>;
416 clock-names = "ipg", "per"; 444 clock-names = "ipg", "per";
417 }; 445 };
418 }; 446 };
@@ -428,7 +456,9 @@
428 compatible = "fsl,imx27-fb", "fsl,imx21-fb"; 456 compatible = "fsl,imx27-fb", "fsl,imx21-fb";
429 interrupts = <61>; 457 interrupts = <61>;
430 reg = <0x10021000 0x1000>; 458 reg = <0x10021000 0x1000>;
431 clocks = <&clks 36>, <&clks 65>, <&clks 59>; 459 clocks = <&clks IMX27_CLK_LCDC_IPG_GATE>,
460 <&clks IMX27_CLK_LCDC_AHB_GATE>,
461 <&clks IMX27_CLK_PER3_GATE>;
432 clock-names = "ipg", "ahb", "per"; 462 clock-names = "ipg", "ahb", "per";
433 status = "disabled"; 463 status = "disabled";
434 }; 464 };
@@ -437,7 +467,8 @@
437 compatible = "fsl,imx27-vpu"; 467 compatible = "fsl,imx27-vpu";
438 reg = <0x10023000 0x0200>; 468 reg = <0x10023000 0x0200>;
439 interrupts = <53>; 469 interrupts = <53>;
440 clocks = <&clks 57>, <&clks 66>; 470 clocks = <&clks IMX27_CLK_VPU_BAUD_GATE>,
471 <&clks IMX27_CLK_VPU_AHB_GATE>;
441 clock-names = "per", "ahb"; 472 clock-names = "per", "ahb";
442 iram = <&iram>; 473 iram = <&iram>;
443 }; 474 };
@@ -446,7 +477,7 @@
446 compatible = "fsl,imx27-usb"; 477 compatible = "fsl,imx27-usb";
447 reg = <0x10024000 0x200>; 478 reg = <0x10024000 0x200>;
448 interrupts = <56>; 479 interrupts = <56>;
449 clocks = <&clks 75>; 480 clocks = <&clks IMX27_CLK_USB_IPG_GATE>;
450 fsl,usbmisc = <&usbmisc 0>; 481 fsl,usbmisc = <&usbmisc 0>;
451 status = "disabled"; 482 status = "disabled";
452 }; 483 };
@@ -455,7 +486,7 @@
455 compatible = "fsl,imx27-usb"; 486 compatible = "fsl,imx27-usb";
456 reg = <0x10024200 0x200>; 487 reg = <0x10024200 0x200>;
457 interrupts = <54>; 488 interrupts = <54>;
458 clocks = <&clks 75>; 489 clocks = <&clks IMX27_CLK_USB_IPG_GATE>;
459 fsl,usbmisc = <&usbmisc 1>; 490 fsl,usbmisc = <&usbmisc 1>;
460 status = "disabled"; 491 status = "disabled";
461 }; 492 };
@@ -464,7 +495,7 @@
464 compatible = "fsl,imx27-usb"; 495 compatible = "fsl,imx27-usb";
465 reg = <0x10024400 0x200>; 496 reg = <0x10024400 0x200>;
466 interrupts = <55>; 497 interrupts = <55>;
467 clocks = <&clks 75>; 498 clocks = <&clks IMX27_CLK_USB_IPG_GATE>;
468 fsl,usbmisc = <&usbmisc 2>; 499 fsl,usbmisc = <&usbmisc 2>;
469 status = "disabled"; 500 status = "disabled";
470 }; 501 };
@@ -473,14 +504,15 @@
473 #index-cells = <1>; 504 #index-cells = <1>;
474 compatible = "fsl,imx27-usbmisc"; 505 compatible = "fsl,imx27-usbmisc";
475 reg = <0x10024600 0x200>; 506 reg = <0x10024600 0x200>;
476 clocks = <&clks 62>; 507 clocks = <&clks IMX27_CLK_USB_AHB_GATE>;
477 }; 508 };
478 509
479 sahara2: sahara@10025000 { 510 sahara2: sahara@10025000 {
480 compatible = "fsl,imx27-sahara"; 511 compatible = "fsl,imx27-sahara";
481 reg = <0x10025000 0x1000>; 512 reg = <0x10025000 0x1000>;
482 interrupts = <59>; 513 interrupts = <59>;
483 clocks = <&clks 32>, <&clks 64>; 514 clocks = <&clks IMX27_CLK_SAHARA_IPG_GATE>,
515 <&clks IMX27_CLK_SAHARA_AHB_GATE>;
484 clock-names = "ipg", "ahb"; 516 clock-names = "ipg", "ahb";
485 }; 517 };
486 518
@@ -494,14 +526,15 @@
494 compatible = "fsl,imx27-iim"; 526 compatible = "fsl,imx27-iim";
495 reg = <0x10028000 0x1000>; 527 reg = <0x10028000 0x1000>;
496 interrupts = <62>; 528 interrupts = <62>;
497 clocks = <&clks 38>; 529 clocks = <&clks IMX27_CLK_IIM_IPG_GATE>;
498 }; 530 };
499 531
500 fec: ethernet@1002b000 { 532 fec: ethernet@1002b000 {
501 compatible = "fsl,imx27-fec"; 533 compatible = "fsl,imx27-fec";
502 reg = <0x1002b000 0x4000>; 534 reg = <0x1002b000 0x4000>;
503 interrupts = <50>; 535 interrupts = <50>;
504 clocks = <&clks 48>, <&clks 67>; 536 clocks = <&clks IMX27_CLK_FEC_IPG_GATE>,
537 <&clks IMX27_CLK_FEC_AHB_GATE>;
505 clock-names = "ipg", "ahb"; 538 clock-names = "ipg", "ahb";
506 status = "disabled"; 539 status = "disabled";
507 }; 540 };
@@ -513,7 +546,7 @@
513 compatible = "fsl,imx27-nand"; 546 compatible = "fsl,imx27-nand";
514 reg = <0xd8000000 0x1000>; 547 reg = <0xd8000000 0x1000>;
515 interrupts = <29>; 548 interrupts = <29>;
516 clocks = <&clks 54>; 549 clocks = <&clks IMX27_CLK_NFC_BAUD_GATE>;
517 status = "disabled"; 550 status = "disabled";
518 }; 551 };
519 552
@@ -522,7 +555,7 @@
522 #size-cells = <1>; 555 #size-cells = <1>;
523 compatible = "fsl,imx27-weim"; 556 compatible = "fsl,imx27-weim";
524 reg = <0xd8002000 0x1000>; 557 reg = <0xd8002000 0x1000>;
525 clocks = <&clks 0>; 558 clocks = <&clks IMX27_CLK_EMI_AHB_GATE>;
526 ranges = < 559 ranges = <
527 0 0 0xc0000000 0x08000000 560 0 0 0xc0000000 0x08000000
528 1 0 0xc8000000 0x08000000 561 1 0 0xc8000000 0x08000000
diff --git a/arch/arm/boot/dts/imx28-cfa10036.dts b/arch/arm/boot/dts/imx28-cfa10036.dts
index ae7c3390e65a..b04b6b8850a7 100644
--- a/arch/arm/boot/dts/imx28-cfa10036.dts
+++ b/arch/arm/boot/dts/imx28-cfa10036.dts
@@ -53,6 +53,17 @@
53 fsl,pull-up = <MXS_PULL_DISABLE>; 53 fsl,pull-up = <MXS_PULL_DISABLE>;
54 }; 54 };
55 55
56 mmc_pwr_cfa10036: mmc_pwr_cfa10036@0 {
57 reg = <0>;
58 fsl,pinmux-ids = <
59 0x31c3 /*
60 MX28_PAD_PWM3__GPIO_3_28 */
61 >;
62 fsl,drive-strength = <0>;
63 fsl,voltage = <1>;
64 fsl,pull-up = <0>;
65 };
66
56 }; 67 };
57 68
58 ssp0: ssp@80010000 { 69 ssp0: ssp@80010000 {
@@ -60,6 +71,7 @@
60 pinctrl-names = "default"; 71 pinctrl-names = "default";
61 pinctrl-0 = <&mmc0_4bit_pins_a 72 pinctrl-0 = <&mmc0_4bit_pins_a
62 &mmc0_cd_cfg &mmc0_sck_cfg>; 73 &mmc0_cd_cfg &mmc0_sck_cfg>;
74 vmmc-supply = <&reg_vddio_sd0>;
63 bus-width = <4>; 75 bus-width = <4>;
64 status = "okay"; 76 status = "okay";
65 }; 77 };
@@ -116,4 +128,14 @@
116 default-state = "on"; 128 default-state = "on";
117 }; 129 };
118 }; 130 };
131
132 reg_vddio_sd0: vddio-sd0 {
133 compatible = "regulator-fixed";
134 pinctrl-names = "default";
135 pinctrl-0 = <&mmc_pwr_cfa10036>;
136 regulator-name = "vddio-sd0";
137 regulator-min-microvolt = <3300000>;
138 regulator-max-microvolt = <3300000>;
139 gpio = <&gpio3 28 0>;
140 };
119}; 141};
diff --git a/arch/arm/boot/dts/imx28-m28.dtsi b/arch/arm/boot/dts/imx28-m28.dtsi
new file mode 100644
index 000000000000..759cc56253dd
--- /dev/null
+++ b/arch/arm/boot/dts/imx28-m28.dtsi
@@ -0,0 +1,87 @@
1/*
2 * Copyright (C) 2014 Marek Vasut <marex@denx.de>
3 *
4 * The code contained herein is licensed under the GNU General Public
5 * License. You may obtain a copy of the GNU General Public License
6 * Version 2 or later at the following locations:
7 *
8 * http://www.opensource.org/licenses/gpl-license.html
9 * http://www.gnu.org/copyleft/gpl.html
10 */
11
12#include "imx28.dtsi"
13
14/ {
15 model = "DENX M28";
16 compatible = "denx,m28", "fsl,imx28";
17
18 memory {
19 reg = <0x40000000 0x08000000>;
20 };
21
22 apb@80000000 {
23 apbh@80000000 {
24 gpmi-nand@8000c000 {
25 #address-cells = <1>;
26 #size-cells = <1>;
27 pinctrl-names = "default";
28 pinctrl-0 = <&gpmi_pins_a &gpmi_status_cfg>;
29 status = "okay";
30
31 partition@0 {
32 label = "bootloader";
33 reg = <0x00000000 0x00300000>;
34 read-only;
35 };
36
37 partition@1 {
38 label = "environment";
39 reg = <0x00300000 0x00080000>;
40 };
41
42 partition@2 {
43 label = "redundant-environment";
44 reg = <0x00380000 0x00080000>;
45 };
46
47 partition@3 {
48 label = "kernel";
49 reg = <0x00400000 0x00400000>;
50 };
51
52 partition@4 {
53 label = "filesystem";
54 reg = <0x00800000 0x0f800000>;
55 };
56 };
57 };
58
59 apbx@80040000 {
60 i2c0: i2c@80058000 {
61 pinctrl-names = "default";
62 pinctrl-0 = <&i2c0_pins_a>;
63 status = "okay";
64
65 rtc: rtc@68 {
66 compatible = "stm,m41t62";
67 reg = <0x68>;
68 };
69 };
70 };
71 };
72
73 regulators {
74 compatible = "simple-bus";
75 #address-cells = <1>;
76 #size-cells = <0>;
77
78 reg_3p3v: regulator@0 {
79 compatible = "regulator-fixed";
80 reg = <0>;
81 regulator-name = "3P3V";
82 regulator-min-microvolt = <3300000>;
83 regulator-max-microvolt = <3300000>;
84 regulator-always-on;
85 };
86 };
87};
diff --git a/arch/arm/boot/dts/imx28-m28evk.dts b/arch/arm/boot/dts/imx28-m28evk.dts
index f0ad7b9b9d9a..b3c09ae3b928 100644
--- a/arch/arm/boot/dts/imx28-m28evk.dts
+++ b/arch/arm/boot/dts/imx28-m28evk.dts
@@ -10,52 +10,14 @@
10 */ 10 */
11 11
12/dts-v1/; 12/dts-v1/;
13#include "imx28.dtsi" 13#include "imx28-m28.dtsi"
14 14
15/ { 15/ {
16 model = "DENX M28EVK"; 16 model = "DENX M28EVK";
17 compatible = "denx,m28evk", "fsl,imx28"; 17 compatible = "denx,m28evk", "fsl,imx28";
18 18
19 memory {
20 reg = <0x40000000 0x08000000>;
21 };
22
23 apb@80000000 { 19 apb@80000000 {
24 apbh@80000000 { 20 apbh@80000000 {
25 gpmi-nand@8000c000 {
26 #address-cells = <1>;
27 #size-cells = <1>;
28 pinctrl-names = "default";
29 pinctrl-0 = <&gpmi_pins_a &gpmi_status_cfg>;
30 status = "okay";
31
32 partition@0 {
33 label = "bootloader";
34 reg = <0x00000000 0x00300000>;
35 read-only;
36 };
37
38 partition@1 {
39 label = "environment";
40 reg = <0x00300000 0x00080000>;
41 };
42
43 partition@2 {
44 label = "redundant-environment";
45 reg = <0x00380000 0x00080000>;
46 };
47
48 partition@3 {
49 label = "kernel";
50 reg = <0x00400000 0x00400000>;
51 };
52
53 partition@4 {
54 label = "filesystem";
55 reg = <0x00800000 0x0f800000>;
56 };
57 };
58
59 ssp0: ssp@80010000 { 21 ssp0: ssp@80010000 {
60 compatible = "fsl,imx28-mmc"; 22 compatible = "fsl,imx28-mmc";
61 pinctrl-names = "default"; 23 pinctrl-names = "default";
@@ -175,10 +137,6 @@
175 }; 137 };
176 138
177 i2c0: i2c@80058000 { 139 i2c0: i2c@80058000 {
178 pinctrl-names = "default";
179 pinctrl-0 = <&i2c0_pins_a>;
180 status = "okay";
181
182 sgtl5000: codec@0a { 140 sgtl5000: codec@0a {
183 compatible = "fsl,sgtl5000"; 141 compatible = "fsl,sgtl5000";
184 reg = <0x0a>; 142 reg = <0x0a>;
@@ -192,11 +150,6 @@
192 reg = <0x51>; 150 reg = <0x51>;
193 pagesize = <32>; 151 pagesize = <32>;
194 }; 152 };
195
196 rtc: rtc@68 {
197 compatible = "stm,m41t62";
198 reg = <0x68>;
199 };
200 }; 153 };
201 154
202 lradc@80050000 { 155 lradc@80050000 {
@@ -284,19 +237,6 @@
284 }; 237 };
285 238
286 regulators { 239 regulators {
287 compatible = "simple-bus";
288 #address-cells = <1>;
289 #size-cells = <0>;
290
291 reg_3p3v: regulator@0 {
292 compatible = "regulator-fixed";
293 reg = <0>;
294 regulator-name = "3P3V";
295 regulator-min-microvolt = <3300000>;
296 regulator-max-microvolt = <3300000>;
297 regulator-always-on;
298 };
299
300 reg_vddio_sd0: regulator@1 { 240 reg_vddio_sd0: regulator@1 {
301 compatible = "regulator-fixed"; 241 compatible = "regulator-fixed";
302 reg = <1>; 242 reg = <1>;
diff --git a/arch/arm/boot/dts/imx35-eukrea-mbimxsd35-baseboard.dts b/arch/arm/boot/dts/imx35-eukrea-mbimxsd35-baseboard.dts
index f04ae91eea89..75b036700d31 100644
--- a/arch/arm/boot/dts/imx35-eukrea-mbimxsd35-baseboard.dts
+++ b/arch/arm/boot/dts/imx35-eukrea-mbimxsd35-baseboard.dts
@@ -133,7 +133,6 @@
133 133
134&ssi1 { 134&ssi1 {
135 codec-handle = <&tlv320aic23>; 135 codec-handle = <&tlv320aic23>;
136 fsl,mode = "i2s-slave";
137 status = "okay"; 136 status = "okay";
138}; 137};
139 138
diff --git a/arch/arm/boot/dts/imx35.dtsi b/arch/arm/boot/dts/imx35.dtsi
index 4759abb49436..442e216ca9d9 100644
--- a/arch/arm/boot/dts/imx35.dtsi
+++ b/arch/arm/boot/dts/imx35.dtsi
@@ -193,6 +193,14 @@
193 #clock-cells = <1>; 193 #clock-cells = <1>;
194 }; 194 };
195 195
196 gpt: timer@53f90000 {
197 compatible = "fsl,imx35-gpt", "fsl,imx31-gpt";
198 reg = <0x53f90000 0x4000>;
199 interrupts = <29>;
200 clocks = <&clks 9>, <&clks 50>;
201 clock-names = "ipg", "per";
202 };
203
196 gpio3: gpio@53fa4000 { 204 gpio3: gpio@53fa4000 {
197 compatible = "fsl,imx35-gpio", "fsl,imx31-gpio"; 205 compatible = "fsl,imx35-gpio", "fsl,imx31-gpio";
198 reg = <0x53fa4000 0x4000>; 206 reg = <0x53fa4000 0x4000>;
diff --git a/arch/arm/boot/dts/imx50.dtsi b/arch/arm/boot/dts/imx50.dtsi
index 6a201cf54366..c0e0f60ab6b2 100644
--- a/arch/arm/boot/dts/imx50.dtsi
+++ b/arch/arm/boot/dts/imx50.dtsi
@@ -151,8 +151,10 @@
151 reg = <0x50014000 0x4000>; 151 reg = <0x50014000 0x4000>;
152 interrupts = <30>; 152 interrupts = <30>;
153 clocks = <&clks IMX5_CLK_SSI2_IPG_GATE>; 153 clocks = <&clks IMX5_CLK_SSI2_IPG_GATE>;
154 dmas = <&sdma 24 1 0>,
155 <&sdma 25 1 0>;
156 dma-names = "rx", "tx";
154 fsl,fifo-depth = <15>; 157 fsl,fifo-depth = <15>;
155 fsl,ssi-dma-events = <25 24 23 22>; /* TX0 RX0 TX1 RX1 */
156 status = "disabled"; 158 status = "disabled";
157 }; 159 };
158 160
@@ -457,8 +459,10 @@
457 reg = <0x63fcc000 0x4000>; 459 reg = <0x63fcc000 0x4000>;
458 interrupts = <29>; 460 interrupts = <29>;
459 clocks = <&clks IMX5_CLK_SSI1_IPG_GATE>; 461 clocks = <&clks IMX5_CLK_SSI1_IPG_GATE>;
462 dmas = <&sdma 28 0 0>,
463 <&sdma 29 0 0>;
464 dma-names = "rx", "tx";
460 fsl,fifo-depth = <15>; 465 fsl,fifo-depth = <15>;
461 fsl,ssi-dma-events = <29 28 27 26>; /* TX0 RX0 TX1 RX1 */
462 status = "disabled"; 466 status = "disabled";
463 }; 467 };
464 468
diff --git a/arch/arm/boot/dts/imx51-babbage.dts b/arch/arm/boot/dts/imx51-babbage.dts
index 181d77fa2fa6..56569cecaa78 100644
--- a/arch/arm/boot/dts/imx51-babbage.dts
+++ b/arch/arm/boot/dts/imx51-babbage.dts
@@ -203,6 +203,7 @@
203 reg = <0>; 203 reg = <0>;
204 interrupt-parent = <&gpio1>; 204 interrupt-parent = <&gpio1>;
205 interrupts = <8 IRQ_TYPE_LEVEL_HIGH>; 205 interrupts = <8 IRQ_TYPE_LEVEL_HIGH>;
206 fsl,mc13xxx-uses-rtc;
206 207
207 regulators { 208 regulators {
208 sw1_reg: sw1 { 209 sw1_reg: sw1 {
@@ -392,7 +393,6 @@
392}; 393};
393 394
394&ssi2 { 395&ssi2 {
395 fsl,mode = "i2s-slave";
396 status = "okay"; 396 status = "okay";
397}; 397};
398 398
diff --git a/arch/arm/boot/dts/imx51-eukrea-mbimxsd51-baseboard.dts b/arch/arm/boot/dts/imx51-eukrea-mbimxsd51-baseboard.dts
index 31cfb7f2b02e..34599c547459 100644
--- a/arch/arm/boot/dts/imx51-eukrea-mbimxsd51-baseboard.dts
+++ b/arch/arm/boot/dts/imx51-eukrea-mbimxsd51-baseboard.dts
@@ -255,7 +255,6 @@
255 255
256&ssi2 { 256&ssi2 {
257 codec-handle = <&tlv320aic23>; 257 codec-handle = <&tlv320aic23>;
258 fsl,mode = "i2s-slave";
259 status = "okay"; 258 status = "okay";
260}; 259};
261 260
diff --git a/arch/arm/boot/dts/imx51.dtsi b/arch/arm/boot/dts/imx51.dtsi
index bebbf3ba0d5e..17c05a6fa776 100644
--- a/arch/arm/boot/dts/imx51.dtsi
+++ b/arch/arm/boot/dts/imx51.dtsi
@@ -218,7 +218,6 @@
218 <&sdma 25 1 0>; 218 <&sdma 25 1 0>;
219 dma-names = "rx", "tx"; 219 dma-names = "rx", "tx";
220 fsl,fifo-depth = <15>; 220 fsl,fifo-depth = <15>;
221 fsl,ssi-dma-events = <25 24 23 22>; /* TX0 RX0 TX1 RX1 */
222 status = "disabled"; 221 status = "disabled";
223 }; 222 };
224 223
@@ -508,7 +507,6 @@
508 <&sdma 29 0 0>; 507 <&sdma 29 0 0>;
509 dma-names = "rx", "tx"; 508 dma-names = "rx", "tx";
510 fsl,fifo-depth = <15>; 509 fsl,fifo-depth = <15>;
511 fsl,ssi-dma-events = <29 28 27 26>; /* TX0 RX0 TX1 RX1 */
512 status = "disabled"; 510 status = "disabled";
513 }; 511 };
514 512
@@ -564,7 +562,6 @@
564 <&sdma 47 0 0>; 562 <&sdma 47 0 0>;
565 dma-names = "rx", "tx"; 563 dma-names = "rx", "tx";
566 fsl,fifo-depth = <15>; 564 fsl,fifo-depth = <15>;
567 fsl,ssi-dma-events = <47 46 37 35>; /* TX0 RX0 TX1 RX1 */
568 status = "disabled"; 565 status = "disabled";
569 }; 566 };
570 567
diff --git a/arch/arm/boot/dts/imx53-m53.dtsi b/arch/arm/boot/dts/imx53-m53.dtsi
new file mode 100644
index 000000000000..87a7fc709c2d
--- /dev/null
+++ b/arch/arm/boot/dts/imx53-m53.dtsi
@@ -0,0 +1,140 @@
1/*
2 * Copyright (C) 2014 Marek Vasut <marex@denx.de>
3 *
4 * The code contained herein is licensed under the GNU General Public
5 * License. You may obtain a copy of the GNU General Public License
6 * Version 2 or later at the following locations:
7 *
8 * http://www.opensource.org/licenses/gpl-license.html
9 * http://www.gnu.org/copyleft/gpl.html
10 */
11
12#include "imx53.dtsi"
13
14/ {
15 model = "DENX M53";
16 compatible = "denx,imx53-m53", "fsl,imx53";
17
18 memory {
19 reg = <0x70000000 0x20000000>,
20 <0xb0000000 0x20000000>;
21 };
22
23 regulators {
24 compatible = "simple-bus";
25 #address-cells = <1>;
26 #size-cells = <0>;
27
28 reg_3p2v: regulator@0 {
29 compatible = "regulator-fixed";
30 reg = <0>;
31 regulator-name = "3P2V";
32 regulator-min-microvolt = <3200000>;
33 regulator-max-microvolt = <3200000>;
34 regulator-always-on;
35 };
36
37 reg_backlight: regulator@1 {
38 compatible = "regulator-fixed";
39 reg = <1>;
40 regulator-name = "lcd-supply";
41 regulator-min-microvolt = <3200000>;
42 regulator-max-microvolt = <3200000>;
43 regulator-always-on;
44 };
45 };
46};
47
48&i2c2 {
49 pinctrl-names = "default";
50 pinctrl-0 = <&pinctrl_i2c2>;
51 clock-frequency = <400000>;
52 status = "okay";
53
54 stmpe610@41 {
55 compatible = "st,stmpe610";
56 #address-cells = <1>;
57 #size-cells = <0>;
58 reg = <0x41>;
59 id = <0>;
60 blocks = <0x5>;
61 interrupts = <6 0x0>;
62 interrupt-parent = <&gpio7>;
63 irq-trigger = <0x1>;
64
65 stmpe_touchscreen {
66 compatible = "st,stmpe-ts";
67 reg = <0>;
68 st,sample-time = <4>;
69 st,mod-12b = <1>;
70 st,ref-sel = <0>;
71 st,adc-freq = <1>;
72 st,ave-ctrl = <3>;
73 st,touch-det-delay = <3>;
74 st,settling = <4>;
75 st,fraction-z = <7>;
76 st,i-drive = <1>;
77 };
78 };
79
80 eeprom: eeprom@50 {
81 compatible = "atmel,24c128";
82 reg = <0x50>;
83 pagesize = <32>;
84 };
85
86 rtc: rtc@68 {
87 compatible = "stm,m41t62";
88 reg = <0x68>;
89 };
90};
91
92&iomuxc {
93 pinctrl-names = "default";
94 pinctrl-0 = <&pinctrl_hog>;
95
96 imx53-m53evk {
97 pinctrl_hog: hoggrp {
98 fsl,pins = <
99 MX53_PAD_GPIO_0__CCM_SSI_EXT1_CLK 0x80000000
100 MX53_PAD_EIM_EB3__GPIO2_31 0x80000000
101 MX53_PAD_PATA_DA_0__GPIO7_6 0x80000000
102 >;
103 };
104
105 pinctrl_i2c2: i2c2grp {
106 fsl,pins = <
107 MX53_PAD_EIM_D16__I2C2_SDA 0xc0000000
108 MX53_PAD_EIM_EB2__I2C2_SCL 0xc0000000
109 >;
110 };
111
112 pinctrl_nand: nandgrp {
113 fsl,pins = <
114 MX53_PAD_NANDF_WE_B__EMI_NANDF_WE_B 0x4
115 MX53_PAD_NANDF_RE_B__EMI_NANDF_RE_B 0x4
116 MX53_PAD_NANDF_CLE__EMI_NANDF_CLE 0x4
117 MX53_PAD_NANDF_ALE__EMI_NANDF_ALE 0x4
118 MX53_PAD_NANDF_WP_B__EMI_NANDF_WP_B 0xe0
119 MX53_PAD_NANDF_RB0__EMI_NANDF_RB_0 0xe0
120 MX53_PAD_NANDF_CS0__EMI_NANDF_CS_0 0x4
121 MX53_PAD_PATA_DATA0__EMI_NANDF_D_0 0xa4
122 MX53_PAD_PATA_DATA1__EMI_NANDF_D_1 0xa4
123 MX53_PAD_PATA_DATA2__EMI_NANDF_D_2 0xa4
124 MX53_PAD_PATA_DATA3__EMI_NANDF_D_3 0xa4
125 MX53_PAD_PATA_DATA4__EMI_NANDF_D_4 0xa4
126 MX53_PAD_PATA_DATA5__EMI_NANDF_D_5 0xa4
127 MX53_PAD_PATA_DATA6__EMI_NANDF_D_6 0xa4
128 MX53_PAD_PATA_DATA7__EMI_NANDF_D_7 0xa4
129 >;
130 };
131 };
132};
133
134&nfc {
135 pinctrl-names = "default";
136 pinctrl-0 = <&pinctrl_nand>;
137 nand-bus-width = <8>;
138 nand-ecc-mode = "hw";
139 status = "okay";
140};
diff --git a/arch/arm/boot/dts/imx53-m53evk.dts b/arch/arm/boot/dts/imx53-m53evk.dts
index c4956b0ffb35..d0e0f57eb432 100644
--- a/arch/arm/boot/dts/imx53-m53evk.dts
+++ b/arch/arm/boot/dts/imx53-m53evk.dts
@@ -10,17 +10,12 @@
10 */ 10 */
11 11
12/dts-v1/; 12/dts-v1/;
13#include "imx53.dtsi" 13#include "imx53-m53.dtsi"
14 14
15/ { 15/ {
16 model = "DENX M53EVK"; 16 model = "DENX M53EVK";
17 compatible = "denx,imx53-m53evk", "fsl,imx53"; 17 compatible = "denx,imx53-m53evk", "fsl,imx53";
18 18
19 memory {
20 reg = <0x70000000 0x20000000>,
21 <0xb0000000 0x20000000>;
22 };
23
24 display1: display@di1 { 19 display1: display@di1 {
25 compatible = "fsl,imx-parallel-display"; 20 compatible = "fsl,imx-parallel-display";
26 interface-pix-fmt = "bgr666"; 21 interface-pix-fmt = "bgr666";
@@ -81,25 +76,6 @@
81 #address-cells = <1>; 76 #address-cells = <1>;
82 #size-cells = <0>; 77 #size-cells = <0>;
83 78
84 reg_3p2v: regulator@0 {
85 compatible = "regulator-fixed";
86 reg = <0>;
87 regulator-name = "3P2V";
88 regulator-min-microvolt = <3200000>;
89 regulator-max-microvolt = <3200000>;
90 regulator-always-on;
91 };
92
93
94 reg_backlight: regulator@1 {
95 compatible = "regulator-fixed";
96 reg = <1>;
97 regulator-name = "lcd-supply";
98 regulator-min-microvolt = <3200000>;
99 regulator-max-microvolt = <3200000>;
100 regulator-always-on;
101 };
102
103 reg_usbh1_vbus: regulator@3 { 79 reg_usbh1_vbus: regulator@3 {
104 compatible = "regulator-fixed"; 80 compatible = "regulator-fixed";
105 reg = <3>; 81 reg = <3>;
@@ -174,50 +150,6 @@
174 }; 150 };
175}; 151};
176 152
177&i2c2 {
178 pinctrl-names = "default";
179 pinctrl-0 = <&pinctrl_i2c2>;
180 clock-frequency = <400000>;
181 status = "okay";
182
183 stmpe610@41 {
184 compatible = "st,stmpe610";
185 #address-cells = <1>;
186 #size-cells = <0>;
187 reg = <0x41>;
188 id = <0>;
189 blocks = <0x5>;
190 interrupts = <6 0x0>;
191 interrupt-parent = <&gpio7>;
192 irq-trigger = <0x1>;
193
194 stmpe_touchscreen {
195 compatible = "st,stmpe-ts";
196 reg = <0>;
197 st,sample-time = <4>;
198 st,mod-12b = <1>;
199 st,ref-sel = <0>;
200 st,adc-freq = <1>;
201 st,ave-ctrl = <3>;
202 st,touch-det-delay = <3>;
203 st,settling = <4>;
204 st,fraction-z = <7>;
205 st,i-drive = <1>;
206 };
207 };
208
209 eeprom: eeprom@50 {
210 compatible = "atmel,24c128";
211 reg = <0x50>;
212 pagesize = <32>;
213 };
214
215 rtc: rtc@68 {
216 compatible = "stm,m41t62";
217 reg = <0x68>;
218 };
219};
220
221&i2c3 { 153&i2c3 {
222 pinctrl-names = "default"; 154 pinctrl-names = "default";
223 pinctrl-0 = <&pinctrl_i2c3>; 155 pinctrl-0 = <&pinctrl_i2c3>;
@@ -229,11 +161,8 @@
229 pinctrl-0 = <&pinctrl_hog>; 161 pinctrl-0 = <&pinctrl_hog>;
230 162
231 imx53-m53evk { 163 imx53-m53evk {
232 pinctrl_hog: hoggrp { 164 pinctrl_usb: usbgrp {
233 fsl,pins = < 165 fsl,pins = <
234 MX53_PAD_GPIO_0__CCM_SSI_EXT1_CLK 0x80000000
235 MX53_PAD_EIM_EB3__GPIO2_31 0x80000000
236 MX53_PAD_PATA_DA_0__GPIO7_6 0x80000000
237 MX53_PAD_GPIO_2__GPIO1_2 0x80000000 166 MX53_PAD_GPIO_2__GPIO1_2 0x80000000
238 MX53_PAD_GPIO_3__USBOH3_USBH1_OC 0x80000000 167 MX53_PAD_GPIO_3__USBOH3_USBH1_OC 0x80000000
239 >; 168 >;
@@ -302,13 +231,6 @@
302 >; 231 >;
303 }; 232 };
304 233
305 pinctrl_i2c2: i2c2grp {
306 fsl,pins = <
307 MX53_PAD_EIM_D16__I2C2_SDA 0xc0000000
308 MX53_PAD_EIM_EB2__I2C2_SCL 0xc0000000
309 >;
310 };
311
312 pinctrl_i2c3: i2c3grp { 234 pinctrl_i2c3: i2c3grp {
313 fsl,pins = < 235 fsl,pins = <
314 MX53_PAD_GPIO_6__I2C3_SDA 0xc0000000 236 MX53_PAD_GPIO_6__I2C3_SDA 0xc0000000
@@ -353,26 +275,6 @@
353 >; 275 >;
354 }; 276 };
355 277
356 pinctrl_nand: nandgrp {
357 fsl,pins = <
358 MX53_PAD_NANDF_WE_B__EMI_NANDF_WE_B 0x4
359 MX53_PAD_NANDF_RE_B__EMI_NANDF_RE_B 0x4
360 MX53_PAD_NANDF_CLE__EMI_NANDF_CLE 0x4
361 MX53_PAD_NANDF_ALE__EMI_NANDF_ALE 0x4
362 MX53_PAD_NANDF_WP_B__EMI_NANDF_WP_B 0xe0
363 MX53_PAD_NANDF_RB0__EMI_NANDF_RB_0 0xe0
364 MX53_PAD_NANDF_CS0__EMI_NANDF_CS_0 0x4
365 MX53_PAD_PATA_DATA0__EMI_NANDF_D_0 0xa4
366 MX53_PAD_PATA_DATA1__EMI_NANDF_D_1 0xa4
367 MX53_PAD_PATA_DATA2__EMI_NANDF_D_2 0xa4
368 MX53_PAD_PATA_DATA3__EMI_NANDF_D_3 0xa4
369 MX53_PAD_PATA_DATA4__EMI_NANDF_D_4 0xa4
370 MX53_PAD_PATA_DATA5__EMI_NANDF_D_5 0xa4
371 MX53_PAD_PATA_DATA6__EMI_NANDF_D_6 0xa4
372 MX53_PAD_PATA_DATA7__EMI_NANDF_D_7 0xa4
373 >;
374 };
375
376 pinctrl_pwm1: pwm1grp { 278 pinctrl_pwm1: pwm1grp {
377 fsl,pins = < 279 fsl,pins = <
378 MX53_PAD_DISP0_DAT8__PWM1_PWMO 0x5 280 MX53_PAD_DISP0_DAT8__PWM1_PWMO 0x5
@@ -408,14 +310,6 @@
408 remote-endpoint = <&display1_in>; 310 remote-endpoint = <&display1_in>;
409}; 311};
410 312
411&nfc {
412 pinctrl-names = "default";
413 pinctrl-0 = <&pinctrl_nand>;
414 nand-bus-width = <8>;
415 nand-ecc-mode = "hw";
416 status = "okay";
417};
418
419&pwm1 { 313&pwm1 {
420 pinctrl-names = "default"; 314 pinctrl-names = "default";
421 pinctrl-0 = <&pinctrl_pwm1>; 315 pinctrl-0 = <&pinctrl_pwm1>;
@@ -427,7 +321,6 @@
427}; 321};
428 322
429&ssi2 { 323&ssi2 {
430 fsl,mode = "i2s-slave";
431 status = "okay"; 324 status = "okay";
432}; 325};
433 326
@@ -450,6 +343,8 @@
450}; 343};
451 344
452&usbh1 { 345&usbh1 {
346 pinctrl-names = "default";
347 pinctrl-0 = <&pinctrl_usb>;
453 vbus-supply = <&reg_usbh1_vbus>; 348 vbus-supply = <&reg_usbh1_vbus>;
454 phy_type = "utmi"; 349 phy_type = "utmi";
455 status = "okay"; 350 status = "okay";
diff --git a/arch/arm/boot/dts/imx53-mba53.dts b/arch/arm/boot/dts/imx53-mba53.dts
index 3e3f17aa93a1..2e44d2aba14e 100644
--- a/arch/arm/boot/dts/imx53-mba53.dts
+++ b/arch/arm/boot/dts/imx53-mba53.dts
@@ -225,7 +225,6 @@
225}; 225};
226 226
227&ssi2 { 227&ssi2 {
228 fsl,mode = "i2s-slave";
229 status = "okay"; 228 status = "okay";
230}; 229};
231 230
diff --git a/arch/arm/boot/dts/imx53-qsb-common.dtsi b/arch/arm/boot/dts/imx53-qsb-common.dtsi
index fd8c60dde7de..181ae5ebf23f 100644
--- a/arch/arm/boot/dts/imx53-qsb-common.dtsi
+++ b/arch/arm/boot/dts/imx53-qsb-common.dtsi
@@ -141,7 +141,6 @@
141}; 141};
142 142
143&ssi2 { 143&ssi2 {
144 fsl,mode = "i2s-slave";
145 status = "okay"; 144 status = "okay";
146}; 145};
147 146
diff --git a/arch/arm/boot/dts/imx53-tx53.dtsi b/arch/arm/boot/dts/imx53-tx53.dtsi
index e348796ba689..704bd72cbfec 100644
--- a/arch/arm/boot/dts/imx53-tx53.dtsi
+++ b/arch/arm/boot/dts/imx53-tx53.dtsi
@@ -502,7 +502,6 @@
502}; 502};
503 503
504&ssi1 { 504&ssi1 {
505 fsl,mode = "i2s-slave";
506 codec-handle = <&sgtl5000>; 505 codec-handle = <&sgtl5000>;
507 status = "okay"; 506 status = "okay";
508}; 507};
diff --git a/arch/arm/boot/dts/imx53-voipac-bsb.dts b/arch/arm/boot/dts/imx53-voipac-bsb.dts
index 7f6711a48615..c17d3ad6dba5 100644
--- a/arch/arm/boot/dts/imx53-voipac-bsb.dts
+++ b/arch/arm/boot/dts/imx53-voipac-bsb.dts
@@ -154,6 +154,5 @@
154}; 154};
155 155
156&ssi2 { 156&ssi2 {
157 fsl,mode = "i2s-slave";
158 status = "okay"; 157 status = "okay";
159}; 158};
diff --git a/arch/arm/boot/dts/imx53.dtsi b/arch/arm/boot/dts/imx53.dtsi
index 6456a0084388..64fa27b36be0 100644
--- a/arch/arm/boot/dts/imx53.dtsi
+++ b/arch/arm/boot/dts/imx53.dtsi
@@ -108,7 +108,7 @@
108 clocks = <&clks IMX5_CLK_SATA_GATE>, 108 clocks = <&clks IMX5_CLK_SATA_GATE>,
109 <&clks IMX5_CLK_SATA_REF>, 109 <&clks IMX5_CLK_SATA_REF>,
110 <&clks IMX5_CLK_AHB>; 110 <&clks IMX5_CLK_AHB>;
111 clock-names = "sata_gate", "sata_ref", "ahb"; 111 clock-names = "sata", "sata_ref", "ahb";
112 status = "disabled"; 112 status = "disabled";
113 }; 113 };
114 114
@@ -231,7 +231,6 @@
231 <&sdma 25 1 0>; 231 <&sdma 25 1 0>;
232 dma-names = "rx", "tx"; 232 dma-names = "rx", "tx";
233 fsl,fifo-depth = <15>; 233 fsl,fifo-depth = <15>;
234 fsl,ssi-dma-events = <25 24 23 22>; /* TX0 RX0 TX1 RX1 */
235 status = "disabled"; 234 status = "disabled";
236 }; 235 };
237 236
@@ -260,6 +259,11 @@
260 }; 259 };
261 }; 260 };
262 261
262 aipstz1: bridge@53f00000 {
263 compatible = "fsl,imx53-aipstz";
264 reg = <0x53f00000 0x60>;
265 };
266
263 usbphy0: usbphy@0 { 267 usbphy0: usbphy@0 {
264 compatible = "usb-nop-xceiv"; 268 compatible = "usb-nop-xceiv";
265 clocks = <&clks IMX5_CLK_USB_PHY1_GATE>; 269 clocks = <&clks IMX5_CLK_USB_PHY1_GATE>;
@@ -572,6 +576,11 @@
572 reg = <0x60000000 0x10000000>; 576 reg = <0x60000000 0x10000000>;
573 ranges; 577 ranges;
574 578
579 aipstz2: bridge@63f00000 {
580 compatible = "fsl,imx53-aipstz";
581 reg = <0x63f00000 0x60>;
582 };
583
575 iim: iim@63f98000 { 584 iim: iim@63f98000 {
576 compatible = "fsl,imx53-iim", "fsl,imx27-iim"; 585 compatible = "fsl,imx53-iim", "fsl,imx27-iim";
577 reg = <0x63f98000 0x4000>; 586 reg = <0x63f98000 0x4000>;
@@ -661,7 +670,6 @@
661 <&sdma 29 0 0>; 670 <&sdma 29 0 0>;
662 dma-names = "rx", "tx"; 671 dma-names = "rx", "tx";
663 fsl,fifo-depth = <15>; 672 fsl,fifo-depth = <15>;
664 fsl,ssi-dma-events = <29 28 27 26>; /* TX0 RX0 TX1 RX1 */
665 status = "disabled"; 673 status = "disabled";
666 }; 674 };
667 675
@@ -689,7 +697,6 @@
689 <&sdma 47 0 0>; 697 <&sdma 47 0 0>;
690 dma-names = "rx", "tx"; 698 dma-names = "rx", "tx";
691 fsl,fifo-depth = <15>; 699 fsl,fifo-depth = <15>;
692 fsl,ssi-dma-events = <47 46 45 44>; /* TX0 RX0 TX1 RX1 */
693 status = "disabled"; 700 status = "disabled";
694 }; 701 };
695 702
diff --git a/arch/arm/boot/dts/imx6dl-aristainetos_4.dts b/arch/arm/boot/dts/imx6dl-aristainetos_4.dts
new file mode 100644
index 000000000000..9cd06e5e59f0
--- /dev/null
+++ b/arch/arm/boot/dts/imx6dl-aristainetos_4.dts
@@ -0,0 +1,85 @@
1/*
2 * support fot the imx6 based aristainetos board
3 *
4 * Copyright (C) 2014 Heiko Schocher <hs@denx.de>
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation.
9 *
10 */
11/dts-v1/;
12#include "imx6dl.dtsi"
13#include "imx6qdl-aristainetos.dtsi"
14
15/ {
16 model = "aristainetos i.MX6 Dual Lite Board 4";
17 compatible = "fsl,imx6dl";
18
19 backlight {
20 compatible = "pwm-backlight";
21 pwms = <&pwm1 0 5000000>;
22 brightness-levels = <0 4 8 16 32 64 128 255>;
23 default-brightness-level = <7>;
24 enable-gpios = <&gpio1 2 GPIO_ACTIVE_HIGH>;
25 pinctrl-names = "default";
26 pinctrl-0 = <&pinctrl_backlight>;
27 status = "okay";
28 };
29
30 memory {
31 reg = <0x10000000 0x40000000>;
32 };
33
34 soc {
35 display0: display@di0 {
36 compatible = "fsl,imx-parallel-display";
37 interface-pix-fmt = "rgb24";
38 pinctrl-names = "default";
39 pinctrl-0 = <&pinctrl_ipu_disp>;
40 status = "okay";
41
42 display-timings {
43 480x800p60 {
44 native-mode;
45 clock-frequency = <30000000>;
46 hactive = <480>;
47 vactive = <800>;
48 hfront-porch = <59>;
49 hback-porch = <10>;
50 hsync-len = <10>;
51 vback-porch = <15>;
52 vfront-porch = <15>;
53 vsync-len = <15>;
54 hsync-active = <1>;
55 vsync-active = <1>;
56 };
57 };
58
59 port {
60 display0_in: endpoint {
61 remote-endpoint = <&ipu1_di0_disp0>;
62 };
63 };
64 };
65 };
66};
67
68&ecspi2 {
69 fsl,spi-num-chipselects = <1>;
70 cs-gpios = <&gpio3 24 GPIO_ACTIVE_HIGH>;
71 pinctrl-names = "default";
72 pinctrl-0 = <&pinctrl_ecspi2>;
73 status = "okay";
74};
75
76&i2c2 {
77 clock-frequency = <100000>;
78 pinctrl-names = "default";
79 pinctrl-0 = <&pinctrl_i2c2>;
80 status = "okay";
81};
82
83&ipu1_di0_disp0 {
84 remote-endpoint = <&display0_in>;
85};
diff --git a/arch/arm/boot/dts/imx6dl-aristainetos_7.dts b/arch/arm/boot/dts/imx6dl-aristainetos_7.dts
new file mode 100644
index 000000000000..b413e24288dc
--- /dev/null
+++ b/arch/arm/boot/dts/imx6dl-aristainetos_7.dts
@@ -0,0 +1,74 @@
1/*
2 * support fot the imx6 based aristainetos board
3 *
4 * Copyright (C) 2014 Heiko Schocher <hs@denx.de>
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation.
9 *
10 */
11/dts-v1/;
12#include "imx6dl.dtsi"
13#include "imx6qdl-aristainetos.dtsi"
14
15/ {
16 model = "aristainetos i.MX6 Dual Lite Board 7";
17 compatible = "fsl,imx6dl";
18
19 memory {
20 reg = <0x10000000 0x40000000>;
21 };
22
23 soc {
24 display0: display@di0 {
25 compatible = "fsl,imx-parallel-display";
26 interface-pix-fmt = "rgb24";
27 pinctrl-names = "default";
28 pinctrl-0 = <&pinctrl_ipu_disp>;
29 status = "okay";
30
31 display-timings {
32 800x480p60 {
33 native-mode;
34 clock-frequency = <33246000>;
35 hactive = <800>;
36 vactive = <480>;
37 hfront-porch = <88>;
38 hback-porch = <88>;
39 hsync-len = <80>;
40 vback-porch = <10>;
41 vfront-porch = <10>;
42 vsync-len = <25>;
43 vsync-active = <1>;
44 };
45 };
46
47 port {
48 display0_in: endpoint {
49 remote-endpoint = <&ipu1_di0_disp0>;
50 };
51 };
52 };
53 };
54
55 backlight {
56 compatible = "pwm-backlight";
57 pwms = <&pwm3 0 3000>;
58 brightness-levels = <0 4 8 16 32 64 128 255>;
59 default-brightness-level = <6>;
60 pinctrl-names = "default";
61 pinctrl-0 = <&pinctrl_backlight>;
62 };
63};
64
65&i2c2 {
66 clock-frequency = <100000>;
67 pinctrl-names = "default";
68 pinctrl-0 = <&pinctrl_i2c2>;
69 status = "okay";
70};
71
72&ipu1_di0_disp0 {
73 remote-endpoint = <&display0_in>;
74};
diff --git a/arch/arm/boot/dts/imx6dl-gw51xx.dts b/arch/arm/boot/dts/imx6dl-gw51xx.dts
index 4bd055f4c930..b2bd022fc6be 100644
--- a/arch/arm/boot/dts/imx6dl-gw51xx.dts
+++ b/arch/arm/boot/dts/imx6dl-gw51xx.dts
@@ -14,6 +14,6 @@
14#include "imx6qdl-gw51xx.dtsi" 14#include "imx6qdl-gw51xx.dtsi"
15 15
16/ { 16/ {
17 model = "Gateworks Ventana i.MX6 DualLite GW51XX"; 17 model = "Gateworks Ventana i.MX6 DualLite/Solo GW51XX";
18 compatible = "gw,imx6dl-gw51xx", "gw,ventana", "fsl,imx6dl"; 18 compatible = "gw,imx6dl-gw51xx", "gw,ventana", "fsl,imx6dl";
19}; 19};
diff --git a/arch/arm/boot/dts/imx6dl-gw52xx.dts b/arch/arm/boot/dts/imx6dl-gw52xx.dts
index c9136058f15e..a2e0b73fdd4a 100644
--- a/arch/arm/boot/dts/imx6dl-gw52xx.dts
+++ b/arch/arm/boot/dts/imx6dl-gw52xx.dts
@@ -14,6 +14,6 @@
14#include "imx6qdl-gw52xx.dtsi" 14#include "imx6qdl-gw52xx.dtsi"
15 15
16/ { 16/ {
17 model = "Gateworks Ventana i.MX6 DualLite GW52XX"; 17 model = "Gateworks Ventana i.MX6 DualLite/Solo GW52XX";
18 compatible = "gw,imx6dl-gw52xx", "gw,ventana", "fsl,imx6dl"; 18 compatible = "gw,imx6dl-gw52xx", "gw,ventana", "fsl,imx6dl";
19}; 19};
diff --git a/arch/arm/boot/dts/imx6dl-gw53xx.dts b/arch/arm/boot/dts/imx6dl-gw53xx.dts
index 61818a14fde6..6844b708d2f8 100644
--- a/arch/arm/boot/dts/imx6dl-gw53xx.dts
+++ b/arch/arm/boot/dts/imx6dl-gw53xx.dts
@@ -14,6 +14,6 @@
14#include "imx6qdl-gw53xx.dtsi" 14#include "imx6qdl-gw53xx.dtsi"
15 15
16/ { 16/ {
17 model = "Gateworks Ventana i.MX6 DualLite GW53XX"; 17 model = "Gateworks Ventana i.MX6 DualLite/Solo GW53XX";
18 compatible = "gw,imx6dl-gw53xx", "gw,ventana", "fsl,imx6dl"; 18 compatible = "gw,imx6dl-gw53xx", "gw,ventana", "fsl,imx6dl";
19}; 19};
diff --git a/arch/arm/boot/dts/imx6dl-gw54xx.dts b/arch/arm/boot/dts/imx6dl-gw54xx.dts
index ab38b6770a06..be915412f852 100644
--- a/arch/arm/boot/dts/imx6dl-gw54xx.dts
+++ b/arch/arm/boot/dts/imx6dl-gw54xx.dts
@@ -14,6 +14,6 @@
14#include "imx6qdl-gw54xx.dtsi" 14#include "imx6qdl-gw54xx.dtsi"
15 15
16/ { 16/ {
17 model = "Gateworks Ventana i.MX6 DualLite GW54XX"; 17 model = "Gateworks Ventana i.MX6 DualLite/Solo GW54XX";
18 compatible = "gw,imx6dl-gw54xx", "gw,ventana", "fsl,imx6dl"; 18 compatible = "gw,imx6dl-gw54xx", "gw,ventana", "fsl,imx6dl";
19}; 19};
diff --git a/arch/arm/boot/dts/imx6dl-rex-basic.dts b/arch/arm/boot/dts/imx6dl-rex-basic.dts
new file mode 100644
index 000000000000..b13845c2823b
--- /dev/null
+++ b/arch/arm/boot/dts/imx6dl-rex-basic.dts
@@ -0,0 +1,30 @@
1/*
2 * Copyright 2014 FEDEVEL, Inc.
3 *
4 * Author: Robert Nelson <robertcnelson@gmail.com>
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation.
9 *
10 */
11/dts-v1/;
12#include "imx6dl.dtsi"
13#include "imx6qdl-rex.dtsi"
14
15/ {
16 model = "Rex Basic i.MX6 Dual Lite Board";
17 compatible = "rex,imx6dl-rex-basic", "fsl,imx6dl";
18
19 memory {
20 reg = <0x10000000 0x20000000>;
21 };
22};
23
24&ecspi3 {
25 flash: m25p80@0 {
26 compatible = "sst,sst25vf016b";
27 spi-max-frequency = <20000000>;
28 reg = <0>;
29 };
30};
diff --git a/arch/arm/boot/dts/imx6dl-riotboard.dts b/arch/arm/boot/dts/imx6dl-riotboard.dts
index 909fafc0b650..43cb3fd76be7 100644
--- a/arch/arm/boot/dts/imx6dl-riotboard.dts
+++ b/arch/arm/boot/dts/imx6dl-riotboard.dts
@@ -254,7 +254,6 @@
254}; 254};
255 255
256&ssi1 { 256&ssi1 {
257 fsl,mode = "i2s-slave";
258 status = "okay"; 257 status = "okay";
259}; 258};
260 259
@@ -335,10 +334,10 @@
335 imx6-riotboard { 334 imx6-riotboard {
336 pinctrl_audmux: audmuxgrp { 335 pinctrl_audmux: audmuxgrp {
337 fsl,pins = < 336 fsl,pins = <
338 MX6QDL_PAD_CSI0_DAT7__AUD3_RXD 0x8000000 337 MX6QDL_PAD_CSI0_DAT7__AUD3_RXD 0x130b0
339 MX6QDL_PAD_CSI0_DAT4__AUD3_TXC 0x8000000 338 MX6QDL_PAD_CSI0_DAT4__AUD3_TXC 0x130b0
340 MX6QDL_PAD_CSI0_DAT5__AUD3_TXD 0x8000000 339 MX6QDL_PAD_CSI0_DAT5__AUD3_TXD 0x110b0
341 MX6QDL_PAD_CSI0_DAT6__AUD3_TXFS 0x8000000 340 MX6QDL_PAD_CSI0_DAT6__AUD3_TXFS 0x130b0
342 MX6QDL_PAD_GPIO_0__CCM_CLKO1 0x130b0 /* CAM_MCLK */ 341 MX6QDL_PAD_GPIO_0__CCM_CLKO1 0x130b0 /* CAM_MCLK */
343 >; 342 >;
344 }; 343 };
@@ -376,7 +375,7 @@
376 fsl,pins = < 375 fsl,pins = <
377 MX6QDL_PAD_ENET_MDIO__ENET_MDIO 0x1b0b0 376 MX6QDL_PAD_ENET_MDIO__ENET_MDIO 0x1b0b0
378 MX6QDL_PAD_ENET_MDC__ENET_MDC 0x1b0b0 377 MX6QDL_PAD_ENET_MDC__ENET_MDC 0x1b0b0
379 MX6QDL_PAD_RGMII_TXC__RGMII_TXC 0x80000000 378 MX6QDL_PAD_RGMII_TXC__RGMII_TXC 0x1b0b0
380 MX6QDL_PAD_RGMII_TD0__RGMII_TD0 0x1b0b0 379 MX6QDL_PAD_RGMII_TD0__RGMII_TD0 0x1b0b0
381 MX6QDL_PAD_RGMII_TD1__RGMII_TD1 0x1b0b0 380 MX6QDL_PAD_RGMII_TD1__RGMII_TD1 0x1b0b0
382 MX6QDL_PAD_RGMII_TD2__RGMII_TD2 0x1b0b0 381 MX6QDL_PAD_RGMII_TD2__RGMII_TD2 0x1b0b0
@@ -389,9 +388,9 @@
389 MX6QDL_PAD_RGMII_RD2__RGMII_RD2 0x1b0b0 /* AR8035 pin strapping: MODE#1: pull up */ 388 MX6QDL_PAD_RGMII_RD2__RGMII_RD2 0x1b0b0 /* AR8035 pin strapping: MODE#1: pull up */
390 MX6QDL_PAD_RGMII_RD3__RGMII_RD3 0x1b0b0 /* AR8035 pin strapping: MODE#3: pull up */ 389 MX6QDL_PAD_RGMII_RD3__RGMII_RD3 0x1b0b0 /* AR8035 pin strapping: MODE#3: pull up */
391 MX6QDL_PAD_RGMII_RX_CTL__RGMII_RX_CTL 0x130b0 /* AR8035 pin strapping: MODE#0: pull down */ 390 MX6QDL_PAD_RGMII_RX_CTL__RGMII_RX_CTL 0x130b0 /* AR8035 pin strapping: MODE#0: pull down */
392 MX6QDL_PAD_GPIO_16__ENET_REF_CLK 0xc0000000 /* GPIO16 -> AR8035 25MHz */ 391 MX6QDL_PAD_GPIO_16__ENET_REF_CLK 0x4001b0a8 /* GPIO16 -> AR8035 25MHz */
393 MX6QDL_PAD_EIM_D31__GPIO3_IO31 0x130b0 /* RGMII_nRST */ 392 MX6QDL_PAD_EIM_D31__GPIO3_IO31 0x130b0 /* RGMII_nRST */
394 MX6QDL_PAD_ENET_TX_EN__GPIO1_IO28 0x80000000 /* AR8035 interrupt */ 393 MX6QDL_PAD_ENET_TX_EN__GPIO1_IO28 0x180b0 /* AR8035 interrupt */
395 MX6QDL_PAD_GPIO_6__ENET_IRQ 0x000b1 394 MX6QDL_PAD_GPIO_6__ENET_IRQ 0x000b1
396 >; 395 >;
397 }; 396 };
@@ -426,8 +425,8 @@
426 425
427 pinctrl_led: ledgrp { 426 pinctrl_led: ledgrp {
428 fsl,pins = < 427 fsl,pins = <
429 MX6QDL_PAD_EIM_A25__GPIO5_IO02 0x80000000 /* user led0 */ 428 MX6QDL_PAD_EIM_A25__GPIO5_IO02 0x1b0b1 /* user led0 */
430 MX6QDL_PAD_EIM_D28__GPIO3_IO28 0x80000000 /* user led1 */ 429 MX6QDL_PAD_EIM_D28__GPIO3_IO28 0x1b0b1 /* user led1 */
431 >; 430 >;
432 }; 431 };
433 432
@@ -493,8 +492,8 @@
493 pinctrl_usbotg: usbotggrp { 492 pinctrl_usbotg: usbotggrp {
494 fsl,pins = < 493 fsl,pins = <
495 MX6QDL_PAD_ENET_RX_ER__USB_OTG_ID 0x17059 494 MX6QDL_PAD_ENET_RX_ER__USB_OTG_ID 0x17059
496 MX6QDL_PAD_EIM_D22__GPIO3_IO22 0x80000000 /* MX6QDL_PAD_EIM_D22__USB_OTG_PWR */ 495 MX6QDL_PAD_EIM_D22__GPIO3_IO22 0x000b0 /* MX6QDL_PAD_EIM_D22__USB_OTG_PWR */
497 MX6QDL_PAD_EIM_D21__USB_OTG_OC 0x80000000 496 MX6QDL_PAD_EIM_D21__USB_OTG_OC 0x1b0b0
498 >; 497 >;
499 }; 498 };
500 499
@@ -506,8 +505,8 @@
506 MX6QDL_PAD_SD2_DAT1__SD2_DATA1 0x17059 505 MX6QDL_PAD_SD2_DAT1__SD2_DATA1 0x17059
507 MX6QDL_PAD_SD2_DAT2__SD2_DATA2 0x17059 506 MX6QDL_PAD_SD2_DAT2__SD2_DATA2 0x17059
508 MX6QDL_PAD_SD2_DAT3__SD2_DATA3 0x17059 507 MX6QDL_PAD_SD2_DAT3__SD2_DATA3 0x17059
509 MX6QDL_PAD_GPIO_4__GPIO1_IO04 0x80000000 /* SD2 CD */ 508 MX6QDL_PAD_GPIO_4__GPIO1_IO04 0x1b0b0 /* SD2 CD */
510 MX6QDL_PAD_GPIO_2__GPIO1_IO02 0x80000000 /* SD2 WP */ 509 MX6QDL_PAD_GPIO_2__GPIO1_IO02 0x1f0b0 /* SD2 WP */
511 >; 510 >;
512 }; 511 };
513 512
@@ -519,8 +518,8 @@
519 MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x17059 518 MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x17059
520 MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x17059 519 MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x17059
521 MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x17059 520 MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x17059
522 MX6QDL_PAD_SD3_DAT5__GPIO7_IO00 0x80000000 /* SD3 CD */ 521 MX6QDL_PAD_SD3_DAT5__GPIO7_IO00 0x1b0b0 /* SD3 CD */
523 MX6QDL_PAD_SD3_DAT4__GPIO7_IO01 0x80000000 /* SD3 WP */ 522 MX6QDL_PAD_SD3_DAT4__GPIO7_IO01 0x1f0b0 /* SD3 WP */
524 >; 523 >;
525 }; 524 };
526 525
@@ -532,7 +531,7 @@
532 MX6QDL_PAD_SD4_DAT1__SD4_DATA1 0x17059 531 MX6QDL_PAD_SD4_DAT1__SD4_DATA1 0x17059
533 MX6QDL_PAD_SD4_DAT2__SD4_DATA2 0x17059 532 MX6QDL_PAD_SD4_DAT2__SD4_DATA2 0x17059
534 MX6QDL_PAD_SD4_DAT3__SD4_DATA3 0x17059 533 MX6QDL_PAD_SD4_DAT3__SD4_DATA3 0x17059
535 MX6QDL_PAD_NANDF_ALE__GPIO6_IO08 0x80000000 /* SD4 RST (eMMC) */ 534 MX6QDL_PAD_NANDF_ALE__GPIO6_IO08 0x17059 /* SD4 RST (eMMC) */
536 >; 535 >;
537 }; 536 };
538 }; 537 };
diff --git a/arch/arm/boot/dts/imx6dl-tx6dl-comtft.dts b/arch/arm/boot/dts/imx6dl-tx6dl-comtft.dts
new file mode 100644
index 000000000000..913bb9a0466a
--- /dev/null
+++ b/arch/arm/boot/dts/imx6dl-tx6dl-comtft.dts
@@ -0,0 +1,103 @@
1/*
2 * Copyright 2014 Lothar Waßmann <LW@KARO-electronics.de>
3 *
4 * The code contained herein is licensed under the GNU General Public
5 * License. You may obtain a copy of the GNU General Public License
6 * Version 2 at the following locations:
7 *
8 * http://www.opensource.org/licenses/gpl-license.html
9 * http://www.gnu.org/copyleft/gpl.html
10 */
11
12/dts-v1/;
13#include "imx6dl.dtsi"
14#include "imx6qdl-tx6.dtsi"
15
16/ {
17 model = "Ka-Ro electronics TX6DL Module on CoMpact TFT";
18 compatible = "karo,imx6dl-tx6dl", "fsl,imx6dl";
19
20 aliases {
21 display = &display;
22 };
23
24 backlight: backlight {
25 compatible = "pwm-backlight";
26 pwms = <&pwm2 0 500000 0>;
27 power-supply = <&reg_3v3>;
28 /*
29 * a poor man's way to create a 1:1 relationship between
30 * the PWM value and the actual duty cycle
31 */
32 brightness-levels = < 0 1 2 3 4 5 6 7 8 9
33 10 11 12 13 14 15 16 17 18 19
34 20 21 22 23 24 25 26 27 28 29
35 30 31 32 33 34 35 36 37 38 39
36 40 41 42 43 44 45 46 47 48 49
37 50 51 52 53 54 55 56 57 58 59
38 60 61 62 63 64 65 66 67 68 69
39 70 71 72 73 74 75 76 77 78 79
40 80 81 82 83 84 85 86 87 88 89
41 90 91 92 93 94 95 96 97 98 99
42 100>;
43 default-brightness-level = <50>;
44 };
45
46 display: display@di0 {
47 compatible = "fsl,imx-parallel-display";
48 interface-pix-fmt = "rgb24";
49 pinctrl-names = "default";
50 pinctrl-0 = <&pinctrl_disp0_1>;
51 status = "okay";
52
53 port {
54 display0_in: endpoint {
55 remote-endpoint = <&ipu1_di0_disp0>;
56 };
57 };
58
59 display-timings {
60 native-mode = <&ET070001DM6>;
61
62 ET070001DM6: CoMTFT { /* same as ET0700 but with inverted pixel clock */
63 clock-frequency = <33264000>;
64 hactive = <800>;
65 vactive = <480>;
66 hback-porch = <88>;
67 hsync-len = <128>;
68 hfront-porch = <40>;
69 vback-porch = <33>;
70 vsync-len = <2>;
71 vfront-porch = <10>;
72 hsync-active = <0>;
73 vsync-active = <0>;
74 de-active = <1>;
75 pixelclk-active = <1>;
76 };
77 };
78 };
79};
80
81&can1 {
82 status = "disabled";
83};
84
85&can2 {
86 xceiver-supply = <&reg_3v3>;
87};
88
89&ipu1_di0_disp0 {
90 remote-endpoint = <&display0_in>;
91};
92
93&kpp {
94 status = "disabled";
95};
96
97&reg_can_xcvr {
98 status = "disabled";
99};
100
101&touchscreen {
102 status = "disabled";
103};
diff --git a/arch/arm/boot/dts/imx6dl-tx6u-801x.dts b/arch/arm/boot/dts/imx6dl-tx6u-801x.dts
new file mode 100644
index 000000000000..5fe465c2814e
--- /dev/null
+++ b/arch/arm/boot/dts/imx6dl-tx6u-801x.dts
@@ -0,0 +1,177 @@
1/*
2 * Copyright 2014 Lothar Waßmann <LW@KARO-electronics.de>
3 *
4 * The code contained herein is licensed under the GNU General Public
5 * License. You may obtain a copy of the GNU General Public License
6 * Version 2 at the following locations:
7 *
8 * http://www.opensource.org/licenses/gpl-license.html
9 * http://www.gnu.org/copyleft/gpl.html
10 */
11
12/dts-v1/;
13#include "imx6dl.dtsi"
14#include "imx6qdl-tx6.dtsi"
15
16/ {
17 model = "Ka-Ro electronics TX6U-801x Module";
18 compatible = "karo,imx6dl-tx6dl", "fsl,imx6dl";
19
20 aliases {
21 display = &display;
22 };
23
24 backlight: backlight {
25 compatible = "pwm-backlight";
26 pwms = <&pwm2 0 500000 PWM_POLARITY_INVERTED>;
27 power-supply = <&reg_3v3>;
28 /*
29 * a poor man's way to create a 1:1 relationship between
30 * the PWM value and the actual duty cycle
31 */
32 brightness-levels = < 0 1 2 3 4 5 6 7 8 9
33 10 11 12 13 14 15 16 17 18 19
34 20 21 22 23 24 25 26 27 28 29
35 30 31 32 33 34 35 36 37 38 39
36 40 41 42 43 44 45 46 47 48 49
37 50 51 52 53 54 55 56 57 58 59
38 60 61 62 63 64 65 66 67 68 69
39 70 71 72 73 74 75 76 77 78 79
40 80 81 82 83 84 85 86 87 88 89
41 90 91 92 93 94 95 96 97 98 99
42 100>;
43 default-brightness-level = <50>;
44 };
45
46 display: display@di0 {
47 compatible = "fsl,imx-parallel-display";
48 interface-pix-fmt = "rgb24";
49 pinctrl-names = "default";
50 pinctrl-0 = <&pinctrl_disp0_1>;
51 status = "okay";
52
53 port {
54 display0_in: endpoint {
55 remote-endpoint = <&ipu1_di0_disp0>;
56 };
57 };
58
59 display-timings {
60 VGA {
61 clock-frequency = <25200000>;
62 hactive = <640>;
63 vactive = <480>;
64 hback-porch = <48>;
65 hsync-len = <96>;
66 hfront-porch = <16>;
67 vback-porch = <31>;
68 vsync-len = <2>;
69 vfront-porch = <12>;
70 hsync-active = <0>;
71 vsync-active = <0>;
72 de-active = <1>;
73 pixelclk-active = <0>;
74 };
75
76 ETV570 {
77 clock-frequency = <25200000>;
78 hactive = <640>;
79 vactive = <480>;
80 hback-porch = <114>;
81 hsync-len = <30>;
82 hfront-porch = <16>;
83 vback-porch = <32>;
84 vsync-len = <3>;
85 vfront-porch = <10>;
86 hsync-active = <0>;
87 vsync-active = <0>;
88 de-active = <1>;
89 pixelclk-active = <0>;
90 };
91
92 ET0350 {
93 clock-frequency = <6413760>;
94 hactive = <320>;
95 vactive = <240>;
96 hback-porch = <34>;
97 hsync-len = <34>;
98 hfront-porch = <20>;
99 vback-porch = <15>;
100 vsync-len = <3>;
101 vfront-porch = <4>;
102 hsync-active = <0>;
103 vsync-active = <0>;
104 de-active = <1>;
105 pixelclk-active = <0>;
106 };
107
108 ET0430 {
109 clock-frequency = <9009000>;
110 hactive = <480>;
111 vactive = <272>;
112 hback-porch = <2>;
113 hsync-len = <41>;
114 hfront-porch = <2>;
115 vback-porch = <2>;
116 vsync-len = <10>;
117 vfront-porch = <2>;
118 hsync-active = <0>;
119 vsync-active = <0>;
120 de-active = <1>;
121 pixelclk-active = <1>;
122 };
123
124 ET0500 {
125 clock-frequency = <33264000>;
126 hactive = <800>;
127 vactive = <480>;
128 hback-porch = <88>;
129 hsync-len = <128>;
130 hfront-porch = <40>;
131 vback-porch = <33>;
132 vsync-len = <2>;
133 vfront-porch = <10>;
134 hsync-active = <0>;
135 vsync-active = <0>;
136 de-active = <1>;
137 pixelclk-active = <0>;
138 };
139
140 ET0700 { /* same as ET0500 */
141 clock-frequency = <33264000>;
142 hactive = <800>;
143 vactive = <480>;
144 hback-porch = <88>;
145 hsync-len = <128>;
146 hfront-porch = <40>;
147 vback-porch = <33>;
148 vsync-len = <2>;
149 vfront-porch = <10>;
150 hsync-active = <0>;
151 vsync-active = <0>;
152 de-active = <1>;
153 pixelclk-active = <0>;
154 };
155
156 ETQ570 {
157 clock-frequency = <6596040>;
158 hactive = <320>;
159 vactive = <240>;
160 hback-porch = <38>;
161 hsync-len = <30>;
162 hfront-porch = <30>;
163 vback-porch = <16>;
164 vsync-len = <3>;
165 vfront-porch = <4>;
166 hsync-active = <0>;
167 vsync-active = <0>;
168 de-active = <1>;
169 pixelclk-active = <0>;
170 };
171 };
172 };
173};
174
175&ipu1_di0_disp0 {
176 remote-endpoint = <&display0_in>;
177};
diff --git a/arch/arm/boot/dts/imx6dl-tx6u-811x.dts b/arch/arm/boot/dts/imx6dl-tx6u-811x.dts
new file mode 100644
index 000000000000..c275eecc9472
--- /dev/null
+++ b/arch/arm/boot/dts/imx6dl-tx6u-811x.dts
@@ -0,0 +1,150 @@
1/*
2 * Copyright 2014 Lothar Waßmann <LW@KARO-electronics.de>
3 *
4 * The code contained herein is licensed under the GNU General Public
5 * License. You may obtain a copy of the GNU General Public License
6 * Version 2 at the following locations:
7 *
8 * http://www.opensource.org/licenses/gpl-license.html
9 * http://www.gnu.org/copyleft/gpl.html
10 */
11
12/dts-v1/;
13#include "imx6dl.dtsi"
14#include "imx6qdl-tx6.dtsi"
15
16/ {
17 model = "Ka-Ro electronics TX6U-811x Module";
18 compatible = "karo,imx6dl-tx6dl", "fsl,imx6dl";
19
20 aliases {
21 display = &lvds0;
22 lvds0 = &lvds0;
23 lvds1 = &lvds1;
24 };
25
26 backlight0: backlight0 {
27 compatible = "pwm-backlight";
28 pwms = <&pwm2 0 500000 0>;
29 power-supply = <&reg_lcd0_pwr>;
30 /*
31 * a poor man's way to create a 1:1 relationship between
32 * the PWM value and the actual duty cycle
33 */
34 brightness-levels = < 0 1 2 3 4 5 6 7 8 9
35 10 11 12 13 14 15 16 17 18 19
36 20 21 22 23 24 25 26 27 28 29
37 30 31 32 33 34 35 36 37 38 39
38 40 41 42 43 44 45 46 47 48 49
39 50 51 52 53 54 55 56 57 58 59
40 60 61 62 63 64 65 66 67 68 69
41 70 71 72 73 74 75 76 77 78 79
42 80 81 82 83 84 85 86 87 88 89
43 90 91 92 93 94 95 96 97 98 99
44 100>;
45 default-brightness-level = <50>;
46 };
47
48 backlight1: backlight1 {
49 compatible = "pwm-backlight";
50 pwms = <&pwm1 0 500000 0>;
51 power-supply = <&reg_lcd1_pwr>;
52 /*
53 * a poor man's way to create a 1:1 relationship between
54 * the PWM value and the actual duty cycle
55 */
56 brightness-levels = < 0 1 2 3 4 5 6 7 8 9
57 10 11 12 13 14 15 16 17 18 19
58 20 21 22 23 24 25 26 27 28 29
59 30 31 32 33 34 35 36 37 38 39
60 40 41 42 43 44 45 46 47 48 49
61 50 51 52 53 54 55 56 57 58 59
62 60 61 62 63 64 65 66 67 68 69
63 70 71 72 73 74 75 76 77 78 79
64 80 81 82 83 84 85 86 87 88 89
65 90 91 92 93 94 95 96 97 98 99
66 100>;
67 default-brightness-level = <50>;
68 };
69};
70
71&i2c3 {
72 polytouch2: eeti@04 {
73 compatible = "eeti,egalax_ts";
74 reg = <0x04>;
75 pinctrl-names = "default";
76 pinctrl-0 = <&pinctrl_eeti>;
77 interrupt-parent = <&gpio3>;
78 interrupts = <22 0>;
79 wakeup-gpios = <&gpio3 22 GPIO_ACTIVE_HIGH>;
80 linux,wakeup;
81 };
82};
83
84&iomuxc {
85 imx6dl-tx6u-811x {
86 pinctrl_eeti: eetigrp {
87 fsl,pins = <
88 MX6QDL_PAD_EIM_D22__GPIO3_IO22 0x1b0b1 /* Interrupt */
89 >;
90 };
91 };
92};
93
94&kpp {
95 status = "disabled"; /* pad conflict with backlight1 PWM */
96};
97
98&ldb {
99 status = "okay";
100
101 lvds0: lvds-channel@0 {
102 fsl,data-mapping = "spwg";
103 fsl,data-width = <18>;
104 status = "okay";
105
106 display-timings {
107 native-mode = <&lvds_timing0>;
108 lvds_timing0: hsd100pxn1 {
109 clock-frequency = <65000000>;
110 hactive = <1024>;
111 vactive = <768>;
112 hback-porch = <220>;
113 hfront-porch = <40>;
114 vback-porch = <21>;
115 vfront-porch = <7>;
116 hsync-len = <60>;
117 vsync-len = <10>;
118 de-active = <1>;
119 pixelclk-active = <1>;
120 };
121 };
122 };
123
124 lvds1: lvds-channel@1 {
125 fsl,data-mapping = "spwg";
126 fsl,data-width = <18>;
127 status = "disabled";
128
129 display-timings {
130 native-mode = <&lvds_timing1>;
131 lvds_timing1: hsd100pxn1 {
132 clock-frequency = <65000000>;
133 hactive = <1024>;
134 vactive = <768>;
135 hback-porch = <220>;
136 hfront-porch = <40>;
137 vback-porch = <21>;
138 vfront-porch = <7>;
139 hsync-len = <60>;
140 vsync-len = <10>;
141 de-active = <1>;
142 pixelclk-active = <1>;
143 };
144 };
145 };
146};
147
148&pwm1 {
149 status = "okay";
150};
diff --git a/arch/arm/boot/dts/imx6dl-wandboard-revb1.dts b/arch/arm/boot/dts/imx6dl-wandboard-revb1.dts
new file mode 100644
index 000000000000..f607d4f1d244
--- /dev/null
+++ b/arch/arm/boot/dts/imx6dl-wandboard-revb1.dts
@@ -0,0 +1,22 @@
1/*
2 * Copyright 2013 Freescale Semiconductor, Inc.
3 *
4 * Author: Fabio Estevam <fabio.estevam@freescale.com>
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation.
9 *
10 */
11/dts-v1/;
12#include "imx6dl.dtsi"
13#include "imx6qdl-wandboard-revb1.dtsi"
14
15/ {
16 model = "Wandboard i.MX6 Dual Lite Board";
17 compatible = "wand,imx6dl-wandboard", "fsl,imx6dl";
18
19 memory {
20 reg = <0x10000000 0x40000000>;
21 };
22};
diff --git a/arch/arm/boot/dts/imx6dl-wandboard.dts b/arch/arm/boot/dts/imx6dl-wandboard.dts
index e672891c1626..bbb616723097 100644
--- a/arch/arm/boot/dts/imx6dl-wandboard.dts
+++ b/arch/arm/boot/dts/imx6dl-wandboard.dts
@@ -10,7 +10,7 @@
10 */ 10 */
11/dts-v1/; 11/dts-v1/;
12#include "imx6dl.dtsi" 12#include "imx6dl.dtsi"
13#include "imx6qdl-wandboard.dtsi" 13#include "imx6qdl-wandboard-revc1.dtsi"
14 14
15/ { 15/ {
16 model = "Wandboard i.MX6 Dual Lite Board"; 16 model = "Wandboard i.MX6 Dual Lite Board";
diff --git a/arch/arm/boot/dts/imx6dl.dtsi b/arch/arm/boot/dts/imx6dl.dtsi
index 0a9c49d69d41..b453e0e28aee 100644
--- a/arch/arm/boot/dts/imx6dl.dtsi
+++ b/arch/arm/boot/dts/imx6dl.dtsi
@@ -35,8 +35,11 @@
35 396000 1175000 35 396000 1175000
36 >; 36 >;
37 clock-latency = <61036>; /* two CLK32 periods */ 37 clock-latency = <61036>; /* two CLK32 periods */
38 clocks = <&clks 104>, <&clks 6>, <&clks 16>, 38 clocks = <&clks IMX6QDL_CLK_ARM>,
39 <&clks 17>, <&clks 170>; 39 <&clks IMX6QDL_CLK_PLL2_PFD2_396M>,
40 <&clks IMX6QDL_CLK_STEP>,
41 <&clks IMX6QDL_CLK_PLL1_SW>,
42 <&clks IMX6QDL_CLK_PLL1_SYS>;
40 clock-names = "arm", "pll2_pfd2_396m", "step", 43 clock-names = "arm", "pll2_pfd2_396m", "step",
41 "pll1_sw", "pll1_sys"; 44 "pll1_sw", "pll1_sys";
42 arm-supply = <&reg_arm>; 45 arm-supply = <&reg_arm>;
@@ -56,7 +59,7 @@
56 ocram: sram@00900000 { 59 ocram: sram@00900000 {
57 compatible = "mmio-sram"; 60 compatible = "mmio-sram";
58 reg = <0x00900000 0x20000>; 61 reg = <0x00900000 0x20000>;
59 clocks = <&clks 142>; 62 clocks = <&clks IMX6QDL_CLK_OCRAM>;
60 }; 63 };
61 64
62 aips1: aips-bus@02000000 { 65 aips1: aips-bus@02000000 {
@@ -87,7 +90,7 @@
87 compatible = "fsl,imx6q-i2c", "fsl,imx21-i2c"; 90 compatible = "fsl,imx6q-i2c", "fsl,imx21-i2c";
88 reg = <0x021f8000 0x4000>; 91 reg = <0x021f8000 0x4000>;
89 interrupts = <0 35 IRQ_TYPE_LEVEL_HIGH>; 92 interrupts = <0 35 IRQ_TYPE_LEVEL_HIGH>;
90 clocks = <&clks 116>; 93 clocks = <&clks IMX6DL_CLK_I2C4>;
91 status = "disabled"; 94 status = "disabled";
92 }; 95 };
93 }; 96 };
@@ -104,9 +107,9 @@
104}; 107};
105 108
106&ldb { 109&ldb {
107 clocks = <&clks 33>, <&clks 34>, 110 clocks = <&clks IMX6QDL_CLK_LDB_DI0_SEL>, <&clks IMX6QDL_CLK_LDB_DI1_SEL>,
108 <&clks 39>, <&clks 40>, 111 <&clks IMX6QDL_CLK_IPU1_DI0_SEL>, <&clks IMX6QDL_CLK_IPU1_DI1_SEL>,
109 <&clks 135>, <&clks 136>; 112 <&clks IMX6QDL_CLK_LDB_DI0>, <&clks IMX6QDL_CLK_LDB_DI1>;
110 clock-names = "di0_pll", "di1_pll", 113 clock-names = "di0_pll", "di1_pll",
111 "di0_sel", "di1_sel", 114 "di0_sel", "di1_sel",
112 "di0", "di1"; 115 "di0", "di1";
diff --git a/arch/arm/boot/dts/imx6q-cubox-i.dts b/arch/arm/boot/dts/imx6q-cubox-i.dts
index bc5f31e3e892..9efd8b0c8011 100644
--- a/arch/arm/boot/dts/imx6q-cubox-i.dts
+++ b/arch/arm/boot/dts/imx6q-cubox-i.dts
@@ -13,4 +13,8 @@
13 13
14&sata { 14&sata {
15 status = "okay"; 15 status = "okay";
16 fsl,transmit-level-mV = <1104>;
17 fsl,transmit-boost-mdB = <0>;
18 fsl,transmit-atten-16ths = <9>;
19 fsl,no-spread-spectrum;
16}; 20};
diff --git a/arch/arm/boot/dts/imx6q-dmo-edmqmx6.dts b/arch/arm/boot/dts/imx6q-dmo-edmqmx6.dts
index e0302636aff5..8c1cb53464a0 100644
--- a/arch/arm/boot/dts/imx6q-dmo-edmqmx6.dts
+++ b/arch/arm/boot/dts/imx6q-dmo-edmqmx6.dts
@@ -95,6 +95,12 @@
95 }; 95 };
96}; 96};
97 97
98&can1 {
99 pinctrl-names = "default";
100 pinctrl-0 = <&pinctrl_can1>;
101 status = "okay";
102};
103
98&ecspi5 { 104&ecspi5 {
99 pinctrl-names = "default"; 105 pinctrl-names = "default";
100 pinctrl-0 = <&pinctrl_ecspi5>; 106 pinctrl-0 = <&pinctrl_ecspi5>;
@@ -118,6 +124,13 @@
118 status = "okay"; 124 status = "okay";
119}; 125};
120 126
127&i2c1 {
128 clock-frequency = <100000>;
129 pinctrl-names = "default";
130 pinctrl-0 = <&pinctrl_i2c1>;
131 status = "okay";
132};
133
121&i2c2 { 134&i2c2 {
122 clock-frequency = <100000>; 135 clock-frequency = <100000>;
123 pinctrl-names = "default"; 136 pinctrl-names = "default";
@@ -274,6 +287,13 @@
274 }; 287 };
275}; 288};
276 289
290&i2c3 {
291 clock-frequency = <100000>;
292 pinctrl-names = "default";
293 pinctrl-0 = <&pinctrl_i2c3>;
294 status = "okay";
295};
296
277&iomuxc { 297&iomuxc {
278 pinctrl-names = "default"; 298 pinctrl-names = "default";
279 pinctrl-0 = <&pinctrl_hog>; 299 pinctrl-0 = <&pinctrl_hog>;
@@ -286,6 +306,13 @@
286 >; 306 >;
287 }; 307 };
288 308
309 pinctrl_can1: can1grp {
310 fsl,pins = <
311 MX6QDL_PAD_KEY_ROW2__FLEXCAN1_RX 0x1b0b0
312 MX6QDL_PAD_GPIO_7__FLEXCAN1_TX 0x1b0b0
313 >;
314 };
315
289 pinctrl_ecspi5: ecspi5rp-1 { 316 pinctrl_ecspi5: ecspi5rp-1 {
290 fsl,pins = < 317 fsl,pins = <
291 MX6QDL_PAD_SD1_DAT0__ECSPI5_MISO 0x80000000 318 MX6QDL_PAD_SD1_DAT0__ECSPI5_MISO 0x80000000
@@ -316,6 +343,13 @@
316 >; 343 >;
317 }; 344 };
318 345
346 pinctrl_i2c1: i2c1grp {
347 fsl,pins = <
348 MX6QDL_PAD_EIM_D21__I2C1_SCL 0x4001b8b1
349 MX6QDL_PAD_EIM_D28__I2C1_SDA 0x4001b8b1
350 >;
351 };
352
319 pinctrl_i2c2: i2c2grp { 353 pinctrl_i2c2: i2c2grp {
320 fsl,pins = < 354 fsl,pins = <
321 MX6QDL_PAD_EIM_EB2__I2C2_SCL 0x4001b8b1 355 MX6QDL_PAD_EIM_EB2__I2C2_SCL 0x4001b8b1
@@ -323,6 +357,19 @@
323 >; 357 >;
324 }; 358 };
325 359
360 pinctrl_i2c3: i2c3grp {
361 fsl,pins = <
362 MX6QDL_PAD_EIM_D17__I2C3_SCL 0x4001b8b1
363 MX6QDL_PAD_GPIO_6__I2C3_SDA 0x4001b8b1
364 >;
365 };
366
367 pinctrl_pcie: pciegrp {
368 fsl,pins = <
369 MX6QDL_PAD_KEY_COL1__GPIO4_IO08 0x100b1
370 >;
371 };
372
326 pinctrl_pfuze: pfuze100grp1 { 373 pinctrl_pfuze: pfuze100grp1 {
327 fsl,pins = < 374 fsl,pins = <
328 MX6QDL_PAD_EIM_D20__GPIO3_IO20 0x80000000 375 MX6QDL_PAD_EIM_D20__GPIO3_IO20 0x80000000
@@ -385,6 +432,13 @@
385 }; 432 };
386}; 433};
387 434
435&pcie {
436 pinctrl-names = "default";
437 pinctrl-0 = <&pinctrl_pcie>;
438 reset-gpio = <&gpio4 8 0>;
439 status = "okay";
440};
441
388&sata { 442&sata {
389 status = "okay"; 443 status = "okay";
390}; 444};
diff --git a/arch/arm/boot/dts/imx6q-gw51xx.dts b/arch/arm/boot/dts/imx6q-gw51xx.dts
index 0e1406e58eff..8e8bcd8fe0fb 100644
--- a/arch/arm/boot/dts/imx6q-gw51xx.dts
+++ b/arch/arm/boot/dts/imx6q-gw51xx.dts
@@ -14,6 +14,6 @@
14#include "imx6qdl-gw51xx.dtsi" 14#include "imx6qdl-gw51xx.dtsi"
15 15
16/ { 16/ {
17 model = "Gateworks Ventana i.MX6 Quad GW51XX"; 17 model = "Gateworks Ventana i.MX6 Dual/Quad GW51XX";
18 compatible = "gw,imx6q-gw51xx", "gw,ventana", "fsl,imx6q"; 18 compatible = "gw,imx6q-gw51xx", "gw,ventana", "fsl,imx6q";
19}; 19};
diff --git a/arch/arm/boot/dts/imx6q-gw52xx.dts b/arch/arm/boot/dts/imx6q-gw52xx.dts
index 5f71ddbc7f05..a12c47e5ee05 100644
--- a/arch/arm/boot/dts/imx6q-gw52xx.dts
+++ b/arch/arm/boot/dts/imx6q-gw52xx.dts
@@ -14,7 +14,7 @@
14#include "imx6qdl-gw52xx.dtsi" 14#include "imx6qdl-gw52xx.dtsi"
15 15
16/ { 16/ {
17 model = "Gateworks Ventana i.MX6 Quad GW52XX"; 17 model = "Gateworks Ventana i.MX6 Dual/Quad GW52XX";
18 compatible = "gw,imx6q-gw52xx", "gw,ventana", "fsl,imx6q"; 18 compatible = "gw,imx6q-gw52xx", "gw,ventana", "fsl,imx6q";
19}; 19};
20 20
diff --git a/arch/arm/boot/dts/imx6q-gw53xx.dts b/arch/arm/boot/dts/imx6q-gw53xx.dts
index 360c316b4740..d76aaa83dad0 100644
--- a/arch/arm/boot/dts/imx6q-gw53xx.dts
+++ b/arch/arm/boot/dts/imx6q-gw53xx.dts
@@ -14,7 +14,7 @@
14#include "imx6qdl-gw53xx.dtsi" 14#include "imx6qdl-gw53xx.dtsi"
15 15
16/ { 16/ {
17 model = "Gateworks Ventana i.MX6 Quad GW53XX"; 17 model = "Gateworks Ventana i.MX6 Dual/Quad GW53XX";
18 compatible = "gw,imx6q-gw53xx", "gw,ventana", "fsl,imx6q"; 18 compatible = "gw,imx6q-gw53xx", "gw,ventana", "fsl,imx6q";
19}; 19};
20 20
diff --git a/arch/arm/boot/dts/imx6q-gw5400-a.dts b/arch/arm/boot/dts/imx6q-gw5400-a.dts
index 3689eaa58826..22e6f8e657d2 100644
--- a/arch/arm/boot/dts/imx6q-gw5400-a.dts
+++ b/arch/arm/boot/dts/imx6q-gw5400-a.dts
@@ -115,9 +115,9 @@
115 }; 115 };
116 116
117 sound { 117 sound {
118 compatible = "fsl,imx6q-sabrelite-sgtl5000", 118 compatible = "fsl,imx6q-ventana-sgtl5000",
119 "fsl,imx-audio-sgtl5000"; 119 "fsl,imx-audio-sgtl5000";
120 model = "imx6q-sabrelite-sgtl5000"; 120 model = "sgtl5000-audio";
121 ssi-controller = <&ssi1>; 121 ssi-controller = <&ssi1>;
122 audio-codec = <&codec>; 122 audio-codec = <&codec>;
123 audio-routing = 123 audio-routing =
@@ -504,7 +504,6 @@
504}; 504};
505 505
506&ssi1 { 506&ssi1 {
507 fsl,mode = "i2s-slave";
508 status = "okay"; 507 status = "okay";
509}; 508};
510 509
diff --git a/arch/arm/boot/dts/imx6q-gw54xx.dts b/arch/arm/boot/dts/imx6q-gw54xx.dts
index ab518d66a75e..6e8f53e92a2d 100644
--- a/arch/arm/boot/dts/imx6q-gw54xx.dts
+++ b/arch/arm/boot/dts/imx6q-gw54xx.dts
@@ -14,7 +14,7 @@
14#include "imx6qdl-gw54xx.dtsi" 14#include "imx6qdl-gw54xx.dtsi"
15 15
16/ { 16/ {
17 model = "Gateworks Ventana i.MX6 Quad GW54XX"; 17 model = "Gateworks Ventana i.MX6 Dual/Quad GW54XX";
18 compatible = "gw,imx6q-gw54xx", "gw,ventana", "fsl,imx6q"; 18 compatible = "gw,imx6q-gw54xx", "gw,ventana", "fsl,imx6q";
19}; 19};
20 20
diff --git a/arch/arm/boot/dts/imx6q-rex-pro.dts b/arch/arm/boot/dts/imx6q-rex-pro.dts
new file mode 100644
index 000000000000..3c2852b16f78
--- /dev/null
+++ b/arch/arm/boot/dts/imx6q-rex-pro.dts
@@ -0,0 +1,34 @@
1/*
2 * Copyright 2014 FEDEVEL, Inc.
3 *
4 * Author: Robert Nelson <robertcnelson@gmail.com>
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation.
9 *
10 */
11/dts-v1/;
12#include "imx6q.dtsi"
13#include "imx6qdl-rex.dtsi"
14
15/ {
16 model = "Rex Pro i.MX6 Quad Board";
17 compatible = "rex,imx6q-rex-pro", "fsl,imx6q";
18
19 memory {
20 reg = <0x10000000 0x80000000>;
21 };
22};
23
24&ecspi3 {
25 flash: m25p80@0 {
26 compatible = "sst,sst25vf032b";
27 spi-max-frequency = <20000000>;
28 reg = <0>;
29 };
30};
31
32&sata {
33 status = "okay";
34};
diff --git a/arch/arm/boot/dts/imx6q-tx6q-1010-comtft.dts b/arch/arm/boot/dts/imx6q-tx6q-1010-comtft.dts
new file mode 100644
index 000000000000..b18fae10b2e3
--- /dev/null
+++ b/arch/arm/boot/dts/imx6q-tx6q-1010-comtft.dts
@@ -0,0 +1,103 @@
1/*
2 * Copyright 2014 Lothar Waßmann <LW@KARO-electronics.de>
3 *
4 * The code contained herein is licensed under the GNU General Public
5 * License. You may obtain a copy of the GNU General Public License
6 * Version 2 at the following locations:
7 *
8 * http://www.opensource.org/licenses/gpl-license.html
9 * http://www.gnu.org/copyleft/gpl.html
10 */
11
12/dts-v1/;
13#include "imx6q.dtsi"
14#include "imx6qdl-tx6.dtsi"
15
16/ {
17 model = "Ka-Ro electronics TX6Q-1010 Module on CoMpact TFT";
18 compatible = "karo,imx6q-tx6q", "fsl,imx6q";
19
20 aliases {
21 display = &display;
22 };
23
24 backlight: backlight {
25 compatible = "pwm-backlight";
26 pwms = <&pwm2 0 500000 0>;
27 power-supply = <&reg_3v3>;
28 /*
29 * a poor man's way to create a 1:1 relationship between
30 * the PWM value and the actual duty cycle
31 */
32 brightness-levels = < 0 1 2 3 4 5 6 7 8 9
33 10 11 12 13 14 15 16 17 18 19
34 20 21 22 23 24 25 26 27 28 29
35 30 31 32 33 34 35 36 37 38 39
36 40 41 42 43 44 45 46 47 48 49
37 50 51 52 53 54 55 56 57 58 59
38 60 61 62 63 64 65 66 67 68 69
39 70 71 72 73 74 75 76 77 78 79
40 80 81 82 83 84 85 86 87 88 89
41 90 91 92 93 94 95 96 97 98 99
42 100>;
43 default-brightness-level = <50>;
44 };
45
46 display: display@di0 {
47 compatible = "fsl,imx-parallel-display";
48 interface-pix-fmt = "rgb24";
49 pinctrl-names = "default";
50 pinctrl-0 = <&pinctrl_disp0_1>;
51 status = "okay";
52
53 port {
54 display0_in: endpoint {
55 remote-endpoint = <&ipu1_di0_disp0>;
56 };
57 };
58
59 display-timings {
60 native-mode = <&ET070001DM6>;
61
62 ET070001DM6: CoMTFT { /* same as ET0700 but with inverted pixel clock */
63 clock-frequency = <33264000>;
64 hactive = <800>;
65 vactive = <480>;
66 hback-porch = <88>;
67 hsync-len = <128>;
68 hfront-porch = <40>;
69 vback-porch = <33>;
70 vsync-len = <2>;
71 vfront-porch = <10>;
72 hsync-active = <0>;
73 vsync-active = <0>;
74 de-active = <1>;
75 pixelclk-active = <1>;
76 };
77 };
78 };
79};
80
81&can1 {
82 status = "disabled";
83};
84
85&can2 {
86 xceiver-supply = <&reg_3v3>;
87};
88
89&ipu1_di0_disp0 {
90 remote-endpoint = <&display0_in>;
91};
92
93&kpp {
94 status = "disabled";
95};
96
97&reg_can_xcvr {
98 status = "disabled";
99};
100
101&touchscreen {
102 status = "disabled";
103};
diff --git a/arch/arm/boot/dts/imx6q-tx6q-1010.dts b/arch/arm/boot/dts/imx6q-tx6q-1010.dts
new file mode 100644
index 000000000000..b58ec9c966c8
--- /dev/null
+++ b/arch/arm/boot/dts/imx6q-tx6q-1010.dts
@@ -0,0 +1,177 @@
1/*
2 * Copyright 2014 Lothar Waßmann <LW@KARO-electronics.de>
3 *
4 * The code contained herein is licensed under the GNU General Public
5 * License. You may obtain a copy of the GNU General Public License
6 * Version 2 at the following locations:
7 *
8 * http://www.opensource.org/licenses/gpl-license.html
9 * http://www.gnu.org/copyleft/gpl.html
10 */
11
12/dts-v1/;
13#include "imx6q.dtsi"
14#include "imx6qdl-tx6.dtsi"
15
16/ {
17 model = "Ka-Ro electronics TX6Q-1010 Module";
18 compatible = "karo,imx6q-tx6q", "fsl,imx6q";
19
20 aliases {
21 display = &display;
22 };
23
24 backlight: backlight {
25 compatible = "pwm-backlight";
26 pwms = <&pwm2 0 500000 PWM_POLARITY_INVERTED>;
27 power-supply = <&reg_3v3>;
28 /*
29 * a poor man's way to create a 1:1 relationship between
30 * the PWM value and the actual duty cycle
31 */
32 brightness-levels = < 0 1 2 3 4 5 6 7 8 9
33 10 11 12 13 14 15 16 17 18 19
34 20 21 22 23 24 25 26 27 28 29
35 30 31 32 33 34 35 36 37 38 39
36 40 41 42 43 44 45 46 47 48 49
37 50 51 52 53 54 55 56 57 58 59
38 60 61 62 63 64 65 66 67 68 69
39 70 71 72 73 74 75 76 77 78 79
40 80 81 82 83 84 85 86 87 88 89
41 90 91 92 93 94 95 96 97 98 99
42 100>;
43 default-brightness-level = <50>;
44 };
45
46 display: display@di0 {
47 compatible = "fsl,imx-parallel-display";
48 interface-pix-fmt = "rgb24";
49 pinctrl-names = "default";
50 pinctrl-0 = <&pinctrl_disp0_1>;
51 status = "okay";
52
53 port {
54 display0_in: endpoint {
55 remote-endpoint = <&ipu1_di0_disp0>;
56 };
57 };
58
59 display-timings {
60 VGA {
61 clock-frequency = <25200000>;
62 hactive = <640>;
63 vactive = <480>;
64 hback-porch = <48>;
65 hsync-len = <96>;
66 hfront-porch = <16>;
67 vback-porch = <31>;
68 vsync-len = <2>;
69 vfront-porch = <12>;
70 hsync-active = <0>;
71 vsync-active = <0>;
72 de-active = <1>;
73 pixelclk-active = <0>;
74 };
75
76 ETV570 {
77 clock-frequency = <25200000>;
78 hactive = <640>;
79 vactive = <480>;
80 hback-porch = <114>;
81 hsync-len = <30>;
82 hfront-porch = <16>;
83 vback-porch = <32>;
84 vsync-len = <3>;
85 vfront-porch = <10>;
86 hsync-active = <0>;
87 vsync-active = <0>;
88 de-active = <1>;
89 pixelclk-active = <0>;
90 };
91
92 ET0350 {
93 clock-frequency = <6413760>;
94 hactive = <320>;
95 vactive = <240>;
96 hback-porch = <34>;
97 hsync-len = <34>;
98 hfront-porch = <20>;
99 vback-porch = <15>;
100 vsync-len = <3>;
101 vfront-porch = <4>;
102 hsync-active = <0>;
103 vsync-active = <0>;
104 de-active = <1>;
105 pixelclk-active = <0>;
106 };
107
108 ET0430 {
109 clock-frequency = <9009000>;
110 hactive = <480>;
111 vactive = <272>;
112 hback-porch = <2>;
113 hsync-len = <41>;
114 hfront-porch = <2>;
115 vback-porch = <2>;
116 vsync-len = <10>;
117 vfront-porch = <2>;
118 hsync-active = <0>;
119 vsync-active = <0>;
120 de-active = <1>;
121 pixelclk-active = <1>;
122 };
123
124 ET0500 {
125 clock-frequency = <33264000>;
126 hactive = <800>;
127 vactive = <480>;
128 hback-porch = <88>;
129 hsync-len = <128>;
130 hfront-porch = <40>;
131 vback-porch = <33>;
132 vsync-len = <2>;
133 vfront-porch = <10>;
134 hsync-active = <0>;
135 vsync-active = <0>;
136 de-active = <1>;
137 pixelclk-active = <0>;
138 };
139
140 ET0700 { /* same as ET0500 */
141 clock-frequency = <33264000>;
142 hactive = <800>;
143 vactive = <480>;
144 hback-porch = <88>;
145 hsync-len = <128>;
146 hfront-porch = <40>;
147 vback-porch = <33>;
148 vsync-len = <2>;
149 vfront-porch = <10>;
150 hsync-active = <0>;
151 vsync-active = <0>;
152 de-active = <1>;
153 pixelclk-active = <0>;
154 };
155
156 ETQ570 {
157 clock-frequency = <6596040>;
158 hactive = <320>;
159 vactive = <240>;
160 hback-porch = <38>;
161 hsync-len = <30>;
162 hfront-porch = <30>;
163 vback-porch = <16>;
164 vsync-len = <3>;
165 vfront-porch = <4>;
166 hsync-active = <0>;
167 vsync-active = <0>;
168 de-active = <1>;
169 pixelclk-active = <0>;
170 };
171 };
172 };
173};
174
175&ipu1_di0_disp0 {
176 remote-endpoint = <&display0_in>;
177};
diff --git a/arch/arm/boot/dts/imx6q-tx6q-1020-comtft.dts b/arch/arm/boot/dts/imx6q-tx6q-1020-comtft.dts
new file mode 100644
index 000000000000..0bb9a9de62a9
--- /dev/null
+++ b/arch/arm/boot/dts/imx6q-tx6q-1020-comtft.dts
@@ -0,0 +1,136 @@
1/*
2 * Copyright 2014 Lothar Waßmann <LW@KARO-electronics.de>
3 *
4 * The code contained herein is licensed under the GNU General Public
5 * License. You may obtain a copy of the GNU General Public License
6 * Version 2 at the following locations:
7 *
8 * http://www.opensource.org/licenses/gpl-license.html
9 * http://www.gnu.org/copyleft/gpl.html
10 */
11
12/dts-v1/;
13#include "imx6q.dtsi"
14#include "imx6qdl-tx6.dtsi"
15
16/ {
17 model = "Ka-Ro electronics TX6Q-1020 Module on CoMpact TFT";
18 compatible = "karo,imx6q-tx6q", "fsl,imx6q";
19
20 aliases {
21 display = &display;
22 };
23
24 backlight: backlight {
25 compatible = "pwm-backlight";
26 pwms = <&pwm2 0 500000 0>;
27 power-supply = <&reg_3v3>;
28 /*
29 * a poor man's way to create a 1:1 relationship between
30 * the PWM value and the actual duty cycle
31 */
32 brightness-levels = < 0 1 2 3 4 5 6 7 8 9
33 10 11 12 13 14 15 16 17 18 19
34 20 21 22 23 24 25 26 27 28 29
35 30 31 32 33 34 35 36 37 38 39
36 40 41 42 43 44 45 46 47 48 49
37 50 51 52 53 54 55 56 57 58 59
38 60 61 62 63 64 65 66 67 68 69
39 70 71 72 73 74 75 76 77 78 79
40 80 81 82 83 84 85 86 87 88 89
41 90 91 92 93 94 95 96 97 98 99
42 100>;
43 default-brightness-level = <50>;
44 };
45
46 display: display@di0 {
47 compatible = "fsl,imx-parallel-display";
48 interface-pix-fmt = "rgb24";
49 pinctrl-names = "default";
50 pinctrl-0 = <&pinctrl_disp0_1>;
51 status = "okay";
52
53 port {
54 display0_in: endpoint {
55 remote-endpoint = <&ipu1_di0_disp0>;
56 };
57 };
58
59 display-timings {
60 native-mode = <&ET070001DM6>;
61
62 ET070001DM6: CoMTFT { /* same as ET0700 but with inverted pixel clock */
63 clock-frequency = <33264000>;
64 hactive = <800>;
65 vactive = <480>;
66 hback-porch = <88>;
67 hsync-len = <128>;
68 hfront-porch = <40>;
69 vback-porch = <33>;
70 vsync-len = <2>;
71 vfront-porch = <10>;
72 hsync-active = <0>;
73 vsync-active = <0>;
74 de-active = <1>;
75 pixelclk-active = <1>;
76 };
77 };
78 };
79};
80
81&can1 {
82 status = "disabled";
83};
84
85&can2 {
86 xceiver-supply = <&reg_3v3>;
87};
88
89&ds1339 {
90 status = "disabled";
91};
92
93&gpmi {
94 status = "disabled";
95};
96
97&iomuxc {
98 imx6qdl-tx6 {
99 pinctrl_usdhc4: usdhc4grp {
100 fsl,pins = <
101 MX6QDL_PAD_SD4_CMD__SD4_CMD 0x070b1
102 MX6QDL_PAD_SD4_CLK__SD4_CLK 0x070b1
103 MX6QDL_PAD_SD4_DAT0__SD4_DATA0 0x070b1
104 MX6QDL_PAD_SD4_DAT1__SD4_DATA1 0x070b1
105 MX6QDL_PAD_SD4_DAT2__SD4_DATA2 0x070b1
106 MX6QDL_PAD_SD4_DAT3__SD4_DATA3 0x070b1
107 MX6QDL_PAD_NANDF_ALE__SD4_RESET 0x0b0b1
108 >;
109 };
110 };
111};
112
113&ipu1_di0_disp0 {
114 remote-endpoint = <&display0_in>;
115};
116
117&kpp {
118 status = "disabled";
119};
120
121&reg_can_xcvr {
122 status = "disabled";
123};
124
125&touchscreen {
126 status = "disabled";
127};
128
129&usdhc4 {
130 pinctrl-names = "default";
131 pinctrl-0 = <&pinctrl_usdhc4>;
132 bus-width = <4>;
133 no-1-8-v;
134 fsl,wp-controller;
135 status = "okay";
136};
diff --git a/arch/arm/boot/dts/imx6q-tx6q-1020.dts b/arch/arm/boot/dts/imx6q-tx6q-1020.dts
new file mode 100644
index 000000000000..b96d80a35d39
--- /dev/null
+++ b/arch/arm/boot/dts/imx6q-tx6q-1020.dts
@@ -0,0 +1,210 @@
1/*
2 * Copyright 2014 Lothar Waßmann <LW@KARO-electronics.de>
3 *
4 * The code contained herein is licensed under the GNU General Public
5 * License. You may obtain a copy of the GNU General Public License
6 * Version 2 at the following locations:
7 *
8 * http://www.opensource.org/licenses/gpl-license.html
9 * http://www.gnu.org/copyleft/gpl.html
10 */
11
12/dts-v1/;
13#include "imx6q.dtsi"
14#include "imx6qdl-tx6.dtsi"
15
16/ {
17 model = "Ka-Ro electronics TX6Q-1020 Module";
18 compatible = "karo,imx6q-tx6q", "fsl,imx6q";
19
20 aliases {
21 display = &display;
22 };
23
24 backlight: backlight {
25 compatible = "pwm-backlight";
26 pwms = <&pwm2 0 500000 PWM_POLARITY_INVERTED>;
27 power-supply = <&reg_3v3>;
28 /*
29 * a poor man's way to create a 1:1 relationship between
30 * the PWM value and the actual duty cycle
31 */
32 brightness-levels = < 0 1 2 3 4 5 6 7 8 9
33 10 11 12 13 14 15 16 17 18 19
34 20 21 22 23 24 25 26 27 28 29
35 30 31 32 33 34 35 36 37 38 39
36 40 41 42 43 44 45 46 47 48 49
37 50 51 52 53 54 55 56 57 58 59
38 60 61 62 63 64 65 66 67 68 69
39 70 71 72 73 74 75 76 77 78 79
40 80 81 82 83 84 85 86 87 88 89
41 90 91 92 93 94 95 96 97 98 99
42 100>;
43 default-brightness-level = <50>;
44 };
45
46 display: display@di0 {
47 compatible = "fsl,imx-parallel-display";
48 interface-pix-fmt = "rgb24";
49 pinctrl-names = "default";
50 pinctrl-0 = <&pinctrl_disp0_1>;
51 status = "okay";
52
53 port {
54 display0_in: endpoint {
55 remote-endpoint = <&ipu1_di0_disp0>;
56 };
57 };
58
59 display-timings {
60 VGA {
61 clock-frequency = <25200000>;
62 hactive = <640>;
63 vactive = <480>;
64 hback-porch = <48>;
65 hsync-len = <96>;
66 hfront-porch = <16>;
67 vback-porch = <31>;
68 vsync-len = <2>;
69 vfront-porch = <12>;
70 hsync-active = <0>;
71 vsync-active = <0>;
72 de-active = <1>;
73 pixelclk-active = <0>;
74 };
75
76 ETV570 {
77 clock-frequency = <25200000>;
78 hactive = <640>;
79 vactive = <480>;
80 hback-porch = <114>;
81 hsync-len = <30>;
82 hfront-porch = <16>;
83 vback-porch = <32>;
84 vsync-len = <3>;
85 vfront-porch = <10>;
86 hsync-active = <0>;
87 vsync-active = <0>;
88 de-active = <1>;
89 pixelclk-active = <0>;
90 };
91
92 ET0350 {
93 clock-frequency = <6413760>;
94 hactive = <320>;
95 vactive = <240>;
96 hback-porch = <34>;
97 hsync-len = <34>;
98 hfront-porch = <20>;
99 vback-porch = <15>;
100 vsync-len = <3>;
101 vfront-porch = <4>;
102 hsync-active = <0>;
103 vsync-active = <0>;
104 de-active = <1>;
105 pixelclk-active = <0>;
106 };
107
108 ET0430 {
109 clock-frequency = <9009000>;
110 hactive = <480>;
111 vactive = <272>;
112 hback-porch = <2>;
113 hsync-len = <41>;
114 hfront-porch = <2>;
115 vback-porch = <2>;
116 vsync-len = <10>;
117 vfront-porch = <2>;
118 hsync-active = <0>;
119 vsync-active = <0>;
120 de-active = <1>;
121 pixelclk-active = <1>;
122 };
123
124 ET0500 {
125 clock-frequency = <33264000>;
126 hactive = <800>;
127 vactive = <480>;
128 hback-porch = <88>;
129 hsync-len = <128>;
130 hfront-porch = <40>;
131 vback-porch = <33>;
132 vsync-len = <2>;
133 vfront-porch = <10>;
134 hsync-active = <0>;
135 vsync-active = <0>;
136 de-active = <1>;
137 pixelclk-active = <0>;
138 };
139
140 ET0700 { /* same as ET0500 */
141 clock-frequency = <33264000>;
142 hactive = <800>;
143 vactive = <480>;
144 hback-porch = <88>;
145 hsync-len = <128>;
146 hfront-porch = <40>;
147 vback-porch = <33>;
148 vsync-len = <2>;
149 vfront-porch = <10>;
150 hsync-active = <0>;
151 vsync-active = <0>;
152 de-active = <1>;
153 pixelclk-active = <0>;
154 };
155
156 ETQ570 {
157 clock-frequency = <6596040>;
158 hactive = <320>;
159 vactive = <240>;
160 hback-porch = <38>;
161 hsync-len = <30>;
162 hfront-porch = <30>;
163 vback-porch = <16>;
164 vsync-len = <3>;
165 vfront-porch = <4>;
166 hsync-active = <0>;
167 vsync-active = <0>;
168 de-active = <1>;
169 pixelclk-active = <0>;
170 };
171 };
172 };
173};
174
175&ds1339 {
176 status = "disabled";
177};
178
179&gpmi {
180 status = "disabled";
181};
182
183&iomuxc {
184 imx6qdl-tx6 {
185 pinctrl_usdhc4: usdhc4grp {
186 fsl,pins = <
187 MX6QDL_PAD_SD4_CMD__SD4_CMD 0x070b1
188 MX6QDL_PAD_SD4_CLK__SD4_CLK 0x070b1
189 MX6QDL_PAD_SD4_DAT0__SD4_DATA0 0x070b1
190 MX6QDL_PAD_SD4_DAT1__SD4_DATA1 0x070b1
191 MX6QDL_PAD_SD4_DAT2__SD4_DATA2 0x070b1
192 MX6QDL_PAD_SD4_DAT3__SD4_DATA3 0x070b1
193 MX6QDL_PAD_NANDF_ALE__SD4_RESET 0x0b0b1
194 >;
195 };
196 };
197};
198
199&ipu1_di0_disp0 {
200 remote-endpoint = <&display0_in>;
201};
202
203&usdhc4 {
204 pinctrl-names = "default";
205 pinctrl-0 = <&pinctrl_usdhc4>;
206 bus-width = <4>;
207 no-1-8-v;
208 fsl,wp-controller;
209 status = "okay";
210};
diff --git a/arch/arm/boot/dts/imx6q-tx6q-1110.dts b/arch/arm/boot/dts/imx6q-tx6q-1110.dts
new file mode 100644
index 000000000000..88aa1e4c792d
--- /dev/null
+++ b/arch/arm/boot/dts/imx6q-tx6q-1110.dts
@@ -0,0 +1,154 @@
1/*
2 * Copyright 2014 Lothar Waßmann <LW@KARO-electronics.de>
3 *
4 * The code contained herein is licensed under the GNU General Public
5 * License. You may obtain a copy of the GNU General Public License
6 * Version 2 at the following locations:
7 *
8 * http://www.opensource.org/licenses/gpl-license.html
9 * http://www.gnu.org/copyleft/gpl.html
10 */
11
12/dts-v1/;
13#include "imx6q.dtsi"
14#include "imx6qdl-tx6.dtsi"
15
16/ {
17 model = "Ka-Ro electronics TX6Q-1110 Module";
18 compatible = "karo,imx6q-tx6q", "fsl,imx6q";
19
20 aliases {
21 display = &lvds0;
22 lvds0 = &lvds0;
23 lvds1 = &lvds1;
24 };
25
26 backlight0: backlight0 {
27 compatible = "pwm-backlight";
28 pwms = <&pwm2 0 500000 0>;
29 power-supply = <&reg_lcd0_pwr>;
30 /*
31 * a poor man's way to create a 1:1 relationship between
32 * the PWM value and the actual duty cycle
33 */
34 brightness-levels = < 0 1 2 3 4 5 6 7 8 9
35 10 11 12 13 14 15 16 17 18 19
36 20 21 22 23 24 25 26 27 28 29
37 30 31 32 33 34 35 36 37 38 39
38 40 41 42 43 44 45 46 47 48 49
39 50 51 52 53 54 55 56 57 58 59
40 60 61 62 63 64 65 66 67 68 69
41 70 71 72 73 74 75 76 77 78 79
42 80 81 82 83 84 85 86 87 88 89
43 90 91 92 93 94 95 96 97 98 99
44 100>;
45 default-brightness-level = <50>;
46 };
47
48 backlight1: backlight1 {
49 compatible = "pwm-backlight";
50 pwms = <&pwm1 0 500000 0>;
51 power-supply = <&reg_lcd1_pwr>;
52 /*
53 * a poor man's way to create a 1:1 relationship between
54 * the PWM value and the actual duty cycle
55 */
56 brightness-levels = < 0 1 2 3 4 5 6 7 8 9
57 10 11 12 13 14 15 16 17 18 19
58 20 21 22 23 24 25 26 27 28 29
59 30 31 32 33 34 35 36 37 38 39
60 40 41 42 43 44 45 46 47 48 49
61 50 51 52 53 54 55 56 57 58 59
62 60 61 62 63 64 65 66 67 68 69
63 70 71 72 73 74 75 76 77 78 79
64 80 81 82 83 84 85 86 87 88 89
65 90 91 92 93 94 95 96 97 98 99
66 100>;
67 default-brightness-level = <50>;
68 };
69};
70
71&i2c3 {
72 polytouch1: eeti@04 {
73 compatible = "eeti,egalax_ts";
74 reg = <0x04>;
75 pinctrl-names = "default";
76 pinctrl-0 = <&pinctrl_eeti>;
77 interrupt-parent = <&gpio3>;
78 interrupts = <22 0>;
79 wakeup-gpios = <&gpio3 22 GPIO_ACTIVE_HIGH>;
80 linux,wakeup;
81 };
82};
83
84&iomuxc {
85 imx6q-tx6q-1110 {
86 pinctrl_eeti: eetigrp {
87 fsl,pins = <
88 MX6QDL_PAD_EIM_D22__GPIO3_IO22 0x1b0b1 /* Interrupt */
89 >;
90 };
91 };
92};
93
94&kpp {
95 status = "disabled"; /* pad conflict with backlight1 PWM */
96};
97
98&ldb {
99 status = "okay";
100
101 lvds0: lvds-channel@0 {
102 fsl,data-mapping = "spwg";
103 fsl,data-width = <18>;
104 status = "okay";
105
106 display-timings {
107 native-mode = <&lvds_timing0>;
108 lvds_timing0: hsd100pxn1 {
109 clock-frequency = <65000000>;
110 hactive = <1024>;
111 vactive = <768>;
112 hback-porch = <220>;
113 hfront-porch = <40>;
114 vback-porch = <21>;
115 vfront-porch = <7>;
116 hsync-len = <60>;
117 vsync-len = <10>;
118 de-active = <1>;
119 pixelclk-active = <1>;
120 };
121 };
122 };
123
124 lvds1: lvds-channel@1 {
125 fsl,data-mapping = "spwg";
126 fsl,data-width = <18>;
127 status = "disabled";
128
129 display-timings {
130 native-mode = <&lvds_timing1>;
131 lvds_timing1: hsd100pxn1 {
132 clock-frequency = <65000000>;
133 hactive = <1024>;
134 vactive = <768>;
135 hback-porch = <220>;
136 hfront-porch = <40>;
137 vback-porch = <21>;
138 vfront-porch = <7>;
139 hsync-len = <60>;
140 vsync-len = <10>;
141 de-active = <1>;
142 pixelclk-active = <1>;
143 };
144 };
145 };
146};
147
148&pwm1 {
149 status = "okay";
150};
151
152&sata {
153 status = "okay";
154};
diff --git a/arch/arm/boot/dts/imx6q-udoo.dts b/arch/arm/boot/dts/imx6q-udoo.dts
index 6c561060bf5c..e3bff2ac00db 100644
--- a/arch/arm/boot/dts/imx6q-udoo.dts
+++ b/arch/arm/boot/dts/imx6q-udoo.dts
@@ -23,6 +23,23 @@
23 memory { 23 memory {
24 reg = <0x10000000 0x40000000>; 24 reg = <0x10000000 0x40000000>;
25 }; 25 };
26
27 regulators {
28 compatible = "simple-bus";
29 #address-cells = <1>;
30 #size-cells = <0>;
31
32 reg_usb_h1_vbus: regulator@0 {
33 compatible = "regulator-fixed";
34 reg = <0>;
35 regulator-name = "usb_h1_vbus";
36 regulator-min-microvolt = <5000000>;
37 regulator-max-microvolt = <5000000>;
38 enable-active-high;
39 startup-delay-us = <2>; /* USB2415 requires a POR of 1 us minimum */
40 gpio = <&gpio7 12 0>;
41 };
42 };
26}; 43};
27 44
28&fec { 45&fec {
@@ -81,6 +98,13 @@
81 >; 98 >;
82 }; 99 };
83 100
101 pinctrl_usbh: usbhgrp {
102 fsl,pins = <
103 MX6QDL_PAD_GPIO_17__GPIO7_IO12 0x80000000
104 MX6QDL_PAD_NANDF_CS2__CCM_CLKO2 0x130b0
105 >;
106 };
107
84 pinctrl_usdhc3: usdhc3grp { 108 pinctrl_usdhc3: usdhc3grp {
85 fsl,pins = < 109 fsl,pins = <
86 MX6QDL_PAD_SD3_CMD__SD3_CMD 0x17059 110 MX6QDL_PAD_SD3_CMD__SD3_CMD 0x17059
@@ -104,6 +128,14 @@
104 status = "okay"; 128 status = "okay";
105}; 129};
106 130
131&usbh1 {
132 pinctrl-names = "default";
133 pinctrl-0 = <&pinctrl_usbh>;
134 vbus-supply = <&reg_usb_h1_vbus>;
135 clocks = <&clks 201>;
136 status = "okay";
137};
138
107&usdhc3 { 139&usdhc3 {
108 pinctrl-names = "default"; 140 pinctrl-names = "default";
109 pinctrl-0 = <&pinctrl_usdhc3>; 141 pinctrl-0 = <&pinctrl_usdhc3>;
diff --git a/arch/arm/boot/dts/imx6q-wandboard-revb1.dts b/arch/arm/boot/dts/imx6q-wandboard-revb1.dts
new file mode 100644
index 000000000000..20bf3c282623
--- /dev/null
+++ b/arch/arm/boot/dts/imx6q-wandboard-revb1.dts
@@ -0,0 +1,26 @@
1/*
2 * Copyright 2013 Freescale Semiconductor, Inc.
3 *
4 * Author: Fabio Estevam <fabio.estevam@freescale.com>
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation.
9 *
10 */
11/dts-v1/;
12#include "imx6q.dtsi"
13#include "imx6qdl-wandboard-revb1.dtsi"
14
15/ {
16 model = "Wandboard i.MX6 Quad Board";
17 compatible = "wand,imx6q-wandboard", "fsl,imx6q";
18
19 memory {
20 reg = <0x10000000 0x80000000>;
21 };
22};
23
24&sata {
25 status = "okay";
26};
diff --git a/arch/arm/boot/dts/imx6q-wandboard.dts b/arch/arm/boot/dts/imx6q-wandboard.dts
index 36be17f207b1..4a8a6ee13e9f 100644
--- a/arch/arm/boot/dts/imx6q-wandboard.dts
+++ b/arch/arm/boot/dts/imx6q-wandboard.dts
@@ -10,7 +10,7 @@
10 */ 10 */
11/dts-v1/; 11/dts-v1/;
12#include "imx6q.dtsi" 12#include "imx6q.dtsi"
13#include "imx6qdl-wandboard.dtsi" 13#include "imx6qdl-wandboard-revc1.dtsi"
14 14
15/ { 15/ {
16 model = "Wandboard i.MX6 Quad Board"; 16 model = "Wandboard i.MX6 Quad Board";
diff --git a/arch/arm/boot/dts/imx6q.dtsi b/arch/arm/boot/dts/imx6q.dtsi
index addd3f881ce2..e9f3646d1760 100644
--- a/arch/arm/boot/dts/imx6q.dtsi
+++ b/arch/arm/boot/dts/imx6q.dtsi
@@ -43,8 +43,11 @@
43 396000 1175000 43 396000 1175000
44 >; 44 >;
45 clock-latency = <61036>; /* two CLK32 periods */ 45 clock-latency = <61036>; /* two CLK32 periods */
46 clocks = <&clks 104>, <&clks 6>, <&clks 16>, 46 clocks = <&clks IMX6QDL_CLK_ARM>,
47 <&clks 17>, <&clks 170>; 47 <&clks IMX6QDL_CLK_PLL2_PFD2_396M>,
48 <&clks IMX6QDL_CLK_STEP>,
49 <&clks IMX6QDL_CLK_PLL1_SW>,
50 <&clks IMX6QDL_CLK_PLL1_SYS>;
48 clock-names = "arm", "pll2_pfd2_396m", "step", 51 clock-names = "arm", "pll2_pfd2_396m", "step",
49 "pll1_sw", "pll1_sys"; 52 "pll1_sw", "pll1_sys";
50 arm-supply = <&reg_arm>; 53 arm-supply = <&reg_arm>;
@@ -78,7 +81,7 @@
78 ocram: sram@00900000 { 81 ocram: sram@00900000 {
79 compatible = "mmio-sram"; 82 compatible = "mmio-sram";
80 reg = <0x00900000 0x40000>; 83 reg = <0x00900000 0x40000>;
81 clocks = <&clks 142>; 84 clocks = <&clks IMX6QDL_CLK_OCRAM>;
82 }; 85 };
83 86
84 aips-bus@02000000 { /* AIPS1 */ 87 aips-bus@02000000 { /* AIPS1 */
@@ -89,7 +92,8 @@
89 compatible = "fsl,imx6q-ecspi", "fsl,imx51-ecspi"; 92 compatible = "fsl,imx6q-ecspi", "fsl,imx51-ecspi";
90 reg = <0x02018000 0x4000>; 93 reg = <0x02018000 0x4000>;
91 interrupts = <0 35 IRQ_TYPE_LEVEL_HIGH>; 94 interrupts = <0 35 IRQ_TYPE_LEVEL_HIGH>;
92 clocks = <&clks 116>, <&clks 116>; 95 clocks = <&clks IMX6Q_CLK_ECSPI5>,
96 <&clks IMX6Q_CLK_ECSPI5>;
93 clock-names = "ipg", "per"; 97 clock-names = "ipg", "per";
94 status = "disabled"; 98 status = "disabled";
95 }; 99 };
@@ -140,7 +144,9 @@
140 compatible = "fsl,imx6q-ahci"; 144 compatible = "fsl,imx6q-ahci";
141 reg = <0x02200000 0x4000>; 145 reg = <0x02200000 0x4000>;
142 interrupts = <0 39 IRQ_TYPE_LEVEL_HIGH>; 146 interrupts = <0 39 IRQ_TYPE_LEVEL_HIGH>;
143 clocks = <&clks 154>, <&clks 187>, <&clks 105>; 147 clocks = <&clks IMX6QDL_CLK_SATA>,
148 <&clks IMX6QDL_CLK_SATA_REF_100M>,
149 <&clks IMX6QDL_CLK_AHB>;
144 clock-names = "sata", "sata_ref", "ahb"; 150 clock-names = "sata", "sata_ref", "ahb";
145 status = "disabled"; 151 status = "disabled";
146 }; 152 };
@@ -152,10 +158,20 @@
152 reg = <0x02800000 0x400000>; 158 reg = <0x02800000 0x400000>;
153 interrupts = <0 8 IRQ_TYPE_LEVEL_HIGH>, 159 interrupts = <0 8 IRQ_TYPE_LEVEL_HIGH>,
154 <0 7 IRQ_TYPE_LEVEL_HIGH>; 160 <0 7 IRQ_TYPE_LEVEL_HIGH>;
155 clocks = <&clks 133>, <&clks 134>, <&clks 137>; 161 clocks = <&clks IMX6QDL_CLK_IPU2>,
162 <&clks IMX6QDL_CLK_IPU2_DI0>,
163 <&clks IMX6QDL_CLK_IPU2_DI1>;
156 clock-names = "bus", "di0", "di1"; 164 clock-names = "bus", "di0", "di1";
157 resets = <&src 4>; 165 resets = <&src 4>;
158 166
167 ipu2_csi0: port@0 {
168 reg = <0>;
169 };
170
171 ipu2_csi1: port@1 {
172 reg = <1>;
173 };
174
159 ipu2_di0: port@2 { 175 ipu2_di0: port@2 {
160 #address-cells = <1>; 176 #address-cells = <1>;
161 #size-cells = <0>; 177 #size-cells = <0>;
@@ -230,9 +246,10 @@
230}; 246};
231 247
232&ldb { 248&ldb {
233 clocks = <&clks 33>, <&clks 34>, 249 clocks = <&clks IMX6QDL_CLK_LDB_DI0_SEL>, <&clks IMX6QDL_CLK_LDB_DI1_SEL>,
234 <&clks 39>, <&clks 40>, <&clks 41>, <&clks 42>, 250 <&clks IMX6QDL_CLK_IPU1_DI0_SEL>, <&clks IMX6QDL_CLK_IPU1_DI1_SEL>,
235 <&clks 135>, <&clks 136>; 251 <&clks IMX6QDL_CLK_IPU2_DI0_SEL>, <&clks IMX6QDL_CLK_IPU2_DI1_SEL>,
252 <&clks IMX6QDL_CLK_LDB_DI0>, <&clks IMX6QDL_CLK_LDB_DI1>;
236 clock-names = "di0_pll", "di1_pll", 253 clock-names = "di0_pll", "di1_pll",
237 "di0_sel", "di1_sel", "di2_sel", "di3_sel", 254 "di0_sel", "di1_sel", "di2_sel", "di3_sel",
238 "di0", "di1"; 255 "di0", "di1";
diff --git a/arch/arm/boot/dts/imx6qdl-aristainetos.dtsi b/arch/arm/boot/dts/imx6qdl-aristainetos.dtsi
new file mode 100644
index 000000000000..e6d9195a1da7
--- /dev/null
+++ b/arch/arm/boot/dts/imx6qdl-aristainetos.dtsi
@@ -0,0 +1,418 @@
1/*
2 * support fot the imx6 based aristainetos board
3 *
4 * Copyright (C) 2014 Heiko Schocher <hs@denx.de>
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation.
9 *
10 */
11
12#include <dt-bindings/gpio/gpio.h>
13
14/ {
15 regulators {
16 compatible = "simple-bus";
17 #address-cells = <1>;
18 #size-cells = <0>;
19
20 reg_2p5v: regulator@0 {
21 compatible = "regulator-fixed";
22 regulator-name = "2P5V";
23 regulator-min-microvolt = <2500000>;
24 regulator-max-microvolt = <2500000>;
25 regulator-always-on;
26 };
27
28 reg_3p3v: regulator@1 {
29 compatible = "regulator-fixed";
30 regulator-name = "3P3V";
31 regulator-min-microvolt = <3300000>;
32 regulator-max-microvolt = <3300000>;
33 regulator-always-on;
34 };
35
36 reg_usbh1_vbus: regulator@2 {
37 compatible = "regulator-fixed";
38 enable-active-high;
39 gpio = <&gpio3 31 GPIO_ACTIVE_HIGH>;
40 pinctrl-names = "default";
41 pinctrl-0 = <&pinctrl_aristainetos_usbh1_vbus>;
42 regulator-name = "usb_h1_vbus";
43 regulator-min-microvolt = <5000000>;
44 regulator-max-microvolt = <5000000>;
45 };
46
47 reg_usbotg_vbus: regulator@3 {
48 compatible = "regulator-fixed";
49 enable-active-high;
50 gpio = <&gpio4 15 GPIO_ACTIVE_HIGH>;
51 pinctrl-names = "default";
52 pinctrl-0 = <&pinctrl_aristainetos_usbotg_vbus>;
53 regulator-name = "usb_otg_vbus";
54 regulator-min-microvolt = <5000000>;
55 regulator-max-microvolt = <5000000>;
56 };
57 };
58};
59
60&audmux {
61 pinctrl-names = "default";
62 pinctrl-0 = <&pinctrl_audmux>;
63 status = "okay";
64};
65
66&can1 {
67 pinctrl-names = "default";
68 pinctrl-0 = <&pinctrl_flexcan1>;
69 status = "okay";
70};
71
72&can2 {
73 pinctrl-names = "default";
74 pinctrl-0 = <&pinctrl_flexcan2>;
75 status = "okay";
76};
77
78&i2c1 {
79 clock-frequency = <100000>;
80 pinctrl-names = "default";
81 pinctrl-0 = <&pinctrl_i2c1>;
82 status = "okay";
83
84 tmp103: tmp103@71 {
85 compatible = "ti,tmp103";
86 reg = <0x71>;
87 };
88};
89
90&i2c3 {
91 clock-frequency = <100000>;
92 pinctrl-names = "default";
93 pinctrl-0 = <&pinctrl_i2c3>;
94 status = "okay";
95
96 rtc@68 {
97 compatible = "dallas,m41t00";
98 reg = <0x68>;
99 };
100};
101
102&ecspi4 {
103 fsl,spi-num-chipselects = <1>;
104 cs-gpios = <&gpio3 20 0>;
105 pinctrl-names = "default";
106 pinctrl-0 = <&pinctrl_ecspi4>;
107 status = "okay";
108
109 flash: m25p80@0 {
110 #address-cells = <1>;
111 #size-cells = <1>;
112 compatible = "micron,n25q128a11";
113 spi-max-frequency = <20000000>;
114 reg = <0>;
115 };
116};
117
118&fec {
119 pinctrl-names = "default";
120 pinctrl-0 = <&pinctrl_enet>;
121 phy-mode = "rmii";
122 phy-reset-gpios = <&gpio3 29 GPIO_ACTIVE_HIGH>;
123 status = "okay";
124};
125
126&gpmi {
127 pinctrl-names = "default";
128 pinctrl-0 = <&pinctrl_gpmi_nand>;
129 status = "okay";
130};
131
132&pcie {
133 status = "okay";
134};
135
136&uart2 {
137 pinctrl-names = "default";
138 pinctrl-0 = <&pinctrl_uart2>;
139 status = "okay";
140};
141
142
143&uart4 {
144 pinctrl-names = "default";
145 pinctrl-0 = <&pinctrl_uart4>;
146 fsl,uart-has-rtscts;
147 status = "okay";
148};
149
150&uart5 {
151 pinctrl-names = "default";
152 pinctrl-0 = <&pinctrl_uart5>;
153 fsl,uart-has-rtscts;
154 status = "okay";
155};
156
157&usbh1 {
158 vbus-supply = <&reg_usbh1_vbus>;
159 dr_mode = "host";
160 status = "okay";
161};
162
163&usbotg {
164 vbus-supply = <&reg_usbotg_vbus>;
165 pinctrl-names = "default";
166 pinctrl-0 = <&pinctrl_usbotg>;
167 disable-over-current;
168 dr_mode = "host";
169 status = "okay";
170};
171
172&usdhc1 {
173 pinctrl-names = "default";
174 pinctrl-0 = <&pinctrl_usdhc1>;
175 vmmc-supply = <&reg_3p3v>;
176 cd-gpios = <&gpio4 7 GPIO_ACTIVE_HIGH>;
177 status = "okay";
178};
179
180&usdhc2 {
181 pinctrl-names = "default";
182 pinctrl-0 = <&pinctrl_usdhc2>;
183 vmmc-supply = <&reg_3p3v>;
184 cd-gpios = <&gpio4 8 GPIO_ACTIVE_HIGH>;
185 status = "okay";
186};
187
188&iomuxc {
189 pinctrl-names = "default";
190 pinctrl-0 = <&pinctrl_hog &pinctrl_gpio>;
191
192 imx6qdl-aristainetos {
193 pinctrl_aristainetos_usbh1_vbus: aristainetos-usbh1-vbus {
194 fsl,pins = <MX6QDL_PAD_EIM_D31__GPIO3_IO31 0x130b0>;
195 };
196
197 pinctrl_aristainetos_usbotg_vbus: aristainetos-usbotg-vbus {
198 fsl,pins = <MX6QDL_PAD_KEY_ROW4__GPIO4_IO15 0x130b0>;
199 };
200
201 pinctrl_audmux: audmuxgrp {
202 fsl,pins = <
203 MX6QDL_PAD_CSI0_DAT7__AUD3_RXD 0x1b0b0
204 MX6QDL_PAD_CSI0_DAT4__AUD3_TXC 0x1b0b0
205 MX6QDL_PAD_CSI0_DAT5__AUD3_TXD 0x1b0b0
206 MX6QDL_PAD_CSI0_DAT6__AUD3_TXFS 0x1b0b0
207 >;
208 };
209
210 pinctrl_backlight: backlightgrp {
211 fsl,pins = <
212 MX6QDL_PAD_GPIO_9__PWM1_OUT 0x1b0b0
213 MX6QDL_PAD_SD4_DAT1__PWM3_OUT 0x1b0b0
214 MX6QDL_PAD_GPIO_2__GPIO1_IO02 0x1b0b0
215 >;
216 };
217
218 pinctrl_ecspi2: ecspi2grp {
219 fsl,pins = <
220 MX6QDL_PAD_EIM_OE__ECSPI2_MISO 0x100b1
221 MX6QDL_PAD_EIM_CS0__ECSPI2_SCLK 0x100b1
222 MX6QDL_PAD_EIM_CS1__ECSPI2_MOSI 0x100b1
223 MX6QDL_PAD_EIM_D24__GPIO3_IO24 0x100b1
224 >;
225 };
226
227 pinctrl_ecspi4: ecspi4grp {
228 fsl,pins = <
229 MX6QDL_PAD_EIM_D21__ECSPI4_SCLK 0x100b1
230 MX6QDL_PAD_EIM_D22__ECSPI4_MISO 0x100b1
231 MX6QDL_PAD_EIM_D28__ECSPI4_MOSI 0x100b1
232 MX6QDL_PAD_EIM_D20__GPIO3_IO20 0x100b1
233 MX6QDL_PAD_SD4_DAT7__GPIO2_IO15 0x1b0b0 /* WP pin */
234 >;
235 };
236
237 pinctrl_enet: enetgrp {
238 fsl,pins = <
239 MX6QDL_PAD_GPIO_16__ENET_REF_CLK 0x4001b0a8
240 MX6QDL_PAD_ENET_MDIO__ENET_MDIO 0x1b0b0
241 MX6QDL_PAD_ENET_MDC__ENET_MDC 0x1b0b0
242 MX6QDL_PAD_ENET_TXD0__ENET_TX_DATA0 0x1b0b0
243 MX6QDL_PAD_ENET_TXD1__ENET_TX_DATA1 0x1b0b0
244 MX6QDL_PAD_ENET_TX_EN__ENET_TX_EN 0x1b0b0
245 MX6QDL_PAD_ENET_RX_ER__ENET_RX_ER 0x1b0b0
246 MX6QDL_PAD_ENET_RXD0__ENET_RX_DATA0 0x1b0b0
247 MX6QDL_PAD_ENET_RXD1__ENET_RX_DATA1 0x1b0b0
248 MX6QDL_PAD_ENET_CRS_DV__ENET_RX_EN 0x1b0b0
249 >;
250 };
251
252 pinctrl_flexcan1: flexcan1grp {
253 fsl,pins = <
254 MX6QDL_PAD_KEY_ROW2__FLEXCAN1_RX 0x1b0b0
255 MX6QDL_PAD_KEY_COL2__FLEXCAN1_TX 0x1b0b0
256 >;
257 };
258
259 pinctrl_flexcan2: flexcan2grp {
260 fsl,pins = <
261 MX6QDL_PAD_SD3_DAT0__FLEXCAN2_TX 0x1b0b0
262 MX6QDL_PAD_SD3_DAT1__FLEXCAN2_RX 0x1b0b0
263 >;
264 };
265
266 pinctrl_gpio: gpiogrp {
267 fsl,pins = <
268 MX6QDL_PAD_SD4_DAT2__GPIO2_IO10 0x1b0b0
269 MX6QDL_PAD_SD4_DAT3__GPIO2_IO11 0x1b0b0
270 MX6QDL_PAD_SD4_DAT4__GPIO2_IO12 0x1b0b0
271 MX6QDL_PAD_SD4_DAT5__GPIO2_IO13 0x1b0b0
272 MX6QDL_PAD_GPIO_3__GPIO1_IO03 0x1b0b0
273 MX6QDL_PAD_GPIO_4__GPIO1_IO04 0x1b0b0
274 MX6QDL_PAD_GPIO_5__GPIO1_IO05 0x1b0b0
275 MX6QDL_PAD_GPIO_6__GPIO1_IO06 0x1b0b0
276 MX6QDL_PAD_GPIO_7__GPIO1_IO07 0x1b0b0
277 MX6QDL_PAD_GPIO_8__GPIO1_IO08 0x1b0b0
278 MX6QDL_PAD_KEY_COL0__GPIO4_IO06 0x1b0b0
279 >;
280 };
281
282 pinctrl_gpmi_nand: gpminandgrp {
283 fsl,pins = <
284 MX6QDL_PAD_NANDF_CLE__NAND_CLE 0xb0b1
285 MX6QDL_PAD_NANDF_ALE__NAND_ALE 0xb0b1
286 MX6QDL_PAD_NANDF_WP_B__NAND_WP_B 0xb0b1
287 MX6QDL_PAD_NANDF_RB0__NAND_READY_B 0xb000
288 MX6QDL_PAD_NANDF_CS0__NAND_CE0_B 0xb0b1
289 MX6QDL_PAD_NANDF_CS1__NAND_CE1_B 0xb0b1
290 MX6QDL_PAD_SD4_CMD__NAND_RE_B 0xb0b1
291 MX6QDL_PAD_SD4_CLK__NAND_WE_B 0xb0b1
292 MX6QDL_PAD_NANDF_D0__NAND_DATA00 0xb0b1
293 MX6QDL_PAD_NANDF_D1__NAND_DATA01 0xb0b1
294 MX6QDL_PAD_NANDF_D2__NAND_DATA02 0xb0b1
295 MX6QDL_PAD_NANDF_D3__NAND_DATA03 0xb0b1
296 MX6QDL_PAD_NANDF_D4__NAND_DATA04 0xb0b1
297 MX6QDL_PAD_NANDF_D5__NAND_DATA05 0xb0b1
298 MX6QDL_PAD_NANDF_D6__NAND_DATA06 0xb0b1
299 MX6QDL_PAD_NANDF_D7__NAND_DATA07 0xb0b1
300 MX6QDL_PAD_SD4_DAT0__NAND_DQS 0x00b1
301 >;
302 };
303
304 pinctrl_hog: hoggrp {
305 fsl,pins = <
306 MX6QDL_PAD_EIM_D29__GPIO3_IO29 0x10
307 >;
308 };
309
310 pinctrl_i2c1: i2c1grp {
311 fsl,pins = <
312 MX6QDL_PAD_CSI0_DAT8__I2C1_SDA 0x4001b8b1
313 MX6QDL_PAD_CSI0_DAT9__I2C1_SCL 0x4001b8b1
314 >;
315 };
316
317 pinctrl_i2c2: i2c2grp {
318 fsl,pins = <
319 MX6QDL_PAD_KEY_COL3__I2C2_SCL 0x4001b8b1
320 MX6QDL_PAD_KEY_ROW3__I2C2_SDA 0x4001b8b1
321 >;
322 };
323
324 pinctrl_i2c3: i2c3grp {
325 fsl,pins = <
326 MX6QDL_PAD_EIM_D17__I2C3_SCL 0x4001b8b1
327 MX6QDL_PAD_EIM_D18__I2C3_SDA 0x4001b8b1
328 >;
329 };
330
331 pinctrl_ipu_disp: ipudisp1grp {
332 fsl,pins = <
333 MX6QDL_PAD_DI0_DISP_CLK__IPU1_DI0_DISP_CLK 0x10
334 MX6QDL_PAD_DI0_PIN15__IPU1_DI0_PIN15 0x10
335 MX6QDL_PAD_DI0_PIN2__IPU1_DI0_PIN02 0x10
336 MX6QDL_PAD_DI0_PIN3__IPU1_DI0_PIN03 0x10
337 MX6QDL_PAD_DI0_PIN4__GPIO4_IO20 0x20000
338 MX6QDL_PAD_DISP0_DAT0__IPU1_DISP0_DATA00 0x10
339 MX6QDL_PAD_DISP0_DAT1__IPU1_DISP0_DATA01 0x10
340 MX6QDL_PAD_DISP0_DAT2__IPU1_DISP0_DATA02 0x10
341 MX6QDL_PAD_DISP0_DAT3__IPU1_DISP0_DATA03 0x10
342 MX6QDL_PAD_DISP0_DAT4__IPU1_DISP0_DATA04 0x10
343 MX6QDL_PAD_DISP0_DAT5__IPU1_DISP0_DATA05 0x10
344 MX6QDL_PAD_DISP0_DAT6__IPU1_DISP0_DATA06 0x10
345 MX6QDL_PAD_DISP0_DAT7__IPU1_DISP0_DATA07 0x10
346 MX6QDL_PAD_DISP0_DAT8__IPU1_DISP0_DATA08 0x10
347 MX6QDL_PAD_DISP0_DAT9__IPU1_DISP0_DATA09 0x10
348 MX6QDL_PAD_DISP0_DAT10__IPU1_DISP0_DATA10 0x10
349 MX6QDL_PAD_DISP0_DAT11__IPU1_DISP0_DATA11 0x10
350 MX6QDL_PAD_DISP0_DAT12__IPU1_DISP0_DATA12 0x10
351 MX6QDL_PAD_DISP0_DAT13__IPU1_DISP0_DATA13 0x10
352 MX6QDL_PAD_DISP0_DAT14__IPU1_DISP0_DATA14 0x10
353 MX6QDL_PAD_DISP0_DAT15__IPU1_DISP0_DATA15 0x10
354 MX6QDL_PAD_DISP0_DAT16__IPU1_DISP0_DATA16 0x10
355 MX6QDL_PAD_DISP0_DAT17__IPU1_DISP0_DATA17 0x10
356 MX6QDL_PAD_DISP0_DAT18__IPU1_DISP0_DATA18 0x10
357 MX6QDL_PAD_DISP0_DAT19__IPU1_DISP0_DATA19 0x10
358 MX6QDL_PAD_DISP0_DAT20__IPU1_DISP0_DATA20 0x10
359 MX6QDL_PAD_DISP0_DAT21__IPU1_DISP0_DATA21 0x10
360 MX6QDL_PAD_DISP0_DAT22__IPU1_DISP0_DATA22 0x10
361 MX6QDL_PAD_DISP0_DAT23__IPU1_DISP0_DATA23 0x10
362 >;
363 };
364
365 pinctrl_uart2: uart2grp {
366 fsl,pins = <
367 MX6QDL_PAD_EIM_D26__UART2_TX_DATA 0x1b0b1
368 MX6QDL_PAD_EIM_D27__UART2_RX_DATA 0x1b0b1
369 >;
370 };
371
372 pinctrl_uart4: uart4grp {
373 fsl,pins = <
374 MX6QDL_PAD_CSI0_DAT12__UART4_TX_DATA 0x1b0b1
375 MX6QDL_PAD_CSI0_DAT13__UART4_RX_DATA 0x1b0b1
376 MX6QDL_PAD_CSI0_DAT16__UART4_RTS_B 0x1b0b1
377 MX6QDL_PAD_CSI0_DAT17__UART4_CTS_B 0x1b0b1
378 >;
379 };
380
381 pinctrl_uart5: uart5grp {
382 fsl,pins = <
383 MX6QDL_PAD_CSI0_DAT14__UART5_TX_DATA 0x1b0b1
384 MX6QDL_PAD_CSI0_DAT15__UART5_RX_DATA 0x1b0b1
385 >;
386 };
387
388 pinctrl_usbotg: usbotggrp {
389 fsl,pins = <
390 MX6QDL_PAD_GPIO_1__USB_OTG_ID 0x17059
391 >;
392 };
393
394 pinctrl_usdhc1: usdhc1grp {
395 fsl,pins = <
396 MX6QDL_PAD_SD1_CMD__SD1_CMD 0x17059
397 MX6QDL_PAD_SD1_CLK__SD1_CLK 0x10059
398 MX6QDL_PAD_SD1_DAT0__SD1_DATA0 0x17059
399 MX6QDL_PAD_SD1_DAT1__SD1_DATA1 0x17059
400 MX6QDL_PAD_SD1_DAT2__SD1_DATA2 0x17059
401 MX6QDL_PAD_SD1_DAT3__SD1_DATA3 0x17059
402 MX6QDL_PAD_KEY_ROW0__GPIO4_IO07 0x1b0b0
403 >;
404 };
405
406 pinctrl_usdhc2: usdhc2grp {
407 fsl,pins = <
408 MX6QDL_PAD_SD2_CMD__SD2_CMD 0x17059
409 MX6QDL_PAD_SD2_CLK__SD2_CLK 0x10059
410 MX6QDL_PAD_SD2_DAT0__SD2_DATA0 0x17059
411 MX6QDL_PAD_SD2_DAT1__SD2_DATA1 0x17059
412 MX6QDL_PAD_SD2_DAT2__SD2_DATA2 0x17059
413 MX6QDL_PAD_SD2_DAT3__SD2_DATA3 0x17059
414 MX6QDL_PAD_KEY_COL1__GPIO4_IO08 0x1b0b0
415 >;
416 };
417 };
418};
diff --git a/arch/arm/boot/dts/imx6qdl-gw52xx.dtsi b/arch/arm/boot/dts/imx6qdl-gw52xx.dtsi
index 744c8a2d81f6..234e7b755232 100644
--- a/arch/arm/boot/dts/imx6qdl-gw52xx.dtsi
+++ b/arch/arm/boot/dts/imx6qdl-gw52xx.dtsi
@@ -121,9 +121,9 @@
121 }; 121 };
122 122
123 sound { 123 sound {
124 compatible = "fsl,imx6q-sabrelite-sgtl5000", 124 compatible = "fsl,imx6q-ventana-sgtl5000",
125 "fsl,imx-audio-sgtl5000"; 125 "fsl,imx-audio-sgtl5000";
126 model = "imx6q-sabrelite-sgtl5000"; 126 model = "sgtl5000-audio";
127 ssi-controller = <&ssi1>; 127 ssi-controller = <&ssi1>;
128 audio-codec = <&codec>; 128 audio-codec = <&codec>;
129 audio-routing = 129 audio-routing =
@@ -489,7 +489,6 @@
489}; 489};
490 490
491&ssi1 { 491&ssi1 {
492 fsl,mode = "i2s-slave";
493 status = "okay"; 492 status = "okay";
494}; 493};
495 494
diff --git a/arch/arm/boot/dts/imx6qdl-gw53xx.dtsi b/arch/arm/boot/dts/imx6qdl-gw53xx.dtsi
index adf150c1be90..143f84f7812c 100644
--- a/arch/arm/boot/dts/imx6qdl-gw53xx.dtsi
+++ b/arch/arm/boot/dts/imx6qdl-gw53xx.dtsi
@@ -124,9 +124,9 @@
124 }; 124 };
125 125
126 sound { 126 sound {
127 compatible = "fsl,imx6q-sabrelite-sgtl5000", 127 compatible = "fsl,imx6q-ventana-sgtl5000",
128 "fsl,imx-audio-sgtl5000"; 128 "fsl,imx-audio-sgtl5000";
129 model = "imx6q-sabrelite-sgtl5000"; 129 model = "sgtl5000-audio";
130 ssi-controller = <&ssi1>; 130 ssi-controller = <&ssi1>;
131 audio-codec = <&codec>; 131 audio-codec = <&codec>;
132 audio-routing = 132 audio-routing =
@@ -533,7 +533,6 @@
533}; 533};
534 534
535&ssi1 { 535&ssi1 {
536 fsl,mode = "i2s-slave";
537 status = "okay"; 536 status = "okay";
538}; 537};
539 538
diff --git a/arch/arm/boot/dts/imx6qdl-gw54xx.dtsi b/arch/arm/boot/dts/imx6qdl-gw54xx.dtsi
index 698d3063b295..16e7ad3d98ad 100644
--- a/arch/arm/boot/dts/imx6qdl-gw54xx.dtsi
+++ b/arch/arm/boot/dts/imx6qdl-gw54xx.dtsi
@@ -114,9 +114,9 @@
114 }; 114 };
115 115
116 sound { 116 sound {
117 compatible = "fsl,imx6q-sabrelite-sgtl5000", 117 compatible = "fsl,imx6q-ventana-sgtl5000",
118 "fsl,imx-audio-sgtl5000"; 118 "fsl,imx-audio-sgtl5000";
119 model = "imx6q-sabrelite-sgtl5000"; 119 model = "sgtl5000-audio";
120 ssi-controller = <&ssi1>; 120 ssi-controller = <&ssi1>;
121 audio-codec = <&codec>; 121 audio-codec = <&codec>;
122 audio-routing = 122 audio-routing =
@@ -555,12 +555,10 @@
555}; 555};
556 556
557&ssi1 { 557&ssi1 {
558 fsl,mode = "i2s-slave";
559 status = "okay"; 558 status = "okay";
560}; 559};
561 560
562&ssi2 { 561&ssi2 {
563 fsl,mode = "i2s-slave";
564 status = "okay"; 562 status = "okay";
565}; 563};
566 564
diff --git a/arch/arm/boot/dts/imx6qdl-nitrogen6x.dtsi b/arch/arm/boot/dts/imx6qdl-nitrogen6x.dtsi
index 4c4b17596c8b..42ff525ebe13 100644
--- a/arch/arm/boot/dts/imx6qdl-nitrogen6x.dtsi
+++ b/arch/arm/boot/dts/imx6qdl-nitrogen6x.dtsi
@@ -381,7 +381,6 @@
381}; 381};
382 382
383&ssi1 { 383&ssi1 {
384 fsl,mode = "i2s-slave";
385 status = "okay"; 384 status = "okay";
386}; 385};
387 386
diff --git a/arch/arm/boot/dts/imx6qdl-phytec-pfla02.dtsi b/arch/arm/boot/dts/imx6qdl-phytec-pfla02.dtsi
index faa3494a69d4..2694aa84e187 100644
--- a/arch/arm/boot/dts/imx6qdl-phytec-pfla02.dtsi
+++ b/arch/arm/boot/dts/imx6qdl-phytec-pfla02.dtsi
@@ -301,6 +301,7 @@
301 pinctrl-0 = <&pinctrl_enet>; 301 pinctrl-0 = <&pinctrl_enet>;
302 phy-mode = "rgmii"; 302 phy-mode = "rgmii";
303 phy-reset-gpios = <&gpio3 23 GPIO_ACTIVE_LOW>; 303 phy-reset-gpios = <&gpio3 23 GPIO_ACTIVE_LOW>;
304 phy-supply = <&vdd_eth_io_reg>;
304 status = "disabled"; 305 status = "disabled";
305}; 306};
306 307
diff --git a/arch/arm/boot/dts/imx6qdl-rex.dtsi b/arch/arm/boot/dts/imx6qdl-rex.dtsi
new file mode 100644
index 000000000000..df7bcf86c156
--- /dev/null
+++ b/arch/arm/boot/dts/imx6qdl-rex.dtsi
@@ -0,0 +1,357 @@
1/*
2 * Copyright 2014 FEDEVEL, Inc.
3 *
4 * Author: Robert Nelson <robertcnelson@gmail.com>
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation.
9 *
10 */
11
12#include <dt-bindings/gpio/gpio.h>
13#include <dt-bindings/input/input.h>
14
15/ {
16 chosen {
17 stdout-path = &uart1;
18 };
19
20 regulators {
21 compatible = "simple-bus";
22 #address-cells = <1>;
23 #size-cells = <0>;
24
25 reg_3p3v: regulator@0 {
26 compatible = "regulator-fixed";
27 reg = <0>;
28 regulator-name = "3P3V";
29 regulator-min-microvolt = <3300000>;
30 regulator-max-microvolt = <3300000>;
31 regulator-always-on;
32 };
33
34 reg_usbh1_vbus: regulator@1 {
35 compatible = "regulator-fixed";
36 reg = <1>;
37 pinctrl-names = "default";
38 pinctrl-0 = <&pinctrl_usbh1>;
39 regulator-name = "usbh1_vbus";
40 regulator-min-microvolt = <5000000>;
41 regulator-max-microvolt = <5000000>;
42 gpio = <&gpio3 31 GPIO_ACTIVE_HIGH>;
43 enable-active-high;
44 };
45
46 reg_usb_otg_vbus: regulator@2 {
47 compatible = "regulator-fixed";
48 reg = <2>;
49 pinctrl-names = "default";
50 pinctrl-0 = <&pinctrl_usbotg>;
51 regulator-name = "usb_otg_vbus";
52 regulator-min-microvolt = <5000000>;
53 regulator-max-microvolt = <5000000>;
54 gpio = <&gpio3 22 GPIO_ACTIVE_HIGH>;
55 enable-active-high;
56 };
57 };
58
59 leds {
60 compatible = "gpio-leds";
61 pinctrl-names = "default";
62 pinctrl-0 = <&pinctrl_led>;
63
64 led0: usr {
65 label = "usr";
66 gpios = <&gpio1 2 GPIO_ACTIVE_LOW>;
67 default-state = "off";
68 linux,default-trigger = "heartbeat";
69 };
70 };
71
72 sound {
73 compatible = "fsl,imx6-rex-sgtl5000",
74 "fsl,imx-audio-sgtl5000";
75 model = "imx6-rex-sgtl5000";
76 ssi-controller = <&ssi1>;
77 audio-codec = <&codec>;
78 audio-routing =
79 "MIC_IN", "Mic Jack",
80 "Mic Jack", "Mic Bias",
81 "Headphone Jack", "HP_OUT";
82 mux-int-port = <1>;
83 mux-ext-port = <3>;
84 };
85};
86
87&audmux {
88 pinctrl-names = "default";
89 pinctrl-0 = <&pinctrl_audmux>;
90 status = "okay";
91};
92
93&ecspi2 {
94 fsl,spi-num-chipselects = <1>;
95 cs-gpios = <&gpio5 12 GPIO_ACTIVE_LOW>;
96 pinctrl-names = "default";
97 pinctrl-0 = <&pinctrl_ecspi2>;
98 status = "okay";
99};
100
101&ecspi3 {
102 fsl,spi-num-chipselects = <1>;
103 cs-gpios = <&gpio4 26 GPIO_ACTIVE_LOW>;
104 pinctrl-names = "default";
105 pinctrl-0 = <&pinctrl_ecspi3>;
106 status = "okay";
107};
108
109&fec {
110 pinctrl-names = "default";
111 pinctrl-0 = <&pinctrl_enet>;
112 phy-mode = "rgmii";
113 phy-reset-gpios = <&gpio1 25 GPIO_ACTIVE_LOW>;
114 status = "okay";
115};
116
117&hdmi {
118 ddc-i2c-bus = <&i2c2>;
119 status = "okay";
120};
121
122&i2c1 {
123 clock-frequency = <100000>;
124 pinctrl-names = "default";
125 pinctrl-0 = <&pinctrl_i2c1>;
126 status = "okay";
127
128 codec: sgtl5000@0a {
129 compatible = "fsl,sgtl5000";
130 reg = <0x0a>;
131 clocks = <&clks 201>;
132 VDDA-supply = <&reg_3p3v>;
133 VDDIO-supply = <&reg_3p3v>;
134 };
135};
136
137&i2c2 {
138 clock-frequency = <100000>;
139 pinctrl-names = "default";
140 pinctrl-0 = <&pinctrl_i2c2>;
141 status = "okay";
142
143 eeprom@57 {
144 compatible = "at,24c02";
145 reg = <0x57>;
146 };
147};
148
149&i2c3 {
150 clock-frequency = <100000>;
151 pinctrl-names = "default";
152 pinctrl-0 = <&pinctrl_i2c3>;
153 status = "okay";
154};
155
156&iomuxc {
157 pinctrl-names = "default";
158 pinctrl-0 = <&pinctrl_hog>;
159
160 imx6qdl-rex {
161 pinctrl_hog: hoggrp {
162 fsl,pins = <
163 /* SGTL5000 sys_mclk */
164 MX6QDL_PAD_GPIO_0__CCM_CLKO1 0x030b0
165 >;
166 };
167
168 pinctrl_audmux: audmuxgrp {
169 fsl,pins = <
170 MX6QDL_PAD_CSI0_DAT7__AUD3_RXD 0x130b0
171 MX6QDL_PAD_CSI0_DAT4__AUD3_TXC 0x130b0
172 MX6QDL_PAD_CSI0_DAT5__AUD3_TXD 0x110b0
173 MX6QDL_PAD_CSI0_DAT6__AUD3_TXFS 0x130b0
174 >;
175 };
176
177 pinctrl_ecspi2: ecspi2grp {
178 fsl,pins = <
179 MX6QDL_PAD_DISP0_DAT2__ECSPI3_MISO 0x100b1
180 MX6QDL_PAD_DISP0_DAT1__ECSPI3_MOSI 0x100b1
181 MX6QDL_PAD_DISP0_DAT0__ECSPI3_SCLK 0x100b1
182 /* CS */
183 MX6QDL_PAD_DISP0_DAT5__GPIO4_IO26 0x000b1
184 >;
185 };
186
187 pinctrl_ecspi3: ecspi3grp {
188 fsl,pins = <
189 MX6QDL_PAD_DISP0_DAT17__ECSPI2_MISO 0x100b1
190 MX6QDL_PAD_DISP0_DAT16__ECSPI2_MOSI 0x100b1
191 MX6QDL_PAD_DISP0_DAT19__ECSPI2_SCLK 0x100b1
192 /* CS */
193 MX6QDL_PAD_DISP0_DAT18__GPIO5_IO12 0x000b1
194 >;
195 };
196
197 pinctrl_enet: enetgrp {
198 fsl,pins = <
199 MX6QDL_PAD_ENET_MDIO__ENET_MDIO 0x1b0b0
200 MX6QDL_PAD_ENET_MDC__ENET_MDC 0x1b0b0
201 MX6QDL_PAD_RGMII_TXC__RGMII_TXC 0x1b0b0
202 MX6QDL_PAD_RGMII_TD0__RGMII_TD0 0x1b0b0
203 MX6QDL_PAD_RGMII_TD1__RGMII_TD1 0x1b0b0
204 MX6QDL_PAD_RGMII_TD2__RGMII_TD2 0x1b0b0
205 MX6QDL_PAD_RGMII_TD3__RGMII_TD3 0x1b0b0
206 MX6QDL_PAD_RGMII_TX_CTL__RGMII_TX_CTL 0x1b0b0
207 MX6QDL_PAD_ENET_REF_CLK__ENET_TX_CLK 0x1b0b0
208 MX6QDL_PAD_RGMII_RXC__RGMII_RXC 0x1b0b0
209 MX6QDL_PAD_RGMII_RD0__RGMII_RD0 0x1b0b0
210 MX6QDL_PAD_RGMII_RD1__RGMII_RD1 0x1b0b0
211 MX6QDL_PAD_RGMII_RD2__RGMII_RD2 0x1b0b0
212 MX6QDL_PAD_RGMII_RD3__RGMII_RD3 0x1b0b0
213 MX6QDL_PAD_RGMII_RX_CTL__RGMII_RX_CTL 0x1b0b0
214 MX6QDL_PAD_GPIO_16__ENET_REF_CLK 0x4001b0a8
215 /* Phy reset */
216 MX6QDL_PAD_ENET_CRS_DV__GPIO1_IO25 0x000b0
217 >;
218 };
219
220 pinctrl_i2c1: i2c1grp {
221 fsl,pins = <
222 MX6QDL_PAD_CSI0_DAT8__I2C1_SDA 0x4001b8b1
223 MX6QDL_PAD_CSI0_DAT9__I2C1_SCL 0x4001b8b1
224 >;
225 };
226
227 pinctrl_i2c2: i2c2grp {
228 fsl,pins = <
229 MX6QDL_PAD_KEY_COL3__I2C2_SCL 0x4001b8b1
230 MX6QDL_PAD_KEY_ROW3__I2C2_SDA 0x4001b8b1
231 >;
232 };
233
234 pinctrl_i2c3: i2c3grp {
235 fsl,pins = <
236 MX6QDL_PAD_EIM_D17__I2C3_SCL 0x4001b8b1
237 MX6QDL_PAD_EIM_D18__I2C3_SDA 0x4001b8b1
238 >;
239 };
240
241 pinctrl_led: ledgrp {
242 fsl,pins = <
243 /* user led */
244 MX6QDL_PAD_GPIO_2__GPIO1_IO02 0x80000000
245 >;
246 };
247
248 pinctrl_uart1: uart1grp {
249 fsl,pins = <
250 MX6QDL_PAD_CSI0_DAT10__UART1_TX_DATA 0x1b0b1
251 MX6QDL_PAD_CSI0_DAT11__UART1_RX_DATA 0x1b0b1
252 >;
253 };
254
255 pinctrl_uart2: uart2grp {
256 fsl,pins = <
257 MX6QDL_PAD_SD4_DAT7__UART2_TX_DATA 0x1b0b1
258 MX6QDL_PAD_SD4_DAT4__UART2_RX_DATA 0x1b0b1
259 >;
260 };
261
262 pinctrl_usbh1: usbh1grp {
263 fsl,pins = <
264 /* power enable, high active */
265 MX6QDL_PAD_EIM_D31__GPIO3_IO31 0x10b0
266 >;
267 };
268
269 pinctrl_usbotg: usbotggrp {
270 fsl,pins = <
271 MX6QDL_PAD_GPIO_1__USB_OTG_ID 0x17059
272 MX6QDL_PAD_EIM_D21__USB_OTG_OC 0x1b0b0
273 /* power enable, high active */
274 MX6QDL_PAD_EIM_D22__GPIO3_IO22 0x10b0
275 >;
276 };
277
278 pinctrl_usdhc2: usdhc2grp {
279 fsl,pins = <
280 MX6QDL_PAD_SD2_CMD__SD2_CMD 0x17059
281 MX6QDL_PAD_SD2_CLK__SD2_CLK 0x10059
282 MX6QDL_PAD_SD2_DAT0__SD2_DATA0 0x17059
283 MX6QDL_PAD_SD2_DAT1__SD2_DATA1 0x17059
284 MX6QDL_PAD_SD2_DAT2__SD2_DATA2 0x17059
285 MX6QDL_PAD_SD2_DAT3__SD2_DATA3 0x17059
286 /* CD */
287 MX6QDL_PAD_NANDF_D2__GPIO2_IO02 0x1b0b0
288 /* WP */
289 MX6QDL_PAD_NANDF_D3__GPIO2_IO03 0x1f0b0
290 >;
291 };
292
293 pinctrl_usdhc3: usdhc3grp {
294 fsl,pins = <
295 MX6QDL_PAD_SD3_CMD__SD3_CMD 0x17059
296 MX6QDL_PAD_SD3_CLK__SD3_CLK 0x10059
297 MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x17059
298 MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x17059
299 MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x17059
300 MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x17059
301 /* CD */
302 MX6QDL_PAD_NANDF_D0__GPIO2_IO00 0x1b0b0
303 /* WP */
304 MX6QDL_PAD_NANDF_D1__GPIO2_IO01 0x1f0b0
305 >;
306 };
307 };
308};
309
310&ssi1 {
311 fsl,mode = "i2s-slave";
312 status = "okay";
313};
314
315&uart1 {
316 pinctrl-names = "default";
317 pinctrl-0 = <&pinctrl_uart1>;
318 status = "okay";
319};
320
321&uart2 {
322 pinctrl-names = "default";
323 pinctrl-0 = <&pinctrl_uart2>;
324 status = "okay";
325};
326
327&usbh1 {
328 vbus-supply = <&reg_usbh1_vbus>;
329 pinctrl-names = "default";
330 pinctrl-0 = <&pinctrl_usbh1>;
331 status = "okay";
332};
333
334&usbotg {
335 vbus-supply = <&reg_usb_otg_vbus>;
336 pinctrl-names = "default";
337 pinctrl-0 = <&pinctrl_usbotg>;
338 status = "okay";
339};
340
341&usdhc2 {
342 pinctrl-names = "default";
343 pinctrl-0 = <&pinctrl_usdhc2>;
344 bus-width = <4>;
345 cd-gpios = <&gpio2 2 GPIO_ACTIVE_LOW>;
346 wp-gpios = <&gpio2 3 GPIO_ACTIVE_LOW>;
347 status = "okay";
348};
349
350&usdhc3 {
351 pinctrl-names = "default";
352 pinctrl-0 = <&pinctrl_usdhc3>;
353 bus-width = <4>;
354 cd-gpios = <&gpio2 0 GPIO_ACTIVE_LOW>;
355 wp-gpios = <&gpio2 1 GPIO_ACTIVE_LOW>;
356 status = "okay";
357};
diff --git a/arch/arm/boot/dts/imx6qdl-sabrelite.dtsi b/arch/arm/boot/dts/imx6qdl-sabrelite.dtsi
index 6df6127bf835..0a36129152e0 100644
--- a/arch/arm/boot/dts/imx6qdl-sabrelite.dtsi
+++ b/arch/arm/boot/dts/imx6qdl-sabrelite.dtsi
@@ -381,7 +381,6 @@
381}; 381};
382 382
383&ssi1 { 383&ssi1 {
384 fsl,mode = "i2s-slave";
385 status = "okay"; 384 status = "okay";
386}; 385};
387 386
diff --git a/arch/arm/boot/dts/imx6qdl-sabresd.dtsi b/arch/arm/boot/dts/imx6qdl-sabresd.dtsi
index 40ea36534643..ec43dde78525 100644
--- a/arch/arm/boot/dts/imx6qdl-sabresd.dtsi
+++ b/arch/arm/boot/dts/imx6qdl-sabresd.dtsi
@@ -340,6 +340,7 @@
340 MX6QDL_PAD_KEY_COL1__ECSPI1_MISO 0x100b1 340 MX6QDL_PAD_KEY_COL1__ECSPI1_MISO 0x100b1
341 MX6QDL_PAD_KEY_ROW0__ECSPI1_MOSI 0x100b1 341 MX6QDL_PAD_KEY_ROW0__ECSPI1_MOSI 0x100b1
342 MX6QDL_PAD_KEY_COL0__ECSPI1_SCLK 0x100b1 342 MX6QDL_PAD_KEY_COL0__ECSPI1_SCLK 0x100b1
343 MX6QDL_PAD_KEY_ROW1__GPIO4_IO09 0x1b0b0
343 >; 344 >;
344 }; 345 };
345 346
@@ -512,7 +513,6 @@
512}; 513};
513 514
514&ssi2 { 515&ssi2 {
515 fsl,mode = "i2s-slave";
516 status = "okay"; 516 status = "okay";
517}; 517};
518 518
diff --git a/arch/arm/boot/dts/imx6qdl-tx6.dtsi b/arch/arm/boot/dts/imx6qdl-tx6.dtsi
new file mode 100644
index 000000000000..f02b80b41d4f
--- /dev/null
+++ b/arch/arm/boot/dts/imx6qdl-tx6.dtsi
@@ -0,0 +1,696 @@
1/*
2 * Copyright 2014 Lothar Waßmann <LW@KARO-electronics.de>
3 *
4 * The code contained herein is licensed under the GNU General Public
5 * License. You may obtain a copy of the GNU General Public License
6 * Version 2 at the following locations:
7 *
8 * http://www.opensource.org/licenses/gpl-license.html
9 * http://www.gnu.org/copyleft/gpl.html
10 */
11
12#include <dt-bindings/gpio/gpio.h>
13#include <dt-bindings/input/input.h>
14#include <dt-bindings/pwm/pwm.h>
15
16/ {
17 aliases {
18 can0 = &can2;
19 can1 = &can1;
20 ethernet0 = &fec;
21 lcdif_23bit_pins_a = &pinctrl_disp0_1;
22 lcdif_24bit_pins_a = &pinctrl_disp0_2;
23 pwm0 = &pwm1;
24 pwm1 = &pwm2;
25 reg_can_xcvr = &reg_can_xcvr;
26 stk5led = &user_led;
27 usbotg = &usbotg;
28 sdhc0 = &usdhc1;
29 sdhc1 = &usdhc2;
30 };
31
32 memory {
33 reg = <0 0>; /* will be filled by U-Boot */
34 };
35
36 clocks {
37 #address-cells = <1>;
38 #size-cells = <0>;
39 mclk: clock@0 {
40 compatible = "fixed-clock";
41 reg = <0>;
42 #clock-cells = <0>;
43 clock-frequency = <27000000>;
44 };
45 };
46
47 gpio-keys {
48 compatible = "gpio-keys";
49
50 power {
51 label = "Power Button";
52 gpios = <&gpio5 2 GPIO_ACTIVE_HIGH>;
53 linux,code = <KEY_POWER>;
54 gpio-key,wakeup;
55 };
56 };
57
58 leds {
59 compatible = "gpio-leds";
60
61 user_led: user {
62 label = "Heartbeat";
63 gpios = <&gpio2 20 GPIO_ACTIVE_HIGH>;
64 linux,default-trigger = "heartbeat";
65 };
66 };
67
68 regulators {
69 compatible = "simple-bus";
70 #address-cells = <1>;
71 #size-cells = <0>;
72
73 reg_3v3_etn: regulator@0 {
74 compatible = "regulator-fixed";
75 reg = <0>;
76 regulator-name = "3V3_ETN";
77 regulator-min-microvolt = <3300000>;
78 regulator-max-microvolt = <3300000>;
79 pinctrl-names = "default";
80 pinctrl-0 = <&pinctrl_etnphy_power>;
81 gpio = <&gpio3 20 GPIO_ACTIVE_HIGH>;
82 enable-active-high;
83 };
84
85 reg_2v5: regulator@1 {
86 compatible = "regulator-fixed";
87 reg = <1>;
88 regulator-name = "2V5";
89 regulator-min-microvolt = <2500000>;
90 regulator-max-microvolt = <2500000>;
91 regulator-always-on;
92 };
93
94 reg_3v3: regulator@2 {
95 compatible = "regulator-fixed";
96 reg = <2>;
97 regulator-name = "3V3";
98 regulator-min-microvolt = <3300000>;
99 regulator-max-microvolt = <3300000>;
100 regulator-always-on;
101 };
102
103 reg_can_xcvr: regulator@3 {
104 compatible = "regulator-fixed";
105 reg = <3>;
106 regulator-name = "CAN XCVR";
107 regulator-min-microvolt = <3300000>;
108 regulator-max-microvolt = <3300000>;
109 pinctrl-names = "default";
110 pinctrl-0 = <&pinctrl_flexcan_xcvr>;
111 gpio = <&gpio4 21 GPIO_ACTIVE_HIGH>;
112 enable-active-low;
113 };
114
115 reg_lcd0_pwr: regulator@4 {
116 compatible = "regulator-fixed";
117 reg = <4>;
118 regulator-name = "LCD0 POWER";
119 regulator-min-microvolt = <3300000>;
120 regulator-max-microvolt = <3300000>;
121 pinctrl-names = "default";
122 pinctrl-0 = <&pinctrl_lcd0_pwr>;
123 gpio = <&gpio3 29 GPIO_ACTIVE_HIGH>;
124 enable-active-high;
125 regulator-boot-on;
126 regulator-always-on;
127 };
128
129 reg_lcd1_pwr: regulator@5 {
130 compatible = "regulator-fixed";
131 reg = <5>;
132 regulator-name = "LCD1 POWER";
133 regulator-min-microvolt = <3300000>;
134 regulator-max-microvolt = <3300000>;
135 pinctrl-names = "default";
136 pinctrl-0 = <&pinctrl_lcd1_pwr>;
137 gpio = <&gpio2 31 GPIO_ACTIVE_HIGH>;
138 enable-active-high;
139 regulator-boot-on;
140 regulator-always-on;
141 };
142
143 reg_usbh1_vbus: regulator@6 {
144 compatible = "regulator-fixed";
145 reg = <6>;
146 regulator-name = "usbh1_vbus";
147 regulator-min-microvolt = <5000000>;
148 regulator-max-microvolt = <5000000>;
149 pinctrl-names = "default";
150 pinctrl-0 = <&pinctrl_usbh1_vbus>;
151 gpio = <&gpio3 31 GPIO_ACTIVE_HIGH>;
152 enable-active-high;
153 };
154
155 reg_usbotg_vbus: regulator@7 {
156 compatible = "regulator-fixed";
157 reg = <7>;
158 regulator-name = "usbotg_vbus";
159 regulator-min-microvolt = <5000000>;
160 regulator-max-microvolt = <5000000>;
161 pinctrl-names = "default";
162 pinctrl-0 = <&pinctrl_usbotg_vbus>;
163 gpio = <&gpio1 7 GPIO_ACTIVE_HIGH>;
164 enable-active-high;
165 };
166 };
167
168 sound {
169 compatible = "karo,imx6qdl-tx6qdl-sgtl5000",
170 "fsl,imx-audio-sgtl5000";
171 model = "sgtl5000-audio";
172 pinctrl-names = "default";
173 pinctrl-0 = <&pinctrl_audmux>;
174 ssi-controller = <&ssi1>;
175 audio-codec = <&sgtl5000>;
176 audio-routing =
177 "MIC_IN", "Mic Jack",
178 "Mic Jack", "Mic Bias",
179 "Headphone Jack", "HP_OUT";
180 mux-int-port = <1>;
181 mux-ext-port = <5>;
182 };
183};
184
185&audmux {
186 status = "okay";
187};
188
189&can1 {
190 pinctrl-names = "default";
191 pinctrl-0 = <&pinctrl_flexcan1>;
192 xceiver-supply = <&reg_can_xcvr>;
193 status = "okay";
194};
195
196&can2 {
197 pinctrl-names = "default";
198 pinctrl-0 = <&pinctrl_flexcan2>;
199 xceiver-supply = <&reg_can_xcvr>;
200 status = "okay";
201};
202
203&ecspi1 {
204 pinctrl-names = "default";
205 pinctrl-0 = <&pinctrl_ecspi1>;
206 fsl,spi-num-chipselects = <2>;
207 cs-gpios = <
208 &gpio2 30 GPIO_ACTIVE_HIGH
209 &gpio3 19 GPIO_ACTIVE_HIGH
210 >;
211 status = "okay";
212
213 spidev0: spi@0 {
214 compatible = "spidev";
215 reg = <0>;
216 spi-max-frequency = <54000000>;
217 };
218
219 spidev1: spi@1 {
220 compatible = "spidev";
221 reg = <1>;
222 spi-max-frequency = <54000000>;
223 };
224};
225
226&fec {
227 pinctrl-names = "default";
228 pinctrl-0 = <&pinctrl_enet>;
229 phy-mode = "rmii";
230 phy-reset-gpios = <&gpio7 6 GPIO_ACTIVE_HIGH>;
231 phy-supply = <&reg_3v3_etn>;
232 status = "okay";
233};
234
235&gpmi {
236 pinctrl-names = "default";
237 pinctrl-0 = <&pinctrl_gpmi_nand>;
238 nand-on-flash-bbt;
239 fsl,no-blockmark-swap;
240 status = "okay";
241};
242
243&i2c1 {
244 pinctrl-names = "default";
245 pinctrl-0 = <&pinctrl_i2c1>;
246 clock-frequency = <400000>;
247 status = "okay";
248
249 ds1339: rtc@68 {
250 compatible = "dallas,ds1339";
251 reg = <0x68>;
252 };
253};
254
255&i2c3 {
256 pinctrl-names = "default";
257 pinctrl-0 = <&pinctrl_i2c3>;
258 clock-frequency = <400000>;
259 status = "okay";
260
261 sgtl5000: sgtl5000@0a {
262 compatible = "fsl,sgtl5000";
263 reg = <0x0a>;
264 VDDA-supply = <&reg_2v5>;
265 VDDIO-supply = <&reg_3v3>;
266 clocks = <&mclk>;
267 };
268
269 polytouch: edt-ft5x06@38 {
270 compatible = "edt,edt-ft5x06";
271 reg = <0x38>;
272 pinctrl-names = "default";
273 pinctrl-0 = <&pinctrl_edt_ft5x06>;
274 interrupt-parent = <&gpio6>;
275 interrupts = <15 0>;
276 reset-gpios = <&gpio2 22 GPIO_ACTIVE_LOW>;
277 wake-gpios = <&gpio2 21 GPIO_ACTIVE_HIGH>;
278 linux,wakeup;
279 };
280
281 touchscreen: tsc2007@48 {
282 compatible = "ti,tsc2007";
283 reg = <0x48>;
284 pinctrl-names = "default";
285 pinctrl-0 = <&pinctrl_tsc2007>;
286 interrupt-parent = <&gpio3>;
287 interrupts = <26 0>;
288 gpios = <&gpio3 26 GPIO_ACTIVE_LOW>;
289 ti,x-plate-ohms = <660>;
290 linux,wakeup;
291 };
292};
293
294&iomuxc {
295 pinctrl-names = "default";
296 pinctrl-0 = <&pinctrl_hog>;
297
298 imx6qdl-tx6 {
299 pinctrl_hog: hoggrp {
300 fsl,pins = <
301 MX6QDL_PAD_EIM_A18__GPIO2_IO20 0x1b0b1 /* LED */
302 MX6QDL_PAD_SD3_DAT2__GPIO7_IO06 0x1b0b1 /* ETN PHY RESET */
303 MX6QDL_PAD_SD3_DAT4__GPIO7_IO01 0x1b0b1 /* ETN PHY INT */
304 MX6QDL_PAD_EIM_A25__GPIO5_IO02 0x1b0b1 /* PWR BTN */
305 >;
306 };
307
308 pinctrl_audmux: audmuxgrp {
309 fsl,pins = <
310 MX6QDL_PAD_KEY_ROW1__AUD5_RXD 0x130b0 /* SSI1_RXD */
311 MX6QDL_PAD_KEY_ROW0__AUD5_TXD 0x110b0 /* SSI1_TXD */
312 MX6QDL_PAD_KEY_COL0__AUD5_TXC 0x130b0 /* SSI1_CLK */
313 MX6QDL_PAD_KEY_COL1__AUD5_TXFS 0x130b0 /* SSI1_FS */
314 >;
315 };
316
317 pinctrl_disp0_1: disp0grp-1 {
318 fsl,pins = <
319 MX6QDL_PAD_DI0_DISP_CLK__IPU1_DI0_DISP_CLK 0x10
320 MX6QDL_PAD_DI0_PIN15__IPU1_DI0_PIN15 0x10
321 MX6QDL_PAD_DI0_PIN2__IPU1_DI0_PIN02 0x10
322 MX6QDL_PAD_DI0_PIN3__IPU1_DI0_PIN03 0x10
323 /* PAD DISP0_DAT0 is used for the Flexcan transceiver control */
324 MX6QDL_PAD_DISP0_DAT1__IPU1_DISP0_DATA01 0x10
325 MX6QDL_PAD_DISP0_DAT2__IPU1_DISP0_DATA02 0x10
326 MX6QDL_PAD_DISP0_DAT3__IPU1_DISP0_DATA03 0x10
327 MX6QDL_PAD_DISP0_DAT4__IPU1_DISP0_DATA04 0x10
328 MX6QDL_PAD_DISP0_DAT5__IPU1_DISP0_DATA05 0x10
329 MX6QDL_PAD_DISP0_DAT6__IPU1_DISP0_DATA06 0x10
330 MX6QDL_PAD_DISP0_DAT7__IPU1_DISP0_DATA07 0x10
331 MX6QDL_PAD_DISP0_DAT8__IPU1_DISP0_DATA08 0x10
332 MX6QDL_PAD_DISP0_DAT9__IPU1_DISP0_DATA09 0x10
333 MX6QDL_PAD_DISP0_DAT10__IPU1_DISP0_DATA10 0x10
334 MX6QDL_PAD_DISP0_DAT11__IPU1_DISP0_DATA11 0x10
335 MX6QDL_PAD_DISP0_DAT12__IPU1_DISP0_DATA12 0x10
336 MX6QDL_PAD_DISP0_DAT13__IPU1_DISP0_DATA13 0x10
337 MX6QDL_PAD_DISP0_DAT14__IPU1_DISP0_DATA14 0x10
338 MX6QDL_PAD_DISP0_DAT15__IPU1_DISP0_DATA15 0x10
339 MX6QDL_PAD_DISP0_DAT16__IPU1_DISP0_DATA16 0x10
340 MX6QDL_PAD_DISP0_DAT17__IPU1_DISP0_DATA17 0x10
341 MX6QDL_PAD_DISP0_DAT18__IPU1_DISP0_DATA18 0x10
342 MX6QDL_PAD_DISP0_DAT19__IPU1_DISP0_DATA19 0x10
343 MX6QDL_PAD_DISP0_DAT20__IPU1_DISP0_DATA20 0x10
344 MX6QDL_PAD_DISP0_DAT21__IPU1_DISP0_DATA21 0x10
345 MX6QDL_PAD_DISP0_DAT22__IPU1_DISP0_DATA22 0x10
346 MX6QDL_PAD_DISP0_DAT23__IPU1_DISP0_DATA23 0x10
347 >;
348 };
349
350 pinctrl_disp0_2: disp0grp-2 {
351 fsl,pins = <
352 MX6QDL_PAD_DI0_DISP_CLK__IPU1_DI0_DISP_CLK 0x10
353 MX6QDL_PAD_DI0_PIN15__IPU1_DI0_PIN15 0x10
354 MX6QDL_PAD_DI0_PIN2__IPU1_DI0_PIN02 0x10
355 MX6QDL_PAD_DI0_PIN3__IPU1_DI0_PIN03 0x10
356 MX6QDL_PAD_DISP0_DAT0__IPU1_DISP0_DATA00 0x10
357 MX6QDL_PAD_DISP0_DAT1__IPU1_DISP0_DATA01 0x10
358 MX6QDL_PAD_DISP0_DAT2__IPU1_DISP0_DATA02 0x10
359 MX6QDL_PAD_DISP0_DAT3__IPU1_DISP0_DATA03 0x10
360 MX6QDL_PAD_DISP0_DAT4__IPU1_DISP0_DATA04 0x10
361 MX6QDL_PAD_DISP0_DAT5__IPU1_DISP0_DATA05 0x10
362 MX6QDL_PAD_DISP0_DAT6__IPU1_DISP0_DATA06 0x10
363 MX6QDL_PAD_DISP0_DAT7__IPU1_DISP0_DATA07 0x10
364 MX6QDL_PAD_DISP0_DAT8__IPU1_DISP0_DATA08 0x10
365 MX6QDL_PAD_DISP0_DAT9__IPU1_DISP0_DATA09 0x10
366 MX6QDL_PAD_DISP0_DAT10__IPU1_DISP0_DATA10 0x10
367 MX6QDL_PAD_DISP0_DAT11__IPU1_DISP0_DATA11 0x10
368 MX6QDL_PAD_DISP0_DAT12__IPU1_DISP0_DATA12 0x10
369 MX6QDL_PAD_DISP0_DAT13__IPU1_DISP0_DATA13 0x10
370 MX6QDL_PAD_DISP0_DAT14__IPU1_DISP0_DATA14 0x10
371 MX6QDL_PAD_DISP0_DAT15__IPU1_DISP0_DATA15 0x10
372 MX6QDL_PAD_DISP0_DAT16__IPU1_DISP0_DATA16 0x10
373 MX6QDL_PAD_DISP0_DAT17__IPU1_DISP0_DATA17 0x10
374 MX6QDL_PAD_DISP0_DAT18__IPU1_DISP0_DATA18 0x10
375 MX6QDL_PAD_DISP0_DAT19__IPU1_DISP0_DATA19 0x10
376 MX6QDL_PAD_DISP0_DAT20__IPU1_DISP0_DATA20 0x10
377 MX6QDL_PAD_DISP0_DAT21__IPU1_DISP0_DATA21 0x10
378 MX6QDL_PAD_DISP0_DAT22__IPU1_DISP0_DATA22 0x10
379 MX6QDL_PAD_DISP0_DAT23__IPU1_DISP0_DATA23 0x10
380 >;
381 };
382
383 pinctrl_ecspi1: ecspi1grp {
384 fsl,pins = <
385 MX6QDL_PAD_EIM_D18__ECSPI1_MOSI 0x0b0b0
386 MX6QDL_PAD_EIM_D17__ECSPI1_MISO 0x0b0b0
387 MX6QDL_PAD_EIM_D16__ECSPI1_SCLK 0x0b0b0
388 MX6QDL_PAD_GPIO_19__ECSPI1_RDY 0x0b0b0
389 MX6QDL_PAD_EIM_EB2__GPIO2_IO30 0x0b0b0 /* SPI CS0 */
390 MX6QDL_PAD_EIM_D19__GPIO3_IO19 0x0b0b0 /* SPI CS1 */
391 >;
392 };
393
394 pinctrl_edt_ft5x06: edt-ft5x06grp {
395 fsl,pins = <
396 MX6QDL_PAD_NANDF_CS2__GPIO6_IO15 0x1b0b0 /* Interrupt */
397 MX6QDL_PAD_EIM_A16__GPIO2_IO22 0x1b0b0 /* Reset */
398 MX6QDL_PAD_EIM_A17__GPIO2_IO21 0x1b0b0 /* Wake */
399 >;
400 };
401
402 pinctrl_enet: enetgrp {
403 fsl,pins = <
404 MX6QDL_PAD_ENET_MDC__ENET_MDC 0x1b0b0
405 MX6QDL_PAD_ENET_MDIO__ENET_MDIO 0x1b0b0
406 MX6QDL_PAD_ENET_RXD0__ENET_RX_DATA0 0x1b0b0
407 MX6QDL_PAD_ENET_RXD1__ENET_RX_DATA1 0x1b0b0
408 MX6QDL_PAD_ENET_RX_ER__ENET_RX_ER 0x1b0b0
409 MX6QDL_PAD_ENET_TX_EN__ENET_TX_EN 0x1b0b0
410 MX6QDL_PAD_ENET_TXD0__ENET_TX_DATA0 0x1b0b0
411 MX6QDL_PAD_ENET_TXD1__ENET_TX_DATA1 0x1b0b0
412 MX6QDL_PAD_ENET_CRS_DV__ENET_RX_EN 0x1b0b0
413 >;
414 };
415
416 pinctrl_etnphy_power: etnphy-pwrgrp {
417 fsl,pins = <
418 MX6QDL_PAD_EIM_D20__GPIO3_IO20 0x1b0b1 /* ETN PHY POWER */
419 >;
420 };
421
422 pinctrl_flexcan1: flexcan1grp {
423 fsl,pins = <
424 MX6QDL_PAD_GPIO_7__FLEXCAN1_TX 0x1b0b0
425 MX6QDL_PAD_GPIO_8__FLEXCAN1_RX 0x1b0b0
426 >;
427 };
428
429 pinctrl_flexcan2: flexcan2grp {
430 fsl,pins = <
431 MX6QDL_PAD_KEY_COL4__FLEXCAN2_TX 0x1b0b0
432 MX6QDL_PAD_KEY_ROW4__FLEXCAN2_RX 0x1b0b0
433 >;
434 };
435
436 pinctrl_flexcan_xcvr: flexcan-xcvrgrp {
437 fsl,pins = <
438 MX6QDL_PAD_DISP0_DAT0__GPIO4_IO21 0x1b0b0 /* Flexcan XCVR enable */
439 >;
440 };
441
442 pinctrl_gpmi_nand: gpminandgrp {
443 fsl,pins = <
444 MX6QDL_PAD_NANDF_CLE__NAND_CLE 0x0b0b1
445 MX6QDL_PAD_NANDF_ALE__NAND_ALE 0x0b0b1
446 MX6QDL_PAD_NANDF_WP_B__NAND_WP_B 0x0b0b1
447 MX6QDL_PAD_NANDF_RB0__NAND_READY_B 0x0b000
448 MX6QDL_PAD_NANDF_CS0__NAND_CE0_B 0x0b0b1
449 MX6QDL_PAD_SD4_CMD__NAND_RE_B 0x0b0b1
450 MX6QDL_PAD_SD4_CLK__NAND_WE_B 0x0b0b1
451 MX6QDL_PAD_NANDF_D0__NAND_DATA00 0x0b0b1
452 MX6QDL_PAD_NANDF_D1__NAND_DATA01 0x0b0b1
453 MX6QDL_PAD_NANDF_D2__NAND_DATA02 0x0b0b1
454 MX6QDL_PAD_NANDF_D3__NAND_DATA03 0x0b0b1
455 MX6QDL_PAD_NANDF_D4__NAND_DATA04 0x0b0b1
456 MX6QDL_PAD_NANDF_D5__NAND_DATA05 0x0b0b1
457 MX6QDL_PAD_NANDF_D6__NAND_DATA06 0x0b0b1
458 MX6QDL_PAD_NANDF_D7__NAND_DATA07 0x0b0b1
459 >;
460 };
461
462 pinctrl_i2c1: i2c1grp {
463 fsl,pins = <
464 MX6QDL_PAD_EIM_D21__I2C1_SCL 0x4001b8b1
465 MX6QDL_PAD_EIM_D28__I2C1_SDA 0x4001b8b1
466 >;
467 };
468
469 pinctrl_i2c3: i2c3grp {
470 fsl,pins = <
471 MX6QDL_PAD_GPIO_3__I2C3_SCL 0x4001b8b1
472 MX6QDL_PAD_GPIO_6__I2C3_SDA 0x4001b8b1
473 >;
474 };
475
476 pinctrl_kpp: kppgrp {
477 fsl,pins = <
478 MX6QDL_PAD_GPIO_9__KEY_COL6 0x1b0b1
479 MX6QDL_PAD_GPIO_4__KEY_COL7 0x1b0b1
480 MX6QDL_PAD_KEY_COL2__KEY_COL2 0x1b0b1
481 MX6QDL_PAD_KEY_COL3__KEY_COL3 0x1b0b1
482 MX6QDL_PAD_GPIO_2__KEY_ROW6 0x1b0b1
483 MX6QDL_PAD_GPIO_5__KEY_ROW7 0x1b0b1
484 MX6QDL_PAD_KEY_ROW2__KEY_ROW2 0x1b0b1
485 MX6QDL_PAD_KEY_ROW3__KEY_ROW3 0x1b0b1
486 >;
487 };
488
489 pinctrl_lcd0_pwr: lcd0-pwrgrp {
490 fsl,pins = <
491 MX6QDL_PAD_EIM_D29__GPIO3_IO29 0x1b0b1 /* LCD Reset */
492 >;
493 };
494
495 pinctrl_lcd1_pwr: lcd1-pwrgrp {
496 fsl,pins = <
497 MX6QDL_PAD_EIM_EB3__GPIO2_IO31 0x1b0b1 /* LCD Power Enable */
498 >;
499 };
500
501 pinctrl_pwm1: pwm1grp {
502 fsl,pins = <
503 MX6QDL_PAD_GPIO_9__PWM1_OUT 0x1b0b1
504 >;
505 };
506
507 pinctrl_pwm2: pwm2grp {
508 fsl,pins = <
509 MX6QDL_PAD_GPIO_1__PWM2_OUT 0x1b0b1
510 >;
511 };
512
513 pinctrl_tsc2007: tsc2007grp {
514 fsl,pins = <
515 MX6QDL_PAD_EIM_D26__GPIO3_IO26 0x1b0b0 /* Interrupt */
516 >;
517 };
518
519 pinctrl_uart1: uart1grp {
520 fsl,pins = <
521 MX6QDL_PAD_SD3_DAT7__UART1_TX_DATA 0x1b0b1
522 MX6QDL_PAD_SD3_DAT6__UART1_RX_DATA 0x1b0b1
523 >;
524 };
525
526 pinctrl_uart1_rtscts: uart1_rtsctsgrp {
527 fsl,pins = <
528 MX6QDL_PAD_SD3_DAT1__UART1_RTS_B 0x1b0b1
529 MX6QDL_PAD_SD3_DAT0__UART1_CTS_B 0x1b0b1
530 >;
531 };
532
533 pinctrl_uart2: uart2grp {
534 fsl,pins = <
535 MX6QDL_PAD_SD4_DAT7__UART2_TX_DATA 0x1b0b1
536 MX6QDL_PAD_SD4_DAT4__UART2_RX_DATA 0x1b0b1
537 >;
538 };
539
540 pinctrl_uart2_rtscts: uart2_rtsctsgrp {
541 fsl,pins = <
542 MX6QDL_PAD_SD4_DAT5__UART2_RTS_B 0x1b0b1
543 MX6QDL_PAD_SD4_DAT6__UART2_CTS_B 0x1b0b1
544 >;
545 };
546
547 pinctrl_uart3: uart3grp {
548 fsl,pins = <
549 MX6QDL_PAD_EIM_D24__UART3_TX_DATA 0x1b0b1
550 MX6QDL_PAD_EIM_D25__UART3_RX_DATA 0x1b0b1
551 >;
552 };
553
554 pinctrl_uart3_rtscts: uart3_rtsctsgrp {
555 fsl,pins = <
556 MX6QDL_PAD_SD3_DAT3__UART3_CTS_B 0x1b0b1
557 MX6QDL_PAD_SD3_RST__UART3_RTS_B 0x1b0b1
558 >;
559 };
560
561 pinctrl_usbh1_vbus: usbh1-vbusgrp {
562 fsl,pins = <
563 MX6QDL_PAD_EIM_D31__GPIO3_IO31 0x1b0b0 /* USBH1_VBUSEN */
564 >;
565 };
566
567 pinctrl_usbotg: usbotggrp {
568 fsl,pins = <
569 MX6QDL_PAD_EIM_D23__GPIO3_IO23 0x17059
570 >;
571 };
572
573 pinctrl_usbotg_vbus: usbotg-vbusgrp {
574 fsl,pins = <
575 MX6QDL_PAD_GPIO_7__GPIO1_IO07 0x1b0b0 /* USBOTG_VBUSEN */
576 >;
577 };
578
579 pinctrl_usdhc1: usdhc1grp {
580 fsl,pins = <
581 MX6QDL_PAD_SD1_CMD__SD1_CMD 0x070b1
582 MX6QDL_PAD_SD1_CLK__SD1_CLK 0x070b1
583 MX6QDL_PAD_SD1_DAT0__SD1_DATA0 0x070b1
584 MX6QDL_PAD_SD1_DAT1__SD1_DATA1 0x070b1
585 MX6QDL_PAD_SD1_DAT2__SD1_DATA2 0x070b1
586 MX6QDL_PAD_SD1_DAT3__SD1_DATA3 0x070b1
587 MX6QDL_PAD_SD3_CMD__GPIO7_IO02 0x170b0 /* SD1 CD */
588 >;
589 };
590
591 pinctrl_usdhc2: usdhc2grp {
592 fsl,pins = <
593 MX6QDL_PAD_SD2_CMD__SD2_CMD 0x070b1
594 MX6QDL_PAD_SD2_CLK__SD2_CLK 0x070b1
595 MX6QDL_PAD_SD2_DAT0__SD2_DATA0 0x070b1
596 MX6QDL_PAD_SD2_DAT1__SD2_DATA1 0x070b1
597 MX6QDL_PAD_SD2_DAT2__SD2_DATA2 0x070b1
598 MX6QDL_PAD_SD2_DAT3__SD2_DATA3 0x070b1
599 MX6QDL_PAD_SD3_CLK__GPIO7_IO03 0x170b0 /* SD2 CD */
600 >;
601 };
602 };
603};
604
605&kpp {
606 pinctrl-names = "default";
607 pinctrl-0 = <&pinctrl_kpp>;
608 /* sample keymap */
609 /* row/col 0,1 are mapped to KPP row/col 6,7 */
610 linux,keymap = <
611 MATRIX_KEY(6, 6, KEY_POWER) /* 0x06060074 */
612 MATRIX_KEY(6, 7, KEY_KP0) /* 0x06070052 */
613 MATRIX_KEY(6, 2, KEY_KP1) /* 0x0602004f */
614 MATRIX_KEY(6, 3, KEY_KP2) /* 0x06030050 */
615 MATRIX_KEY(7, 6, KEY_KP3) /* 0x07060051 */
616 MATRIX_KEY(7, 7, KEY_KP4) /* 0x0707004b */
617 MATRIX_KEY(7, 2, KEY_KP5) /* 0x0702004c */
618 MATRIX_KEY(7, 3, KEY_KP6) /* 0x0703004d */
619 MATRIX_KEY(2, 6, KEY_KP7) /* 0x02060047 */
620 MATRIX_KEY(2, 7, KEY_KP8) /* 0x02070048 */
621 MATRIX_KEY(2, 2, KEY_KP9) /* 0x02020049 */
622 >;
623 status = "okay";
624};
625
626&pwm1 {
627 pinctrl-names = "default";
628 pinctrl-0 = <&pinctrl_pwm1>;
629 #pwm-cells = <3>;
630 status = "disabled";
631};
632
633&pwm2 {
634 pinctrl-names = "default";
635 pinctrl-0 = <&pinctrl_pwm2>;
636 #pwm-cells = <3>;
637 status = "okay";
638};
639
640&ssi1 {
641 status = "okay";
642};
643
644&uart1 {
645 pinctrl-names = "default";
646 pinctrl-0 = <&pinctrl_uart1>;
647 status = "okay";
648};
649
650&uart2 {
651 pinctrl-names = "default";
652 pinctrl-0 = <&pinctrl_uart2 &pinctrl_uart2_rtscts>;
653 status = "okay";
654};
655
656&uart3 {
657 pinctrl-names = "default";
658 pinctrl-0 = <&pinctrl_uart3 &pinctrl_uart3_rtscts>;
659 status = "okay";
660};
661
662&usbh1 {
663 vbus-supply = <&reg_usbh1_vbus>;
664 dr_mode = "host";
665 disable-over-current;
666 status = "okay";
667};
668
669&usbotg {
670 vbus-supply = <&reg_usbotg_vbus>;
671 pinctrl-names = "default";
672 pinctrl-0 = <&pinctrl_usbotg>;
673 dr_mode = "peripheral";
674 disable-over-current;
675 status = "okay";
676};
677
678&usdhc1 {
679 pinctrl-names = "default";
680 pinctrl-0 = <&pinctrl_usdhc1>;
681 bus-width = <4>;
682 no-1-8-v;
683 cd-gpios = <&gpio7 2 0>;
684 fsl,wp-controller;
685 status = "okay";
686};
687
688&usdhc2 {
689 pinctrl-names = "default";
690 pinctrl-0 = <&pinctrl_usdhc2>;
691 bus-width = <4>;
692 no-1-8-v;
693 cd-gpios = <&gpio7 3 0>;
694 fsl,wp-controller;
695 status = "okay";
696};
diff --git a/arch/arm/boot/dts/imx6qdl-wandboard-revb1.dtsi b/arch/arm/boot/dts/imx6qdl-wandboard-revb1.dtsi
new file mode 100644
index 000000000000..ef7fa62b9898
--- /dev/null
+++ b/arch/arm/boot/dts/imx6qdl-wandboard-revb1.dtsi
@@ -0,0 +1,42 @@
1/*
2 * Copyright 2013 Freescale Semiconductor, Inc.
3 *
4 * Author: Fabio Estevam <fabio.estevam@freescale.com>
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation.
9 *
10 */
11
12#include "imx6qdl-wandboard.dtsi"
13
14&iomuxc {
15 pinctrl-0 = <&pinctrl_hog>;
16
17 imx6qdl-wandboard {
18 pinctrl_hog: hoggrp {
19 fsl,pins = <
20 MX6QDL_PAD_GPIO_0__CCM_CLKO1 0x130b0 /* GPIO_0_CLKO */
21 MX6QDL_PAD_GPIO_2__GPIO1_IO02 0x80000000 /* uSDHC1 CD */
22 MX6QDL_PAD_EIM_DA9__GPIO3_IO09 0x80000000 /* uSDHC3 CD */
23 MX6QDL_PAD_EIM_EB1__GPIO2_IO29 0x0f0b0 /* WL_REF_ON */
24 MX6QDL_PAD_EIM_A25__GPIO5_IO02 0x0f0b0 /* WL_RST_N */
25 MX6QDL_PAD_ENET_RXD1__GPIO1_IO26 0x000b0 /* WL_REG_ON */
26 MX6QDL_PAD_ENET_TXD1__GPIO1_IO29 0x80000000 /* WL_HOST_WAKE */
27 MX6QDL_PAD_ENET_TXD0__GPIO1_IO30 0x80000000 /* WL_WAKE */
28 MX6QDL_PAD_EIM_D29__GPIO3_IO29 0x80000000 /* RGMII_nRST */
29 MX6QDL_PAD_EIM_DA13__GPIO3_IO13 0x80000000 /* BT_ON */
30 MX6QDL_PAD_EIM_DA14__GPIO3_IO14 0x80000000 /* BT_WAKE */
31 MX6QDL_PAD_EIM_DA15__GPIO3_IO15 0x80000000 /* BT_HOST_WAKE */
32 >;
33 };
34 };
35};
36
37&usdhc2 {
38 pinctrl-names = "default";
39 pinctrl-0 = <&pinctrl_usdhc2>;
40 non-removable;
41 status = "okay";
42};
diff --git a/arch/arm/boot/dts/imx6qdl-wandboard-revc1.dtsi b/arch/arm/boot/dts/imx6qdl-wandboard-revc1.dtsi
new file mode 100644
index 000000000000..8d893a78cdf0
--- /dev/null
+++ b/arch/arm/boot/dts/imx6qdl-wandboard-revc1.dtsi
@@ -0,0 +1,41 @@
1/*
2 * Copyright 2013 Freescale Semiconductor, Inc.
3 *
4 * Author: Fabio Estevam <fabio.estevam@freescale.com>
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation.
9 *
10 */
11
12#include "imx6qdl-wandboard.dtsi"
13
14&iomuxc {
15 pinctrl-0 = <&pinctrl_hog>;
16
17 imx6qdl-wandboard {
18 pinctrl_hog: hoggrp {
19 fsl,pins = <
20 MX6QDL_PAD_GPIO_0__CCM_CLKO1 0x130b0 /* GPIO_0_CLKO */
21 MX6QDL_PAD_GPIO_2__GPIO1_IO02 0x80000000 /* uSDHC1 CD */
22 MX6QDL_PAD_EIM_DA9__GPIO3_IO09 0x80000000 /* uSDHC3 CD */
23 MX6QDL_PAD_CSI0_DAT14__GPIO6_IO00 0x0f0b0 /* WIFI_ON (reset, active low) */
24 MX6QDL_PAD_ENET_RXD1__GPIO1_IO26 0x000b0 /* WL_REG_ON (unused) */
25 MX6QDL_PAD_ENET_TXD1__GPIO1_IO29 0x80000000 /* WL_HOST_WAKE, input */
26 MX6QDL_PAD_CSI0_DAT13__GPIO5_IO31 0x0f0b0 /* GPIO5_IO31 (Wifi Power Enable) */
27 MX6QDL_PAD_ENET_TXD0__GPIO1_IO30 0x80000000 /* WL_WAKE (unused) */
28 MX6QDL_PAD_CSI0_VSYNC__GPIO5_IO21 0x80000000 /* BT_ON */
29 MX6QDL_PAD_CSI0_DAT12__GPIO5_IO30 0x80000000 /* BT_WAKE */
30 MX6QDL_PAD_CSI0_DATA_EN__GPIO5_IO20 0x80000000 /* BT_HOST_WAKE */
31 MX6QDL_PAD_EIM_D29__GPIO3_IO29 0x80000000 /* RGMII_nRST */
32 >;
33 };
34 };
35};
36
37&usdhc2 {
38 pinctrl-names = "default";
39 pinctrl-0 = <&pinctrl_usdhc2>;
40 status = "okay";
41};
diff --git a/arch/arm/boot/dts/imx6qdl-wandboard.dtsi b/arch/arm/boot/dts/imx6qdl-wandboard.dtsi
index 5c6f10c43f65..5fb091675582 100644
--- a/arch/arm/boot/dts/imx6qdl-wandboard.dtsi
+++ b/arch/arm/boot/dts/imx6qdl-wandboard.dtsi
@@ -91,22 +91,8 @@
91 91
92&iomuxc { 92&iomuxc {
93 pinctrl-names = "default"; 93 pinctrl-names = "default";
94 pinctrl-0 = <&pinctrl_hog>;
95 94
96 imx6qdl-wandboard { 95 imx6qdl-wandboard {
97 pinctrl_hog: hoggrp {
98 fsl,pins = <
99 MX6QDL_PAD_GPIO_0__CCM_CLKO1 0x130b0
100 MX6QDL_PAD_GPIO_2__GPIO1_IO02 0x80000000
101 MX6QDL_PAD_EIM_DA9__GPIO3_IO09 0x80000000
102 MX6QDL_PAD_EIM_EB1__GPIO2_IO29 0x80000000 /* WL_REF_ON */
103 MX6QDL_PAD_EIM_A25__GPIO5_IO02 0x80000000 /* WL_RST_N */
104 MX6QDL_PAD_ENET_RXD1__GPIO1_IO26 0x80000000 /* WL_REG_ON */
105 MX6QDL_PAD_ENET_TXD1__GPIO1_IO29 0x80000000 /* WL_HOST_WAKE */
106 MX6QDL_PAD_ENET_TXD0__GPIO1_IO30 0x80000000 /* WL_WAKE */
107 MX6QDL_PAD_EIM_D29__GPIO3_IO29 0x80000000
108 >;
109 };
110 96
111 pinctrl_audmux: audmuxgrp { 97 pinctrl_audmux: audmuxgrp {
112 fsl,pins = < 98 fsl,pins = <
@@ -233,7 +219,6 @@
233}; 219};
234 220
235&ssi1 { 221&ssi1 {
236 fsl,mode = "i2s-slave";
237 status = "okay"; 222 status = "okay";
238}; 223};
239 224
@@ -269,13 +254,6 @@
269 status = "okay"; 254 status = "okay";
270}; 255};
271 256
272&usdhc2 {
273 pinctrl-names = "default";
274 pinctrl-0 = <&pinctrl_usdhc2>;
275 non-removable;
276 status = "okay";
277};
278
279&usdhc3 { 257&usdhc3 {
280 pinctrl-names = "default"; 258 pinctrl-names = "default";
281 pinctrl-0 = <&pinctrl_usdhc3>; 259 pinctrl-0 = <&pinctrl_usdhc3>;
diff --git a/arch/arm/boot/dts/imx6qdl.dtsi b/arch/arm/boot/dts/imx6qdl.dtsi
index ce0599134a69..c701af958006 100644
--- a/arch/arm/boot/dts/imx6qdl.dtsi
+++ b/arch/arm/boot/dts/imx6qdl.dtsi
@@ -10,6 +10,7 @@
10 * http://www.gnu.org/copyleft/gpl.html 10 * http://www.gnu.org/copyleft/gpl.html
11 */ 11 */
12 12
13#include <dt-bindings/clock/imx6qdl-clock.h>
13#include <dt-bindings/interrupt-controller/arm-gic.h> 14#include <dt-bindings/interrupt-controller/arm-gic.h>
14 15
15#include "skeleton.dtsi" 16#include "skeleton.dtsi"
@@ -94,7 +95,7 @@
94 interrupt-names = "gpmi0", "gpmi1", "gpmi2", "gpmi3"; 95 interrupt-names = "gpmi0", "gpmi1", "gpmi2", "gpmi3";
95 #dma-cells = <1>; 96 #dma-cells = <1>;
96 dma-channels = <4>; 97 dma-channels = <4>;
97 clocks = <&clks 106>; 98 clocks = <&clks IMX6QDL_CLK_APBH_DMA>;
98 }; 99 };
99 100
100 gpmi: gpmi-nand@00112000 { 101 gpmi: gpmi-nand@00112000 {
@@ -105,8 +106,11 @@
105 reg-names = "gpmi-nand", "bch"; 106 reg-names = "gpmi-nand", "bch";
106 interrupts = <0 15 IRQ_TYPE_LEVEL_HIGH>; 107 interrupts = <0 15 IRQ_TYPE_LEVEL_HIGH>;
107 interrupt-names = "bch"; 108 interrupt-names = "bch";
108 clocks = <&clks 152>, <&clks 153>, <&clks 151>, 109 clocks = <&clks IMX6QDL_CLK_GPMI_IO>,
109 <&clks 150>, <&clks 149>; 110 <&clks IMX6QDL_CLK_GPMI_APB>,
111 <&clks IMX6QDL_CLK_GPMI_BCH>,
112 <&clks IMX6QDL_CLK_GPMI_BCH_APB>,
113 <&clks IMX6QDL_CLK_PER1_BCH>;
110 clock-names = "gpmi_io", "gpmi_apb", "gpmi_bch", 114 clock-names = "gpmi_io", "gpmi_apb", "gpmi_bch",
111 "gpmi_bch_apb", "per1_bch"; 115 "gpmi_bch_apb", "per1_bch";
112 dmas = <&dma_apbh 0>; 116 dmas = <&dma_apbh 0>;
@@ -118,7 +122,7 @@
118 compatible = "arm,cortex-a9-twd-timer"; 122 compatible = "arm,cortex-a9-twd-timer";
119 reg = <0x00a00600 0x20>; 123 reg = <0x00a00600 0x20>;
120 interrupts = <1 13 0xf01>; 124 interrupts = <1 13 0xf01>;
121 clocks = <&clks 15>; 125 clocks = <&clks IMX6QDL_CLK_TWD>;
122 }; 126 };
123 127
124 L2: l2-cache@00a02000 { 128 L2: l2-cache@00a02000 {
@@ -149,7 +153,9 @@
149 <0 0 0 2 &intc GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>, 153 <0 0 0 2 &intc GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>,
150 <0 0 0 3 &intc GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>, 154 <0 0 0 3 &intc GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>,
151 <0 0 0 4 &intc GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>; 155 <0 0 0 4 &intc GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>;
152 clocks = <&clks 144>, <&clks 206>, <&clks 189>; 156 clocks = <&clks IMX6QDL_CLK_PCIE_AXI>,
157 <&clks IMX6QDL_CLK_LVDS1_GATE>,
158 <&clks IMX6QDL_CLK_PCIE_REF_125M>;
153 clock-names = "pcie", "pcie_bus", "pcie_phy"; 159 clock-names = "pcie", "pcie_bus", "pcie_phy";
154 status = "disabled"; 160 status = "disabled";
155 }; 161 };
@@ -180,11 +186,11 @@
180 dmas = <&sdma 14 18 0>, 186 dmas = <&sdma 14 18 0>,
181 <&sdma 15 18 0>; 187 <&sdma 15 18 0>;
182 dma-names = "rx", "tx"; 188 dma-names = "rx", "tx";
183 clocks = <&clks 197>, <&clks 3>, 189 clocks = <&clks IMX6QDL_CLK_SPDIF>, <&clks IMX6QDL_CLK_OSC>,
184 <&clks 197>, <&clks 107>, 190 <&clks IMX6QDL_CLK_SPDIF>, <&clks IMX6QDL_CLK_DUMMY>,
185 <&clks 0>, <&clks 118>, 191 <&clks IMX6QDL_CLK_DUMMY>, <&clks IMX6QDL_CLK_DUMMY>,
186 <&clks 0>, <&clks 139>, 192 <&clks IMX6QDL_CLK_DUMMY>, <&clks IMX6QDL_CLK_DUMMY>,
187 <&clks 0>; 193 <&clks IMX6QDL_CLK_DUMMY>;
188 clock-names = "core", "rxtx0", 194 clock-names = "core", "rxtx0",
189 "rxtx1", "rxtx2", 195 "rxtx1", "rxtx2",
190 "rxtx3", "rxtx4", 196 "rxtx3", "rxtx4",
@@ -199,7 +205,8 @@
199 compatible = "fsl,imx6q-ecspi", "fsl,imx51-ecspi"; 205 compatible = "fsl,imx6q-ecspi", "fsl,imx51-ecspi";
200 reg = <0x02008000 0x4000>; 206 reg = <0x02008000 0x4000>;
201 interrupts = <0 31 IRQ_TYPE_LEVEL_HIGH>; 207 interrupts = <0 31 IRQ_TYPE_LEVEL_HIGH>;
202 clocks = <&clks 112>, <&clks 112>; 208 clocks = <&clks IMX6QDL_CLK_ECSPI1>,
209 <&clks IMX6QDL_CLK_ECSPI1>;
203 clock-names = "ipg", "per"; 210 clock-names = "ipg", "per";
204 dmas = <&sdma 3 7 1>, <&sdma 4 7 2>; 211 dmas = <&sdma 3 7 1>, <&sdma 4 7 2>;
205 dma-names = "rx", "tx"; 212 dma-names = "rx", "tx";
@@ -212,7 +219,8 @@
212 compatible = "fsl,imx6q-ecspi", "fsl,imx51-ecspi"; 219 compatible = "fsl,imx6q-ecspi", "fsl,imx51-ecspi";
213 reg = <0x0200c000 0x4000>; 220 reg = <0x0200c000 0x4000>;
214 interrupts = <0 32 IRQ_TYPE_LEVEL_HIGH>; 221 interrupts = <0 32 IRQ_TYPE_LEVEL_HIGH>;
215 clocks = <&clks 113>, <&clks 113>; 222 clocks = <&clks IMX6QDL_CLK_ECSPI2>,
223 <&clks IMX6QDL_CLK_ECSPI2>;
216 clock-names = "ipg", "per"; 224 clock-names = "ipg", "per";
217 dmas = <&sdma 5 7 1>, <&sdma 6 7 2>; 225 dmas = <&sdma 5 7 1>, <&sdma 6 7 2>;
218 dma-names = "rx", "tx"; 226 dma-names = "rx", "tx";
@@ -225,7 +233,8 @@
225 compatible = "fsl,imx6q-ecspi", "fsl,imx51-ecspi"; 233 compatible = "fsl,imx6q-ecspi", "fsl,imx51-ecspi";
226 reg = <0x02010000 0x4000>; 234 reg = <0x02010000 0x4000>;
227 interrupts = <0 33 IRQ_TYPE_LEVEL_HIGH>; 235 interrupts = <0 33 IRQ_TYPE_LEVEL_HIGH>;
228 clocks = <&clks 114>, <&clks 114>; 236 clocks = <&clks IMX6QDL_CLK_ECSPI3>,
237 <&clks IMX6QDL_CLK_ECSPI3>;
229 clock-names = "ipg", "per"; 238 clock-names = "ipg", "per";
230 dmas = <&sdma 7 7 1>, <&sdma 8 7 2>; 239 dmas = <&sdma 7 7 1>, <&sdma 8 7 2>;
231 dma-names = "rx", "tx"; 240 dma-names = "rx", "tx";
@@ -238,7 +247,8 @@
238 compatible = "fsl,imx6q-ecspi", "fsl,imx51-ecspi"; 247 compatible = "fsl,imx6q-ecspi", "fsl,imx51-ecspi";
239 reg = <0x02014000 0x4000>; 248 reg = <0x02014000 0x4000>;
240 interrupts = <0 34 IRQ_TYPE_LEVEL_HIGH>; 249 interrupts = <0 34 IRQ_TYPE_LEVEL_HIGH>;
241 clocks = <&clks 115>, <&clks 115>; 250 clocks = <&clks IMX6QDL_CLK_ECSPI4>,
251 <&clks IMX6QDL_CLK_ECSPI4>;
242 clock-names = "ipg", "per"; 252 clock-names = "ipg", "per";
243 dmas = <&sdma 9 7 1>, <&sdma 10 7 2>; 253 dmas = <&sdma 9 7 1>, <&sdma 10 7 2>;
244 dma-names = "rx", "tx"; 254 dma-names = "rx", "tx";
@@ -249,7 +259,8 @@
249 compatible = "fsl,imx6q-uart", "fsl,imx21-uart"; 259 compatible = "fsl,imx6q-uart", "fsl,imx21-uart";
250 reg = <0x02020000 0x4000>; 260 reg = <0x02020000 0x4000>;
251 interrupts = <0 26 IRQ_TYPE_LEVEL_HIGH>; 261 interrupts = <0 26 IRQ_TYPE_LEVEL_HIGH>;
252 clocks = <&clks 160>, <&clks 161>; 262 clocks = <&clks IMX6QDL_CLK_UART_IPG>,
263 <&clks IMX6QDL_CLK_UART_SERIAL>;
253 clock-names = "ipg", "per"; 264 clock-names = "ipg", "per";
254 dmas = <&sdma 25 4 0>, <&sdma 26 4 0>; 265 dmas = <&sdma 25 4 0>, <&sdma 26 4 0>;
255 dma-names = "rx", "tx"; 266 dma-names = "rx", "tx";
@@ -263,46 +274,40 @@
263 274
264 ssi1: ssi@02028000 { 275 ssi1: ssi@02028000 {
265 compatible = "fsl,imx6q-ssi", 276 compatible = "fsl,imx6q-ssi",
266 "fsl,imx51-ssi", 277 "fsl,imx51-ssi";
267 "fsl,imx21-ssi";
268 reg = <0x02028000 0x4000>; 278 reg = <0x02028000 0x4000>;
269 interrupts = <0 46 IRQ_TYPE_LEVEL_HIGH>; 279 interrupts = <0 46 IRQ_TYPE_LEVEL_HIGH>;
270 clocks = <&clks 178>; 280 clocks = <&clks IMX6QDL_CLK_SSI1_IPG>;
271 dmas = <&sdma 37 1 0>, 281 dmas = <&sdma 37 1 0>,
272 <&sdma 38 1 0>; 282 <&sdma 38 1 0>;
273 dma-names = "rx", "tx"; 283 dma-names = "rx", "tx";
274 fsl,fifo-depth = <15>; 284 fsl,fifo-depth = <15>;
275 fsl,ssi-dma-events = <38 37>;
276 status = "disabled"; 285 status = "disabled";
277 }; 286 };
278 287
279 ssi2: ssi@0202c000 { 288 ssi2: ssi@0202c000 {
280 compatible = "fsl,imx6q-ssi", 289 compatible = "fsl,imx6q-ssi",
281 "fsl,imx51-ssi", 290 "fsl,imx51-ssi";
282 "fsl,imx21-ssi";
283 reg = <0x0202c000 0x4000>; 291 reg = <0x0202c000 0x4000>;
284 interrupts = <0 47 IRQ_TYPE_LEVEL_HIGH>; 292 interrupts = <0 47 IRQ_TYPE_LEVEL_HIGH>;
285 clocks = <&clks 179>; 293 clocks = <&clks IMX6QDL_CLK_SSI2_IPG>;
286 dmas = <&sdma 41 1 0>, 294 dmas = <&sdma 41 1 0>,
287 <&sdma 42 1 0>; 295 <&sdma 42 1 0>;
288 dma-names = "rx", "tx"; 296 dma-names = "rx", "tx";
289 fsl,fifo-depth = <15>; 297 fsl,fifo-depth = <15>;
290 fsl,ssi-dma-events = <42 41>;
291 status = "disabled"; 298 status = "disabled";
292 }; 299 };
293 300
294 ssi3: ssi@02030000 { 301 ssi3: ssi@02030000 {
295 compatible = "fsl,imx6q-ssi", 302 compatible = "fsl,imx6q-ssi",
296 "fsl,imx51-ssi", 303 "fsl,imx51-ssi";
297 "fsl,imx21-ssi";
298 reg = <0x02030000 0x4000>; 304 reg = <0x02030000 0x4000>;
299 interrupts = <0 48 IRQ_TYPE_LEVEL_HIGH>; 305 interrupts = <0 48 IRQ_TYPE_LEVEL_HIGH>;
300 clocks = <&clks 180>; 306 clocks = <&clks IMX6QDL_CLK_SSI3_IPG>;
301 dmas = <&sdma 45 1 0>, 307 dmas = <&sdma 45 1 0>,
302 <&sdma 46 1 0>; 308 <&sdma 46 1 0>;
303 dma-names = "rx", "tx"; 309 dma-names = "rx", "tx";
304 fsl,fifo-depth = <15>; 310 fsl,fifo-depth = <15>;
305 fsl,ssi-dma-events = <46 45>;
306 status = "disabled"; 311 status = "disabled";
307 }; 312 };
308 313
@@ -331,7 +336,8 @@
331 compatible = "fsl,imx6q-pwm", "fsl,imx27-pwm"; 336 compatible = "fsl,imx6q-pwm", "fsl,imx27-pwm";
332 reg = <0x02080000 0x4000>; 337 reg = <0x02080000 0x4000>;
333 interrupts = <0 83 IRQ_TYPE_LEVEL_HIGH>; 338 interrupts = <0 83 IRQ_TYPE_LEVEL_HIGH>;
334 clocks = <&clks 62>, <&clks 145>; 339 clocks = <&clks IMX6QDL_CLK_IPG>,
340 <&clks IMX6QDL_CLK_PWM1>;
335 clock-names = "ipg", "per"; 341 clock-names = "ipg", "per";
336 }; 342 };
337 343
@@ -340,7 +346,8 @@
340 compatible = "fsl,imx6q-pwm", "fsl,imx27-pwm"; 346 compatible = "fsl,imx6q-pwm", "fsl,imx27-pwm";
341 reg = <0x02084000 0x4000>; 347 reg = <0x02084000 0x4000>;
342 interrupts = <0 84 IRQ_TYPE_LEVEL_HIGH>; 348 interrupts = <0 84 IRQ_TYPE_LEVEL_HIGH>;
343 clocks = <&clks 62>, <&clks 146>; 349 clocks = <&clks IMX6QDL_CLK_IPG>,
350 <&clks IMX6QDL_CLK_PWM2>;
344 clock-names = "ipg", "per"; 351 clock-names = "ipg", "per";
345 }; 352 };
346 353
@@ -349,7 +356,8 @@
349 compatible = "fsl,imx6q-pwm", "fsl,imx27-pwm"; 356 compatible = "fsl,imx6q-pwm", "fsl,imx27-pwm";
350 reg = <0x02088000 0x4000>; 357 reg = <0x02088000 0x4000>;
351 interrupts = <0 85 IRQ_TYPE_LEVEL_HIGH>; 358 interrupts = <0 85 IRQ_TYPE_LEVEL_HIGH>;
352 clocks = <&clks 62>, <&clks 147>; 359 clocks = <&clks IMX6QDL_CLK_IPG>,
360 <&clks IMX6QDL_CLK_PWM3>;
353 clock-names = "ipg", "per"; 361 clock-names = "ipg", "per";
354 }; 362 };
355 363
@@ -358,7 +366,8 @@
358 compatible = "fsl,imx6q-pwm", "fsl,imx27-pwm"; 366 compatible = "fsl,imx6q-pwm", "fsl,imx27-pwm";
359 reg = <0x0208c000 0x4000>; 367 reg = <0x0208c000 0x4000>;
360 interrupts = <0 86 IRQ_TYPE_LEVEL_HIGH>; 368 interrupts = <0 86 IRQ_TYPE_LEVEL_HIGH>;
361 clocks = <&clks 62>, <&clks 148>; 369 clocks = <&clks IMX6QDL_CLK_IPG>,
370 <&clks IMX6QDL_CLK_PWM4>;
362 clock-names = "ipg", "per"; 371 clock-names = "ipg", "per";
363 }; 372 };
364 373
@@ -366,7 +375,8 @@
366 compatible = "fsl,imx6q-flexcan"; 375 compatible = "fsl,imx6q-flexcan";
367 reg = <0x02090000 0x4000>; 376 reg = <0x02090000 0x4000>;
368 interrupts = <0 110 IRQ_TYPE_LEVEL_HIGH>; 377 interrupts = <0 110 IRQ_TYPE_LEVEL_HIGH>;
369 clocks = <&clks 108>, <&clks 109>; 378 clocks = <&clks IMX6QDL_CLK_CAN1_IPG>,
379 <&clks IMX6QDL_CLK_CAN1_SERIAL>;
370 clock-names = "ipg", "per"; 380 clock-names = "ipg", "per";
371 status = "disabled"; 381 status = "disabled";
372 }; 382 };
@@ -375,7 +385,8 @@
375 compatible = "fsl,imx6q-flexcan"; 385 compatible = "fsl,imx6q-flexcan";
376 reg = <0x02094000 0x4000>; 386 reg = <0x02094000 0x4000>;
377 interrupts = <0 111 IRQ_TYPE_LEVEL_HIGH>; 387 interrupts = <0 111 IRQ_TYPE_LEVEL_HIGH>;
378 clocks = <&clks 110>, <&clks 111>; 388 clocks = <&clks IMX6QDL_CLK_CAN2_IPG>,
389 <&clks IMX6QDL_CLK_CAN2_SERIAL>;
379 clock-names = "ipg", "per"; 390 clock-names = "ipg", "per";
380 status = "disabled"; 391 status = "disabled";
381 }; 392 };
@@ -384,7 +395,8 @@
384 compatible = "fsl,imx6q-gpt", "fsl,imx31-gpt"; 395 compatible = "fsl,imx6q-gpt", "fsl,imx31-gpt";
385 reg = <0x02098000 0x4000>; 396 reg = <0x02098000 0x4000>;
386 interrupts = <0 55 IRQ_TYPE_LEVEL_HIGH>; 397 interrupts = <0 55 IRQ_TYPE_LEVEL_HIGH>;
387 clocks = <&clks 119>, <&clks 120>; 398 clocks = <&clks IMX6QDL_CLK_GPT_IPG>,
399 <&clks IMX6QDL_CLK_GPT_IPG_PER>;
388 clock-names = "ipg", "per"; 400 clock-names = "ipg", "per";
389 }; 401 };
390 402
@@ -466,22 +478,25 @@
466 }; 478 };
467 479
468 kpp: kpp@020b8000 { 480 kpp: kpp@020b8000 {
481 compatible = "fsl,imx6q-kpp", "fsl,imx21-kpp";
469 reg = <0x020b8000 0x4000>; 482 reg = <0x020b8000 0x4000>;
470 interrupts = <0 82 IRQ_TYPE_LEVEL_HIGH>; 483 interrupts = <0 82 IRQ_TYPE_LEVEL_HIGH>;
484 clocks = <&clks IMX6QDL_CLK_IPG>;
485 status = "disabled";
471 }; 486 };
472 487
473 wdog1: wdog@020bc000 { 488 wdog1: wdog@020bc000 {
474 compatible = "fsl,imx6q-wdt", "fsl,imx21-wdt"; 489 compatible = "fsl,imx6q-wdt", "fsl,imx21-wdt";
475 reg = <0x020bc000 0x4000>; 490 reg = <0x020bc000 0x4000>;
476 interrupts = <0 80 IRQ_TYPE_LEVEL_HIGH>; 491 interrupts = <0 80 IRQ_TYPE_LEVEL_HIGH>;
477 clocks = <&clks 0>; 492 clocks = <&clks IMX6QDL_CLK_DUMMY>;
478 }; 493 };
479 494
480 wdog2: wdog@020c0000 { 495 wdog2: wdog@020c0000 {
481 compatible = "fsl,imx6q-wdt", "fsl,imx21-wdt"; 496 compatible = "fsl,imx6q-wdt", "fsl,imx21-wdt";
482 reg = <0x020c0000 0x4000>; 497 reg = <0x020c0000 0x4000>;
483 interrupts = <0 81 IRQ_TYPE_LEVEL_HIGH>; 498 interrupts = <0 81 IRQ_TYPE_LEVEL_HIGH>;
484 clocks = <&clks 0>; 499 clocks = <&clks IMX6QDL_CLK_DUMMY>;
485 status = "disabled"; 500 status = "disabled";
486 }; 501 };
487 502
@@ -599,14 +614,14 @@
599 interrupts = <0 49 IRQ_TYPE_LEVEL_HIGH>; 614 interrupts = <0 49 IRQ_TYPE_LEVEL_HIGH>;
600 fsl,tempmon = <&anatop>; 615 fsl,tempmon = <&anatop>;
601 fsl,tempmon-data = <&ocotp>; 616 fsl,tempmon-data = <&ocotp>;
602 clocks = <&clks 172>; 617 clocks = <&clks IMX6QDL_CLK_PLL3_USB_OTG>;
603 }; 618 };
604 619
605 usbphy1: usbphy@020c9000 { 620 usbphy1: usbphy@020c9000 {
606 compatible = "fsl,imx6q-usbphy", "fsl,imx23-usbphy"; 621 compatible = "fsl,imx6q-usbphy", "fsl,imx23-usbphy";
607 reg = <0x020c9000 0x1000>; 622 reg = <0x020c9000 0x1000>;
608 interrupts = <0 44 IRQ_TYPE_LEVEL_HIGH>; 623 interrupts = <0 44 IRQ_TYPE_LEVEL_HIGH>;
609 clocks = <&clks 182>; 624 clocks = <&clks IMX6QDL_CLK_USBPHY1>;
610 fsl,anatop = <&anatop>; 625 fsl,anatop = <&anatop>;
611 }; 626 };
612 627
@@ -614,7 +629,7 @@
614 compatible = "fsl,imx6q-usbphy", "fsl,imx23-usbphy"; 629 compatible = "fsl,imx6q-usbphy", "fsl,imx23-usbphy";
615 reg = <0x020ca000 0x1000>; 630 reg = <0x020ca000 0x1000>;
616 interrupts = <0 45 IRQ_TYPE_LEVEL_HIGH>; 631 interrupts = <0 45 IRQ_TYPE_LEVEL_HIGH>;
617 clocks = <&clks 183>; 632 clocks = <&clks IMX6QDL_CLK_USBPHY2>;
618 fsl,anatop = <&anatop>; 633 fsl,anatop = <&anatop>;
619 }; 634 };
620 635
@@ -727,7 +742,8 @@
727 reg = <0x00120000 0x9000>; 742 reg = <0x00120000 0x9000>;
728 interrupts = <0 115 0x04>; 743 interrupts = <0 115 0x04>;
729 gpr = <&gpr>; 744 gpr = <&gpr>;
730 clocks = <&clks 123>, <&clks 124>; 745 clocks = <&clks IMX6QDL_CLK_HDMI_IAHB>,
746 <&clks IMX6QDL_CLK_HDMI_ISFR>;
731 clock-names = "iahb", "isfr"; 747 clock-names = "iahb", "isfr";
732 status = "disabled"; 748 status = "disabled";
733 749
@@ -762,7 +778,8 @@
762 compatible = "fsl,imx6q-sdma", "fsl,imx35-sdma"; 778 compatible = "fsl,imx6q-sdma", "fsl,imx35-sdma";
763 reg = <0x020ec000 0x4000>; 779 reg = <0x020ec000 0x4000>;
764 interrupts = <0 2 IRQ_TYPE_LEVEL_HIGH>; 780 interrupts = <0 2 IRQ_TYPE_LEVEL_HIGH>;
765 clocks = <&clks 155>, <&clks 155>; 781 clocks = <&clks IMX6QDL_CLK_SDMA>,
782 <&clks IMX6QDL_CLK_SDMA>;
766 clock-names = "ipg", "ahb"; 783 clock-names = "ipg", "ahb";
767 #dma-cells = <3>; 784 #dma-cells = <3>;
768 fsl,sdma-ram-script-name = "imx/sdma/sdma-imx6q.bin"; 785 fsl,sdma-ram-script-name = "imx/sdma/sdma-imx6q.bin";
@@ -790,7 +807,7 @@
790 compatible = "fsl,imx6q-usb", "fsl,imx27-usb"; 807 compatible = "fsl,imx6q-usb", "fsl,imx27-usb";
791 reg = <0x02184000 0x200>; 808 reg = <0x02184000 0x200>;
792 interrupts = <0 43 IRQ_TYPE_LEVEL_HIGH>; 809 interrupts = <0 43 IRQ_TYPE_LEVEL_HIGH>;
793 clocks = <&clks 162>; 810 clocks = <&clks IMX6QDL_CLK_USBOH3>;
794 fsl,usbphy = <&usbphy1>; 811 fsl,usbphy = <&usbphy1>;
795 fsl,usbmisc = <&usbmisc 0>; 812 fsl,usbmisc = <&usbmisc 0>;
796 status = "disabled"; 813 status = "disabled";
@@ -800,7 +817,7 @@
800 compatible = "fsl,imx6q-usb", "fsl,imx27-usb"; 817 compatible = "fsl,imx6q-usb", "fsl,imx27-usb";
801 reg = <0x02184200 0x200>; 818 reg = <0x02184200 0x200>;
802 interrupts = <0 40 IRQ_TYPE_LEVEL_HIGH>; 819 interrupts = <0 40 IRQ_TYPE_LEVEL_HIGH>;
803 clocks = <&clks 162>; 820 clocks = <&clks IMX6QDL_CLK_USBOH3>;
804 fsl,usbphy = <&usbphy2>; 821 fsl,usbphy = <&usbphy2>;
805 fsl,usbmisc = <&usbmisc 1>; 822 fsl,usbmisc = <&usbmisc 1>;
806 status = "disabled"; 823 status = "disabled";
@@ -810,7 +827,7 @@
810 compatible = "fsl,imx6q-usb", "fsl,imx27-usb"; 827 compatible = "fsl,imx6q-usb", "fsl,imx27-usb";
811 reg = <0x02184400 0x200>; 828 reg = <0x02184400 0x200>;
812 interrupts = <0 41 IRQ_TYPE_LEVEL_HIGH>; 829 interrupts = <0 41 IRQ_TYPE_LEVEL_HIGH>;
813 clocks = <&clks 162>; 830 clocks = <&clks IMX6QDL_CLK_USBOH3>;
814 fsl,usbmisc = <&usbmisc 2>; 831 fsl,usbmisc = <&usbmisc 2>;
815 status = "disabled"; 832 status = "disabled";
816 }; 833 };
@@ -819,7 +836,7 @@
819 compatible = "fsl,imx6q-usb", "fsl,imx27-usb"; 836 compatible = "fsl,imx6q-usb", "fsl,imx27-usb";
820 reg = <0x02184600 0x200>; 837 reg = <0x02184600 0x200>;
821 interrupts = <0 42 IRQ_TYPE_LEVEL_HIGH>; 838 interrupts = <0 42 IRQ_TYPE_LEVEL_HIGH>;
822 clocks = <&clks 162>; 839 clocks = <&clks IMX6QDL_CLK_USBOH3>;
823 fsl,usbmisc = <&usbmisc 3>; 840 fsl,usbmisc = <&usbmisc 3>;
824 status = "disabled"; 841 status = "disabled";
825 }; 842 };
@@ -828,7 +845,7 @@
828 #index-cells = <1>; 845 #index-cells = <1>;
829 compatible = "fsl,imx6q-usbmisc"; 846 compatible = "fsl,imx6q-usbmisc";
830 reg = <0x02184800 0x200>; 847 reg = <0x02184800 0x200>;
831 clocks = <&clks 162>; 848 clocks = <&clks IMX6QDL_CLK_USBOH3>;
832 }; 849 };
833 850
834 fec: ethernet@02188000 { 851 fec: ethernet@02188000 {
@@ -837,7 +854,9 @@
837 interrupts-extended = 854 interrupts-extended =
838 <&intc 0 118 IRQ_TYPE_LEVEL_HIGH>, 855 <&intc 0 118 IRQ_TYPE_LEVEL_HIGH>,
839 <&intc 0 119 IRQ_TYPE_LEVEL_HIGH>; 856 <&intc 0 119 IRQ_TYPE_LEVEL_HIGH>;
840 clocks = <&clks 117>, <&clks 117>, <&clks 190>; 857 clocks = <&clks IMX6QDL_CLK_ENET>,
858 <&clks IMX6QDL_CLK_ENET>,
859 <&clks IMX6QDL_CLK_ENET_REF>;
841 clock-names = "ipg", "ahb", "ptp"; 860 clock-names = "ipg", "ahb", "ptp";
842 status = "disabled"; 861 status = "disabled";
843 }; 862 };
@@ -853,7 +872,9 @@
853 compatible = "fsl,imx6q-usdhc"; 872 compatible = "fsl,imx6q-usdhc";
854 reg = <0x02190000 0x4000>; 873 reg = <0x02190000 0x4000>;
855 interrupts = <0 22 IRQ_TYPE_LEVEL_HIGH>; 874 interrupts = <0 22 IRQ_TYPE_LEVEL_HIGH>;
856 clocks = <&clks 163>, <&clks 163>, <&clks 163>; 875 clocks = <&clks IMX6QDL_CLK_USDHC1>,
876 <&clks IMX6QDL_CLK_USDHC1>,
877 <&clks IMX6QDL_CLK_USDHC1>;
857 clock-names = "ipg", "ahb", "per"; 878 clock-names = "ipg", "ahb", "per";
858 bus-width = <4>; 879 bus-width = <4>;
859 status = "disabled"; 880 status = "disabled";
@@ -863,7 +884,9 @@
863 compatible = "fsl,imx6q-usdhc"; 884 compatible = "fsl,imx6q-usdhc";
864 reg = <0x02194000 0x4000>; 885 reg = <0x02194000 0x4000>;
865 interrupts = <0 23 IRQ_TYPE_LEVEL_HIGH>; 886 interrupts = <0 23 IRQ_TYPE_LEVEL_HIGH>;
866 clocks = <&clks 164>, <&clks 164>, <&clks 164>; 887 clocks = <&clks IMX6QDL_CLK_USDHC2>,
888 <&clks IMX6QDL_CLK_USDHC2>,
889 <&clks IMX6QDL_CLK_USDHC2>;
867 clock-names = "ipg", "ahb", "per"; 890 clock-names = "ipg", "ahb", "per";
868 bus-width = <4>; 891 bus-width = <4>;
869 status = "disabled"; 892 status = "disabled";
@@ -873,7 +896,9 @@
873 compatible = "fsl,imx6q-usdhc"; 896 compatible = "fsl,imx6q-usdhc";
874 reg = <0x02198000 0x4000>; 897 reg = <0x02198000 0x4000>;
875 interrupts = <0 24 IRQ_TYPE_LEVEL_HIGH>; 898 interrupts = <0 24 IRQ_TYPE_LEVEL_HIGH>;
876 clocks = <&clks 165>, <&clks 165>, <&clks 165>; 899 clocks = <&clks IMX6QDL_CLK_USDHC3>,
900 <&clks IMX6QDL_CLK_USDHC3>,
901 <&clks IMX6QDL_CLK_USDHC3>;
877 clock-names = "ipg", "ahb", "per"; 902 clock-names = "ipg", "ahb", "per";
878 bus-width = <4>; 903 bus-width = <4>;
879 status = "disabled"; 904 status = "disabled";
@@ -883,7 +908,9 @@
883 compatible = "fsl,imx6q-usdhc"; 908 compatible = "fsl,imx6q-usdhc";
884 reg = <0x0219c000 0x4000>; 909 reg = <0x0219c000 0x4000>;
885 interrupts = <0 25 IRQ_TYPE_LEVEL_HIGH>; 910 interrupts = <0 25 IRQ_TYPE_LEVEL_HIGH>;
886 clocks = <&clks 166>, <&clks 166>, <&clks 166>; 911 clocks = <&clks IMX6QDL_CLK_USDHC4>,
912 <&clks IMX6QDL_CLK_USDHC4>,
913 <&clks IMX6QDL_CLK_USDHC4>;
887 clock-names = "ipg", "ahb", "per"; 914 clock-names = "ipg", "ahb", "per";
888 bus-width = <4>; 915 bus-width = <4>;
889 status = "disabled"; 916 status = "disabled";
@@ -895,7 +922,7 @@
895 compatible = "fsl,imx6q-i2c", "fsl,imx21-i2c"; 922 compatible = "fsl,imx6q-i2c", "fsl,imx21-i2c";
896 reg = <0x021a0000 0x4000>; 923 reg = <0x021a0000 0x4000>;
897 interrupts = <0 36 IRQ_TYPE_LEVEL_HIGH>; 924 interrupts = <0 36 IRQ_TYPE_LEVEL_HIGH>;
898 clocks = <&clks 125>; 925 clocks = <&clks IMX6QDL_CLK_I2C1>;
899 status = "disabled"; 926 status = "disabled";
900 }; 927 };
901 928
@@ -905,7 +932,7 @@
905 compatible = "fsl,imx6q-i2c", "fsl,imx21-i2c"; 932 compatible = "fsl,imx6q-i2c", "fsl,imx21-i2c";
906 reg = <0x021a4000 0x4000>; 933 reg = <0x021a4000 0x4000>;
907 interrupts = <0 37 IRQ_TYPE_LEVEL_HIGH>; 934 interrupts = <0 37 IRQ_TYPE_LEVEL_HIGH>;
908 clocks = <&clks 126>; 935 clocks = <&clks IMX6QDL_CLK_I2C2>;
909 status = "disabled"; 936 status = "disabled";
910 }; 937 };
911 938
@@ -915,7 +942,7 @@
915 compatible = "fsl,imx6q-i2c", "fsl,imx21-i2c"; 942 compatible = "fsl,imx6q-i2c", "fsl,imx21-i2c";
916 reg = <0x021a8000 0x4000>; 943 reg = <0x021a8000 0x4000>;
917 interrupts = <0 38 IRQ_TYPE_LEVEL_HIGH>; 944 interrupts = <0 38 IRQ_TYPE_LEVEL_HIGH>;
918 clocks = <&clks 127>; 945 clocks = <&clks IMX6QDL_CLK_I2C3>;
919 status = "disabled"; 946 status = "disabled";
920 }; 947 };
921 948
@@ -936,7 +963,7 @@
936 compatible = "fsl,imx6q-weim"; 963 compatible = "fsl,imx6q-weim";
937 reg = <0x021b8000 0x4000>; 964 reg = <0x021b8000 0x4000>;
938 interrupts = <0 14 IRQ_TYPE_LEVEL_HIGH>; 965 interrupts = <0 14 IRQ_TYPE_LEVEL_HIGH>;
939 clocks = <&clks 196>; 966 clocks = <&clks IMX6QDL_CLK_EIM_SLOW>;
940 }; 967 };
941 968
942 ocotp: ocotp@021bc000 { 969 ocotp: ocotp@021bc000 {
@@ -996,7 +1023,8 @@
996 compatible = "fsl,imx6q-uart", "fsl,imx21-uart"; 1023 compatible = "fsl,imx6q-uart", "fsl,imx21-uart";
997 reg = <0x021e8000 0x4000>; 1024 reg = <0x021e8000 0x4000>;
998 interrupts = <0 27 IRQ_TYPE_LEVEL_HIGH>; 1025 interrupts = <0 27 IRQ_TYPE_LEVEL_HIGH>;
999 clocks = <&clks 160>, <&clks 161>; 1026 clocks = <&clks IMX6QDL_CLK_UART_IPG>,
1027 <&clks IMX6QDL_CLK_UART_SERIAL>;
1000 clock-names = "ipg", "per"; 1028 clock-names = "ipg", "per";
1001 dmas = <&sdma 27 4 0>, <&sdma 28 4 0>; 1029 dmas = <&sdma 27 4 0>, <&sdma 28 4 0>;
1002 dma-names = "rx", "tx"; 1030 dma-names = "rx", "tx";
@@ -1007,7 +1035,8 @@
1007 compatible = "fsl,imx6q-uart", "fsl,imx21-uart"; 1035 compatible = "fsl,imx6q-uart", "fsl,imx21-uart";
1008 reg = <0x021ec000 0x4000>; 1036 reg = <0x021ec000 0x4000>;
1009 interrupts = <0 28 IRQ_TYPE_LEVEL_HIGH>; 1037 interrupts = <0 28 IRQ_TYPE_LEVEL_HIGH>;
1010 clocks = <&clks 160>, <&clks 161>; 1038 clocks = <&clks IMX6QDL_CLK_UART_IPG>,
1039 <&clks IMX6QDL_CLK_UART_SERIAL>;
1011 clock-names = "ipg", "per"; 1040 clock-names = "ipg", "per";
1012 dmas = <&sdma 29 4 0>, <&sdma 30 4 0>; 1041 dmas = <&sdma 29 4 0>, <&sdma 30 4 0>;
1013 dma-names = "rx", "tx"; 1042 dma-names = "rx", "tx";
@@ -1018,7 +1047,8 @@
1018 compatible = "fsl,imx6q-uart", "fsl,imx21-uart"; 1047 compatible = "fsl,imx6q-uart", "fsl,imx21-uart";
1019 reg = <0x021f0000 0x4000>; 1048 reg = <0x021f0000 0x4000>;
1020 interrupts = <0 29 IRQ_TYPE_LEVEL_HIGH>; 1049 interrupts = <0 29 IRQ_TYPE_LEVEL_HIGH>;
1021 clocks = <&clks 160>, <&clks 161>; 1050 clocks = <&clks IMX6QDL_CLK_UART_IPG>,
1051 <&clks IMX6QDL_CLK_UART_SERIAL>;
1022 clock-names = "ipg", "per"; 1052 clock-names = "ipg", "per";
1023 dmas = <&sdma 31 4 0>, <&sdma 32 4 0>; 1053 dmas = <&sdma 31 4 0>, <&sdma 32 4 0>;
1024 dma-names = "rx", "tx"; 1054 dma-names = "rx", "tx";
@@ -1029,7 +1059,8 @@
1029 compatible = "fsl,imx6q-uart", "fsl,imx21-uart"; 1059 compatible = "fsl,imx6q-uart", "fsl,imx21-uart";
1030 reg = <0x021f4000 0x4000>; 1060 reg = <0x021f4000 0x4000>;
1031 interrupts = <0 30 IRQ_TYPE_LEVEL_HIGH>; 1061 interrupts = <0 30 IRQ_TYPE_LEVEL_HIGH>;
1032 clocks = <&clks 160>, <&clks 161>; 1062 clocks = <&clks IMX6QDL_CLK_UART_IPG>,
1063 <&clks IMX6QDL_CLK_UART_SERIAL>;
1033 clock-names = "ipg", "per"; 1064 clock-names = "ipg", "per";
1034 dmas = <&sdma 33 4 0>, <&sdma 34 4 0>; 1065 dmas = <&sdma 33 4 0>, <&sdma 34 4 0>;
1035 dma-names = "rx", "tx"; 1066 dma-names = "rx", "tx";
@@ -1044,10 +1075,20 @@
1044 reg = <0x02400000 0x400000>; 1075 reg = <0x02400000 0x400000>;
1045 interrupts = <0 6 IRQ_TYPE_LEVEL_HIGH>, 1076 interrupts = <0 6 IRQ_TYPE_LEVEL_HIGH>,
1046 <0 5 IRQ_TYPE_LEVEL_HIGH>; 1077 <0 5 IRQ_TYPE_LEVEL_HIGH>;
1047 clocks = <&clks 130>, <&clks 131>, <&clks 132>; 1078 clocks = <&clks IMX6QDL_CLK_IPU1>,
1079 <&clks IMX6QDL_CLK_IPU1_DI0>,
1080 <&clks IMX6QDL_CLK_IPU1_DI1>;
1048 clock-names = "bus", "di0", "di1"; 1081 clock-names = "bus", "di0", "di1";
1049 resets = <&src 2>; 1082 resets = <&src 2>;
1050 1083
1084 ipu1_csi0: port@0 {
1085 reg = <0>;
1086 };
1087
1088 ipu1_csi1: port@1 {
1089 reg = <1>;
1090 };
1091
1051 ipu1_di0: port@2 { 1092 ipu1_di0: port@2 {
1052 #address-cells = <1>; 1093 #address-cells = <1>;
1053 #size-cells = <0>; 1094 #size-cells = <0>;
diff --git a/arch/arm/boot/dts/imx6sl-evk.dts b/arch/arm/boot/dts/imx6sl-evk.dts
index a8d9a93fab85..3f9e041c0252 100644
--- a/arch/arm/boot/dts/imx6sl-evk.dts
+++ b/arch/arm/boot/dts/imx6sl-evk.dts
@@ -116,8 +116,9 @@
116}; 116};
117 117
118&fec { 118&fec {
119 pinctrl-names = "default"; 119 pinctrl-names = "default", "sleep";
120 pinctrl-0 = <&pinctrl_fec>; 120 pinctrl-0 = <&pinctrl_fec>;
121 pinctrl-1 = <&pinctrl_fec_sleep>;
121 phy-mode = "rmii"; 122 phy-mode = "rmii";
122 status = "okay"; 123 status = "okay";
123}; 124};
@@ -300,6 +301,19 @@
300 >; 301 >;
301 }; 302 };
302 303
304 pinctrl_fec_sleep: fecgrp-sleep {
305 fsl,pins = <
306 MX6SL_PAD_FEC_MDC__GPIO4_IO23 0x3080
307 MX6SL_PAD_FEC_CRS_DV__GPIO4_IO25 0x3080
308 MX6SL_PAD_FEC_RXD0__GPIO4_IO17 0x3080
309 MX6SL_PAD_FEC_RXD1__GPIO4_IO18 0x3080
310 MX6SL_PAD_FEC_TX_EN__GPIO4_IO22 0x3080
311 MX6SL_PAD_FEC_TXD0__GPIO4_IO24 0x3080
312 MX6SL_PAD_FEC_TXD1__GPIO4_IO16 0x3080
313 MX6SL_PAD_FEC_REF_CLK__GPIO4_IO26 0x3080
314 >;
315 };
316
303 pinctrl_i2c1: i2c1grp { 317 pinctrl_i2c1: i2c1grp {
304 fsl,pins = < 318 fsl,pins = <
305 MX6SL_PAD_I2C1_SCL__I2C1_SCL 0x4001b8b1 319 MX6SL_PAD_I2C1_SCL__I2C1_SCL 0x4001b8b1
@@ -475,7 +489,6 @@
475}; 489};
476 490
477&ssi2 { 491&ssi2 {
478 fsl,mode = "i2s-slave";
479 status = "okay"; 492 status = "okay";
480}; 493};
481 494
diff --git a/arch/arm/boot/dts/imx6sl.dtsi b/arch/arm/boot/dts/imx6sl.dtsi
index 57d4abe03a94..c75800ca8b35 100644
--- a/arch/arm/boot/dts/imx6sl.dtsi
+++ b/arch/arm/boot/dts/imx6sl.dtsi
@@ -227,8 +227,7 @@
227 227
228 ssi1: ssi@02028000 { 228 ssi1: ssi@02028000 {
229 compatible = "fsl,imx6sl-ssi", 229 compatible = "fsl,imx6sl-ssi",
230 "fsl,imx51-ssi", 230 "fsl,imx51-ssi";
231 "fsl,imx21-ssi";
232 reg = <0x02028000 0x4000>; 231 reg = <0x02028000 0x4000>;
233 interrupts = <0 46 IRQ_TYPE_LEVEL_HIGH>; 232 interrupts = <0 46 IRQ_TYPE_LEVEL_HIGH>;
234 clocks = <&clks IMX6SL_CLK_SSI1>; 233 clocks = <&clks IMX6SL_CLK_SSI1>;
@@ -241,8 +240,7 @@
241 240
242 ssi2: ssi@0202c000 { 241 ssi2: ssi@0202c000 {
243 compatible = "fsl,imx6sl-ssi", 242 compatible = "fsl,imx6sl-ssi",
244 "fsl,imx51-ssi", 243 "fsl,imx51-ssi";
245 "fsl,imx21-ssi";
246 reg = <0x0202c000 0x4000>; 244 reg = <0x0202c000 0x4000>;
247 interrupts = <0 47 IRQ_TYPE_LEVEL_HIGH>; 245 interrupts = <0 47 IRQ_TYPE_LEVEL_HIGH>;
248 clocks = <&clks IMX6SL_CLK_SSI2>; 246 clocks = <&clks IMX6SL_CLK_SSI2>;
@@ -255,8 +253,7 @@
255 253
256 ssi3: ssi@02030000 { 254 ssi3: ssi@02030000 {
257 compatible = "fsl,imx6sl-ssi", 255 compatible = "fsl,imx6sl-ssi",
258 "fsl,imx51-ssi", 256 "fsl,imx51-ssi";
259 "fsl,imx21-ssi";
260 reg = <0x02030000 0x4000>; 257 reg = <0x02030000 0x4000>;
261 interrupts = <0 48 IRQ_TYPE_LEVEL_HIGH>; 258 interrupts = <0 48 IRQ_TYPE_LEVEL_HIGH>;
262 clocks = <&clks IMX6SL_CLK_SSI3>; 259 clocks = <&clks IMX6SL_CLK_SSI3>;
@@ -403,6 +400,7 @@
403 reg = <0x020b8000 0x4000>; 400 reg = <0x020b8000 0x4000>;
404 interrupts = <0 82 IRQ_TYPE_LEVEL_HIGH>; 401 interrupts = <0 82 IRQ_TYPE_LEVEL_HIGH>;
405 clocks = <&clks IMX6SL_CLK_DUMMY>; 402 clocks = <&clks IMX6SL_CLK_DUMMY>;
403 status = "disabled";
406 }; 404 };
407 405
408 wdog1: wdog@020bc000 { 406 wdog1: wdog@020bc000 {
@@ -607,7 +605,7 @@
607 }; 605 };
608 606
609 sdma: sdma@020ec000 { 607 sdma: sdma@020ec000 {
610 compatible = "fsl,imx6sl-sdma", "fsl,imx35-sdma"; 608 compatible = "fsl,imx6sl-sdma", "fsl,imx6q-sdma";
611 reg = <0x020ec000 0x4000>; 609 reg = <0x020ec000 0x4000>;
612 interrupts = <0 2 IRQ_TYPE_LEVEL_HIGH>; 610 interrupts = <0 2 IRQ_TYPE_LEVEL_HIGH>;
613 clocks = <&clks IMX6SL_CLK_SDMA>, 611 clocks = <&clks IMX6SL_CLK_SDMA>,
diff --git a/arch/arm/boot/dts/imx6sx-pinfunc.h b/arch/arm/boot/dts/imx6sx-pinfunc.h
new file mode 100644
index 000000000000..3e0b816dac08
--- /dev/null
+++ b/arch/arm/boot/dts/imx6sx-pinfunc.h
@@ -0,0 +1,1544 @@
1/*
2 * Copyright 2014 Freescale Semiconductor, Inc.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 as
6 * published by the Free Software Foundation.
7 *
8 */
9
10#ifndef __DTS_IMX6SX_PINFUNC_H
11#define __DTS_IMX6SX_PINFUNC_H
12
13/*
14 * The pin function ID is a tuple of
15 * <mux_reg conf_reg input_reg mux_mode input_val>
16 */
17#define MX6SX_PAD_GPIO1_IO00__I2C1_SCL 0x0014 0x035C 0x07A8 0x0 0x1
18#define MX6SX_PAD_GPIO1_IO00__USDHC1_VSELECT 0x0014 0x035C 0x0000 0x1 0x0
19#define MX6SX_PAD_GPIO1_IO00__SPDIF_LOCK 0x0014 0x035C 0x0000 0x2 0x0
20#define MX6SX_PAD_GPIO1_IO00__CCM_WAIT 0x0014 0x035C 0x0000 0x3 0x0
21#define MX6SX_PAD_GPIO1_IO00__WDOG1_WDOG_ANY 0x0014 0x035C 0x0000 0x4 0x0
22#define MX6SX_PAD_GPIO1_IO00__GPIO1_IO_0 0x0014 0x035C 0x0000 0x5 0x0
23#define MX6SX_PAD_GPIO1_IO00__SNVS_HP_WRAPPER_VIO_5 0x0014 0x035C 0x0000 0x6 0x0
24#define MX6SX_PAD_GPIO1_IO00__PHY_DTB_1 0x0014 0x035C 0x0000 0x7 0x0
25#define MX6SX_PAD_GPIO1_IO01__I2C1_SDA 0x0018 0x0360 0x07AC 0x0 0x1
26#define MX6SX_PAD_GPIO1_IO01__USDHC1_RESET_B 0x0018 0x0360 0x0000 0x1 0x0
27#define MX6SX_PAD_GPIO1_IO01__SPDIF_SR_CLK 0x0018 0x0360 0x0000 0x2 0x0
28#define MX6SX_PAD_GPIO1_IO01__CCM_STOP 0x0018 0x0360 0x0000 0x3 0x0
29#define MX6SX_PAD_GPIO1_IO01__WDOG3_WDOG_B 0x0018 0x0360 0x0000 0x4 0x0
30#define MX6SX_PAD_GPIO1_IO01__GPIO1_IO_1 0x0018 0x0360 0x0000 0x5 0x0
31#define MX6SX_PAD_GPIO1_IO01__SNVS_HP_WRAPPER_VIO_5_CTL 0x0018 0x0360 0x0000 0x6 0x0
32#define MX6SX_PAD_GPIO1_IO01__PHY_DTB_0 0x0018 0x0360 0x0000 0x7 0x0
33#define MX6SX_PAD_GPIO1_IO02__I2C2_SCL 0x001C 0x0364 0x07B0 0x0 0x1
34#define MX6SX_PAD_GPIO1_IO02__USDHC1_CD_B 0x001C 0x0364 0x0864 0x1 0x1
35#define MX6SX_PAD_GPIO1_IO02__CSI2_MCLK 0x001C 0x0364 0x0000 0x2 0x0
36#define MX6SX_PAD_GPIO1_IO02__CCM_DI0_EXT_CLK 0x001C 0x0364 0x0000 0x3 0x0
37#define MX6SX_PAD_GPIO1_IO02__WDOG1_WDOG_B 0x001C 0x0364 0x0000 0x4 0x0
38#define MX6SX_PAD_GPIO1_IO02__GPIO1_IO_2 0x001C 0x0364 0x0000 0x5 0x0
39#define MX6SX_PAD_GPIO1_IO02__CCM_REF_EN_B 0x001C 0x0364 0x0000 0x6 0x0
40#define MX6SX_PAD_GPIO1_IO02__PHY_TDI 0x001C 0x0364 0x0000 0x7 0x0
41#define MX6SX_PAD_GPIO1_IO03__I2C2_SDA 0x0020 0x0368 0x07B4 0x0 0x1
42#define MX6SX_PAD_GPIO1_IO03__USDHC1_WP 0x0020 0x0368 0x0868 0x1 0x1
43#define MX6SX_PAD_GPIO1_IO03__ENET1_REF_CLK_25M 0x0020 0x0368 0x0000 0x2 0x0
44#define MX6SX_PAD_GPIO1_IO03__CCM_DI1_EXT_CLK 0x0020 0x0368 0x0000 0x3 0x0
45#define MX6SX_PAD_GPIO1_IO03__WDOG2_WDOG_B 0x0020 0x0368 0x0000 0x4 0x0
46#define MX6SX_PAD_GPIO1_IO03__GPIO1_IO_3 0x0020 0x0368 0x0000 0x5 0x0
47#define MX6SX_PAD_GPIO1_IO03__CCM_PLL3_BYP 0x0020 0x0368 0x0000 0x6 0x0
48#define MX6SX_PAD_GPIO1_IO03__PHY_TCK 0x0020 0x0368 0x0000 0x7 0x0
49#define MX6SX_PAD_GPIO1_IO04__UART1_RX 0x0024 0x036C 0x0830 0x0 0x0
50#define MX6SX_PAD_GPIO1_IO04__UART1_TX 0x0024 0x036C 0x0000 0x0 0x0
51#define MX6SX_PAD_GPIO1_IO04__USDHC2_RESET_B 0x0024 0x036C 0x0000 0x1 0x0
52#define MX6SX_PAD_GPIO1_IO04__ENET1_MDC 0x0024 0x036C 0x0000 0x2 0x0
53#define MX6SX_PAD_GPIO1_IO04__OSC32K_32K_OUT 0x0024 0x036C 0x0000 0x3 0x0
54#define MX6SX_PAD_GPIO1_IO04__ENET2_REF_CLK2 0x0024 0x036C 0x076C 0x4 0x0
55#define MX6SX_PAD_GPIO1_IO04__GPIO1_IO_4 0x0024 0x036C 0x0000 0x5 0x0
56#define MX6SX_PAD_GPIO1_IO04__CCM_PLL2_BYP 0x0024 0x036C 0x0000 0x6 0x0
57#define MX6SX_PAD_GPIO1_IO04__PHY_TMS 0x0024 0x036C 0x0000 0x7 0x0
58#define MX6SX_PAD_GPIO1_IO05__UART1_RX 0x0028 0x0370 0x0830 0x0 0x1
59#define MX6SX_PAD_GPIO1_IO05__UART1_TX 0x0028 0x0370 0x0000 0x0 0x0
60#define MX6SX_PAD_GPIO1_IO05__USDHC2_VSELECT 0x0028 0x0370 0x0000 0x1 0x0
61#define MX6SX_PAD_GPIO1_IO05__ENET1_MDIO 0x0028 0x0370 0x0764 0x2 0x0
62#define MX6SX_PAD_GPIO1_IO05__ASRC_ASRC_EXT_CLK 0x0028 0x0370 0x0000 0x3 0x0
63#define MX6SX_PAD_GPIO1_IO05__ENET1_REF_CLK1 0x0028 0x0370 0x0760 0x4 0x0
64#define MX6SX_PAD_GPIO1_IO05__GPIO1_IO_5 0x0028 0x0370 0x0000 0x5 0x0
65#define MX6SX_PAD_GPIO1_IO05__SRC_TESTER_ACK 0x0028 0x0370 0x0000 0x6 0x0
66#define MX6SX_PAD_GPIO1_IO05__PHY_TDO 0x0028 0x0370 0x0000 0x7 0x0
67#define MX6SX_PAD_GPIO1_IO06__UART2_RX 0x002C 0x0374 0x0838 0x0 0x0
68#define MX6SX_PAD_GPIO1_IO06__UART2_TX 0x002C 0x0374 0x0000 0x0 0x0
69#define MX6SX_PAD_GPIO1_IO06__USDHC2_CD_B 0x002C 0x0374 0x086C 0x1 0x1
70#define MX6SX_PAD_GPIO1_IO06__ENET2_MDC 0x002C 0x0374 0x0000 0x2 0x0
71#define MX6SX_PAD_GPIO1_IO06__CSI1_MCLK 0x002C 0x0374 0x0000 0x3 0x0
72#define MX6SX_PAD_GPIO1_IO06__UART1_RTS_B 0x002C 0x0374 0x082C 0x4 0x0
73#define MX6SX_PAD_GPIO1_IO06__GPIO1_IO_6 0x002C 0x0374 0x0000 0x5 0x0
74#define MX6SX_PAD_GPIO1_IO06__SRC_ANY_PU_RESET 0x002C 0x0374 0x0000 0x6 0x0
75#define MX6SX_PAD_GPIO1_IO06__OCOTP_CTRL_WRAPPER_FUSE_LATCHED 0x002C 0x0374 0x0000 0x7 0x0
76#define MX6SX_PAD_GPIO1_IO07__UART2_RX 0x0030 0x0378 0x0838 0x0 0x1
77#define MX6SX_PAD_GPIO1_IO07__UART2_TX 0x0030 0x0378 0x0000 0x0 0x0
78#define MX6SX_PAD_GPIO1_IO07__USDHC2_WP 0x0030 0x0378 0x0870 0x1 0x1
79#define MX6SX_PAD_GPIO1_IO07__ENET2_MDIO 0x0030 0x0378 0x0770 0x2 0x0
80#define MX6SX_PAD_GPIO1_IO07__AUDMUX_MCLK 0x0030 0x0378 0x0000 0x3 0x0
81#define MX6SX_PAD_GPIO1_IO07__UART1_CTS_B 0x0030 0x0378 0x082C 0x4 0x1
82#define MX6SX_PAD_GPIO1_IO07__GPIO1_IO_7 0x0030 0x0378 0x0000 0x5 0x0
83#define MX6SX_PAD_GPIO1_IO07__SRC_EARLY_RESET 0x0030 0x0378 0x0000 0x6 0x0
84#define MX6SX_PAD_GPIO1_IO07__DCIC2_OUT 0x0030 0x0378 0x0000 0x7 0x0
85#define MX6SX_PAD_GPIO1_IO07__VDEC_DEBUG_44 0x0030 0x0378 0x0000 0x8 0x0
86#define MX6SX_PAD_GPIO1_IO08__USB_OTG1_OC 0x0034 0x037C 0x0860 0x0 0x0
87#define MX6SX_PAD_GPIO1_IO08__WDOG1_WDOG_B 0x0034 0x037C 0x0000 0x1 0x0
88#define MX6SX_PAD_GPIO1_IO08__SDMA_EXT_EVENT_0 0x0034 0x037C 0x081C 0x2 0x0
89#define MX6SX_PAD_GPIO1_IO08__CCM_PMIC_RDY 0x0034 0x037C 0x069C 0x3 0x1
90#define MX6SX_PAD_GPIO1_IO08__UART2_RTS_B 0x0034 0x037C 0x0834 0x4 0x0
91#define MX6SX_PAD_GPIO1_IO08__GPIO1_IO_8 0x0034 0x037C 0x0000 0x5 0x0
92#define MX6SX_PAD_GPIO1_IO08__SRC_SYSTEM_RESET 0x0034 0x037C 0x0000 0x6 0x0
93#define MX6SX_PAD_GPIO1_IO08__DCIC1_OUT 0x0034 0x037C 0x0000 0x7 0x0
94#define MX6SX_PAD_GPIO1_IO08__VDEC_DEBUG_43 0x0034 0x037C 0x0000 0x8 0x0
95#define MX6SX_PAD_GPIO1_IO09__USB_OTG1_PWR 0x0038 0x0380 0x0000 0x0 0x0
96#define MX6SX_PAD_GPIO1_IO09__WDOG2_WDOG_B 0x0038 0x0380 0x0000 0x1 0x0
97#define MX6SX_PAD_GPIO1_IO09__SDMA_EXT_EVENT_1 0x0038 0x0380 0x0820 0x2 0x0
98#define MX6SX_PAD_GPIO1_IO09__CCM_OUT0 0x0038 0x0380 0x0000 0x3 0x0
99#define MX6SX_PAD_GPIO1_IO09__UART2_CTS_B 0x0038 0x0380 0x0834 0x4 0x1
100#define MX6SX_PAD_GPIO1_IO09__GPIO1_IO_9 0x0038 0x0380 0x0000 0x5 0x0
101#define MX6SX_PAD_GPIO1_IO09__SRC_INT_BOOT 0x0038 0x0380 0x0000 0x6 0x0
102#define MX6SX_PAD_GPIO1_IO09__OBSERVE_MUX_OUT_4 0x0038 0x0380 0x0000 0x7 0x0
103#define MX6SX_PAD_GPIO1_IO09__VDEC_DEBUG_42 0x0038 0x0380 0x0000 0x8 0x0
104#define MX6SX_PAD_GPIO1_IO10__ANATOP_OTG1_ID 0x003C 0x0384 0x0624 0x0 0x0
105#define MX6SX_PAD_GPIO1_IO10__SPDIF_EXT_CLK 0x003C 0x0384 0x0828 0x1 0x0
106#define MX6SX_PAD_GPIO1_IO10__PWM1_OUT 0x003C 0x0384 0x0000 0x2 0x0
107#define MX6SX_PAD_GPIO1_IO10__CCM_OUT1 0x003C 0x0384 0x0000 0x3 0x0
108#define MX6SX_PAD_GPIO1_IO10__CSI1_FIELD 0x003C 0x0384 0x070C 0x4 0x1
109#define MX6SX_PAD_GPIO1_IO10__GPIO1_IO_10 0x003C 0x0384 0x0000 0x5 0x0
110#define MX6SX_PAD_GPIO1_IO10__CSU_CSU_INT_DEB 0x003C 0x0384 0x0000 0x6 0x0
111#define MX6SX_PAD_GPIO1_IO10__OBSERVE_MUX_OUT_3 0x003C 0x0384 0x0000 0x7 0x0
112#define MX6SX_PAD_GPIO1_IO10__VDEC_DEBUG_41 0x003C 0x0384 0x0000 0x8 0x0
113#define MX6SX_PAD_GPIO1_IO11__USB_OTG2_OC 0x0040 0x0388 0x085C 0x0 0x0
114#define MX6SX_PAD_GPIO1_IO11__SPDIF_IN 0x0040 0x0388 0x0824 0x1 0x2
115#define MX6SX_PAD_GPIO1_IO11__PWM2_OUT 0x0040 0x0388 0x0000 0x2 0x0
116#define MX6SX_PAD_GPIO1_IO11__CCM_CLKO1 0x0040 0x0388 0x0000 0x3 0x0
117#define MX6SX_PAD_GPIO1_IO11__MLB_DATA 0x0040 0x0388 0x07EC 0x4 0x0
118#define MX6SX_PAD_GPIO1_IO11__GPIO1_IO_11 0x0040 0x0388 0x0000 0x5 0x0
119#define MX6SX_PAD_GPIO1_IO11__CSU_CSU_ALARM_AUT_0 0x0040 0x0388 0x0000 0x6 0x0
120#define MX6SX_PAD_GPIO1_IO11__OBSERVE_MUX_OUT_2 0x0040 0x0388 0x0000 0x7 0x0
121#define MX6SX_PAD_GPIO1_IO11__VDEC_DEBUG_40 0x0040 0x0388 0x0000 0x8 0x0
122#define MX6SX_PAD_GPIO1_IO12__USB_OTG2_PWR 0x0044 0x038C 0x0000 0x0 0x0
123#define MX6SX_PAD_GPIO1_IO12__SPDIF_OUT 0x0044 0x038C 0x0000 0x1 0x0
124#define MX6SX_PAD_GPIO1_IO12__PWM3_OUT 0x0044 0x038C 0x0000 0x2 0x0
125#define MX6SX_PAD_GPIO1_IO12__CCM_CLKO2 0x0044 0x038C 0x0000 0x3 0x0
126#define MX6SX_PAD_GPIO1_IO12__MLB_CLK 0x0044 0x038C 0x07E8 0x4 0x0
127#define MX6SX_PAD_GPIO1_IO12__GPIO1_IO_12 0x0044 0x038C 0x0000 0x5 0x0
128#define MX6SX_PAD_GPIO1_IO12__CSU_CSU_ALARM_AUT_1 0x0044 0x038C 0x0000 0x6 0x0
129#define MX6SX_PAD_GPIO1_IO12__OBSERVE_MUX_OUT_1 0x0044 0x038C 0x0000 0x7 0x0
130#define MX6SX_PAD_GPIO1_IO12__VDEC_DEBUG_39 0x0044 0x038C 0x0000 0x8 0x0
131#define MX6SX_PAD_GPIO1_IO13__WDOG1_WDOG_ANY 0x0048 0x0390 0x0000 0x0 0x0
132#define MX6SX_PAD_GPIO1_IO13__ANATOP_OTG2_ID 0x0048 0x0390 0x0628 0x1 0x0
133#define MX6SX_PAD_GPIO1_IO13__PWM4_OUT 0x0048 0x0390 0x0000 0x2 0x0
134#define MX6SX_PAD_GPIO1_IO13__CCM_OUT2 0x0048 0x0390 0x0000 0x3 0x0
135#define MX6SX_PAD_GPIO1_IO13__MLB_SIG 0x0048 0x0390 0x07F0 0x4 0x0
136#define MX6SX_PAD_GPIO1_IO13__GPIO1_IO_13 0x0048 0x0390 0x0000 0x5 0x0
137#define MX6SX_PAD_GPIO1_IO13__CSU_CSU_ALARM_AUT_2 0x0048 0x0390 0x0000 0x6 0x0
138#define MX6SX_PAD_GPIO1_IO13__OBSERVE_MUX_OUT_0 0x0048 0x0390 0x0000 0x7 0x0
139#define MX6SX_PAD_GPIO1_IO13__VDEC_DEBUG_38 0x0048 0x0390 0x0000 0x8 0x0
140#define MX6SX_PAD_CSI_DATA00__CSI1_DATA_2 0x004C 0x0394 0x06A8 0x0 0x0
141#define MX6SX_PAD_CSI_DATA00__ESAI_TX_CLK 0x004C 0x0394 0x078C 0x1 0x1
142#define MX6SX_PAD_CSI_DATA00__AUDMUX_AUD6_TXC 0x004C 0x0394 0x0684 0x2 0x1
143#define MX6SX_PAD_CSI_DATA00__I2C1_SCL 0x004C 0x0394 0x07A8 0x3 0x0
144#define MX6SX_PAD_CSI_DATA00__UART6_RI_B 0x004C 0x0394 0x0000 0x4 0x0
145#define MX6SX_PAD_CSI_DATA00__GPIO1_IO_14 0x004C 0x0394 0x0000 0x5 0x0
146#define MX6SX_PAD_CSI_DATA00__WEIM_DATA_23 0x004C 0x0394 0x0000 0x6 0x0
147#define MX6SX_PAD_CSI_DATA00__SAI1_TX_BCLK 0x004C 0x0394 0x0800 0x7 0x0
148#define MX6SX_PAD_CSI_DATA00__VADC_DATA_4 0x004C 0x0394 0x0000 0x8 0x0
149#define MX6SX_PAD_CSI_DATA00__MMDC_DEBUG_37 0x004C 0x0394 0x0000 0x9 0x0
150#define MX6SX_PAD_CSI_DATA01__CSI1_DATA_3 0x0050 0x0398 0x06AC 0x0 0x0
151#define MX6SX_PAD_CSI_DATA01__ESAI_TX_FS 0x0050 0x0398 0x077C 0x1 0x1
152#define MX6SX_PAD_CSI_DATA01__AUDMUX_AUD6_TXFS 0x0050 0x0398 0x0688 0x2 0x1
153#define MX6SX_PAD_CSI_DATA01__I2C1_SDA 0x0050 0x0398 0x07AC 0x3 0x0
154#define MX6SX_PAD_CSI_DATA01__UART6_DSR_B 0x0050 0x0398 0x0000 0x4 0x0
155#define MX6SX_PAD_CSI_DATA01__GPIO1_IO_15 0x0050 0x0398 0x0000 0x5 0x0
156#define MX6SX_PAD_CSI_DATA01__WEIM_DATA_22 0x0050 0x0398 0x0000 0x6 0x0
157#define MX6SX_PAD_CSI_DATA01__SAI1_TX_SYNC 0x0050 0x0398 0x0804 0x7 0x0
158#define MX6SX_PAD_CSI_DATA01__VADC_DATA_5 0x0050 0x0398 0x0000 0x8 0x0
159#define MX6SX_PAD_CSI_DATA01__MMDC_DEBUG_38 0x0050 0x0398 0x0000 0x9 0x0
160#define MX6SX_PAD_CSI_DATA02__CSI1_DATA_4 0x0054 0x039C 0x06B0 0x0 0x0
161#define MX6SX_PAD_CSI_DATA02__ESAI_RX_CLK 0x0054 0x039C 0x0788 0x1 0x1
162#define MX6SX_PAD_CSI_DATA02__AUDMUX_AUD6_RXC 0x0054 0x039C 0x067C 0x2 0x1
163#define MX6SX_PAD_CSI_DATA02__KPP_COL_5 0x0054 0x039C 0x07C8 0x3 0x0
164#define MX6SX_PAD_CSI_DATA02__UART6_DTR_B 0x0054 0x039C 0x0000 0x4 0x0
165#define MX6SX_PAD_CSI_DATA02__GPIO1_IO_16 0x0054 0x039C 0x0000 0x5 0x0
166#define MX6SX_PAD_CSI_DATA02__WEIM_DATA_21 0x0054 0x039C 0x0000 0x6 0x0
167#define MX6SX_PAD_CSI_DATA02__SAI1_RX_BCLK 0x0054 0x039C 0x07F4 0x7 0x0
168#define MX6SX_PAD_CSI_DATA02__VADC_DATA_6 0x0054 0x039C 0x0000 0x8 0x0
169#define MX6SX_PAD_CSI_DATA02__MMDC_DEBUG_39 0x0054 0x039C 0x0000 0x9 0x0
170#define MX6SX_PAD_CSI_DATA03__CSI1_DATA_5 0x0058 0x03A0 0x06B4 0x0 0x0
171#define MX6SX_PAD_CSI_DATA03__ESAI_RX_FS 0x0058 0x03A0 0x0778 0x1 0x1
172#define MX6SX_PAD_CSI_DATA03__AUDMUX_AUD6_RXFS 0x0058 0x03A0 0x0680 0x2 0x1
173#define MX6SX_PAD_CSI_DATA03__KPP_ROW_5 0x0058 0x03A0 0x07D4 0x3 0x0
174#define MX6SX_PAD_CSI_DATA03__UART6_DCD_B 0x0058 0x03A0 0x0000 0x4 0x0
175#define MX6SX_PAD_CSI_DATA03__GPIO1_IO_17 0x0058 0x03A0 0x0000 0x5 0x0
176#define MX6SX_PAD_CSI_DATA03__WEIM_DATA_20 0x0058 0x03A0 0x0000 0x6 0x0
177#define MX6SX_PAD_CSI_DATA03__SAI1_RX_SYNC 0x0058 0x03A0 0x07FC 0x7 0x0
178#define MX6SX_PAD_CSI_DATA03__VADC_DATA_7 0x0058 0x03A0 0x0000 0x8 0x0
179#define MX6SX_PAD_CSI_DATA03__MMDC_DEBUG_40 0x0058 0x03A0 0x0000 0x9 0x0
180#define MX6SX_PAD_CSI_DATA04__CSI1_DATA_6 0x005C 0x03A4 0x06B8 0x0 0x0
181#define MX6SX_PAD_CSI_DATA04__ESAI_TX1 0x005C 0x03A4 0x0794 0x1 0x1
182#define MX6SX_PAD_CSI_DATA04__SPDIF_OUT 0x005C 0x03A4 0x0000 0x2 0x0
183#define MX6SX_PAD_CSI_DATA04__KPP_COL_6 0x005C 0x03A4 0x07CC 0x3 0x0
184#define MX6SX_PAD_CSI_DATA04__UART6_RX 0x005C 0x03A4 0x0858 0x4 0x0
185#define MX6SX_PAD_CSI_DATA04__UART6_TX 0x005C 0x03A4 0x0000 0x4 0x0
186#define MX6SX_PAD_CSI_DATA04__GPIO1_IO_18 0x005C 0x03A4 0x0000 0x5 0x0
187#define MX6SX_PAD_CSI_DATA04__WEIM_DATA_19 0x005C 0x03A4 0x0000 0x6 0x0
188#define MX6SX_PAD_CSI_DATA04__PWM5_OUT 0x005C 0x03A4 0x0000 0x7 0x0
189#define MX6SX_PAD_CSI_DATA04__VADC_DATA_8 0x005C 0x03A4 0x0000 0x8 0x0
190#define MX6SX_PAD_CSI_DATA04__MMDC_DEBUG_41 0x005C 0x03A4 0x0000 0x9 0x0
191#define MX6SX_PAD_CSI_DATA05__CSI1_DATA_7 0x0060 0x03A8 0x06BC 0x0 0x0
192#define MX6SX_PAD_CSI_DATA05__ESAI_TX4_RX1 0x0060 0x03A8 0x07A0 0x1 0x1
193#define MX6SX_PAD_CSI_DATA05__SPDIF_IN 0x0060 0x03A8 0x0824 0x2 0x1
194#define MX6SX_PAD_CSI_DATA05__KPP_ROW_6 0x0060 0x03A8 0x07D8 0x3 0x0
195#define MX6SX_PAD_CSI_DATA05__UART6_RX 0x0060 0x03A8 0x0858 0x4 0x1
196#define MX6SX_PAD_CSI_DATA05__UART6_TX 0x0060 0x03A8 0x0000 0x4 0x0
197#define MX6SX_PAD_CSI_DATA05__GPIO1_IO_19 0x0060 0x03A8 0x0000 0x5 0x0
198#define MX6SX_PAD_CSI_DATA05__WEIM_DATA_18 0x0060 0x03A8 0x0000 0x6 0x0
199#define MX6SX_PAD_CSI_DATA05__PWM6_OUT 0x0060 0x03A8 0x0000 0x7 0x0
200#define MX6SX_PAD_CSI_DATA05__VADC_DATA_9 0x0060 0x03A8 0x0000 0x8 0x0
201#define MX6SX_PAD_CSI_DATA05__MMDC_DEBUG_42 0x0060 0x03A8 0x0000 0x9 0x0
202#define MX6SX_PAD_CSI_DATA06__CSI1_DATA_8 0x0064 0x03AC 0x06C0 0x0 0x0
203#define MX6SX_PAD_CSI_DATA06__ESAI_TX2_RX3 0x0064 0x03AC 0x0798 0x1 0x1
204#define MX6SX_PAD_CSI_DATA06__I2C4_SCL 0x0064 0x03AC 0x07C0 0x2 0x2
205#define MX6SX_PAD_CSI_DATA06__KPP_COL_7 0x0064 0x03AC 0x07D0 0x3 0x0
206#define MX6SX_PAD_CSI_DATA06__UART6_RTS_B 0x0064 0x03AC 0x0854 0x4 0x0
207#define MX6SX_PAD_CSI_DATA06__GPIO1_IO_20 0x0064 0x03AC 0x0000 0x5 0x0
208#define MX6SX_PAD_CSI_DATA06__WEIM_DATA_17 0x0064 0x03AC 0x0000 0x6 0x0
209#define MX6SX_PAD_CSI_DATA06__DCIC2_OUT 0x0064 0x03AC 0x0000 0x7 0x0
210#define MX6SX_PAD_CSI_DATA06__VADC_DATA_10 0x0064 0x03AC 0x0000 0x8 0x0
211#define MX6SX_PAD_CSI_DATA06__MMDC_DEBUG_43 0x0064 0x03AC 0x0000 0x9 0x0
212#define MX6SX_PAD_CSI_DATA07__CSI1_DATA_9 0x0068 0x03B0 0x06C4 0x0 0x0
213#define MX6SX_PAD_CSI_DATA07__ESAI_TX3_RX2 0x0068 0x03B0 0x079C 0x1 0x1
214#define MX6SX_PAD_CSI_DATA07__I2C4_SDA 0x0068 0x03B0 0x07C4 0x2 0x2
215#define MX6SX_PAD_CSI_DATA07__KPP_ROW_7 0x0068 0x03B0 0x07DC 0x3 0x0
216#define MX6SX_PAD_CSI_DATA07__UART6_CTS_B 0x0068 0x03B0 0x0854 0x4 0x1
217#define MX6SX_PAD_CSI_DATA07__GPIO1_IO_21 0x0068 0x03B0 0x0000 0x5 0x0
218#define MX6SX_PAD_CSI_DATA07__WEIM_DATA_16 0x0068 0x03B0 0x0000 0x6 0x0
219#define MX6SX_PAD_CSI_DATA07__DCIC1_OUT 0x0068 0x03B0 0x0000 0x7 0x0
220#define MX6SX_PAD_CSI_DATA07__VADC_DATA_11 0x0068 0x03B0 0x0000 0x8 0x0
221#define MX6SX_PAD_CSI_DATA07__MMDC_DEBUG_44 0x0068 0x03B0 0x0000 0x9 0x0
222#define MX6SX_PAD_CSI_HSYNC__CSI1_HSYNC 0x006C 0x03B4 0x0700 0x0 0x0
223#define MX6SX_PAD_CSI_HSYNC__ESAI_TX0 0x006C 0x03B4 0x0790 0x1 0x1
224#define MX6SX_PAD_CSI_HSYNC__AUDMUX_AUD6_TXD 0x006C 0x03B4 0x0678 0x2 0x1
225#define MX6SX_PAD_CSI_HSYNC__UART4_RTS_B 0x006C 0x03B4 0x0844 0x3 0x2
226#define MX6SX_PAD_CSI_HSYNC__MQS_LEFT 0x006C 0x03B4 0x0000 0x4 0x0
227#define MX6SX_PAD_CSI_HSYNC__GPIO1_IO_22 0x006C 0x03B4 0x0000 0x5 0x0
228#define MX6SX_PAD_CSI_HSYNC__WEIM_DATA_25 0x006C 0x03B4 0x0000 0x6 0x0
229#define MX6SX_PAD_CSI_HSYNC__SAI1_TX_DATA_0 0x006C 0x03B4 0x0000 0x7 0x0
230#define MX6SX_PAD_CSI_HSYNC__VADC_DATA_2 0x006C 0x03B4 0x0000 0x8 0x0
231#define MX6SX_PAD_CSI_HSYNC__MMDC_DEBUG_35 0x006C 0x03B4 0x0000 0x9 0x0
232#define MX6SX_PAD_CSI_MCLK__CSI1_MCLK 0x0070 0x03B8 0x0000 0x0 0x0
233#define MX6SX_PAD_CSI_MCLK__ESAI_TX_HF_CLK 0x0070 0x03B8 0x0784 0x1 0x1
234#define MX6SX_PAD_CSI_MCLK__OSC32K_32K_OUT 0x0070 0x03B8 0x0000 0x2 0x0
235#define MX6SX_PAD_CSI_MCLK__UART4_RX 0x0070 0x03B8 0x0848 0x3 0x2
236#define MX6SX_PAD_CSI_MCLK__UART4_TX 0x0070 0x03B8 0x0000 0x3 0x0
237#define MX6SX_PAD_CSI_MCLK__ANATOP_32K_OUT 0x0070 0x03B8 0x0000 0x4 0x0
238#define MX6SX_PAD_CSI_MCLK__GPIO1_IO_23 0x0070 0x03B8 0x0000 0x5 0x0
239#define MX6SX_PAD_CSI_MCLK__WEIM_DATA_26 0x0070 0x03B8 0x0000 0x6 0x0
240#define MX6SX_PAD_CSI_MCLK__CSI1_FIELD 0x0070 0x03B8 0x070C 0x7 0x0
241#define MX6SX_PAD_CSI_MCLK__VADC_DATA_1 0x0070 0x03B8 0x0000 0x8 0x0
242#define MX6SX_PAD_CSI_MCLK__MMDC_DEBUG_34 0x0070 0x03B8 0x0000 0x9 0x0
243#define MX6SX_PAD_CSI_PIXCLK__CSI1_PIXCLK 0x0074 0x03BC 0x0704 0x0 0x0
244#define MX6SX_PAD_CSI_PIXCLK__ESAI_RX_HF_CLK 0x0074 0x03BC 0x0780 0x1 0x1
245#define MX6SX_PAD_CSI_PIXCLK__AUDMUX_MCLK 0x0074 0x03BC 0x0000 0x2 0x0
246#define MX6SX_PAD_CSI_PIXCLK__UART4_RX 0x0074 0x03BC 0x0848 0x3 0x3
247#define MX6SX_PAD_CSI_PIXCLK__UART4_TX 0x0074 0x03BC 0x0000 0x3 0x0
248#define MX6SX_PAD_CSI_PIXCLK__ANATOP_24M_OUT 0x0074 0x03BC 0x0000 0x4 0x0
249#define MX6SX_PAD_CSI_PIXCLK__GPIO1_IO_24 0x0074 0x03BC 0x0000 0x5 0x0
250#define MX6SX_PAD_CSI_PIXCLK__WEIM_DATA_27 0x0074 0x03BC 0x0000 0x6 0x0
251#define MX6SX_PAD_CSI_PIXCLK__ESAI_TX_HF_CLK 0x0074 0x03BC 0x0784 0x7 0x2
252#define MX6SX_PAD_CSI_PIXCLK__VADC_CLK 0x0074 0x03BC 0x0000 0x8 0x0
253#define MX6SX_PAD_CSI_PIXCLK__MMDC_DEBUG_33 0x0074 0x03BC 0x0000 0x9 0x0
254#define MX6SX_PAD_CSI_VSYNC__CSI1_VSYNC 0x0078 0x03C0 0x0708 0x0 0x0
255#define MX6SX_PAD_CSI_VSYNC__ESAI_TX5_RX0 0x0078 0x03C0 0x07A4 0x1 0x1
256#define MX6SX_PAD_CSI_VSYNC__AUDMUX_AUD6_RXD 0x0078 0x03C0 0x0674 0x2 0x1
257#define MX6SX_PAD_CSI_VSYNC__UART4_CTS_B 0x0078 0x03C0 0x0844 0x3 0x3
258#define MX6SX_PAD_CSI_VSYNC__MQS_RIGHT 0x0078 0x03C0 0x0000 0x4 0x0
259#define MX6SX_PAD_CSI_VSYNC__GPIO1_IO_25 0x0078 0x03C0 0x0000 0x5 0x0
260#define MX6SX_PAD_CSI_VSYNC__WEIM_DATA_24 0x0078 0x03C0 0x0000 0x6 0x0
261#define MX6SX_PAD_CSI_VSYNC__SAI1_RX_DATA_0 0x0078 0x03C0 0x07F8 0x7 0x0
262#define MX6SX_PAD_CSI_VSYNC__VADC_DATA_3 0x0078 0x03C0 0x0000 0x8 0x0
263#define MX6SX_PAD_CSI_VSYNC__MMDC_DEBUG_36 0x0078 0x03C0 0x0000 0x9 0x0
264#define MX6SX_PAD_ENET1_COL__ENET1_COL 0x007C 0x03C4 0x0000 0x0 0x0
265#define MX6SX_PAD_ENET1_COL__ENET2_MDC 0x007C 0x03C4 0x0000 0x1 0x0
266#define MX6SX_PAD_ENET1_COL__AUDMUX_AUD4_TXC 0x007C 0x03C4 0x0654 0x2 0x1
267#define MX6SX_PAD_ENET1_COL__UART1_RI_B 0x007C 0x03C4 0x0000 0x3 0x0
268#define MX6SX_PAD_ENET1_COL__SPDIF_EXT_CLK 0x007C 0x03C4 0x0828 0x4 0x1
269#define MX6SX_PAD_ENET1_COL__GPIO2_IO_0 0x007C 0x03C4 0x0000 0x5 0x0
270#define MX6SX_PAD_ENET1_COL__CSI2_DATA_23 0x007C 0x03C4 0x0000 0x6 0x0
271#define MX6SX_PAD_ENET1_COL__LCDIF2_DATA_16 0x007C 0x03C4 0x0000 0x7 0x0
272#define MX6SX_PAD_ENET1_COL__VDEC_DEBUG_37 0x007C 0x03C4 0x0000 0x8 0x0
273#define MX6SX_PAD_ENET1_COL__PCIE_CTRL_DEBUG_31 0x007C 0x03C4 0x0000 0x9 0x0
274#define MX6SX_PAD_ENET1_CRS__ENET1_CRS 0x0080 0x03C8 0x0000 0x0 0x0
275#define MX6SX_PAD_ENET1_CRS__ENET2_MDIO 0x0080 0x03C8 0x0770 0x1 0x1
276#define MX6SX_PAD_ENET1_CRS__AUDMUX_AUD4_TXD 0x0080 0x03C8 0x0648 0x2 0x1
277#define MX6SX_PAD_ENET1_CRS__UART1_DCD_B 0x0080 0x03C8 0x0000 0x3 0x0
278#define MX6SX_PAD_ENET1_CRS__SPDIF_LOCK 0x0080 0x03C8 0x0000 0x4 0x0
279#define MX6SX_PAD_ENET1_CRS__GPIO2_IO_1 0x0080 0x03C8 0x0000 0x5 0x0
280#define MX6SX_PAD_ENET1_CRS__CSI2_DATA_22 0x0080 0x03C8 0x0000 0x6 0x0
281#define MX6SX_PAD_ENET1_CRS__LCDIF2_DATA_17 0x0080 0x03C8 0x0000 0x7 0x0
282#define MX6SX_PAD_ENET1_CRS__VDEC_DEBUG_36 0x0080 0x03C8 0x0000 0x8 0x0
283#define MX6SX_PAD_ENET1_CRS__PCIE_CTRL_DEBUG_30 0x0080 0x03C8 0x0000 0x9 0x0
284#define MX6SX_PAD_ENET1_MDC__ENET1_MDC 0x0084 0x03CC 0x0000 0x0 0x0
285#define MX6SX_PAD_ENET1_MDC__ENET2_MDC 0x0084 0x03CC 0x0000 0x1 0x0
286#define MX6SX_PAD_ENET1_MDC__AUDMUX_AUD3_RXFS 0x0084 0x03CC 0x0638 0x2 0x1
287#define MX6SX_PAD_ENET1_MDC__ANATOP_24M_OUT 0x0084 0x03CC 0x0000 0x3 0x0
288#define MX6SX_PAD_ENET1_MDC__EPIT2_OUT 0x0084 0x03CC 0x0000 0x4 0x0
289#define MX6SX_PAD_ENET1_MDC__GPIO2_IO_2 0x0084 0x03CC 0x0000 0x5 0x0
290#define MX6SX_PAD_ENET1_MDC__USB_OTG1_PWR 0x0084 0x03CC 0x0000 0x6 0x0
291#define MX6SX_PAD_ENET1_MDC__PWM7_OUT 0x0084 0x03CC 0x0000 0x7 0x0
292#define MX6SX_PAD_ENET1_MDIO__ENET1_MDIO 0x0088 0x03D0 0x0764 0x0 0x1
293#define MX6SX_PAD_ENET1_MDIO__ENET2_MDIO 0x0088 0x03D0 0x0770 0x1 0x2
294#define MX6SX_PAD_ENET1_MDIO__AUDMUX_MCLK 0x0088 0x03D0 0x0000 0x2 0x0
295#define MX6SX_PAD_ENET1_MDIO__OSC32K_32K_OUT 0x0088 0x03D0 0x0000 0x3 0x0
296#define MX6SX_PAD_ENET1_MDIO__EPIT1_OUT 0x0088 0x03D0 0x0000 0x4 0x0
297#define MX6SX_PAD_ENET1_MDIO__GPIO2_IO_3 0x0088 0x03D0 0x0000 0x5 0x0
298#define MX6SX_PAD_ENET1_MDIO__USB_OTG1_OC 0x0088 0x03D0 0x0860 0x6 0x1
299#define MX6SX_PAD_ENET1_MDIO__PWM8_OUT 0x0088 0x03D0 0x0000 0x7 0x0
300#define MX6SX_PAD_ENET1_RX_CLK__ENET1_RX_CLK 0x008C 0x03D4 0x0768 0x0 0x0
301#define MX6SX_PAD_ENET1_RX_CLK__ENET1_REF_CLK_25M 0x008C 0x03D4 0x0000 0x1 0x0
302#define MX6SX_PAD_ENET1_RX_CLK__AUDMUX_AUD4_TXFS 0x008C 0x03D4 0x0658 0x2 0x1
303#define MX6SX_PAD_ENET1_RX_CLK__UART1_DSR_B 0x008C 0x03D4 0x0000 0x3 0x0
304#define MX6SX_PAD_ENET1_RX_CLK__SPDIF_OUT 0x008C 0x03D4 0x0000 0x4 0x0
305#define MX6SX_PAD_ENET1_RX_CLK__GPIO2_IO_4 0x008C 0x03D4 0x0000 0x5 0x0
306#define MX6SX_PAD_ENET1_RX_CLK__CSI2_DATA_21 0x008C 0x03D4 0x0000 0x6 0x0
307#define MX6SX_PAD_ENET1_RX_CLK__LCDIF2_DATA_18 0x008C 0x03D4 0x0000 0x7 0x0
308#define MX6SX_PAD_ENET1_RX_CLK__VDEC_DEBUG_35 0x008C 0x03D4 0x0000 0x8 0x0
309#define MX6SX_PAD_ENET1_RX_CLK__PCIE_CTRL_DEBUG_29 0x008C 0x03D4 0x0000 0x9 0x0
310#define MX6SX_PAD_ENET1_TX_CLK__ENET1_TX_CLK 0x0090 0x03D8 0x0000 0x0 0x0
311#define MX6SX_PAD_ENET1_TX_CLK__ENET1_REF_CLK1 0x0090 0x03D8 0x0760 0x1 0x1
312#define MX6SX_PAD_ENET1_TX_CLK__AUDMUX_AUD4_RXD 0x0090 0x03D8 0x0644 0x2 0x1
313#define MX6SX_PAD_ENET1_TX_CLK__UART1_DTR_B 0x0090 0x03D8 0x0000 0x3 0x0
314#define MX6SX_PAD_ENET1_TX_CLK__SPDIF_SR_CLK 0x0090 0x03D8 0x0000 0x4 0x0
315#define MX6SX_PAD_ENET1_TX_CLK__GPIO2_IO_5 0x0090 0x03D8 0x0000 0x5 0x0
316#define MX6SX_PAD_ENET1_TX_CLK__CSI2_DATA_20 0x0090 0x03D8 0x0000 0x6 0x0
317#define MX6SX_PAD_ENET1_TX_CLK__LCDIF2_DATA_19 0x0090 0x03D8 0x0000 0x7 0x0
318#define MX6SX_PAD_ENET1_TX_CLK__VDEC_DEBUG_34 0x0090 0x03D8 0x0000 0x8 0x0
319#define MX6SX_PAD_ENET1_TX_CLK__PCIE_CTRL_DEBUG_28 0x0090 0x03D8 0x0000 0x9 0x0
320#define MX6SX_PAD_ENET2_COL__ENET2_COL 0x0094 0x03DC 0x0000 0x0 0x0
321#define MX6SX_PAD_ENET2_COL__ENET1_MDC 0x0094 0x03DC 0x0000 0x1 0x0
322#define MX6SX_PAD_ENET2_COL__AUDMUX_AUD4_RXC 0x0094 0x03DC 0x064C 0x2 0x1
323#define MX6SX_PAD_ENET2_COL__UART1_RX 0x0094 0x03DC 0x0830 0x3 0x2
324#define MX6SX_PAD_ENET2_COL__UART1_TX 0x0094 0x03DC 0x0000 0x3 0x0
325#define MX6SX_PAD_ENET2_COL__SPDIF_IN 0x0094 0x03DC 0x0824 0x4 0x3
326#define MX6SX_PAD_ENET2_COL__GPIO2_IO_6 0x0094 0x03DC 0x0000 0x5 0x0
327#define MX6SX_PAD_ENET2_COL__ANATOP_OTG1_ID 0x0094 0x03DC 0x0624 0x6 0x1
328#define MX6SX_PAD_ENET2_COL__LCDIF2_DATA_20 0x0094 0x03DC 0x0000 0x7 0x0
329#define MX6SX_PAD_ENET2_COL__VDEC_DEBUG_33 0x0094 0x03DC 0x0000 0x8 0x0
330#define MX6SX_PAD_ENET2_COL__PCIE_CTRL_DEBUG_27 0x0094 0x03DC 0x0000 0x9 0x0
331#define MX6SX_PAD_ENET2_CRS__ENET2_CRS 0x0098 0x03E0 0x0000 0x0 0x0
332#define MX6SX_PAD_ENET2_CRS__ENET1_MDIO 0x0098 0x03E0 0x0764 0x1 0x2
333#define MX6SX_PAD_ENET2_CRS__AUDMUX_AUD4_RXFS 0x0098 0x03E0 0x0650 0x2 0x1
334#define MX6SX_PAD_ENET2_CRS__UART1_RX 0x0098 0x03E0 0x0830 0x3 0x3
335#define MX6SX_PAD_ENET2_CRS__UART1_TX 0x0098 0x03E0 0x0000 0x3 0x0
336#define MX6SX_PAD_ENET2_CRS__MLB_SIG 0x0098 0x03E0 0x07F0 0x4 0x1
337#define MX6SX_PAD_ENET2_CRS__GPIO2_IO_7 0x0098 0x03E0 0x0000 0x5 0x0
338#define MX6SX_PAD_ENET2_CRS__ANATOP_OTG2_ID 0x0098 0x03E0 0x0628 0x6 0x1
339#define MX6SX_PAD_ENET2_CRS__LCDIF2_DATA_21 0x0098 0x03E0 0x0000 0x7 0x0
340#define MX6SX_PAD_ENET2_CRS__VDEC_DEBUG_32 0x0098 0x03E0 0x0000 0x8 0x0
341#define MX6SX_PAD_ENET2_CRS__PCIE_CTRL_DEBUG_26 0x0098 0x03E0 0x0000 0x9 0x0
342#define MX6SX_PAD_ENET2_RX_CLK__ENET2_RX_CLK 0x009C 0x03E4 0x0774 0x0 0x0
343#define MX6SX_PAD_ENET2_RX_CLK__ENET2_REF_CLK_25M 0x009C 0x03E4 0x0000 0x1 0x0
344#define MX6SX_PAD_ENET2_RX_CLK__I2C3_SCL 0x009C 0x03E4 0x07B8 0x2 0x1
345#define MX6SX_PAD_ENET2_RX_CLK__UART1_RTS_B 0x009C 0x03E4 0x082C 0x3 0x2
346#define MX6SX_PAD_ENET2_RX_CLK__MLB_DATA 0x009C 0x03E4 0x07EC 0x4 0x1
347#define MX6SX_PAD_ENET2_RX_CLK__GPIO2_IO_8 0x009C 0x03E4 0x0000 0x5 0x0
348#define MX6SX_PAD_ENET2_RX_CLK__USB_OTG2_OC 0x009C 0x03E4 0x085C 0x6 0x1
349#define MX6SX_PAD_ENET2_RX_CLK__LCDIF2_DATA_22 0x009C 0x03E4 0x0000 0x7 0x0
350#define MX6SX_PAD_ENET2_RX_CLK__VDEC_DEBUG_31 0x009C 0x03E4 0x0000 0x8 0x0
351#define MX6SX_PAD_ENET2_RX_CLK__PCIE_CTRL_DEBUG_25 0x009C 0x03E4 0x0000 0x9 0x0
352#define MX6SX_PAD_ENET2_TX_CLK__ENET2_TX_CLK 0x00A0 0x03E8 0x0000 0x0 0x0
353#define MX6SX_PAD_ENET2_TX_CLK__ENET2_REF_CLK2 0x00A0 0x03E8 0x076C 0x1 0x1
354#define MX6SX_PAD_ENET2_TX_CLK__I2C3_SDA 0x00A0 0x03E8 0x07BC 0x2 0x1
355#define MX6SX_PAD_ENET2_TX_CLK__UART1_CTS_B 0x00A0 0x03E8 0x082C 0x3 0x3
356#define MX6SX_PAD_ENET2_TX_CLK__MLB_CLK 0x00A0 0x03E8 0x07E8 0x4 0x1
357#define MX6SX_PAD_ENET2_TX_CLK__GPIO2_IO_9 0x00A0 0x03E8 0x0000 0x5 0x0
358#define MX6SX_PAD_ENET2_TX_CLK__USB_OTG2_PWR 0x00A0 0x03E8 0x0000 0x6 0x0
359#define MX6SX_PAD_ENET2_TX_CLK__LCDIF2_DATA_23 0x00A0 0x03E8 0x0000 0x7 0x0
360#define MX6SX_PAD_ENET2_TX_CLK__VDEC_DEBUG_30 0x00A0 0x03E8 0x0000 0x8 0x0
361#define MX6SX_PAD_ENET2_TX_CLK__PCIE_CTRL_DEBUG_24 0x00A0 0x03E8 0x0000 0x9 0x0
362#define MX6SX_PAD_KEY_COL0__KPP_COL_0 0x00A4 0x03EC 0x0000 0x0 0x0
363#define MX6SX_PAD_KEY_COL0__USDHC3_CD_B 0x00A4 0x03EC 0x0000 0x1 0x0
364#define MX6SX_PAD_KEY_COL0__UART6_RTS_B 0x00A4 0x03EC 0x0854 0x2 0x2
365#define MX6SX_PAD_KEY_COL0__ECSPI1_SCLK 0x00A4 0x03EC 0x0710 0x3 0x0
366#define MX6SX_PAD_KEY_COL0__AUDMUX_AUD5_TXC 0x00A4 0x03EC 0x066C 0x4 0x0
367#define MX6SX_PAD_KEY_COL0__GPIO2_IO_10 0x00A4 0x03EC 0x0000 0x5 0x0
368#define MX6SX_PAD_KEY_COL0__SDMA_EXT_EVENT_1 0x00A4 0x03EC 0x0820 0x6 0x1
369#define MX6SX_PAD_KEY_COL0__SAI2_TX_BCLK 0x00A4 0x03EC 0x0814 0x7 0x0
370#define MX6SX_PAD_KEY_COL0__VADC_DATA_0 0x00A4 0x03EC 0x0000 0x8 0x0
371#define MX6SX_PAD_KEY_COL1__KPP_COL_1 0x00A8 0x03F0 0x0000 0x0 0x0
372#define MX6SX_PAD_KEY_COL1__USDHC3_RESET_B 0x00A8 0x03F0 0x0000 0x1 0x0
373#define MX6SX_PAD_KEY_COL1__UART6_RX 0x00A8 0x03F0 0x0858 0x2 0x2
374#define MX6SX_PAD_KEY_COL1__UART6_TX 0x00A8 0x03F0 0x0000 0x2 0x0
375#define MX6SX_PAD_KEY_COL1__ECSPI1_MISO 0x00A8 0x03F0 0x0714 0x3 0x0
376#define MX6SX_PAD_KEY_COL1__AUDMUX_AUD5_TXFS 0x00A8 0x03F0 0x0670 0x4 0x0
377#define MX6SX_PAD_KEY_COL1__GPIO2_IO_11 0x00A8 0x03F0 0x0000 0x5 0x0
378#define MX6SX_PAD_KEY_COL1__USDHC3_RESET 0x00A8 0x03F0 0x0000 0x6 0x0
379#define MX6SX_PAD_KEY_COL1__SAI2_TX_SYNC 0x00A8 0x03F0 0x0818 0x7 0x0
380#define MX6SX_PAD_KEY_COL2__KPP_COL_2 0x00AC 0x03F4 0x0000 0x0 0x0
381#define MX6SX_PAD_KEY_COL2__USDHC4_CD_B 0x00AC 0x03F4 0x0874 0x1 0x1
382#define MX6SX_PAD_KEY_COL2__UART5_RTS_B 0x00AC 0x03F4 0x084C 0x2 0x2
383#define MX6SX_PAD_KEY_COL2__CAN1_TX 0x00AC 0x03F4 0x0000 0x3 0x0
384#define MX6SX_PAD_KEY_COL2__CANFD_TX1 0x00AC 0x03F4 0x0000 0x4 0x0
385#define MX6SX_PAD_KEY_COL2__GPIO2_IO_12 0x00AC 0x03F4 0x0000 0x5 0x0
386#define MX6SX_PAD_KEY_COL2__WEIM_DATA_30 0x00AC 0x03F4 0x0000 0x6 0x0
387#define MX6SX_PAD_KEY_COL2__ECSPI1_RDY 0x00AC 0x03F4 0x0000 0x7 0x0
388#define MX6SX_PAD_KEY_COL3__KPP_COL_3 0x00B0 0x03F8 0x0000 0x0 0x0
389#define MX6SX_PAD_KEY_COL3__USDHC4_LCTL 0x00B0 0x03F8 0x0000 0x1 0x0
390#define MX6SX_PAD_KEY_COL3__UART5_RX 0x00B0 0x03F8 0x0850 0x2 0x2
391#define MX6SX_PAD_KEY_COL3__UART5_TX 0x00B0 0x03F8 0x0000 0x2 0x0
392#define MX6SX_PAD_KEY_COL3__CAN2_TX 0x00B0 0x03F8 0x0000 0x3 0x0
393#define MX6SX_PAD_KEY_COL3__CANFD_TX2 0x00B0 0x03F8 0x0000 0x4 0x0
394#define MX6SX_PAD_KEY_COL3__GPIO2_IO_13 0x00B0 0x03F8 0x0000 0x5 0x0
395#define MX6SX_PAD_KEY_COL3__WEIM_DATA_28 0x00B0 0x03F8 0x0000 0x6 0x0
396#define MX6SX_PAD_KEY_COL3__ECSPI1_SS2 0x00B0 0x03F8 0x0000 0x7 0x0
397#define MX6SX_PAD_KEY_COL4__KPP_COL_4 0x00B4 0x03FC 0x0000 0x0 0x0
398#define MX6SX_PAD_KEY_COL4__ENET2_MDC 0x00B4 0x03FC 0x0000 0x1 0x0
399#define MX6SX_PAD_KEY_COL4__I2C3_SCL 0x00B4 0x03FC 0x07B8 0x2 0x2
400#define MX6SX_PAD_KEY_COL4__USDHC2_LCTL 0x00B4 0x03FC 0x0000 0x3 0x0
401#define MX6SX_PAD_KEY_COL4__AUDMUX_AUD5_RXC 0x00B4 0x03FC 0x0664 0x4 0x0
402#define MX6SX_PAD_KEY_COL4__GPIO2_IO_14 0x00B4 0x03FC 0x0000 0x5 0x0
403#define MX6SX_PAD_KEY_COL4__WEIM_CRE 0x00B4 0x03FC 0x0000 0x6 0x0
404#define MX6SX_PAD_KEY_COL4__SAI2_RX_BCLK 0x00B4 0x03FC 0x0808 0x7 0x0
405#define MX6SX_PAD_KEY_ROW0__KPP_ROW_0 0x00B8 0x0400 0x0000 0x0 0x0
406#define MX6SX_PAD_KEY_ROW0__USDHC3_WP 0x00B8 0x0400 0x0000 0x1 0x0
407#define MX6SX_PAD_KEY_ROW0__UART6_CTS_B 0x00B8 0x0400 0x0854 0x2 0x3
408#define MX6SX_PAD_KEY_ROW0__ECSPI1_MOSI 0x00B8 0x0400 0x0718 0x3 0x0
409#define MX6SX_PAD_KEY_ROW0__AUDMUX_AUD5_TXD 0x00B8 0x0400 0x0660 0x4 0x0
410#define MX6SX_PAD_KEY_ROW0__GPIO2_IO_15 0x00B8 0x0400 0x0000 0x5 0x0
411#define MX6SX_PAD_KEY_ROW0__SDMA_EXT_EVENT_0 0x00B8 0x0400 0x081C 0x6 0x1
412#define MX6SX_PAD_KEY_ROW0__SAI2_TX_DATA_0 0x00B8 0x0400 0x0000 0x7 0x0
413#define MX6SX_PAD_KEY_ROW0__GPU_IDLE 0x00B8 0x0400 0x0000 0x8 0x0
414#define MX6SX_PAD_KEY_ROW1__KPP_ROW_1 0x00BC 0x0404 0x0000 0x0 0x0
415#define MX6SX_PAD_KEY_ROW1__USDHC4_VSELECT 0x00BC 0x0404 0x0000 0x1 0x0
416#define MX6SX_PAD_KEY_ROW1__UART6_RX 0x00BC 0x0404 0x0858 0x2 0x3
417#define MX6SX_PAD_KEY_ROW1__UART6_TX 0x00BC 0x0404 0x0000 0x2 0x0
418#define MX6SX_PAD_KEY_ROW1__ECSPI1_SS0 0x00BC 0x0404 0x071C 0x3 0x0
419#define MX6SX_PAD_KEY_ROW1__AUDMUX_AUD5_RXD 0x00BC 0x0404 0x065C 0x4 0x0
420#define MX6SX_PAD_KEY_ROW1__GPIO2_IO_16 0x00BC 0x0404 0x0000 0x5 0x0
421#define MX6SX_PAD_KEY_ROW1__WEIM_DATA_31 0x00BC 0x0404 0x0000 0x6 0x0
422#define MX6SX_PAD_KEY_ROW1__SAI2_RX_DATA_0 0x00BC 0x0404 0x080C 0x7 0x0
423#define MX6SX_PAD_KEY_ROW1__M4_NMI 0x00BC 0x0404 0x0000 0x8 0x0
424#define MX6SX_PAD_KEY_ROW2__KPP_ROW_2 0x00C0 0x0408 0x0000 0x0 0x0
425#define MX6SX_PAD_KEY_ROW2__USDHC4_WP 0x00C0 0x0408 0x0878 0x1 0x1
426#define MX6SX_PAD_KEY_ROW2__UART5_CTS_B 0x00C0 0x0408 0x084C 0x2 0x3
427#define MX6SX_PAD_KEY_ROW2__CAN1_RX 0x00C0 0x0408 0x068C 0x3 0x1
428#define MX6SX_PAD_KEY_ROW2__CANFD_RX1 0x00C0 0x0408 0x0694 0x4 0x1
429#define MX6SX_PAD_KEY_ROW2__GPIO2_IO_17 0x00C0 0x0408 0x0000 0x5 0x0
430#define MX6SX_PAD_KEY_ROW2__WEIM_DATA_29 0x00C0 0x0408 0x0000 0x6 0x0
431#define MX6SX_PAD_KEY_ROW2__ECSPI1_SS3 0x00C0 0x0408 0x0000 0x7 0x0
432#define MX6SX_PAD_KEY_ROW3__KPP_ROW_3 0x00C4 0x040C 0x0000 0x0 0x0
433#define MX6SX_PAD_KEY_ROW3__USDHC3_LCTL 0x00C4 0x040C 0x0000 0x1 0x0
434#define MX6SX_PAD_KEY_ROW3__UART5_RX 0x00C4 0x040C 0x0850 0x2 0x3
435#define MX6SX_PAD_KEY_ROW3__UART5_TX 0x00C4 0x040C 0x0000 0x2 0x0
436#define MX6SX_PAD_KEY_ROW3__CAN2_RX 0x00C4 0x040C 0x0690 0x3 0x1
437#define MX6SX_PAD_KEY_ROW3__CANFD_RX2 0x00C4 0x040C 0x0698 0x4 0x1
438#define MX6SX_PAD_KEY_ROW3__GPIO2_IO_18 0x00C4 0x040C 0x0000 0x5 0x0
439#define MX6SX_PAD_KEY_ROW3__WEIM_DTACK_B 0x00C4 0x040C 0x0000 0x6 0x0
440#define MX6SX_PAD_KEY_ROW3__ECSPI1_SS1 0x00C4 0x040C 0x0000 0x7 0x0
441#define MX6SX_PAD_KEY_ROW4__KPP_ROW_4 0x00C8 0x0410 0x0000 0x0 0x0
442#define MX6SX_PAD_KEY_ROW4__ENET2_MDIO 0x00C8 0x0410 0x0770 0x1 0x3
443#define MX6SX_PAD_KEY_ROW4__I2C3_SDA 0x00C8 0x0410 0x07BC 0x2 0x2
444#define MX6SX_PAD_KEY_ROW4__USDHC1_LCTL 0x00C8 0x0410 0x0000 0x3 0x0
445#define MX6SX_PAD_KEY_ROW4__AUDMUX_AUD5_RXFS 0x00C8 0x0410 0x0668 0x4 0x0
446#define MX6SX_PAD_KEY_ROW4__GPIO2_IO_19 0x00C8 0x0410 0x0000 0x5 0x0
447#define MX6SX_PAD_KEY_ROW4__WEIM_ACLK_FREERUN 0x00C8 0x0410 0x0000 0x6 0x0
448#define MX6SX_PAD_KEY_ROW4__SAI2_RX_SYNC 0x00C8 0x0410 0x0810 0x7 0x0
449#define MX6SX_PAD_LCD1_CLK__LCDIF1_CLK 0x00CC 0x0414 0x0000 0x0 0x0
450#define MX6SX_PAD_LCD1_CLK__LCDIF1_WR_RWN 0x00CC 0x0414 0x0000 0x1 0x0
451#define MX6SX_PAD_LCD1_CLK__AUDMUX_AUD3_RXC 0x00CC 0x0414 0x0634 0x2 0x1
452#define MX6SX_PAD_LCD1_CLK__ENET1_1588_EVENT2_IN 0x00CC 0x0414 0x0000 0x3 0x0
453#define MX6SX_PAD_LCD1_CLK__CSI1_DATA_16 0x00CC 0x0414 0x06DC 0x4 0x0
454#define MX6SX_PAD_LCD1_CLK__GPIO3_IO_0 0x00CC 0x0414 0x0000 0x5 0x0
455#define MX6SX_PAD_LCD1_CLK__USDHC1_WP 0x00CC 0x0414 0x0868 0x6 0x0
456#define MX6SX_PAD_LCD1_CLK__SIM_M_HADDR_16 0x00CC 0x0414 0x0000 0x7 0x0
457#define MX6SX_PAD_LCD1_CLK__VADC_TEST_0 0x00CC 0x0414 0x0000 0x8 0x0
458#define MX6SX_PAD_LCD1_CLK__MMDC_DEBUG_0 0x00CC 0x0414 0x0000 0x9 0x0
459#define MX6SX_PAD_LCD1_DATA00__LCDIF1_DATA_0 0x00D0 0x0418 0x0000 0x0 0x0
460#define MX6SX_PAD_LCD1_DATA00__WEIM_CS1_B 0x00D0 0x0418 0x0000 0x1 0x0
461#define MX6SX_PAD_LCD1_DATA00__M4_TRACE_0 0x00D0 0x0418 0x0000 0x2 0x0
462#define MX6SX_PAD_LCD1_DATA00__KITTEN_TRACE_0 0x00D0 0x0418 0x0000 0x3 0x0
463#define MX6SX_PAD_LCD1_DATA00__CSI1_DATA_20 0x00D0 0x0418 0x06EC 0x4 0x0
464#define MX6SX_PAD_LCD1_DATA00__GPIO3_IO_1 0x00D0 0x0418 0x0000 0x5 0x0
465#define MX6SX_PAD_LCD1_DATA00__SRC_BT_CFG_0 0x00D0 0x0418 0x0000 0x6 0x0
466#define MX6SX_PAD_LCD1_DATA00__SIM_M_HADDR_21 0x00D0 0x0418 0x0000 0x7 0x0
467#define MX6SX_PAD_LCD1_DATA00__VADC_TEST_5 0x00D0 0x0418 0x0000 0x8 0x0
468#define MX6SX_PAD_LCD1_DATA00__MMDC_DEBUG_5 0x00D0 0x0418 0x0000 0x9 0x0
469#define MX6SX_PAD_LCD1_DATA01__LCDIF1_DATA_1 0x00D4 0x041C 0x0000 0x0 0x0
470#define MX6SX_PAD_LCD1_DATA01__WEIM_CS2_B 0x00D4 0x041C 0x0000 0x1 0x0
471#define MX6SX_PAD_LCD1_DATA01__M4_TRACE_1 0x00D4 0x041C 0x0000 0x2 0x0
472#define MX6SX_PAD_LCD1_DATA01__KITTEN_TRACE_1 0x00D4 0x041C 0x0000 0x3 0x0
473#define MX6SX_PAD_LCD1_DATA01__CSI1_DATA_21 0x00D4 0x041C 0x06F0 0x4 0x0
474#define MX6SX_PAD_LCD1_DATA01__GPIO3_IO_2 0x00D4 0x041C 0x0000 0x5 0x0
475#define MX6SX_PAD_LCD1_DATA01__SRC_BT_CFG_1 0x00D4 0x041C 0x0000 0x6 0x0
476#define MX6SX_PAD_LCD1_DATA01__SIM_M_HADDR_22 0x00D4 0x041C 0x0000 0x7 0x0
477#define MX6SX_PAD_LCD1_DATA01__VADC_TEST_6 0x00D4 0x041C 0x0000 0x8 0x0
478#define MX6SX_PAD_LCD1_DATA01__MMDC_DEBUG_6 0x00D4 0x041C 0x0000 0x9 0x0
479#define MX6SX_PAD_LCD1_DATA02__LCDIF1_DATA_2 0x00D8 0x0420 0x0000 0x0 0x0
480#define MX6SX_PAD_LCD1_DATA02__WEIM_CS3_B 0x00D8 0x0420 0x0000 0x1 0x0
481#define MX6SX_PAD_LCD1_DATA02__M4_TRACE_2 0x00D8 0x0420 0x0000 0x2 0x0
482#define MX6SX_PAD_LCD1_DATA02__KITTEN_TRACE_2 0x00D8 0x0420 0x0000 0x3 0x0
483#define MX6SX_PAD_LCD1_DATA02__CSI1_DATA_22 0x00D8 0x0420 0x06F4 0x4 0x0
484#define MX6SX_PAD_LCD1_DATA02__GPIO3_IO_3 0x00D8 0x0420 0x0000 0x5 0x0
485#define MX6SX_PAD_LCD1_DATA02__SRC_BT_CFG_2 0x00D8 0x0420 0x0000 0x6 0x0
486#define MX6SX_PAD_LCD1_DATA02__SIM_M_HADDR_23 0x00D8 0x0420 0x0000 0x7 0x0
487#define MX6SX_PAD_LCD1_DATA02__VADC_TEST_7 0x00D8 0x0420 0x0000 0x8 0x0
488#define MX6SX_PAD_LCD1_DATA02__MMDC_DEBUG_7 0x00D8 0x0420 0x0000 0x9 0x0
489#define MX6SX_PAD_LCD1_DATA03__LCDIF1_DATA_3 0x00DC 0x0424 0x0000 0x0 0x0
490#define MX6SX_PAD_LCD1_DATA03__WEIM_ADDR_24 0x00DC 0x0424 0x0000 0x1 0x0
491#define MX6SX_PAD_LCD1_DATA03__M4_TRACE_3 0x00DC 0x0424 0x0000 0x2 0x0
492#define MX6SX_PAD_LCD1_DATA03__KITTEN_TRACE_3 0x00DC 0x0424 0x0000 0x3 0x0
493#define MX6SX_PAD_LCD1_DATA03__CSI1_DATA_23 0x00DC 0x0424 0x06F8 0x4 0x0
494#define MX6SX_PAD_LCD1_DATA03__GPIO3_IO_4 0x00DC 0x0424 0x0000 0x5 0x0
495#define MX6SX_PAD_LCD1_DATA03__SRC_BT_CFG_3 0x00DC 0x0424 0x0000 0x6 0x0
496#define MX6SX_PAD_LCD1_DATA03__SIM_M_HADDR_24 0x00DC 0x0424 0x0000 0x7 0x0
497#define MX6SX_PAD_LCD1_DATA03__VADC_TEST_8 0x00DC 0x0424 0x0000 0x8 0x0
498#define MX6SX_PAD_LCD1_DATA03__MMDC_DEBUG_8 0x00DC 0x0424 0x0000 0x9 0x0
499#define MX6SX_PAD_LCD1_DATA04__LCDIF1_DATA_4 0x00E0 0x0428 0x0000 0x0 0x0
500#define MX6SX_PAD_LCD1_DATA04__WEIM_ADDR_25 0x00E0 0x0428 0x0000 0x1 0x0
501#define MX6SX_PAD_LCD1_DATA04__KITTEN_TRACE_4 0x00E0 0x0428 0x0000 0x3 0x0
502#define MX6SX_PAD_LCD1_DATA04__CSI1_VSYNC 0x00E0 0x0428 0x0708 0x4 0x1
503#define MX6SX_PAD_LCD1_DATA04__GPIO3_IO_5 0x00E0 0x0428 0x0000 0x5 0x0
504#define MX6SX_PAD_LCD1_DATA04__SRC_BT_CFG_4 0x00E0 0x0428 0x0000 0x6 0x0
505#define MX6SX_PAD_LCD1_DATA04__SIM_M_HADDR_25 0x00E0 0x0428 0x0000 0x7 0x0
506#define MX6SX_PAD_LCD1_DATA04__VADC_TEST_9 0x00E0 0x0428 0x0000 0x8 0x0
507#define MX6SX_PAD_LCD1_DATA04__MMDC_DEBUG_9 0x00E0 0x0428 0x0000 0x9 0x0
508#define MX6SX_PAD_LCD1_DATA05__LCDIF1_DATA_5 0x00E4 0x042C 0x0000 0x0 0x0
509#define MX6SX_PAD_LCD1_DATA05__WEIM_ADDR_26 0x00E4 0x042C 0x0000 0x1 0x0
510#define MX6SX_PAD_LCD1_DATA05__KITTEN_TRACE_5 0x00E4 0x042C 0x0000 0x3 0x0
511#define MX6SX_PAD_LCD1_DATA05__CSI1_HSYNC 0x00E4 0x042C 0x0700 0x4 0x1
512#define MX6SX_PAD_LCD1_DATA05__GPIO3_IO_6 0x00E4 0x042C 0x0000 0x5 0x0
513#define MX6SX_PAD_LCD1_DATA05__SRC_BT_CFG_5 0x00E4 0x042C 0x0000 0x6 0x0
514#define MX6SX_PAD_LCD1_DATA05__SIM_M_HADDR_26 0x00E4 0x042C 0x0000 0x7 0x0
515#define MX6SX_PAD_LCD1_DATA05__VADC_TEST_10 0x00E4 0x042C 0x0000 0x8 0x0
516#define MX6SX_PAD_LCD1_DATA05__MMDC_DEBUG_10 0x00E4 0x042C 0x0000 0x9 0x0
517#define MX6SX_PAD_LCD1_DATA06__LCDIF1_DATA_6 0x00E8 0x0430 0x0000 0x0 0x0
518#define MX6SX_PAD_LCD1_DATA06__WEIM_EB_B_2 0x00E8 0x0430 0x0000 0x1 0x0
519#define MX6SX_PAD_LCD1_DATA06__KITTEN_TRACE_6 0x00E8 0x0430 0x0000 0x3 0x0
520#define MX6SX_PAD_LCD1_DATA06__CSI1_PIXCLK 0x00E8 0x0430 0x0704 0x4 0x1
521#define MX6SX_PAD_LCD1_DATA06__GPIO3_IO_7 0x00E8 0x0430 0x0000 0x5 0x0
522#define MX6SX_PAD_LCD1_DATA06__SRC_BT_CFG_6 0x00E8 0x0430 0x0000 0x6 0x0
523#define MX6SX_PAD_LCD1_DATA06__SIM_M_HADDR_27 0x00E8 0x0430 0x0000 0x7 0x0
524#define MX6SX_PAD_LCD1_DATA06__VADC_TEST_11 0x00E8 0x0430 0x0000 0x8 0x0
525#define MX6SX_PAD_LCD1_DATA06__MMDC_DEBUG_11 0x00E8 0x0430 0x0000 0x9 0x0
526#define MX6SX_PAD_LCD1_DATA07__LCDIF1_DATA_7 0x00EC 0x0434 0x0000 0x0 0x0
527#define MX6SX_PAD_LCD1_DATA07__WEIM_EB_B_3 0x00EC 0x0434 0x0000 0x1 0x0
528#define MX6SX_PAD_LCD1_DATA07__KITTEN_TRACE_7 0x00EC 0x0434 0x0000 0x3 0x0
529#define MX6SX_PAD_LCD1_DATA07__CSI1_MCLK 0x00EC 0x0434 0x0000 0x4 0x0
530#define MX6SX_PAD_LCD1_DATA07__GPIO3_IO_8 0x00EC 0x0434 0x0000 0x5 0x0
531#define MX6SX_PAD_LCD1_DATA07__SRC_BT_CFG_7 0x00EC 0x0434 0x0000 0x6 0x0
532#define MX6SX_PAD_LCD1_DATA07__SIM_M_HADDR_28 0x00EC 0x0434 0x0000 0x7 0x0
533#define MX6SX_PAD_LCD1_DATA07__VADC_TEST_12 0x00EC 0x0434 0x0000 0x8 0x0
534#define MX6SX_PAD_LCD1_DATA07__MMDC_DEBUG_12 0x00EC 0x0434 0x0000 0x9 0x0
535#define MX6SX_PAD_LCD1_DATA08__LCDIF1_DATA_8 0x00F0 0x0438 0x0000 0x0 0x0
536#define MX6SX_PAD_LCD1_DATA08__WEIM_AD_8 0x00F0 0x0438 0x0000 0x1 0x0
537#define MX6SX_PAD_LCD1_DATA08__KITTEN_TRACE_8 0x00F0 0x0438 0x0000 0x3 0x0
538#define MX6SX_PAD_LCD1_DATA08__CSI1_DATA_9 0x00F0 0x0438 0x06C4 0x4 0x1
539#define MX6SX_PAD_LCD1_DATA08__GPIO3_IO_9 0x00F0 0x0438 0x0000 0x5 0x0
540#define MX6SX_PAD_LCD1_DATA08__SRC_BT_CFG_8 0x00F0 0x0438 0x0000 0x6 0x0
541#define MX6SX_PAD_LCD1_DATA08__SIM_M_HADDR_29 0x00F0 0x0438 0x0000 0x7 0x0
542#define MX6SX_PAD_LCD1_DATA08__VADC_TEST_13 0x00F0 0x0438 0x0000 0x8 0x0
543#define MX6SX_PAD_LCD1_DATA08__MMDC_DEBUG_13 0x00F0 0x0438 0x0000 0x9 0x0
544#define MX6SX_PAD_LCD1_DATA09__LCDIF1_DATA_9 0x00F4 0x043C 0x0000 0x0 0x0
545#define MX6SX_PAD_LCD1_DATA09__WEIM_AD_9 0x00F4 0x043C 0x0000 0x1 0x0
546#define MX6SX_PAD_LCD1_DATA09__KITTEN_TRACE_9 0x00F4 0x043C 0x0000 0x3 0x0
547#define MX6SX_PAD_LCD1_DATA09__CSI1_DATA_8 0x00F4 0x043C 0x06C0 0x4 0x1
548#define MX6SX_PAD_LCD1_DATA09__GPIO3_IO_10 0x00F4 0x043C 0x0000 0x5 0x0
549#define MX6SX_PAD_LCD1_DATA09__SRC_BT_CFG_9 0x00F4 0x043C 0x0000 0x6 0x0
550#define MX6SX_PAD_LCD1_DATA09__SIM_M_HADDR_30 0x00F4 0x043C 0x0000 0x7 0x0
551#define MX6SX_PAD_LCD1_DATA09__VADC_TEST_14 0x00F4 0x043C 0x0000 0x8 0x0
552#define MX6SX_PAD_LCD1_DATA09__MMDC_DEBUG_14 0x00F4 0x043C 0x0000 0x9 0x0
553#define MX6SX_PAD_LCD1_DATA10__LCDIF1_DATA_10 0x00F8 0x0440 0x0000 0x0 0x0
554#define MX6SX_PAD_LCD1_DATA10__WEIM_AD_10 0x00F8 0x0440 0x0000 0x1 0x0
555#define MX6SX_PAD_LCD1_DATA10__KITTEN_TRACE_10 0x00F8 0x0440 0x0000 0x3 0x0
556#define MX6SX_PAD_LCD1_DATA10__CSI1_DATA_7 0x00F8 0x0440 0x06BC 0x4 0x1
557#define MX6SX_PAD_LCD1_DATA10__GPIO3_IO_11 0x00F8 0x0440 0x0000 0x5 0x0
558#define MX6SX_PAD_LCD1_DATA10__SRC_BT_CFG_10 0x00F8 0x0440 0x0000 0x6 0x0
559#define MX6SX_PAD_LCD1_DATA10__SIM_M_HADDR_31 0x00F8 0x0440 0x0000 0x7 0x0
560#define MX6SX_PAD_LCD1_DATA10__VADC_TEST_15 0x00F8 0x0440 0x0000 0x8 0x0
561#define MX6SX_PAD_LCD1_DATA10__MMDC_DEBUG_15 0x00F8 0x0440 0x0000 0x9 0x0
562#define MX6SX_PAD_LCD1_DATA11__LCDIF1_DATA_11 0x00FC 0x0444 0x0000 0x0 0x0
563#define MX6SX_PAD_LCD1_DATA11__WEIM_AD_11 0x00FC 0x0444 0x0000 0x1 0x0
564#define MX6SX_PAD_LCD1_DATA11__KITTEN_TRACE_11 0x00FC 0x0444 0x0000 0x3 0x0
565#define MX6SX_PAD_LCD1_DATA11__CSI1_DATA_6 0x00FC 0x0444 0x06B8 0x4 0x1
566#define MX6SX_PAD_LCD1_DATA11__GPIO3_IO_12 0x00FC 0x0444 0x0000 0x5 0x0
567#define MX6SX_PAD_LCD1_DATA11__SRC_BT_CFG_11 0x00FC 0x0444 0x0000 0x6 0x0
568#define MX6SX_PAD_LCD1_DATA11__SIM_M_HBURST_0 0x00FC 0x0444 0x0000 0x7 0x0
569#define MX6SX_PAD_LCD1_DATA11__VADC_TEST_16 0x00FC 0x0444 0x0000 0x8 0x0
570#define MX6SX_PAD_LCD1_DATA11__MMDC_DEBUG_16 0x00FC 0x0444 0x0000 0x9 0x0
571#define MX6SX_PAD_LCD1_DATA12__LCDIF1_DATA_12 0x0100 0x0448 0x0000 0x0 0x0
572#define MX6SX_PAD_LCD1_DATA12__WEIM_AD_12 0x0100 0x0448 0x0000 0x1 0x0
573#define MX6SX_PAD_LCD1_DATA12__KITTEN_TRACE_12 0x0100 0x0448 0x0000 0x3 0x0
574#define MX6SX_PAD_LCD1_DATA12__CSI1_DATA_5 0x0100 0x0448 0x06B4 0x4 0x1
575#define MX6SX_PAD_LCD1_DATA12__GPIO3_IO_13 0x0100 0x0448 0x0000 0x5 0x0
576#define MX6SX_PAD_LCD1_DATA12__SRC_BT_CFG_12 0x0100 0x0448 0x0000 0x6 0x0
577#define MX6SX_PAD_LCD1_DATA12__SIM_M_HBURST_1 0x0100 0x0448 0x0000 0x7 0x0
578#define MX6SX_PAD_LCD1_DATA12__VADC_TEST_17 0x0100 0x0448 0x0000 0x8 0x0
579#define MX6SX_PAD_LCD1_DATA12__MMDC_DEBUG_17 0x0100 0x0448 0x0000 0x9 0x0
580#define MX6SX_PAD_LCD1_DATA13__LCDIF1_DATA_13 0x0104 0x044C 0x0000 0x0 0x0
581#define MX6SX_PAD_LCD1_DATA13__WEIM_AD_13 0x0104 0x044C 0x0000 0x1 0x0
582#define MX6SX_PAD_LCD1_DATA13__KITTEN_TRACE_13 0x0104 0x044C 0x0000 0x3 0x0
583#define MX6SX_PAD_LCD1_DATA13__CSI1_DATA_4 0x0104 0x044C 0x06B0 0x4 0x1
584#define MX6SX_PAD_LCD1_DATA13__GPIO3_IO_14 0x0104 0x044C 0x0000 0x5 0x0
585#define MX6SX_PAD_LCD1_DATA13__SRC_BT_CFG_13 0x0104 0x044C 0x0000 0x6 0x0
586#define MX6SX_PAD_LCD1_DATA13__SIM_M_HBURST_2 0x0104 0x044C 0x0000 0x7 0x0
587#define MX6SX_PAD_LCD1_DATA13__VADC_TEST_18 0x0104 0x044C 0x0000 0x8 0x0
588#define MX6SX_PAD_LCD1_DATA13__MMDC_DEBUG_18 0x0104 0x044C 0x0000 0x9 0x0
589#define MX6SX_PAD_LCD1_DATA14__LCDIF1_DATA_14 0x0108 0x0450 0x0000 0x0 0x0
590#define MX6SX_PAD_LCD1_DATA14__WEIM_AD_14 0x0108 0x0450 0x0000 0x1 0x0
591#define MX6SX_PAD_LCD1_DATA14__KITTEN_TRACE_14 0x0108 0x0450 0x0000 0x3 0x0
592#define MX6SX_PAD_LCD1_DATA14__CSI1_DATA_3 0x0108 0x0450 0x06AC 0x4 0x1
593#define MX6SX_PAD_LCD1_DATA14__GPIO3_IO_15 0x0108 0x0450 0x0000 0x5 0x0
594#define MX6SX_PAD_LCD1_DATA14__SRC_BT_CFG_14 0x0108 0x0450 0x0000 0x6 0x0
595#define MX6SX_PAD_LCD1_DATA14__SIM_M_HMASTLOCK 0x0108 0x0450 0x0000 0x7 0x0
596#define MX6SX_PAD_LCD1_DATA14__VADC_TEST_19 0x0108 0x0450 0x0000 0x8 0x0
597#define MX6SX_PAD_LCD1_DATA14__MMDC_DEBUG_19 0x0108 0x0450 0x0000 0x9 0x0
598#define MX6SX_PAD_LCD1_DATA15__LCDIF1_DATA_15 0x010C 0x0454 0x0000 0x0 0x0
599#define MX6SX_PAD_LCD1_DATA15__WEIM_AD_15 0x010C 0x0454 0x0000 0x1 0x0
600#define MX6SX_PAD_LCD1_DATA15__KITTEN_TRACE_15 0x010C 0x0454 0x0000 0x3 0x0
601#define MX6SX_PAD_LCD1_DATA15__CSI1_DATA_2 0x010C 0x0454 0x06A8 0x4 0x1
602#define MX6SX_PAD_LCD1_DATA15__GPIO3_IO_16 0x010C 0x0454 0x0000 0x5 0x0
603#define MX6SX_PAD_LCD1_DATA15__SRC_BT_CFG_15 0x010C 0x0454 0x0000 0x6 0x0
604#define MX6SX_PAD_LCD1_DATA15__SIM_M_HPROT_0 0x010C 0x0454 0x0000 0x7 0x0
605#define MX6SX_PAD_LCD1_DATA15__VDEC_DEBUG_0 0x010C 0x0454 0x0000 0x8 0x0
606#define MX6SX_PAD_LCD1_DATA15__MMDC_DEBUG_20 0x010C 0x0454 0x0000 0x9 0x0
607#define MX6SX_PAD_LCD1_DATA16__LCDIF1_DATA_16 0x0110 0x0458 0x0000 0x0 0x0
608#define MX6SX_PAD_LCD1_DATA16__WEIM_ADDR_16 0x0110 0x0458 0x0000 0x1 0x0
609#define MX6SX_PAD_LCD1_DATA16__M4_TRACE_CLK 0x0110 0x0458 0x0000 0x2 0x0
610#define MX6SX_PAD_LCD1_DATA16__KITTEN_TRACE_CLK 0x0110 0x0458 0x0000 0x3 0x0
611#define MX6SX_PAD_LCD1_DATA16__CSI1_DATA_1 0x0110 0x0458 0x06A4 0x4 0x0
612#define MX6SX_PAD_LCD1_DATA16__GPIO3_IO_17 0x0110 0x0458 0x0000 0x5 0x0
613#define MX6SX_PAD_LCD1_DATA16__SRC_BT_CFG_24 0x0110 0x0458 0x0000 0x6 0x0
614#define MX6SX_PAD_LCD1_DATA16__SIM_M_HPROT_1 0x0110 0x0458 0x0000 0x7 0x0
615#define MX6SX_PAD_LCD1_DATA16__VDEC_DEBUG_1 0x0110 0x0458 0x0000 0x8 0x0
616#define MX6SX_PAD_LCD1_DATA16__MMDC_DEBUG_21 0x0110 0x0458 0x0000 0x9 0x0
617#define MX6SX_PAD_LCD1_DATA17__LCDIF1_DATA_17 0x0114 0x045C 0x0000 0x0 0x0
618#define MX6SX_PAD_LCD1_DATA17__WEIM_ADDR_17 0x0114 0x045C 0x0000 0x1 0x0
619#define MX6SX_PAD_LCD1_DATA17__KITTEN_TRACE_CTL 0x0114 0x045C 0x0000 0x3 0x0
620#define MX6SX_PAD_LCD1_DATA17__CSI1_DATA_0 0x0114 0x045C 0x06A0 0x4 0x0
621#define MX6SX_PAD_LCD1_DATA17__GPIO3_IO_18 0x0114 0x045C 0x0000 0x5 0x0
622#define MX6SX_PAD_LCD1_DATA17__SRC_BT_CFG_25 0x0114 0x045C 0x0000 0x6 0x0
623#define MX6SX_PAD_LCD1_DATA17__SIM_M_HPROT_2 0x0114 0x045C 0x0000 0x7 0x0
624#define MX6SX_PAD_LCD1_DATA17__VDEC_DEBUG_2 0x0114 0x045C 0x0000 0x8 0x0
625#define MX6SX_PAD_LCD1_DATA17__MMDC_DEBUG_22 0x0114 0x045C 0x0000 0x9 0x0
626#define MX6SX_PAD_LCD1_DATA18__LCDIF1_DATA_18 0x0118 0x0460 0x0000 0x0 0x0
627#define MX6SX_PAD_LCD1_DATA18__WEIM_ADDR_18 0x0118 0x0460 0x0000 0x1 0x0
628#define MX6SX_PAD_LCD1_DATA18__M4_EVENTO 0x0118 0x0460 0x0000 0x2 0x0
629#define MX6SX_PAD_LCD1_DATA18__KITTEN_EVENTO 0x0118 0x0460 0x0000 0x3 0x0
630#define MX6SX_PAD_LCD1_DATA18__CSI1_DATA_15 0x0118 0x0460 0x06D8 0x4 0x0
631#define MX6SX_PAD_LCD1_DATA18__GPIO3_IO_19 0x0118 0x0460 0x0000 0x5 0x0
632#define MX6SX_PAD_LCD1_DATA18__SRC_BT_CFG_26 0x0118 0x0460 0x0000 0x6 0x0
633#define MX6SX_PAD_LCD1_DATA18__SIM_M_HPROT_3 0x0118 0x0460 0x0000 0x7 0x0
634#define MX6SX_PAD_LCD1_DATA18__VDEC_DEBUG_3 0x0118 0x0460 0x0000 0x8 0x0
635#define MX6SX_PAD_LCD1_DATA18__MMDC_DEBUG_23 0x0118 0x0460 0x0000 0x9 0x0
636#define MX6SX_PAD_LCD1_DATA19__LCDIF1_DATA_19 0x011C 0x0464 0x0000 0x0 0x0
637#define MX6SX_PAD_LCD1_DATA19__WEIM_ADDR_19 0x011C 0x0464 0x0000 0x1 0x0
638#define MX6SX_PAD_LCD1_DATA19__M4_TRACE_SWO 0x011C 0x0464 0x0000 0x2 0x0
639#define MX6SX_PAD_LCD1_DATA19__CSI1_DATA_14 0x011C 0x0464 0x06D4 0x4 0x0
640#define MX6SX_PAD_LCD1_DATA19__GPIO3_IO_20 0x011C 0x0464 0x0000 0x5 0x0
641#define MX6SX_PAD_LCD1_DATA19__SRC_BT_CFG_27 0x011C 0x0464 0x0000 0x6 0x0
642#define MX6SX_PAD_LCD1_DATA19__SIM_M_HREADYOUT 0x011C 0x0464 0x0000 0x7 0x0
643#define MX6SX_PAD_LCD1_DATA19__VDEC_DEBUG_4 0x011C 0x0464 0x0000 0x8 0x0
644#define MX6SX_PAD_LCD1_DATA19__MMDC_DEBUG_24 0x011C 0x0464 0x0000 0x9 0x0
645#define MX6SX_PAD_LCD1_DATA20__LCDIF1_DATA_20 0x0120 0x0468 0x0000 0x0 0x0
646#define MX6SX_PAD_LCD1_DATA20__WEIM_ADDR_20 0x0120 0x0468 0x0000 0x1 0x0
647#define MX6SX_PAD_LCD1_DATA20__PWM8_OUT 0x0120 0x0468 0x0000 0x2 0x0
648#define MX6SX_PAD_LCD1_DATA20__ENET1_1588_EVENT2_OUT 0x0120 0x0468 0x0000 0x3 0x0
649#define MX6SX_PAD_LCD1_DATA20__CSI1_DATA_13 0x0120 0x0468 0x06D0 0x4 0x0
650#define MX6SX_PAD_LCD1_DATA20__GPIO3_IO_21 0x0120 0x0468 0x0000 0x5 0x0
651#define MX6SX_PAD_LCD1_DATA20__SRC_BT_CFG_28 0x0120 0x0468 0x0000 0x6 0x0
652#define MX6SX_PAD_LCD1_DATA20__SIM_M_HRESP 0x0120 0x0468 0x0000 0x7 0x0
653#define MX6SX_PAD_LCD1_DATA20__VDEC_DEBUG_5 0x0120 0x0468 0x0000 0x8 0x0
654#define MX6SX_PAD_LCD1_DATA20__MMDC_DEBUG_25 0x0120 0x0468 0x0000 0x9 0x0
655#define MX6SX_PAD_LCD1_DATA21__LCDIF1_DATA_21 0x0124 0x046C 0x0000 0x0 0x0
656#define MX6SX_PAD_LCD1_DATA21__WEIM_ADDR_21 0x0124 0x046C 0x0000 0x1 0x0
657#define MX6SX_PAD_LCD1_DATA21__PWM7_OUT 0x0124 0x046C 0x0000 0x2 0x0
658#define MX6SX_PAD_LCD1_DATA21__ENET1_1588_EVENT3_OUT 0x0124 0x046C 0x0000 0x3 0x0
659#define MX6SX_PAD_LCD1_DATA21__CSI1_DATA_12 0x0124 0x046C 0x06CC 0x4 0x0
660#define MX6SX_PAD_LCD1_DATA21__GPIO3_IO_22 0x0124 0x046C 0x0000 0x5 0x0
661#define MX6SX_PAD_LCD1_DATA21__SRC_BT_CFG_29 0x0124 0x046C 0x0000 0x6 0x0
662#define MX6SX_PAD_LCD1_DATA21__SIM_M_HSIZE_0 0x0124 0x046C 0x0000 0x7 0x0
663#define MX6SX_PAD_LCD1_DATA21__VDEC_DEBUG_6 0x0124 0x046C 0x0000 0x8 0x0
664#define MX6SX_PAD_LCD1_DATA21__MMDC_DEBUG_26 0x0124 0x046C 0x0000 0x9 0x0
665#define MX6SX_PAD_LCD1_DATA22__LCDIF1_DATA_22 0x0128 0x0470 0x0000 0x0 0x0
666#define MX6SX_PAD_LCD1_DATA22__WEIM_ADDR_22 0x0128 0x0470 0x0000 0x1 0x0
667#define MX6SX_PAD_LCD1_DATA22__PWM6_OUT 0x0128 0x0470 0x0000 0x2 0x0
668#define MX6SX_PAD_LCD1_DATA22__ENET2_1588_EVENT2_OUT 0x0128 0x0470 0x0000 0x3 0x0
669#define MX6SX_PAD_LCD1_DATA22__CSI1_DATA_11 0x0128 0x0470 0x06C8 0x4 0x0
670#define MX6SX_PAD_LCD1_DATA22__GPIO3_IO_23 0x0128 0x0470 0x0000 0x5 0x0
671#define MX6SX_PAD_LCD1_DATA22__SRC_BT_CFG_30 0x0128 0x0470 0x0000 0x6 0x0
672#define MX6SX_PAD_LCD1_DATA22__SIM_M_HSIZE_1 0x0128 0x0470 0x0000 0x7 0x0
673#define MX6SX_PAD_LCD1_DATA22__VDEC_DEBUG_7 0x0128 0x0470 0x0000 0x8 0x0
674#define MX6SX_PAD_LCD1_DATA22__MMDC_DEBUG_27 0x0128 0x0470 0x0000 0x9 0x0
675#define MX6SX_PAD_LCD1_DATA23__LCDIF1_DATA_23 0x012C 0x0474 0x0000 0x0 0x0
676#define MX6SX_PAD_LCD1_DATA23__WEIM_ADDR_23 0x012C 0x0474 0x0000 0x1 0x0
677#define MX6SX_PAD_LCD1_DATA23__PWM5_OUT 0x012C 0x0474 0x0000 0x2 0x0
678#define MX6SX_PAD_LCD1_DATA23__ENET2_1588_EVENT3_OUT 0x012C 0x0474 0x0000 0x3 0x0
679#define MX6SX_PAD_LCD1_DATA23__CSI1_DATA_10 0x012C 0x0474 0x06FC 0x4 0x0
680#define MX6SX_PAD_LCD1_DATA23__GPIO3_IO_24 0x012C 0x0474 0x0000 0x5 0x0
681#define MX6SX_PAD_LCD1_DATA23__SRC_BT_CFG_31 0x012C 0x0474 0x0000 0x6 0x0
682#define MX6SX_PAD_LCD1_DATA23__SIM_M_HSIZE_2 0x012C 0x0474 0x0000 0x7 0x0
683#define MX6SX_PAD_LCD1_DATA23__VDEC_DEBUG_8 0x012C 0x0474 0x0000 0x8 0x0
684#define MX6SX_PAD_LCD1_DATA23__MMDC_DEBUG_28 0x012C 0x0474 0x0000 0x9 0x0
685#define MX6SX_PAD_LCD1_ENABLE__LCDIF1_ENABLE 0x0130 0x0478 0x0000 0x0 0x0
686#define MX6SX_PAD_LCD1_ENABLE__LCDIF1_RD_E 0x0130 0x0478 0x0000 0x1 0x0
687#define MX6SX_PAD_LCD1_ENABLE__AUDMUX_AUD3_TXC 0x0130 0x0478 0x063C 0x2 0x1
688#define MX6SX_PAD_LCD1_ENABLE__ENET1_1588_EVENT3_IN 0x0130 0x0478 0x0000 0x3 0x0
689#define MX6SX_PAD_LCD1_ENABLE__CSI1_DATA_17 0x0130 0x0478 0x06E0 0x4 0x0
690#define MX6SX_PAD_LCD1_ENABLE__GPIO3_IO_25 0x0130 0x0478 0x0000 0x5 0x0
691#define MX6SX_PAD_LCD1_ENABLE__USDHC1_CD_B 0x0130 0x0478 0x0864 0x6 0x0
692#define MX6SX_PAD_LCD1_ENABLE__SIM_M_HADDR_17 0x0130 0x0478 0x0000 0x7 0x0
693#define MX6SX_PAD_LCD1_ENABLE__VADC_TEST_1 0x0130 0x0478 0x0000 0x8 0x0
694#define MX6SX_PAD_LCD1_ENABLE__MMDC_DEBUG_1 0x0130 0x0478 0x0000 0x9 0x0
695#define MX6SX_PAD_LCD1_HSYNC__LCDIF1_HSYNC 0x0134 0x047C 0x07E0 0x0 0x0
696#define MX6SX_PAD_LCD1_HSYNC__LCDIF1_RS 0x0134 0x047C 0x0000 0x1 0x0
697#define MX6SX_PAD_LCD1_HSYNC__AUDMUX_AUD3_TXD 0x0134 0x047C 0x0630 0x2 0x1
698#define MX6SX_PAD_LCD1_HSYNC__ENET2_1588_EVENT2_IN 0x0134 0x047C 0x0000 0x3 0x0
699#define MX6SX_PAD_LCD1_HSYNC__CSI1_DATA_18 0x0134 0x047C 0x06E4 0x4 0x0
700#define MX6SX_PAD_LCD1_HSYNC__GPIO3_IO_26 0x0134 0x047C 0x0000 0x5 0x0
701#define MX6SX_PAD_LCD1_HSYNC__USDHC2_WP 0x0134 0x047C 0x0870 0x6 0x0
702#define MX6SX_PAD_LCD1_HSYNC__SIM_M_HADDR_18 0x0134 0x047C 0x0000 0x7 0x0
703#define MX6SX_PAD_LCD1_HSYNC__VADC_TEST_2 0x0134 0x047C 0x0000 0x8 0x0
704#define MX6SX_PAD_LCD1_HSYNC__MMDC_DEBUG_2 0x0134 0x047C 0x0000 0x9 0x0
705#define MX6SX_PAD_LCD1_RESET__LCDIF1_RESET 0x0138 0x0480 0x0000 0x0 0x0
706#define MX6SX_PAD_LCD1_RESET__LCDIF1_CS 0x0138 0x0480 0x0000 0x1 0x0
707#define MX6SX_PAD_LCD1_RESET__AUDMUX_AUD3_RXD 0x0138 0x0480 0x062C 0x2 0x1
708#define MX6SX_PAD_LCD1_RESET__KITTEN_EVENTI 0x0138 0x0480 0x0000 0x3 0x0
709#define MX6SX_PAD_LCD1_RESET__M4_EVENTI 0x0138 0x0480 0x0000 0x4 0x0
710#define MX6SX_PAD_LCD1_RESET__GPIO3_IO_27 0x0138 0x0480 0x0000 0x5 0x0
711#define MX6SX_PAD_LCD1_RESET__CCM_PMIC_RDY 0x0138 0x0480 0x069C 0x6 0x0
712#define MX6SX_PAD_LCD1_RESET__SIM_M_HADDR_20 0x0138 0x0480 0x0000 0x7 0x0
713#define MX6SX_PAD_LCD1_RESET__VADC_TEST_4 0x0138 0x0480 0x0000 0x8 0x0
714#define MX6SX_PAD_LCD1_RESET__MMDC_DEBUG_4 0x0138 0x0480 0x0000 0x9 0x0
715#define MX6SX_PAD_LCD1_VSYNC__LCDIF1_VSYNC 0x013C 0x0484 0x0000 0x0 0x0
716#define MX6SX_PAD_LCD1_VSYNC__LCDIF1_BUSY 0x013C 0x0484 0x07E0 0x1 0x1
717#define MX6SX_PAD_LCD1_VSYNC__AUDMUX_AUD3_TXFS 0x013C 0x0484 0x0640 0x2 0x1
718#define MX6SX_PAD_LCD1_VSYNC__ENET2_1588_EVENT3_IN 0x013C 0x0484 0x0000 0x3 0x0
719#define MX6SX_PAD_LCD1_VSYNC__CSI1_DATA_19 0x013C 0x0484 0x06E8 0x4 0x0
720#define MX6SX_PAD_LCD1_VSYNC__GPIO3_IO_28 0x013C 0x0484 0x0000 0x5 0x0
721#define MX6SX_PAD_LCD1_VSYNC__USDHC2_CD_B 0x013C 0x0484 0x086C 0x6 0x0
722#define MX6SX_PAD_LCD1_VSYNC__SIM_M_HADDR_19 0x013C 0x0484 0x0000 0x7 0x0
723#define MX6SX_PAD_LCD1_VSYNC__VADC_TEST_3 0x013C 0x0484 0x0000 0x8 0x0
724#define MX6SX_PAD_LCD1_VSYNC__MMDC_DEBUG_3 0x013C 0x0484 0x0000 0x9 0x0
725#define MX6SX_PAD_NAND_ALE__RAWNAND_ALE 0x0140 0x0488 0x0000 0x0 0x0
726#define MX6SX_PAD_NAND_ALE__I2C3_SDA 0x0140 0x0488 0x07BC 0x1 0x0
727#define MX6SX_PAD_NAND_ALE__QSPI2_A_SS0_B 0x0140 0x0488 0x0000 0x2 0x0
728#define MX6SX_PAD_NAND_ALE__ECSPI2_SS0 0x0140 0x0488 0x072C 0x3 0x0
729#define MX6SX_PAD_NAND_ALE__ESAI_TX3_RX2 0x0140 0x0488 0x079C 0x4 0x0
730#define MX6SX_PAD_NAND_ALE__GPIO4_IO_0 0x0140 0x0488 0x0000 0x5 0x0
731#define MX6SX_PAD_NAND_ALE__WEIM_CS0_B 0x0140 0x0488 0x0000 0x6 0x0
732#define MX6SX_PAD_NAND_ALE__TPSMP_HDATA_0 0x0140 0x0488 0x0000 0x7 0x0
733#define MX6SX_PAD_NAND_ALE__ANATOP_USBPHY1_TSTI_TX_EN 0x0140 0x0488 0x0000 0x8 0x0
734#define MX6SX_PAD_NAND_ALE__SDMA_DEBUG_PC_12 0x0140 0x0488 0x0000 0x9 0x0
735#define MX6SX_PAD_NAND_CE0_B__RAWNAND_CE0_B 0x0144 0x048C 0x0000 0x0 0x0
736#define MX6SX_PAD_NAND_CE0_B__USDHC2_VSELECT 0x0144 0x048C 0x0000 0x1 0x0
737#define MX6SX_PAD_NAND_CE0_B__QSPI2_A_DATA_2 0x0144 0x048C 0x0000 0x2 0x0
738#define MX6SX_PAD_NAND_CE0_B__AUDMUX_AUD4_TXC 0x0144 0x048C 0x0654 0x3 0x0
739#define MX6SX_PAD_NAND_CE0_B__ESAI_TX_CLK 0x0144 0x048C 0x078C 0x4 0x0
740#define MX6SX_PAD_NAND_CE0_B__GPIO4_IO_1 0x0144 0x048C 0x0000 0x5 0x0
741#define MX6SX_PAD_NAND_CE0_B__WEIM_LBA_B 0x0144 0x048C 0x0000 0x6 0x0
742#define MX6SX_PAD_NAND_CE0_B__TPSMP_HDATA_3 0x0144 0x048C 0x0000 0x7 0x0
743#define MX6SX_PAD_NAND_CE0_B__ANATOP_USBPHY1_TSTI_TX_HIZ 0x0144 0x048C 0x0000 0x8 0x0
744#define MX6SX_PAD_NAND_CE0_B__SDMA_DEBUG_PC_9 0x0144 0x048C 0x0000 0x9 0x0
745#define MX6SX_PAD_NAND_CE1_B__RAWNAND_CE1_B 0x0148 0x0490 0x0000 0x0 0x0
746#define MX6SX_PAD_NAND_CE1_B__USDHC3_RESET_B 0x0148 0x0490 0x0000 0x1 0x0
747#define MX6SX_PAD_NAND_CE1_B__QSPI2_A_DATA_3 0x0148 0x0490 0x0000 0x2 0x0
748#define MX6SX_PAD_NAND_CE1_B__AUDMUX_AUD4_TXD 0x0148 0x0490 0x0648 0x3 0x0
749#define MX6SX_PAD_NAND_CE1_B__ESAI_TX0 0x0148 0x0490 0x0790 0x4 0x0
750#define MX6SX_PAD_NAND_CE1_B__GPIO4_IO_2 0x0148 0x0490 0x0000 0x5 0x0
751#define MX6SX_PAD_NAND_CE1_B__WEIM_OE 0x0148 0x0490 0x0000 0x6 0x0
752#define MX6SX_PAD_NAND_CE1_B__TPSMP_HDATA_4 0x0148 0x0490 0x0000 0x7 0x0
753#define MX6SX_PAD_NAND_CE1_B__ANATOP_USBPHY1_TSTI_TX_LS_MODE 0x0148 0x0490 0x0000 0x8 0x0
754#define MX6SX_PAD_NAND_CE1_B__SDMA_DEBUG_PC_8 0x0148 0x0490 0x0000 0x9 0x0
755#define MX6SX_PAD_NAND_CLE__RAWNAND_CLE 0x014C 0x0494 0x0000 0x0 0x0
756#define MX6SX_PAD_NAND_CLE__I2C3_SCL 0x014C 0x0494 0x07B8 0x1 0x0
757#define MX6SX_PAD_NAND_CLE__QSPI2_A_SCLK 0x014C 0x0494 0x0000 0x2 0x0
758#define MX6SX_PAD_NAND_CLE__ECSPI2_SCLK 0x014C 0x0494 0x0720 0x3 0x0
759#define MX6SX_PAD_NAND_CLE__ESAI_TX2_RX3 0x014C 0x0494 0x0798 0x4 0x0
760#define MX6SX_PAD_NAND_CLE__GPIO4_IO_3 0x014C 0x0494 0x0000 0x5 0x0
761#define MX6SX_PAD_NAND_CLE__WEIM_BCLK 0x014C 0x0494 0x0000 0x6 0x0
762#define MX6SX_PAD_NAND_CLE__TPSMP_CLK 0x014C 0x0494 0x0000 0x7 0x0
763#define MX6SX_PAD_NAND_CLE__ANATOP_USBPHY1_TSTI_TX_DP 0x014C 0x0494 0x0000 0x8 0x0
764#define MX6SX_PAD_NAND_CLE__SDMA_DEBUG_PC_13 0x014C 0x0494 0x0000 0x9 0x0
765#define MX6SX_PAD_NAND_DATA00__RAWNAND_DATA00 0x0150 0x0498 0x0000 0x0 0x0
766#define MX6SX_PAD_NAND_DATA00__USDHC1_DATA4 0x0150 0x0498 0x0000 0x1 0x0
767#define MX6SX_PAD_NAND_DATA00__QSPI2_B_DATA_1 0x0150 0x0498 0x0000 0x2 0x0
768#define MX6SX_PAD_NAND_DATA00__ECSPI5_MISO 0x0150 0x0498 0x0754 0x3 0x0
769#define MX6SX_PAD_NAND_DATA00__ESAI_RX_CLK 0x0150 0x0498 0x0788 0x4 0x0
770#define MX6SX_PAD_NAND_DATA00__GPIO4_IO_4 0x0150 0x0498 0x0000 0x5 0x0
771#define MX6SX_PAD_NAND_DATA00__WEIM_AD_0 0x0150 0x0498 0x0000 0x6 0x0
772#define MX6SX_PAD_NAND_DATA00__TPSMP_HDATA_7 0x0150 0x0498 0x0000 0x7 0x0
773#define MX6SX_PAD_NAND_DATA00__ANATOP_USBPHY1_TSTO_RX_DISCON_DET 0x0150 0x0498 0x0000 0x8 0x0
774#define MX6SX_PAD_NAND_DATA00__SDMA_DEBUG_EVT_CHN_LINES_5 0x0150 0x0498 0x0000 0x9 0x0
775#define MX6SX_PAD_NAND_DATA01__RAWNAND_DATA01 0x0154 0x049C 0x0000 0x0 0x0
776#define MX6SX_PAD_NAND_DATA01__USDHC1_DATA5 0x0154 0x049C 0x0000 0x1 0x0
777#define MX6SX_PAD_NAND_DATA01__QSPI2_B_DATA_0 0x0154 0x049C 0x0000 0x2 0x0
778#define MX6SX_PAD_NAND_DATA01__ECSPI5_MOSI 0x0154 0x049C 0x0758 0x3 0x0
779#define MX6SX_PAD_NAND_DATA01__ESAI_RX_FS 0x0154 0x049C 0x0778 0x4 0x0
780#define MX6SX_PAD_NAND_DATA01__GPIO4_IO_5 0x0154 0x049C 0x0000 0x5 0x0
781#define MX6SX_PAD_NAND_DATA01__WEIM_AD_1 0x0154 0x049C 0x0000 0x6 0x0
782#define MX6SX_PAD_NAND_DATA01__TPSMP_HDATA_8 0x0154 0x049C 0x0000 0x7 0x0
783#define MX6SX_PAD_NAND_DATA01__ANATOP_USBPHY1_TSTO_RX_HS_RXD 0x0154 0x049C 0x0000 0x8 0x0
784#define MX6SX_PAD_NAND_DATA01__SDMA_DEBUG_EVT_CHN_LINES_4 0x0154 0x049C 0x0000 0x9 0x0
785#define MX6SX_PAD_NAND_DATA02__RAWNAND_DATA02 0x0158 0x04A0 0x0000 0x0 0x0
786#define MX6SX_PAD_NAND_DATA02__USDHC1_DATA6 0x0158 0x04A0 0x0000 0x1 0x0
787#define MX6SX_PAD_NAND_DATA02__QSPI2_B_SCLK 0x0158 0x04A0 0x0000 0x2 0x0
788#define MX6SX_PAD_NAND_DATA02__ECSPI5_SCLK 0x0158 0x04A0 0x0750 0x3 0x0
789#define MX6SX_PAD_NAND_DATA02__ESAI_TX_HF_CLK 0x0158 0x04A0 0x0784 0x4 0x0
790#define MX6SX_PAD_NAND_DATA02__GPIO4_IO_6 0x0158 0x04A0 0x0000 0x5 0x0
791#define MX6SX_PAD_NAND_DATA02__WEIM_AD_2 0x0158 0x04A0 0x0000 0x6 0x0
792#define MX6SX_PAD_NAND_DATA02__TPSMP_HDATA_9 0x0158 0x04A0 0x0000 0x7 0x0
793#define MX6SX_PAD_NAND_DATA02__ANATOP_USBPHY2_TSTO_PLL_CLK20DIV 0x0158 0x04A0 0x0000 0x8 0x0
794#define MX6SX_PAD_NAND_DATA02__SDMA_DEBUG_EVT_CHN_LINES_3 0x0158 0x04A0 0x0000 0x9 0x0
795#define MX6SX_PAD_NAND_DATA03__RAWNAND_DATA03 0x015C 0x04A4 0x0000 0x0 0x0
796#define MX6SX_PAD_NAND_DATA03__USDHC1_DATA7 0x015C 0x04A4 0x0000 0x1 0x0
797#define MX6SX_PAD_NAND_DATA03__QSPI2_B_SS0_B 0x015C 0x04A4 0x0000 0x2 0x0
798#define MX6SX_PAD_NAND_DATA03__ECSPI5_SS0 0x015C 0x04A4 0x075C 0x3 0x0
799#define MX6SX_PAD_NAND_DATA03__ESAI_RX_HF_CLK 0x015C 0x04A4 0x0780 0x4 0x0
800#define MX6SX_PAD_NAND_DATA03__GPIO4_IO_7 0x015C 0x04A4 0x0000 0x5 0x0
801#define MX6SX_PAD_NAND_DATA03__WEIM_AD_3 0x015C 0x04A4 0x0000 0x6 0x0
802#define MX6SX_PAD_NAND_DATA03__TPSMP_HDATA_10 0x015C 0x04A4 0x0000 0x7 0x0
803#define MX6SX_PAD_NAND_DATA03__ANATOP_USBPHY1_TSTO_RX_SQUELCH 0x015C 0x04A4 0x0000 0x8 0x0
804#define MX6SX_PAD_NAND_DATA03__SDMA_DEBUG_EVT_CHN_LINES_6 0x015C 0x04A4 0x0000 0x9 0x0
805#define MX6SX_PAD_NAND_DATA04__RAWNAND_DATA04 0x0160 0x04A8 0x0000 0x0 0x0
806#define MX6SX_PAD_NAND_DATA04__USDHC2_DATA4 0x0160 0x04A8 0x0000 0x1 0x0
807#define MX6SX_PAD_NAND_DATA04__QSPI2_B_SS1_B 0x0160 0x04A8 0x0000 0x2 0x0
808#define MX6SX_PAD_NAND_DATA04__UART3_RTS_B 0x0160 0x04A8 0x083C 0x3 0x0
809#define MX6SX_PAD_NAND_DATA04__AUDMUX_AUD4_RXFS 0x0160 0x04A8 0x0650 0x4 0x0
810#define MX6SX_PAD_NAND_DATA04__GPIO4_IO_8 0x0160 0x04A8 0x0000 0x5 0x0
811#define MX6SX_PAD_NAND_DATA04__WEIM_AD_4 0x0160 0x04A8 0x0000 0x6 0x0
812#define MX6SX_PAD_NAND_DATA04__TPSMP_HDATA_11 0x0160 0x04A8 0x0000 0x7 0x0
813#define MX6SX_PAD_NAND_DATA04__ANATOP_USBPHY2_TSTO_RX_SQUELCH 0x0160 0x04A8 0x0000 0x8 0x0
814#define MX6SX_PAD_NAND_DATA04__SDMA_DEBUG_CORE_STATE_0 0x0160 0x04A8 0x0000 0x9 0x0
815#define MX6SX_PAD_NAND_DATA05__RAWNAND_DATA05 0x0164 0x04AC 0x0000 0x0 0x0
816#define MX6SX_PAD_NAND_DATA05__USDHC2_DATA5 0x0164 0x04AC 0x0000 0x1 0x0
817#define MX6SX_PAD_NAND_DATA05__QSPI2_B_DQS 0x0164 0x04AC 0x0000 0x2 0x0
818#define MX6SX_PAD_NAND_DATA05__UART3_CTS_B 0x0164 0x04AC 0x083C 0x3 0x1
819#define MX6SX_PAD_NAND_DATA05__AUDMUX_AUD4_RXC 0x0164 0x04AC 0x064C 0x4 0x0
820#define MX6SX_PAD_NAND_DATA05__GPIO4_IO_9 0x0164 0x04AC 0x0000 0x5 0x0
821#define MX6SX_PAD_NAND_DATA05__WEIM_AD_5 0x0164 0x04AC 0x0000 0x6 0x0
822#define MX6SX_PAD_NAND_DATA05__TPSMP_HDATA_12 0x0164 0x04AC 0x0000 0x7 0x0
823#define MX6SX_PAD_NAND_DATA05__ANATOP_USBPHY2_TSTO_RX_DISCON_DET 0x0164 0x04AC 0x0000 0x8 0x0
824#define MX6SX_PAD_NAND_DATA05__SDMA_DEBUG_CORE_STATE_1 0x0164 0x04AC 0x0000 0x9 0x0
825#define MX6SX_PAD_NAND_DATA06__RAWNAND_DATA06 0x0168 0x04B0 0x0000 0x0 0x0
826#define MX6SX_PAD_NAND_DATA06__USDHC2_DATA6 0x0168 0x04B0 0x0000 0x1 0x0
827#define MX6SX_PAD_NAND_DATA06__QSPI2_A_SS1_B 0x0168 0x04B0 0x0000 0x2 0x0
828#define MX6SX_PAD_NAND_DATA06__UART3_RX 0x0168 0x04B0 0x0840 0x3 0x0
829#define MX6SX_PAD_NAND_DATA06__UART3_TX 0x0168 0x04B0 0x0000 0x3 0x0
830#define MX6SX_PAD_NAND_DATA06__PWM3_OUT 0x0168 0x04B0 0x0000 0x4 0x0
831#define MX6SX_PAD_NAND_DATA06__GPIO4_IO_10 0x0168 0x04B0 0x0000 0x5 0x0
832#define MX6SX_PAD_NAND_DATA06__WEIM_AD_6 0x0168 0x04B0 0x0000 0x6 0x0
833#define MX6SX_PAD_NAND_DATA06__TPSMP_HDATA_13 0x0168 0x04B0 0x0000 0x7 0x0
834#define MX6SX_PAD_NAND_DATA06__ANATOP_USBPHY2_TSTO_RX_FS_RXD 0x0168 0x04B0 0x0000 0x8 0x0
835#define MX6SX_PAD_NAND_DATA06__SDMA_DEBUG_CORE_STATE_2 0x0168 0x04B0 0x0000 0x9 0x0
836#define MX6SX_PAD_NAND_DATA07__RAWNAND_DATA07 0x016C 0x04B4 0x0000 0x0 0x0
837#define MX6SX_PAD_NAND_DATA07__USDHC2_DATA7 0x016C 0x04B4 0x0000 0x1 0x0
838#define MX6SX_PAD_NAND_DATA07__QSPI2_A_DQS 0x016C 0x04B4 0x0000 0x2 0x0
839#define MX6SX_PAD_NAND_DATA07__UART3_RX 0x016C 0x04B4 0x0840 0x3 0x1
840#define MX6SX_PAD_NAND_DATA07__UART3_TX 0x016C 0x04B4 0x0000 0x3 0x0
841#define MX6SX_PAD_NAND_DATA07__PWM4_OUT 0x016C 0x04B4 0x0000 0x4 0x0
842#define MX6SX_PAD_NAND_DATA07__GPIO4_IO_11 0x016C 0x04B4 0x0000 0x5 0x0
843#define MX6SX_PAD_NAND_DATA07__WEIM_AD_7 0x016C 0x04B4 0x0000 0x6 0x0
844#define MX6SX_PAD_NAND_DATA07__TPSMP_HDATA_14 0x016C 0x04B4 0x0000 0x7 0x0
845#define MX6SX_PAD_NAND_DATA07__ANATOP_USBPHY1_TSTO_RX_FS_RXD 0x016C 0x04B4 0x0000 0x8 0x0
846#define MX6SX_PAD_NAND_DATA07__SDMA_DEBUG_CORE_STATE_3 0x016C 0x04B4 0x0000 0x9 0x0
847#define MX6SX_PAD_NAND_RE_B__RAWNAND_RE_B 0x0170 0x04B8 0x0000 0x0 0x0
848#define MX6SX_PAD_NAND_RE_B__USDHC2_RESET_B 0x0170 0x04B8 0x0000 0x1 0x0
849#define MX6SX_PAD_NAND_RE_B__QSPI2_B_DATA_3 0x0170 0x04B8 0x0000 0x2 0x0
850#define MX6SX_PAD_NAND_RE_B__AUDMUX_AUD4_TXFS 0x0170 0x04B8 0x0658 0x3 0x0
851#define MX6SX_PAD_NAND_RE_B__ESAI_TX_FS 0x0170 0x04B8 0x077C 0x4 0x0
852#define MX6SX_PAD_NAND_RE_B__GPIO4_IO_12 0x0170 0x04B8 0x0000 0x5 0x0
853#define MX6SX_PAD_NAND_RE_B__WEIM_RW 0x0170 0x04B8 0x0000 0x6 0x0
854#define MX6SX_PAD_NAND_RE_B__TPSMP_HDATA_5 0x0170 0x04B8 0x0000 0x7 0x0
855#define MX6SX_PAD_NAND_RE_B__ANATOP_USBPHY2_TSTO_RX_HS_RXD 0x0170 0x04B8 0x0000 0x8 0x0
856#define MX6SX_PAD_NAND_RE_B__SDMA_DEBUG_PC_7 0x0170 0x04B8 0x0000 0x9 0x0
857#define MX6SX_PAD_NAND_READY_B__RAWNAND_READY_B 0x0174 0x04BC 0x0000 0x0 0x0
858#define MX6SX_PAD_NAND_READY_B__USDHC1_VSELECT 0x0174 0x04BC 0x0000 0x1 0x0
859#define MX6SX_PAD_NAND_READY_B__QSPI2_A_DATA_1 0x0174 0x04BC 0x0000 0x2 0x0
860#define MX6SX_PAD_NAND_READY_B__ECSPI2_MISO 0x0174 0x04BC 0x0724 0x3 0x0
861#define MX6SX_PAD_NAND_READY_B__ESAI_TX1 0x0174 0x04BC 0x0794 0x4 0x0
862#define MX6SX_PAD_NAND_READY_B__GPIO4_IO_13 0x0174 0x04BC 0x0000 0x5 0x0
863#define MX6SX_PAD_NAND_READY_B__WEIM_EB_B_1 0x0174 0x04BC 0x0000 0x6 0x0
864#define MX6SX_PAD_NAND_READY_B__TPSMP_HDATA_2 0x0174 0x04BC 0x0000 0x7 0x0
865#define MX6SX_PAD_NAND_READY_B__ANATOP_USBPHY1_TSTI_TX_DN 0x0174 0x04BC 0x0000 0x8 0x0
866#define MX6SX_PAD_NAND_READY_B__SDMA_DEBUG_PC_10 0x0174 0x04BC 0x0000 0x9 0x0
867#define MX6SX_PAD_NAND_WE_B__RAWNAND_WE_B 0x0178 0x04C0 0x0000 0x0 0x0
868#define MX6SX_PAD_NAND_WE_B__USDHC4_VSELECT 0x0178 0x04C0 0x0000 0x1 0x0
869#define MX6SX_PAD_NAND_WE_B__QSPI2_B_DATA_2 0x0178 0x04C0 0x0000 0x2 0x0
870#define MX6SX_PAD_NAND_WE_B__AUDMUX_AUD4_RXD 0x0178 0x04C0 0x0644 0x3 0x0
871#define MX6SX_PAD_NAND_WE_B__ESAI_TX5_RX0 0x0178 0x04C0 0x07A4 0x4 0x0
872#define MX6SX_PAD_NAND_WE_B__GPIO4_IO_14 0x0178 0x04C0 0x0000 0x5 0x0
873#define MX6SX_PAD_NAND_WE_B__WEIM_WAIT 0x0178 0x04C0 0x0000 0x6 0x0
874#define MX6SX_PAD_NAND_WE_B__TPSMP_HDATA_6 0x0178 0x04C0 0x0000 0x7 0x0
875#define MX6SX_PAD_NAND_WE_B__ANATOP_USBPHY1_TSTO_PLL_CLK20DIV 0x0178 0x04C0 0x0000 0x8 0x0
876#define MX6SX_PAD_NAND_WE_B__SDMA_DEBUG_PC_6 0x0178 0x04C0 0x0000 0x9 0x0
877#define MX6SX_PAD_NAND_WP_B__RAWNAND_WP_B 0x017C 0x04C4 0x0000 0x0 0x0
878#define MX6SX_PAD_NAND_WP_B__USDHC1_RESET_B 0x017C 0x04C4 0x0000 0x1 0x0
879#define MX6SX_PAD_NAND_WP_B__QSPI2_A_DATA_0 0x017C 0x04C4 0x0000 0x2 0x0
880#define MX6SX_PAD_NAND_WP_B__ECSPI2_MOSI 0x017C 0x04C4 0x0728 0x3 0x0
881#define MX6SX_PAD_NAND_WP_B__ESAI_TX4_RX1 0x017C 0x04C4 0x07A0 0x4 0x0
882#define MX6SX_PAD_NAND_WP_B__GPIO4_IO_15 0x017C 0x04C4 0x0000 0x5 0x0
883#define MX6SX_PAD_NAND_WP_B__WEIM_EB_B_0 0x017C 0x04C4 0x0000 0x6 0x0
884#define MX6SX_PAD_NAND_WP_B__TPSMP_HDATA_1 0x017C 0x04C4 0x0000 0x7 0x0
885#define MX6SX_PAD_NAND_WP_B__ANATOP_USBPHY1_TSTI_TX_HS_MODE 0x017C 0x04C4 0x0000 0x8 0x0
886#define MX6SX_PAD_NAND_WP_B__SDMA_DEBUG_PC_11 0x017C 0x04C4 0x0000 0x9 0x0
887#define MX6SX_PAD_QSPI1A_DATA0__QSPI1_A_DATA_0 0x0180 0x04C8 0x0000 0x0 0x0
888#define MX6SX_PAD_QSPI1A_DATA0__USB_OTG2_OC 0x0180 0x04C8 0x085C 0x1 0x2
889#define MX6SX_PAD_QSPI1A_DATA0__ECSPI1_MOSI 0x0180 0x04C8 0x0718 0x2 0x1
890#define MX6SX_PAD_QSPI1A_DATA0__ESAI_TX4_RX1 0x0180 0x04C8 0x07A0 0x3 0x2
891#define MX6SX_PAD_QSPI1A_DATA0__CSI1_DATA_14 0x0180 0x04C8 0x06D4 0x4 0x1
892#define MX6SX_PAD_QSPI1A_DATA0__GPIO4_IO_16 0x0180 0x04C8 0x0000 0x5 0x0
893#define MX6SX_PAD_QSPI1A_DATA0__WEIM_DATA_6 0x0180 0x04C8 0x0000 0x6 0x0
894#define MX6SX_PAD_QSPI1A_DATA0__SIM_M_HADDR_3 0x0180 0x04C8 0x0000 0x7 0x0
895#define MX6SX_PAD_QSPI1A_DATA0__SDMA_DEBUG_BUS_DEVICE_3 0x0180 0x04C8 0x0000 0x9 0x0
896#define MX6SX_PAD_QSPI1A_DATA1__QSPI1_A_DATA_1 0x0184 0x04CC 0x0000 0x0 0x0
897#define MX6SX_PAD_QSPI1A_DATA1__ANATOP_OTG1_ID 0x0184 0x04CC 0x0624 0x1 0x2
898#define MX6SX_PAD_QSPI1A_DATA1__ECSPI1_MISO 0x0184 0x04CC 0x0714 0x2 0x1
899#define MX6SX_PAD_QSPI1A_DATA1__ESAI_TX1 0x0184 0x04CC 0x0794 0x3 0x2
900#define MX6SX_PAD_QSPI1A_DATA1__CSI1_DATA_13 0x0184 0x04CC 0x06D0 0x4 0x1
901#define MX6SX_PAD_QSPI1A_DATA1__GPIO4_IO_17 0x0184 0x04CC 0x0000 0x5 0x0
902#define MX6SX_PAD_QSPI1A_DATA1__WEIM_DATA_5 0x0184 0x04CC 0x0000 0x6 0x0
903#define MX6SX_PAD_QSPI1A_DATA1__SIM_M_HADDR_4 0x0184 0x04CC 0x0000 0x7 0x0
904#define MX6SX_PAD_QSPI1A_DATA1__SDMA_DEBUG_PC_0 0x0184 0x04CC 0x0000 0x9 0x0
905#define MX6SX_PAD_QSPI1A_DATA2__QSPI1_A_DATA_2 0x0188 0x04D0 0x0000 0x0 0x0
906#define MX6SX_PAD_QSPI1A_DATA2__USB_OTG1_PWR 0x0188 0x04D0 0x0000 0x1 0x0
907#define MX6SX_PAD_QSPI1A_DATA2__ECSPI5_SS1 0x0188 0x04D0 0x0000 0x2 0x0
908#define MX6SX_PAD_QSPI1A_DATA2__ESAI_TX_CLK 0x0188 0x04D0 0x078C 0x3 0x2
909#define MX6SX_PAD_QSPI1A_DATA2__CSI1_DATA_12 0x0188 0x04D0 0x06CC 0x4 0x1
910#define MX6SX_PAD_QSPI1A_DATA2__GPIO4_IO_18 0x0188 0x04D0 0x0000 0x5 0x0
911#define MX6SX_PAD_QSPI1A_DATA2__WEIM_DATA_4 0x0188 0x04D0 0x0000 0x6 0x0
912#define MX6SX_PAD_QSPI1A_DATA2__SIM_M_HADDR_6 0x0188 0x04D0 0x0000 0x7 0x0
913#define MX6SX_PAD_QSPI1A_DATA2__SDMA_DEBUG_PC_1 0x0188 0x04D0 0x0000 0x9 0x0
914#define MX6SX_PAD_QSPI1A_DATA3__QSPI1_A_DATA_3 0x018C 0x04D4 0x0000 0x0 0x0
915#define MX6SX_PAD_QSPI1A_DATA3__USB_OTG1_OC 0x018C 0x04D4 0x0860 0x1 0x2
916#define MX6SX_PAD_QSPI1A_DATA3__ECSPI5_SS2 0x018C 0x04D4 0x0000 0x2 0x0
917#define MX6SX_PAD_QSPI1A_DATA3__ESAI_TX0 0x018C 0x04D4 0x0790 0x3 0x2
918#define MX6SX_PAD_QSPI1A_DATA3__CSI1_DATA_11 0x018C 0x04D4 0x06C8 0x4 0x1
919#define MX6SX_PAD_QSPI1A_DATA3__GPIO4_IO_19 0x018C 0x04D4 0x0000 0x5 0x0
920#define MX6SX_PAD_QSPI1A_DATA3__WEIM_DATA_3 0x018C 0x04D4 0x0000 0x6 0x0
921#define MX6SX_PAD_QSPI1A_DATA3__SIM_M_HADDR_7 0x018C 0x04D4 0x0000 0x7 0x0
922#define MX6SX_PAD_QSPI1A_DATA3__SDMA_DEBUG_PC_2 0x018C 0x04D4 0x0000 0x9 0x0
923#define MX6SX_PAD_QSPI1A_DQS__QSPI1_A_DQS 0x0190 0x04D8 0x0000 0x0 0x0
924#define MX6SX_PAD_QSPI1A_DQS__CAN2_TX 0x0190 0x04D8 0x0000 0x1 0x0
925#define MX6SX_PAD_QSPI1A_DQS__CANFD_TX2 0x0190 0x04D8 0x0000 0x2 0x0
926#define MX6SX_PAD_QSPI1A_DQS__ECSPI5_MOSI 0x0190 0x04D8 0x0758 0x3 0x1
927#define MX6SX_PAD_QSPI1A_DQS__CSI1_DATA_15 0x0190 0x04D8 0x06D8 0x4 0x1
928#define MX6SX_PAD_QSPI1A_DQS__GPIO4_IO_20 0x0190 0x04D8 0x0000 0x5 0x0
929#define MX6SX_PAD_QSPI1A_DQS__WEIM_DATA_7 0x0190 0x04D8 0x0000 0x6 0x0
930#define MX6SX_PAD_QSPI1A_DQS__SIM_M_HADDR_13 0x0190 0x04D8 0x0000 0x7 0x0
931#define MX6SX_PAD_QSPI1A_DQS__SDMA_DEBUG_BUS_DEVICE_4 0x0190 0x04D8 0x0000 0x9 0x0
932#define MX6SX_PAD_QSPI1A_SCLK__QSPI1_A_SCLK 0x0194 0x04DC 0x0000 0x0 0x0
933#define MX6SX_PAD_QSPI1A_SCLK__ANATOP_OTG2_ID 0x0194 0x04DC 0x0628 0x1 0x2
934#define MX6SX_PAD_QSPI1A_SCLK__ECSPI1_SCLK 0x0194 0x04DC 0x0710 0x2 0x1
935#define MX6SX_PAD_QSPI1A_SCLK__ESAI_TX2_RX3 0x0194 0x04DC 0x0798 0x3 0x2
936#define MX6SX_PAD_QSPI1A_SCLK__CSI1_DATA_1 0x0194 0x04DC 0x06A4 0x4 0x1
937#define MX6SX_PAD_QSPI1A_SCLK__GPIO4_IO_21 0x0194 0x04DC 0x0000 0x5 0x0
938#define MX6SX_PAD_QSPI1A_SCLK__WEIM_DATA_0 0x0194 0x04DC 0x0000 0x6 0x0
939#define MX6SX_PAD_QSPI1A_SCLK__SIM_M_HADDR_0 0x0194 0x04DC 0x0000 0x7 0x0
940#define MX6SX_PAD_QSPI1A_SCLK__SDMA_DEBUG_PC_5 0x0194 0x04DC 0x0000 0x9 0x0
941#define MX6SX_PAD_QSPI1A_SS0_B__QSPI1_A_SS0_B 0x0198 0x04E0 0x0000 0x0 0x0
942#define MX6SX_PAD_QSPI1A_SS0_B__USB_OTG2_PWR 0x0198 0x04E0 0x0000 0x1 0x0
943#define MX6SX_PAD_QSPI1A_SS0_B__ECSPI1_SS0 0x0198 0x04E0 0x071C 0x2 0x1
944#define MX6SX_PAD_QSPI1A_SS0_B__ESAI_TX3_RX2 0x0198 0x04E0 0x079C 0x3 0x2
945#define MX6SX_PAD_QSPI1A_SS0_B__CSI1_DATA_0 0x0198 0x04E0 0x06A0 0x4 0x1
946#define MX6SX_PAD_QSPI1A_SS0_B__GPIO4_IO_22 0x0198 0x04E0 0x0000 0x5 0x0
947#define MX6SX_PAD_QSPI1A_SS0_B__WEIM_DATA_1 0x0198 0x04E0 0x0000 0x6 0x0
948#define MX6SX_PAD_QSPI1A_SS0_B__SIM_M_HADDR_1 0x0198 0x04E0 0x0000 0x7 0x0
949#define MX6SX_PAD_QSPI1A_SS0_B__SDMA_DEBUG_PC_4 0x0198 0x04E0 0x0000 0x9 0x0
950#define MX6SX_PAD_QSPI1A_SS1_B__QSPI1_A_SS1_B 0x019C 0x04E4 0x0000 0x0 0x0
951#define MX6SX_PAD_QSPI1A_SS1_B__CAN1_RX 0x019C 0x04E4 0x068C 0x1 0x2
952#define MX6SX_PAD_QSPI1A_SS1_B__CANFD_RX1 0x019C 0x04E4 0x0694 0x2 0x2
953#define MX6SX_PAD_QSPI1A_SS1_B__ECSPI5_MISO 0x019C 0x04E4 0x0754 0x3 0x1
954#define MX6SX_PAD_QSPI1A_SS1_B__CSI1_DATA_10 0x019C 0x04E4 0x06FC 0x4 0x1
955#define MX6SX_PAD_QSPI1A_SS1_B__GPIO4_IO_23 0x019C 0x04E4 0x0000 0x5 0x0
956#define MX6SX_PAD_QSPI1A_SS1_B__WEIM_DATA_2 0x019C 0x04E4 0x0000 0x6 0x0
957#define MX6SX_PAD_QSPI1A_SS1_B__SIM_M_HADDR_12 0x019C 0x04E4 0x0000 0x7 0x0
958#define MX6SX_PAD_QSPI1A_SS1_B__SDMA_DEBUG_PC_3 0x019C 0x04E4 0x0000 0x9 0x0
959#define MX6SX_PAD_QSPI1B_DATA0__QSPI1_B_DATA_0 0x01A0 0x04E8 0x0000 0x0 0x0
960#define MX6SX_PAD_QSPI1B_DATA0__UART3_CTS_B 0x01A0 0x04E8 0x083C 0x1 0x4
961#define MX6SX_PAD_QSPI1B_DATA0__ECSPI3_MOSI 0x01A0 0x04E8 0x0738 0x2 0x1
962#define MX6SX_PAD_QSPI1B_DATA0__ESAI_RX_FS 0x01A0 0x04E8 0x0778 0x3 0x2
963#define MX6SX_PAD_QSPI1B_DATA0__CSI1_DATA_22 0x01A0 0x04E8 0x06F4 0x4 0x1
964#define MX6SX_PAD_QSPI1B_DATA0__GPIO4_IO_24 0x01A0 0x04E8 0x0000 0x5 0x0
965#define MX6SX_PAD_QSPI1B_DATA0__WEIM_DATA_14 0x01A0 0x04E8 0x0000 0x6 0x0
966#define MX6SX_PAD_QSPI1B_DATA0__SIM_M_HADDR_9 0x01A0 0x04E8 0x0000 0x7 0x0
967#define MX6SX_PAD_QSPI1B_DATA1__QSPI1_B_DATA_1 0x01A4 0x04EC 0x0000 0x0 0x0
968#define MX6SX_PAD_QSPI1B_DATA1__UART3_RTS_B 0x01A4 0x04EC 0x083C 0x1 0x5
969#define MX6SX_PAD_QSPI1B_DATA1__ECSPI3_MISO 0x01A4 0x04EC 0x0734 0x2 0x1
970#define MX6SX_PAD_QSPI1B_DATA1__ESAI_RX_CLK 0x01A4 0x04EC 0x0788 0x3 0x2
971#define MX6SX_PAD_QSPI1B_DATA1__CSI1_DATA_21 0x01A4 0x04EC 0x06F0 0x4 0x1
972#define MX6SX_PAD_QSPI1B_DATA1__GPIO4_IO_25 0x01A4 0x04EC 0x0000 0x5 0x0
973#define MX6SX_PAD_QSPI1B_DATA1__WEIM_DATA_13 0x01A4 0x04EC 0x0000 0x6 0x0
974#define MX6SX_PAD_QSPI1B_DATA1__SIM_M_HADDR_8 0x01A4 0x04EC 0x0000 0x7 0x0
975#define MX6SX_PAD_QSPI1B_DATA2__QSPI1_B_DATA_2 0x01A8 0x04F0 0x0000 0x0 0x0
976#define MX6SX_PAD_QSPI1B_DATA2__I2C2_SDA 0x01A8 0x04F0 0x07B4 0x1 0x2
977#define MX6SX_PAD_QSPI1B_DATA2__ECSPI5_RDY 0x01A8 0x04F0 0x0000 0x2 0x0
978#define MX6SX_PAD_QSPI1B_DATA2__ESAI_TX5_RX0 0x01A8 0x04F0 0x07A4 0x3 0x2
979#define MX6SX_PAD_QSPI1B_DATA2__CSI1_DATA_20 0x01A8 0x04F0 0x06EC 0x4 0x1
980#define MX6SX_PAD_QSPI1B_DATA2__GPIO4_IO_26 0x01A8 0x04F0 0x0000 0x5 0x0
981#define MX6SX_PAD_QSPI1B_DATA2__WEIM_DATA_12 0x01A8 0x04F0 0x0000 0x6 0x0
982#define MX6SX_PAD_QSPI1B_DATA2__SIM_M_HADDR_5 0x01A8 0x04F0 0x0000 0x7 0x0
983#define MX6SX_PAD_QSPI1B_DATA3__QSPI1_B_DATA_3 0x01AC 0x04F4 0x0000 0x0 0x0
984#define MX6SX_PAD_QSPI1B_DATA3__I2C2_SCL 0x01AC 0x04F4 0x07B0 0x1 0x2
985#define MX6SX_PAD_QSPI1B_DATA3__ECSPI5_SS3 0x01AC 0x04F4 0x0000 0x2 0x0
986#define MX6SX_PAD_QSPI1B_DATA3__ESAI_TX_FS 0x01AC 0x04F4 0x077C 0x3 0x2
987#define MX6SX_PAD_QSPI1B_DATA3__CSI1_DATA_19 0x01AC 0x04F4 0x06E8 0x4 0x1
988#define MX6SX_PAD_QSPI1B_DATA3__GPIO4_IO_27 0x01AC 0x04F4 0x0000 0x5 0x0
989#define MX6SX_PAD_QSPI1B_DATA3__WEIM_DATA_11 0x01AC 0x04F4 0x0000 0x6 0x0
990#define MX6SX_PAD_QSPI1B_DATA3__SIM_M_HADDR_2 0x01AC 0x04F4 0x0000 0x7 0x0
991#define MX6SX_PAD_QSPI1B_DQS__QSPI1_B_DQS 0x01B0 0x04F8 0x0000 0x0 0x0
992#define MX6SX_PAD_QSPI1B_DQS__CAN1_TX 0x01B0 0x04F8 0x0000 0x1 0x0
993#define MX6SX_PAD_QSPI1B_DQS__CANFD_TX1 0x01B0 0x04F8 0x0000 0x2 0x0
994#define MX6SX_PAD_QSPI1B_DQS__ECSPI5_SS0 0x01B0 0x04F8 0x075C 0x3 0x1
995#define MX6SX_PAD_QSPI1B_DQS__CSI1_DATA_23 0x01B0 0x04F8 0x06F8 0x4 0x1
996#define MX6SX_PAD_QSPI1B_DQS__GPIO4_IO_28 0x01B0 0x04F8 0x0000 0x5 0x0
997#define MX6SX_PAD_QSPI1B_DQS__WEIM_DATA_15 0x01B0 0x04F8 0x0000 0x6 0x0
998#define MX6SX_PAD_QSPI1B_DQS__SIM_M_HADDR_15 0x01B0 0x04F8 0x0000 0x7 0x0
999#define MX6SX_PAD_QSPI1B_SCLK__QSPI1_B_SCLK 0x01B4 0x04FC 0x0000 0x0 0x0
1000#define MX6SX_PAD_QSPI1B_SCLK__UART3_RX 0x01B4 0x04FC 0x0840 0x1 0x4
1001#define MX6SX_PAD_QSPI1B_SCLK__UART3_TX 0x01B4 0x04FC 0x0000 0x0 0x0
1002#define MX6SX_PAD_QSPI1B_SCLK__ECSPI3_SCLK 0x01B4 0x04FC 0x0730 0x2 0x1
1003#define MX6SX_PAD_QSPI1B_SCLK__ESAI_RX_HF_CLK 0x01B4 0x04FC 0x0780 0x3 0x2
1004#define MX6SX_PAD_QSPI1B_SCLK__CSI1_DATA_16 0x01B4 0x04FC 0x06DC 0x4 0x1
1005#define MX6SX_PAD_QSPI1B_SCLK__GPIO4_IO_29 0x01B4 0x04FC 0x0000 0x5 0x0
1006#define MX6SX_PAD_QSPI1B_SCLK__WEIM_DATA_8 0x01B4 0x04FC 0x0000 0x6 0x0
1007#define MX6SX_PAD_QSPI1B_SCLK__SIM_M_HADDR_11 0x01B4 0x04FC 0x0000 0x7 0x0
1008#define MX6SX_PAD_QSPI1B_SS0_B__QSPI1_B_SS0_B 0x01B8 0x0500 0x0000 0x0 0x0
1009#define MX6SX_PAD_QSPI1B_SS0_B__UART3_RX 0x01B8 0x0500 0x0840 0x1 0x5
1010#define MX6SX_PAD_QSPI1B_SS0_B__UART3_TX 0x01B8 0x0500 0x0000 0x1 0x0
1011#define MX6SX_PAD_QSPI1B_SS0_B__ECSPI3_SS0 0x01B8 0x0500 0x073C 0x2 0x1
1012#define MX6SX_PAD_QSPI1B_SS0_B__ESAI_TX_HF_CLK 0x01B8 0x0500 0x0784 0x3 0x3
1013#define MX6SX_PAD_QSPI1B_SS0_B__CSI1_DATA_17 0x01B8 0x0500 0x06E0 0x4 0x1
1014#define MX6SX_PAD_QSPI1B_SS0_B__GPIO4_IO_30 0x01B8 0x0500 0x0000 0x5 0x0
1015#define MX6SX_PAD_QSPI1B_SS0_B__WEIM_DATA_9 0x01B8 0x0500 0x0000 0x6 0x0
1016#define MX6SX_PAD_QSPI1B_SS0_B__SIM_M_HADDR_10 0x01B8 0x0500 0x0000 0x7 0x0
1017#define MX6SX_PAD_QSPI1B_SS1_B__QSPI1_B_SS1_B 0x01BC 0x0504 0x0000 0x0 0x0
1018#define MX6SX_PAD_QSPI1B_SS1_B__CAN2_RX 0x01BC 0x0504 0x0690 0x1 0x2
1019#define MX6SX_PAD_QSPI1B_SS1_B__CANFD_RX2 0x01BC 0x0504 0x0698 0x2 0x2
1020#define MX6SX_PAD_QSPI1B_SS1_B__ECSPI5_SCLK 0x01BC 0x0504 0x0750 0x3 0x1
1021#define MX6SX_PAD_QSPI1B_SS1_B__CSI1_DATA_18 0x01BC 0x0504 0x06E4 0x4 0x1
1022#define MX6SX_PAD_QSPI1B_SS1_B__GPIO4_IO_31 0x01BC 0x0504 0x0000 0x5 0x0
1023#define MX6SX_PAD_QSPI1B_SS1_B__WEIM_DATA_10 0x01BC 0x0504 0x0000 0x6 0x0
1024#define MX6SX_PAD_QSPI1B_SS1_B__SIM_M_HADDR_14 0x01BC 0x0504 0x0000 0x7 0x0
1025#define MX6SX_PAD_RGMII1_RD0__ENET1_RX_DATA_0 0x01C0 0x0508 0x0000 0x0 0x0
1026#define MX6SX_PAD_RGMII1_RD0__GPIO5_IO_0 0x01C0 0x0508 0x0000 0x5 0x0
1027#define MX6SX_PAD_RGMII1_RD0__CSI2_DATA_10 0x01C0 0x0508 0x0000 0x6 0x0
1028#define MX6SX_PAD_RGMII1_RD0__ANATOP_TESTI_0 0x01C0 0x0508 0x0000 0x7 0x0
1029#define MX6SX_PAD_RGMII1_RD0__RAWNAND_TESTER_TRIGGER 0x01C0 0x0508 0x0000 0x8 0x0
1030#define MX6SX_PAD_RGMII1_RD0__PCIE_CTRL_DEBUG_0 0x01C0 0x0508 0x0000 0x9 0x0
1031#define MX6SX_PAD_RGMII1_RD1__ENET1_RX_DATA_1 0x01C4 0x050C 0x0000 0x0 0x0
1032#define MX6SX_PAD_RGMII1_RD1__GPIO5_IO_1 0x01C4 0x050C 0x0000 0x5 0x0
1033#define MX6SX_PAD_RGMII1_RD1__CSI2_DATA_11 0x01C4 0x050C 0x0000 0x6 0x0
1034#define MX6SX_PAD_RGMII1_RD1__ANATOP_TESTI_1 0x01C4 0x050C 0x0000 0x7 0x0
1035#define MX6SX_PAD_RGMII1_RD1__USDHC1_TESTER_TRIGGER 0x01C4 0x050C 0x0000 0x8 0x0
1036#define MX6SX_PAD_RGMII1_RD1__PCIE_CTRL_DEBUG_1 0x01C4 0x050C 0x0000 0x9 0x0
1037#define MX6SX_PAD_RGMII1_RD2__ENET1_RX_DATA_2 0x01C8 0x0510 0x0000 0x0 0x0
1038#define MX6SX_PAD_RGMII1_RD2__GPIO5_IO_2 0x01C8 0x0510 0x0000 0x5 0x0
1039#define MX6SX_PAD_RGMII1_RD2__CSI2_DATA_12 0x01C8 0x0510 0x0000 0x6 0x0
1040#define MX6SX_PAD_RGMII1_RD2__ANATOP_TESTI_2 0x01C8 0x0510 0x0000 0x7 0x0
1041#define MX6SX_PAD_RGMII1_RD2__USDHC2_TESTER_TRIGGER 0x01C8 0x0510 0x0000 0x8 0x0
1042#define MX6SX_PAD_RGMII1_RD2__PCIE_CTRL_DEBUG_2 0x01C8 0x0510 0x0000 0x9 0x0
1043#define MX6SX_PAD_RGMII1_RD3__ENET1_RX_DATA_3 0x01CC 0x0514 0x0000 0x0 0x0
1044#define MX6SX_PAD_RGMII1_RD3__GPIO5_IO_3 0x01CC 0x0514 0x0000 0x5 0x0
1045#define MX6SX_PAD_RGMII1_RD3__CSI2_DATA_13 0x01CC 0x0514 0x0000 0x6 0x0
1046#define MX6SX_PAD_RGMII1_RD3__ANATOP_TESTI_3 0x01CC 0x0514 0x0000 0x7 0x0
1047#define MX6SX_PAD_RGMII1_RD3__USDHC3_TESTER_TRIGGER 0x01CC 0x0514 0x0000 0x8 0x0
1048#define MX6SX_PAD_RGMII1_RD3__PCIE_CTRL_DEBUG_3 0x01CC 0x0514 0x0000 0x9 0x0
1049#define MX6SX_PAD_RGMII1_RX_CTL__ENET1_RX_EN 0x01D0 0x0518 0x0000 0x0 0x0
1050#define MX6SX_PAD_RGMII1_RX_CTL__GPIO5_IO_4 0x01D0 0x0518 0x0000 0x5 0x0
1051#define MX6SX_PAD_RGMII1_RX_CTL__CSI2_DATA_14 0x01D0 0x0518 0x0000 0x6 0x0
1052#define MX6SX_PAD_RGMII1_RX_CTL__ANATOP_TESTO_0 0x01D0 0x0518 0x0000 0x7 0x0
1053#define MX6SX_PAD_RGMII1_RX_CTL__USDHC4_TESTER_TRIGGER 0x01D0 0x0518 0x0000 0x8 0x0
1054#define MX6SX_PAD_RGMII1_RX_CTL__PCIE_CTRL_DEBUG_4 0x01D0 0x0518 0x0000 0x9 0x0
1055#define MX6SX_PAD_RGMII1_RXC__ENET1_RX_CLK 0x01D4 0x051C 0x0768 0x0 0x1
1056#define MX6SX_PAD_RGMII1_RXC__ENET1_RX_ER 0x01D4 0x051C 0x0000 0x1 0x0
1057#define MX6SX_PAD_RGMII1_RXC__GPIO5_IO_5 0x01D4 0x051C 0x0000 0x5 0x0
1058#define MX6SX_PAD_RGMII1_RXC__CSI2_DATA_15 0x01D4 0x051C 0x0000 0x6 0x0
1059#define MX6SX_PAD_RGMII1_RXC__ANATOP_TESTO_1 0x01D4 0x051C 0x0000 0x7 0x0
1060#define MX6SX_PAD_RGMII1_RXC__ECSPI1_TESTER_TRIGGER 0x01D4 0x051C 0x0000 0x8 0x0
1061#define MX6SX_PAD_RGMII1_RXC__PCIE_CTRL_DEBUG_5 0x01D4 0x051C 0x0000 0x9 0x0
1062#define MX6SX_PAD_RGMII1_TD0__ENET1_TX_DATA_0 0x01D8 0x0520 0x0000 0x0 0x0
1063#define MX6SX_PAD_RGMII1_TD0__SAI2_RX_SYNC 0x01D8 0x0520 0x0810 0x2 0x1
1064#define MX6SX_PAD_RGMII1_TD0__GPIO5_IO_6 0x01D8 0x0520 0x0000 0x5 0x0
1065#define MX6SX_PAD_RGMII1_TD0__CSI2_DATA_16 0x01D8 0x0520 0x0000 0x6 0x0
1066#define MX6SX_PAD_RGMII1_TD0__ANATOP_TESTO_2 0x01D8 0x0520 0x0000 0x7 0x0
1067#define MX6SX_PAD_RGMII1_TD0__ECSPI2_TESTER_TRIGGER 0x01D8 0x0520 0x0000 0x8 0x0
1068#define MX6SX_PAD_RGMII1_TD0__PCIE_CTRL_DEBUG_6 0x01D8 0x0520 0x0000 0x9 0x0
1069#define MX6SX_PAD_RGMII1_TD1__ENET1_TX_DATA_1 0x01DC 0x0524 0x0000 0x0 0x0
1070#define MX6SX_PAD_RGMII1_TD1__SAI2_RX_BCLK 0x01DC 0x0524 0x0808 0x2 0x1
1071#define MX6SX_PAD_RGMII1_TD1__GPIO5_IO_7 0x01DC 0x0524 0x0000 0x5 0x0
1072#define MX6SX_PAD_RGMII1_TD1__CSI2_DATA_17 0x01DC 0x0524 0x0000 0x6 0x0
1073#define MX6SX_PAD_RGMII1_TD1__ANATOP_TESTO_3 0x01DC 0x0524 0x0000 0x7 0x0
1074#define MX6SX_PAD_RGMII1_TD1__ECSPI3_TESTER_TRIGGER 0x01DC 0x0524 0x0000 0x8 0x0
1075#define MX6SX_PAD_RGMII1_TD1__PCIE_CTRL_DEBUG_7 0x01DC 0x0524 0x0000 0x9 0x0
1076#define MX6SX_PAD_RGMII1_TD2__ENET1_TX_DATA_2 0x01E0 0x0528 0x0000 0x0 0x0
1077#define MX6SX_PAD_RGMII1_TD2__SAI2_TX_SYNC 0x01E0 0x0528 0x0818 0x2 0x1
1078#define MX6SX_PAD_RGMII1_TD2__GPIO5_IO_8 0x01E0 0x0528 0x0000 0x5 0x0
1079#define MX6SX_PAD_RGMII1_TD2__CSI2_DATA_18 0x01E0 0x0528 0x0000 0x6 0x0
1080#define MX6SX_PAD_RGMII1_TD2__ANATOP_TESTO_4 0x01E0 0x0528 0x0000 0x7 0x0
1081#define MX6SX_PAD_RGMII1_TD2__ECSPI4_TESTER_TRIGGER 0x01E0 0x0528 0x0000 0x8 0x0
1082#define MX6SX_PAD_RGMII1_TD2__PCIE_CTRL_DEBUG_8 0x01E0 0x0528 0x0000 0x9 0x0
1083#define MX6SX_PAD_RGMII1_TD3__ENET1_TX_DATA_3 0x01E4 0x052C 0x0000 0x0 0x0
1084#define MX6SX_PAD_RGMII1_TD3__SAI2_TX_BCLK 0x01E4 0x052C 0x0814 0x2 0x1
1085#define MX6SX_PAD_RGMII1_TD3__GPIO5_IO_9 0x01E4 0x052C 0x0000 0x5 0x0
1086#define MX6SX_PAD_RGMII1_TD3__CSI2_DATA_19 0x01E4 0x052C 0x0000 0x6 0x0
1087#define MX6SX_PAD_RGMII1_TD3__ANATOP_TESTO_5 0x01E4 0x052C 0x0000 0x7 0x0
1088#define MX6SX_PAD_RGMII1_TD3__ECSPI5_TESTER_TRIGGER 0x01E4 0x052C 0x0000 0x8 0x0
1089#define MX6SX_PAD_RGMII1_TD3__PCIE_CTRL_DEBUG_9 0x01E4 0x052C 0x0000 0x9 0x0
1090#define MX6SX_PAD_RGMII1_TX_CTL__ENET1_TX_EN 0x01E8 0x0530 0x0000 0x0 0x0
1091#define MX6SX_PAD_RGMII1_TX_CTL__SAI2_RX_DATA_0 0x01E8 0x0530 0x080C 0x2 0x1
1092#define MX6SX_PAD_RGMII1_TX_CTL__GPIO5_IO_10 0x01E8 0x0530 0x0000 0x5 0x0
1093#define MX6SX_PAD_RGMII1_TX_CTL__CSI2_DATA_0 0x01E8 0x0530 0x0000 0x6 0x0
1094#define MX6SX_PAD_RGMII1_TX_CTL__ANATOP_TESTO_6 0x01E8 0x0530 0x0000 0x7 0x0
1095#define MX6SX_PAD_RGMII1_TX_CTL__QSPI1_TESTER_TRIGGER 0x01E8 0x0530 0x0000 0x8 0x0
1096#define MX6SX_PAD_RGMII1_TX_CTL__PCIE_CTRL_DEBUG_10 0x01E8 0x0530 0x0000 0x9 0x0
1097#define MX6SX_PAD_RGMII1_TXC__ENET1_RGMII_TXC 0x01EC 0x0534 0x0000 0x0 0x0
1098#define MX6SX_PAD_RGMII1_TXC__ENET1_TX_ER 0x01EC 0x0534 0x0000 0x1 0x0
1099#define MX6SX_PAD_RGMII1_TXC__SAI2_TX_DATA_0 0x01EC 0x0534 0x0000 0x2 0x0
1100#define MX6SX_PAD_RGMII1_TXC__GPIO5_IO_11 0x01EC 0x0534 0x0000 0x5 0x0
1101#define MX6SX_PAD_RGMII1_TXC__CSI2_DATA_1 0x01EC 0x0534 0x0000 0x6 0x0
1102#define MX6SX_PAD_RGMII1_TXC__ANATOP_TESTO_7 0x01EC 0x0534 0x0000 0x7 0x0
1103#define MX6SX_PAD_RGMII1_TXC__QSPI2_TESTER_TRIGGER 0x01EC 0x0534 0x0000 0x8 0x0
1104#define MX6SX_PAD_RGMII1_TXC__PCIE_CTRL_DEBUG_11 0x01EC 0x0534 0x0000 0x9 0x0
1105#define MX6SX_PAD_RGMII2_RD0__ENET2_RX_DATA_0 0x01F0 0x0538 0x0000 0x0 0x0
1106#define MX6SX_PAD_RGMII2_RD0__PWM4_OUT 0x01F0 0x0538 0x0000 0x2 0x0
1107#define MX6SX_PAD_RGMII2_RD0__GPIO5_IO_12 0x01F0 0x0538 0x0000 0x5 0x0
1108#define MX6SX_PAD_RGMII2_RD0__CSI2_DATA_2 0x01F0 0x0538 0x0000 0x6 0x0
1109#define MX6SX_PAD_RGMII2_RD0__ANATOP_TESTO_8 0x01F0 0x0538 0x0000 0x7 0x0
1110#define MX6SX_PAD_RGMII2_RD0__VDEC_DEBUG_18 0x01F0 0x0538 0x0000 0x8 0x0
1111#define MX6SX_PAD_RGMII2_RD0__PCIE_CTRL_DEBUG_12 0x01F0 0x0538 0x0000 0x9 0x0
1112#define MX6SX_PAD_RGMII2_RD1__ENET2_RX_DATA_1 0x01F4 0x053C 0x0000 0x0 0x0
1113#define MX6SX_PAD_RGMII2_RD1__PWM3_OUT 0x01F4 0x053C 0x0000 0x2 0x0
1114#define MX6SX_PAD_RGMII2_RD1__GPIO5_IO_13 0x01F4 0x053C 0x0000 0x5 0x0
1115#define MX6SX_PAD_RGMII2_RD1__CSI2_DATA_3 0x01F4 0x053C 0x0000 0x6 0x0
1116#define MX6SX_PAD_RGMII2_RD1__ANATOP_TESTO_9 0x01F4 0x053C 0x0000 0x7 0x0
1117#define MX6SX_PAD_RGMII2_RD1__VDEC_DEBUG_19 0x01F4 0x053C 0x0000 0x8 0x0
1118#define MX6SX_PAD_RGMII2_RD1__PCIE_CTRL_DEBUG_13 0x01F4 0x053C 0x0000 0x9 0x0
1119#define MX6SX_PAD_RGMII2_RD2__ENET2_RX_DATA_2 0x01F8 0x0540 0x0000 0x0 0x0
1120#define MX6SX_PAD_RGMII2_RD2__PWM2_OUT 0x01F8 0x0540 0x0000 0x2 0x0
1121#define MX6SX_PAD_RGMII2_RD2__GPIO5_IO_14 0x01F8 0x0540 0x0000 0x5 0x0
1122#define MX6SX_PAD_RGMII2_RD2__CSI2_DATA_4 0x01F8 0x0540 0x0000 0x6 0x0
1123#define MX6SX_PAD_RGMII2_RD2__ANATOP_TESTO_10 0x01F8 0x0540 0x0000 0x7 0x0
1124#define MX6SX_PAD_RGMII2_RD2__VDEC_DEBUG_20 0x01F8 0x0540 0x0000 0x8 0x0
1125#define MX6SX_PAD_RGMII2_RD2__PCIE_CTRL_DEBUG_14 0x01F8 0x0540 0x0000 0x9 0x0
1126#define MX6SX_PAD_RGMII2_RD3__ENET2_RX_DATA_3 0x01FC 0x0544 0x0000 0x0 0x0
1127#define MX6SX_PAD_RGMII2_RD3__PWM1_OUT 0x01FC 0x0544 0x0000 0x2 0x0
1128#define MX6SX_PAD_RGMII2_RD3__GPIO5_IO_15 0x01FC 0x0544 0x0000 0x5 0x0
1129#define MX6SX_PAD_RGMII2_RD3__CSI2_DATA_5 0x01FC 0x0544 0x0000 0x6 0x0
1130#define MX6SX_PAD_RGMII2_RD3__ANATOP_TESTO_11 0x01FC 0x0544 0x0000 0x7 0x0
1131#define MX6SX_PAD_RGMII2_RD3__VDEC_DEBUG_21 0x01FC 0x0544 0x0000 0x8 0x0
1132#define MX6SX_PAD_RGMII2_RD3__PCIE_CTRL_DEBUG_15 0x01FC 0x0544 0x0000 0x9 0x0
1133#define MX6SX_PAD_RGMII2_RX_CTL__ENET2_RX_EN 0x0200 0x0548 0x0000 0x0 0x0
1134#define MX6SX_PAD_RGMII2_RX_CTL__GPIO5_IO_16 0x0200 0x0548 0x0000 0x5 0x0
1135#define MX6SX_PAD_RGMII2_RX_CTL__CSI2_DATA_6 0x0200 0x0548 0x0000 0x6 0x0
1136#define MX6SX_PAD_RGMII2_RX_CTL__ANATOP_TESTO_12 0x0200 0x0548 0x0000 0x7 0x0
1137#define MX6SX_PAD_RGMII2_RX_CTL__VDEC_DEBUG_22 0x0200 0x0548 0x0000 0x8 0x0
1138#define MX6SX_PAD_RGMII2_RX_CTL__PCIE_CTRL_DEBUG_16 0x0200 0x0548 0x0000 0x9 0x0
1139#define MX6SX_PAD_RGMII2_RXC__ENET2_RX_CLK 0x0204 0x054C 0x0774 0x0 0x1
1140#define MX6SX_PAD_RGMII2_RXC__ENET2_RX_ER 0x0204 0x054C 0x0000 0x1 0x0
1141#define MX6SX_PAD_RGMII2_RXC__GPIO5_IO_17 0x0204 0x054C 0x0000 0x5 0x0
1142#define MX6SX_PAD_RGMII2_RXC__CSI2_DATA_7 0x0204 0x054C 0x0000 0x6 0x0
1143#define MX6SX_PAD_RGMII2_RXC__ANATOP_TESTO_13 0x0204 0x054C 0x0000 0x7 0x0
1144#define MX6SX_PAD_RGMII2_RXC__VDEC_DEBUG_23 0x0204 0x054C 0x0000 0x8 0x0
1145#define MX6SX_PAD_RGMII2_RXC__PCIE_CTRL_DEBUG_17 0x0204 0x054C 0x0000 0x9 0x0
1146#define MX6SX_PAD_RGMII2_TD0__ENET2_TX_DATA_0 0x0208 0x0550 0x0000 0x0 0x0
1147#define MX6SX_PAD_RGMII2_TD0__SAI1_RX_SYNC 0x0208 0x0550 0x07FC 0x2 0x1
1148#define MX6SX_PAD_RGMII2_TD0__PWM8_OUT 0x0208 0x0550 0x0000 0x3 0x0
1149#define MX6SX_PAD_RGMII2_TD0__GPIO5_IO_18 0x0208 0x0550 0x0000 0x5 0x0
1150#define MX6SX_PAD_RGMII2_TD0__CSI2_DATA_8 0x0208 0x0550 0x0000 0x6 0x0
1151#define MX6SX_PAD_RGMII2_TD0__ANATOP_TESTO_14 0x0208 0x0550 0x0000 0x7 0x0
1152#define MX6SX_PAD_RGMII2_TD0__VDEC_DEBUG_24 0x0208 0x0550 0x0000 0x8 0x0
1153#define MX6SX_PAD_RGMII2_TD0__PCIE_CTRL_DEBUG_18 0x0208 0x0550 0x0000 0x9 0x0
1154#define MX6SX_PAD_RGMII2_TD1__ENET2_TX_DATA_1 0x020C 0x0554 0x0000 0x0 0x0
1155#define MX6SX_PAD_RGMII2_TD1__SAI1_RX_BCLK 0x020C 0x0554 0x07F4 0x2 0x1
1156#define MX6SX_PAD_RGMII2_TD1__PWM7_OUT 0x020C 0x0554 0x0000 0x3 0x0
1157#define MX6SX_PAD_RGMII2_TD1__GPIO5_IO_19 0x020C 0x0554 0x0000 0x5 0x0
1158#define MX6SX_PAD_RGMII2_TD1__CSI2_DATA_9 0x020C 0x0554 0x0000 0x6 0x0
1159#define MX6SX_PAD_RGMII2_TD1__ANATOP_TESTO_15 0x020C 0x0554 0x0000 0x7 0x0
1160#define MX6SX_PAD_RGMII2_TD1__VDEC_DEBUG_25 0x020C 0x0554 0x0000 0x8 0x0
1161#define MX6SX_PAD_RGMII2_TD1__PCIE_CTRL_DEBUG_19 0x020C 0x0554 0x0000 0x9 0x0
1162#define MX6SX_PAD_RGMII2_TD2__ENET2_TX_DATA_2 0x0210 0x0558 0x0000 0x0 0x0
1163#define MX6SX_PAD_RGMII2_TD2__SAI1_TX_SYNC 0x0210 0x0558 0x0804 0x2 0x1
1164#define MX6SX_PAD_RGMII2_TD2__PWM6_OUT 0x0210 0x0558 0x0000 0x3 0x0
1165#define MX6SX_PAD_RGMII2_TD2__GPIO5_IO_20 0x0210 0x0558 0x0000 0x5 0x0
1166#define MX6SX_PAD_RGMII2_TD2__CSI2_VSYNC 0x0210 0x0558 0x0000 0x6 0x0
1167#define MX6SX_PAD_RGMII2_TD2__SJC_FAIL 0x0210 0x0558 0x0000 0x7 0x0
1168#define MX6SX_PAD_RGMII2_TD2__VDEC_DEBUG_26 0x0210 0x0558 0x0000 0x8 0x0
1169#define MX6SX_PAD_RGMII2_TD2__PCIE_CTRL_DEBUG_20 0x0210 0x0558 0x0000 0x9 0x0
1170#define MX6SX_PAD_RGMII2_TD3__ENET2_TX_DATA_3 0x0214 0x055C 0x0000 0x0 0x0
1171#define MX6SX_PAD_RGMII2_TD3__SAI1_TX_BCLK 0x0214 0x055C 0x0800 0x2 0x1
1172#define MX6SX_PAD_RGMII2_TD3__PWM5_OUT 0x0214 0x055C 0x0000 0x3 0x0
1173#define MX6SX_PAD_RGMII2_TD3__GPIO5_IO_21 0x0214 0x055C 0x0000 0x5 0x0
1174#define MX6SX_PAD_RGMII2_TD3__CSI2_HSYNC 0x0214 0x055C 0x0000 0x6 0x0
1175#define MX6SX_PAD_RGMII2_TD3__SJC_JTAG_ACT 0x0214 0x055C 0x0000 0x7 0x0
1176#define MX6SX_PAD_RGMII2_TD3__VDEC_DEBUG_27 0x0214 0x055C 0x0000 0x8 0x0
1177#define MX6SX_PAD_RGMII2_TD3__PCIE_CTRL_DEBUG_21 0x0214 0x055C 0x0000 0x9 0x0
1178#define MX6SX_PAD_RGMII2_TX_CTL__ENET2_TX_EN 0x0218 0x0560 0x0000 0x0 0x0
1179#define MX6SX_PAD_RGMII2_TX_CTL__SAI1_RX_DATA_0 0x0218 0x0560 0x07F8 0x2 0x1
1180#define MX6SX_PAD_RGMII2_TX_CTL__GPIO5_IO_22 0x0218 0x0560 0x0000 0x5 0x0
1181#define MX6SX_PAD_RGMII2_TX_CTL__CSI2_FIELD 0x0218 0x0560 0x0000 0x6 0x0
1182#define MX6SX_PAD_RGMII2_TX_CTL__SJC_DE_B 0x0218 0x0560 0x0000 0x7 0x0
1183#define MX6SX_PAD_RGMII2_TX_CTL__VDEC_DEBUG_28 0x0218 0x0560 0x0000 0x8 0x0
1184#define MX6SX_PAD_RGMII2_TX_CTL__PCIE_CTRL_DEBUG_22 0x0218 0x0560 0x0000 0x9 0x0
1185#define MX6SX_PAD_RGMII2_TXC__ENET2_RGMII_TXC 0x021C 0x0564 0x0000 0x0 0x0
1186#define MX6SX_PAD_RGMII2_TXC__ENET2_TX_ER 0x021C 0x0564 0x0000 0x1 0x0
1187#define MX6SX_PAD_RGMII2_TXC__SAI1_TX_DATA_0 0x021C 0x0564 0x0000 0x2 0x0
1188#define MX6SX_PAD_RGMII2_TXC__GPIO5_IO_23 0x021C 0x0564 0x0000 0x5 0x0
1189#define MX6SX_PAD_RGMII2_TXC__CSI2_PIXCLK 0x021C 0x0564 0x0000 0x6 0x0
1190#define MX6SX_PAD_RGMII2_TXC__SJC_DONE 0x021C 0x0564 0x0000 0x7 0x0
1191#define MX6SX_PAD_RGMII2_TXC__VDEC_DEBUG_29 0x021C 0x0564 0x0000 0x8 0x0
1192#define MX6SX_PAD_RGMII2_TXC__PCIE_CTRL_DEBUG_23 0x021C 0x0564 0x0000 0x9 0x0
1193#define MX6SX_PAD_SD1_CLK__USDHC1_CLK 0x0220 0x0568 0x0000 0x0 0x0
1194#define MX6SX_PAD_SD1_CLK__AUDMUX_AUD5_RXFS 0x0220 0x0568 0x0668 0x1 0x1
1195#define MX6SX_PAD_SD1_CLK__WDOG2_WDOG_B 0x0220 0x0568 0x0000 0x2 0x0
1196#define MX6SX_PAD_SD1_CLK__GPT_CLK 0x0220 0x0568 0x0000 0x3 0x0
1197#define MX6SX_PAD_SD1_CLK__WDOG2_WDOG_RST_B_DEB 0x0220 0x0568 0x0000 0x4 0x0
1198#define MX6SX_PAD_SD1_CLK__GPIO6_IO_0 0x0220 0x0568 0x0000 0x5 0x0
1199#define MX6SX_PAD_SD1_CLK__ENET2_1588_EVENT1_OUT 0x0220 0x0568 0x0000 0x6 0x0
1200#define MX6SX_PAD_SD1_CLK__CCM_OUT1 0x0220 0x0568 0x0000 0x7 0x0
1201#define MX6SX_PAD_SD1_CLK__VADC_ADC_PROC_CLK 0x0220 0x0568 0x0000 0x8 0x0
1202#define MX6SX_PAD_SD1_CLK__MMDC_DEBUG_45 0x0220 0x0568 0x0000 0x9 0x0
1203#define MX6SX_PAD_SD1_CMD__USDHC1_CMD 0x0224 0x056C 0x0000 0x0 0x0
1204#define MX6SX_PAD_SD1_CMD__AUDMUX_AUD5_RXC 0x0224 0x056C 0x0664 0x1 0x1
1205#define MX6SX_PAD_SD1_CMD__WDOG1_WDOG_B 0x0224 0x056C 0x0000 0x2 0x0
1206#define MX6SX_PAD_SD1_CMD__GPT_COMPARE1 0x0224 0x056C 0x0000 0x3 0x0
1207#define MX6SX_PAD_SD1_CMD__WDOG1_WDOG_RST_B_DEB 0x0224 0x056C 0x0000 0x4 0x0
1208#define MX6SX_PAD_SD1_CMD__GPIO6_IO_1 0x0224 0x056C 0x0000 0x5 0x0
1209#define MX6SX_PAD_SD1_CMD__ENET2_1588_EVENT1_IN 0x0224 0x056C 0x0000 0x6 0x0
1210#define MX6SX_PAD_SD1_CMD__CCM_CLKO1 0x0224 0x056C 0x0000 0x7 0x0
1211#define MX6SX_PAD_SD1_CMD__VADC_EXT_SYSCLK 0x0224 0x056C 0x0000 0x8 0x0
1212#define MX6SX_PAD_SD1_CMD__MMDC_DEBUG_46 0x0224 0x056C 0x0000 0x9 0x0
1213#define MX6SX_PAD_SD1_DATA0__USDHC1_DATA0 0x0228 0x0570 0x0000 0x0 0x0
1214#define MX6SX_PAD_SD1_DATA0__AUDMUX_AUD5_RXD 0x0228 0x0570 0x065C 0x1 0x1
1215#define MX6SX_PAD_SD1_DATA0__CAAM_WRAPPER_RNG_OSC_OBS 0x0228 0x0570 0x0000 0x2 0x0
1216#define MX6SX_PAD_SD1_DATA0__GPT_CAPTURE1 0x0228 0x0570 0x0000 0x3 0x0
1217#define MX6SX_PAD_SD1_DATA0__UART2_RX 0x0228 0x0570 0x0838 0x4 0x2
1218#define MX6SX_PAD_SD1_DATA0__UART2_TX 0x0228 0x0570 0x0000 0x4 0x0
1219#define MX6SX_PAD_SD1_DATA0__GPIO6_IO_2 0x0228 0x0570 0x0000 0x5 0x0
1220#define MX6SX_PAD_SD1_DATA0__ENET1_1588_EVENT1_IN 0x0228 0x0570 0x0000 0x6 0x0
1221#define MX6SX_PAD_SD1_DATA0__CCM_OUT2 0x0228 0x0570 0x0000 0x7 0x0
1222#define MX6SX_PAD_SD1_DATA0__VADC_CLAMP_UP 0x0228 0x0570 0x0000 0x8 0x0
1223#define MX6SX_PAD_SD1_DATA0__MMDC_DEBUG_48 0x0228 0x0570 0x0000 0x9 0x0
1224#define MX6SX_PAD_SD1_DATA1__USDHC1_DATA1 0x022C 0x0574 0x0000 0x0 0x0
1225#define MX6SX_PAD_SD1_DATA1__AUDMUX_AUD5_TXC 0x022C 0x0574 0x066C 0x1 0x1
1226#define MX6SX_PAD_SD1_DATA1__PWM4_OUT 0x022C 0x0574 0x0000 0x2 0x0
1227#define MX6SX_PAD_SD1_DATA1__GPT_CAPTURE2 0x022C 0x0574 0x0000 0x3 0x0
1228#define MX6SX_PAD_SD1_DATA1__UART2_RX 0x022C 0x0574 0x0838 0x4 0x3
1229#define MX6SX_PAD_SD1_DATA1__UART2_TX 0x022C 0x0574 0x0000 0x4 0x0
1230#define MX6SX_PAD_SD1_DATA1__GPIO6_IO_3 0x022C 0x0574 0x0000 0x5 0x0
1231#define MX6SX_PAD_SD1_DATA1__ENET1_1588_EVENT1_OUT 0x022C 0x0574 0x0000 0x6 0x0
1232#define MX6SX_PAD_SD1_DATA1__CCM_CLKO2 0x022C 0x0574 0x0000 0x7 0x0
1233#define MX6SX_PAD_SD1_DATA1__VADC_CLAMP_DOWN 0x022C 0x0574 0x0000 0x8 0x0
1234#define MX6SX_PAD_SD1_DATA1__MMDC_DEBUG_47 0x022C 0x0574 0x0000 0x9 0x0
1235#define MX6SX_PAD_SD1_DATA2__USDHC1_DATA2 0x0230 0x0578 0x0000 0x0 0x0
1236#define MX6SX_PAD_SD1_DATA2__AUDMUX_AUD5_TXFS 0x0230 0x0578 0x0670 0x1 0x1
1237#define MX6SX_PAD_SD1_DATA2__PWM3_OUT 0x0230 0x0578 0x0000 0x2 0x0
1238#define MX6SX_PAD_SD1_DATA2__GPT_COMPARE2 0x0230 0x0578 0x0000 0x3 0x0
1239#define MX6SX_PAD_SD1_DATA2__UART2_CTS_B 0x0230 0x0578 0x0834 0x4 0x2
1240#define MX6SX_PAD_SD1_DATA2__GPIO6_IO_4 0x0230 0x0578 0x0000 0x5 0x0
1241#define MX6SX_PAD_SD1_DATA2__ECSPI4_RDY 0x0230 0x0578 0x0000 0x6 0x0
1242#define MX6SX_PAD_SD1_DATA2__CCM_OUT0 0x0230 0x0578 0x0000 0x7 0x0
1243#define MX6SX_PAD_SD1_DATA2__VADC_EXT_PD_N 0x0230 0x0578 0x0000 0x8 0x0
1244#define MX6SX_PAD_SD1_DATA3__USDHC1_DATA3 0x0234 0x057C 0x0000 0x0 0x0
1245#define MX6SX_PAD_SD1_DATA3__AUDMUX_AUD5_TXD 0x0234 0x057C 0x0660 0x1 0x1
1246#define MX6SX_PAD_SD1_DATA3__AUDMUX_AUD5_RXD 0x0234 0x057C 0x065C 0x2 0x2
1247#define MX6SX_PAD_SD1_DATA3__GPT_COMPARE3 0x0234 0x057C 0x0000 0x3 0x0
1248#define MX6SX_PAD_SD1_DATA3__UART2_RTS_B 0x0234 0x057C 0x0834 0x4 0x3
1249#define MX6SX_PAD_SD1_DATA3__GPIO6_IO_5 0x0234 0x057C 0x0000 0x5 0x0
1250#define MX6SX_PAD_SD1_DATA3__ECSPI4_SS1 0x0234 0x057C 0x0000 0x6 0x0
1251#define MX6SX_PAD_SD1_DATA3__CCM_PMIC_RDY 0x0234 0x057C 0x069C 0x7 0x2
1252#define MX6SX_PAD_SD1_DATA3__VADC_RST_N 0x0234 0x057C 0x0000 0x8 0x0
1253#define MX6SX_PAD_SD2_CLK__USDHC2_CLK 0x0238 0x0580 0x0000 0x0 0x0
1254#define MX6SX_PAD_SD2_CLK__AUDMUX_AUD6_RXFS 0x0238 0x0580 0x0680 0x1 0x2
1255#define MX6SX_PAD_SD2_CLK__KPP_COL_5 0x0238 0x0580 0x07C8 0x2 0x1
1256#define MX6SX_PAD_SD2_CLK__ECSPI4_SCLK 0x0238 0x0580 0x0740 0x3 0x1
1257#define MX6SX_PAD_SD2_CLK__MLB_SIG 0x0238 0x0580 0x07F0 0x4 0x2
1258#define MX6SX_PAD_SD2_CLK__GPIO6_IO_6 0x0238 0x0580 0x0000 0x5 0x0
1259#define MX6SX_PAD_SD2_CLK__MQS_RIGHT 0x0238 0x0580 0x0000 0x6 0x0
1260#define MX6SX_PAD_SD2_CLK__WDOG1_WDOG_ANY 0x0238 0x0580 0x0000 0x7 0x0
1261#define MX6SX_PAD_SD2_CLK__VADC_CLAMP_CURRENT_5 0x0238 0x0580 0x0000 0x8 0x0
1262#define MX6SX_PAD_SD2_CLK__MMDC_DEBUG_29 0x0238 0x0580 0x0000 0x9 0x0
1263#define MX6SX_PAD_SD2_CMD__USDHC2_CMD 0x023C 0x0584 0x0000 0x0 0x0
1264#define MX6SX_PAD_SD2_CMD__AUDMUX_AUD6_RXC 0x023C 0x0584 0x067C 0x1 0x2
1265#define MX6SX_PAD_SD2_CMD__KPP_ROW_5 0x023C 0x0584 0x07D4 0x2 0x1
1266#define MX6SX_PAD_SD2_CMD__ECSPI4_MOSI 0x023C 0x0584 0x0748 0x3 0x1
1267#define MX6SX_PAD_SD2_CMD__MLB_CLK 0x023C 0x0584 0x07E8 0x4 0x2
1268#define MX6SX_PAD_SD2_CMD__GPIO6_IO_7 0x023C 0x0584 0x0000 0x5 0x0
1269#define MX6SX_PAD_SD2_CMD__MQS_LEFT 0x023C 0x0584 0x0000 0x6 0x0
1270#define MX6SX_PAD_SD2_CMD__WDOG3_WDOG_B 0x023C 0x0584 0x0000 0x7 0x0
1271#define MX6SX_PAD_SD2_CMD__VADC_CLAMP_CURRENT_4 0x023C 0x0584 0x0000 0x8 0x0
1272#define MX6SX_PAD_SD2_CMD__MMDC_DEBUG_30 0x023C 0x0584 0x0000 0x9 0x0
1273#define MX6SX_PAD_SD2_DATA0__USDHC2_DATA0 0x0240 0x0588 0x0000 0x0 0x0
1274#define MX6SX_PAD_SD2_DATA0__AUDMUX_AUD6_RXD 0x0240 0x0588 0x0674 0x1 0x2
1275#define MX6SX_PAD_SD2_DATA0__KPP_ROW_7 0x0240 0x0588 0x07DC 0x2 0x1
1276#define MX6SX_PAD_SD2_DATA0__PWM1_OUT 0x0240 0x0588 0x0000 0x3 0x0
1277#define MX6SX_PAD_SD2_DATA0__I2C4_SDA 0x0240 0x0588 0x07C4 0x4 0x3
1278#define MX6SX_PAD_SD2_DATA0__GPIO6_IO_8 0x0240 0x0588 0x0000 0x5 0x0
1279#define MX6SX_PAD_SD2_DATA0__ECSPI4_SS3 0x0240 0x0588 0x0000 0x6 0x0
1280#define MX6SX_PAD_SD2_DATA0__UART4_RX 0x0240 0x0588 0x0848 0x7 0x4
1281#define MX6SX_PAD_SD2_DATA0__UART4_TX 0x0240 0x0588 0x0000 0x7 0x0
1282#define MX6SX_PAD_SD2_DATA0__VADC_CLAMP_CURRENT_0 0x0240 0x0588 0x0000 0x8 0x0
1283#define MX6SX_PAD_SD2_DATA0__MMDC_DEBUG_50 0x0240 0x0588 0x0000 0x9 0x0
1284#define MX6SX_PAD_SD2_DATA1__USDHC2_DATA1 0x0244 0x058C 0x0000 0x0 0x0
1285#define MX6SX_PAD_SD2_DATA1__AUDMUX_AUD6_TXC 0x0244 0x058C 0x0684 0x1 0x2
1286#define MX6SX_PAD_SD2_DATA1__KPP_COL_7 0x0244 0x058C 0x07D0 0x2 0x1
1287#define MX6SX_PAD_SD2_DATA1__PWM2_OUT 0x0244 0x058C 0x0000 0x3 0x0
1288#define MX6SX_PAD_SD2_DATA1__I2C4_SCL 0x0244 0x058C 0x07C0 0x4 0x3
1289#define MX6SX_PAD_SD2_DATA1__GPIO6_IO_9 0x0244 0x058C 0x0000 0x5 0x0
1290#define MX6SX_PAD_SD2_DATA1__ECSPI4_SS2 0x0244 0x058C 0x0000 0x6 0x0
1291#define MX6SX_PAD_SD2_DATA1__UART4_RX 0x0244 0x058C 0x0848 0x7 0x5
1292#define MX6SX_PAD_SD2_DATA1__UART4_TX 0x0244 0x058C 0x0000 0x7 0x0
1293#define MX6SX_PAD_SD2_DATA1__VADC_CLAMP_CURRENT_1 0x0244 0x058C 0x0000 0x8 0x0
1294#define MX6SX_PAD_SD2_DATA1__MMDC_DEBUG_49 0x0244 0x058C 0x0000 0x9 0x0
1295#define MX6SX_PAD_SD2_DATA2__USDHC2_DATA2 0x0248 0x0590 0x0000 0x0 0x0
1296#define MX6SX_PAD_SD2_DATA2__AUDMUX_AUD6_TXFS 0x0248 0x0590 0x0688 0x1 0x2
1297#define MX6SX_PAD_SD2_DATA2__KPP_ROW_6 0x0248 0x0590 0x07D8 0x2 0x1
1298#define MX6SX_PAD_SD2_DATA2__ECSPI4_SS0 0x0248 0x0590 0x074C 0x3 0x1
1299#define MX6SX_PAD_SD2_DATA2__SDMA_EXT_EVENT_0 0x0248 0x0590 0x081C 0x4 0x2
1300#define MX6SX_PAD_SD2_DATA2__GPIO6_IO_10 0x0248 0x0590 0x0000 0x5 0x0
1301#define MX6SX_PAD_SD2_DATA2__SPDIF_OUT 0x0248 0x0590 0x0000 0x6 0x0
1302#define MX6SX_PAD_SD2_DATA2__UART6_RX 0x0248 0x0590 0x0858 0x7 0x4
1303#define MX6SX_PAD_SD2_DATA2__UART6_TX 0x0248 0x0590 0x0000 0x7 0x0
1304#define MX6SX_PAD_SD2_DATA2__VADC_CLAMP_CURRENT_2 0x0248 0x0590 0x0000 0x8 0x0
1305#define MX6SX_PAD_SD2_DATA2__MMDC_DEBUG_32 0x0248 0x0590 0x0000 0x9 0x0
1306#define MX6SX_PAD_SD2_DATA3__USDHC2_DATA3 0x024C 0x0594 0x0000 0x0 0x0
1307#define MX6SX_PAD_SD2_DATA3__AUDMUX_AUD6_TXD 0x024C 0x0594 0x0678 0x1 0x2
1308#define MX6SX_PAD_SD2_DATA3__KPP_COL_6 0x024C 0x0594 0x07CC 0x2 0x1
1309#define MX6SX_PAD_SD2_DATA3__ECSPI4_MISO 0x024C 0x0594 0x0744 0x3 0x1
1310#define MX6SX_PAD_SD2_DATA3__MLB_DATA 0x024C 0x0594 0x07EC 0x4 0x2
1311#define MX6SX_PAD_SD2_DATA3__GPIO6_IO_11 0x024C 0x0594 0x0000 0x5 0x0
1312#define MX6SX_PAD_SD2_DATA3__SPDIF_IN 0x024C 0x0594 0x0824 0x6 0x4
1313#define MX6SX_PAD_SD2_DATA3__UART6_RX 0x024C 0x0594 0x0858 0x7 0x5
1314#define MX6SX_PAD_SD2_DATA3__UART6_TX 0x024C 0x0594 0x0000 0x7 0x0
1315#define MX6SX_PAD_SD2_DATA3__VADC_CLAMP_CURRENT_3 0x024C 0x0594 0x0000 0x8 0x0
1316#define MX6SX_PAD_SD2_DATA3__MMDC_DEBUG_31 0x024C 0x0594 0x0000 0x9 0x0
1317#define MX6SX_PAD_SD3_CLK__USDHC3_CLK 0x0250 0x0598 0x0000 0x0 0x0
1318#define MX6SX_PAD_SD3_CLK__UART4_CTS_B 0x0250 0x0598 0x0844 0x1 0x0
1319#define MX6SX_PAD_SD3_CLK__ECSPI4_SCLK 0x0250 0x0598 0x0740 0x2 0x0
1320#define MX6SX_PAD_SD3_CLK__AUDMUX_AUD6_RXFS 0x0250 0x0598 0x0680 0x3 0x0
1321#define MX6SX_PAD_SD3_CLK__LCDIF2_VSYNC 0x0250 0x0598 0x0000 0x4 0x0
1322#define MX6SX_PAD_SD3_CLK__GPIO7_IO_0 0x0250 0x0598 0x0000 0x5 0x0
1323#define MX6SX_PAD_SD3_CLK__LCDIF2_BUSY 0x0250 0x0598 0x07E4 0x6 0x0
1324#define MX6SX_PAD_SD3_CLK__TPSMP_HDATA_29 0x0250 0x0598 0x0000 0x7 0x0
1325#define MX6SX_PAD_SD3_CLK__SDMA_DEBUG_EVENT_CHANNEL_5 0x0250 0x0598 0x0000 0x9 0x0
1326#define MX6SX_PAD_SD3_CMD__USDHC3_CMD 0x0254 0x059C 0x0000 0x0 0x0
1327#define MX6SX_PAD_SD3_CMD__UART4_RX 0x0254 0x059C 0x0848 0x1 0x0
1328#define MX6SX_PAD_SD3_CMD__UART4_TX 0x0254 0x059C 0x0000 0x1 0x0
1329#define MX6SX_PAD_SD3_CMD__ECSPI4_MOSI 0x0254 0x059C 0x0748 0x2 0x0
1330#define MX6SX_PAD_SD3_CMD__AUDMUX_AUD6_RXC 0x0254 0x059C 0x067C 0x3 0x0
1331#define MX6SX_PAD_SD3_CMD__LCDIF2_HSYNC 0x0254 0x059C 0x07E4 0x4 0x1
1332#define MX6SX_PAD_SD3_CMD__GPIO7_IO_1 0x0254 0x059C 0x0000 0x5 0x0
1333#define MX6SX_PAD_SD3_CMD__LCDIF2_RS 0x0254 0x059C 0x0000 0x6 0x0
1334#define MX6SX_PAD_SD3_CMD__TPSMP_HDATA_28 0x0254 0x059C 0x0000 0x7 0x0
1335#define MX6SX_PAD_SD3_CMD__SDMA_DEBUG_EVENT_CHANNEL_4 0x0254 0x059C 0x0000 0x9 0x0
1336#define MX6SX_PAD_SD3_DATA0__USDHC3_DATA0 0x0258 0x05A0 0x0000 0x0 0x0
1337#define MX6SX_PAD_SD3_DATA0__I2C4_SCL 0x0258 0x05A0 0x07C0 0x1 0x0
1338#define MX6SX_PAD_SD3_DATA0__ECSPI2_SS1 0x0258 0x05A0 0x0000 0x2 0x0
1339#define MX6SX_PAD_SD3_DATA0__AUDMUX_AUD6_RXD 0x0258 0x05A0 0x0674 0x3 0x0
1340#define MX6SX_PAD_SD3_DATA0__LCDIF2_DATA_1 0x0258 0x05A0 0x0000 0x4 0x0
1341#define MX6SX_PAD_SD3_DATA0__GPIO7_IO_2 0x0258 0x05A0 0x0000 0x5 0x0
1342#define MX6SX_PAD_SD3_DATA0__DCIC1_OUT 0x0258 0x05A0 0x0000 0x6 0x0
1343#define MX6SX_PAD_SD3_DATA0__TPSMP_HDATA_30 0x0258 0x05A0 0x0000 0x7 0x0
1344#define MX6SX_PAD_SD3_DATA0__GPU_DEBUG_0 0x0258 0x05A0 0x0000 0x8 0x0
1345#define MX6SX_PAD_SD3_DATA0__SDMA_DEBUG_EVT_CHN_LINES_0 0x0258 0x05A0 0x0000 0x9 0x0
1346#define MX6SX_PAD_SD3_DATA1__USDHC3_DATA1 0x025C 0x05A4 0x0000 0x0 0x0
1347#define MX6SX_PAD_SD3_DATA1__I2C4_SDA 0x025C 0x05A4 0x07C4 0x1 0x0
1348#define MX6SX_PAD_SD3_DATA1__ECSPI2_SS2 0x025C 0x05A4 0x0000 0x2 0x0
1349#define MX6SX_PAD_SD3_DATA1__AUDMUX_AUD6_TXC 0x025C 0x05A4 0x0684 0x3 0x0
1350#define MX6SX_PAD_SD3_DATA1__LCDIF2_DATA_0 0x025C 0x05A4 0x0000 0x4 0x0
1351#define MX6SX_PAD_SD3_DATA1__GPIO7_IO_3 0x025C 0x05A4 0x0000 0x5 0x0
1352#define MX6SX_PAD_SD3_DATA1__DCIC2_OUT 0x025C 0x05A4 0x0000 0x6 0x0
1353#define MX6SX_PAD_SD3_DATA1__TPSMP_HDATA_31 0x025C 0x05A4 0x0000 0x7 0x0
1354#define MX6SX_PAD_SD3_DATA1__GPU_DEBUG_1 0x025C 0x05A4 0x0000 0x8 0x0
1355#define MX6SX_PAD_SD3_DATA1__SDMA_DEBUG_EVT_CHN_LINES_1 0x025C 0x05A4 0x0000 0x9 0x0
1356#define MX6SX_PAD_SD3_DATA2__USDHC3_DATA2 0x0260 0x05A8 0x0000 0x0 0x0
1357#define MX6SX_PAD_SD3_DATA2__UART4_RTS_B 0x0260 0x05A8 0x0844 0x1 0x1
1358#define MX6SX_PAD_SD3_DATA2__ECSPI4_SS0 0x0260 0x05A8 0x074C 0x2 0x0
1359#define MX6SX_PAD_SD3_DATA2__AUDMUX_AUD6_TXFS 0x0260 0x05A8 0x0688 0x3 0x0
1360#define MX6SX_PAD_SD3_DATA2__LCDIF2_CLK 0x0260 0x05A8 0x0000 0x4 0x0
1361#define MX6SX_PAD_SD3_DATA2__GPIO7_IO_4 0x0260 0x05A8 0x0000 0x5 0x0
1362#define MX6SX_PAD_SD3_DATA2__LCDIF2_WR_RWN 0x0260 0x05A8 0x0000 0x6 0x0
1363#define MX6SX_PAD_SD3_DATA2__TPSMP_HDATA_26 0x0260 0x05A8 0x0000 0x7 0x0
1364#define MX6SX_PAD_SD3_DATA2__GPU_DEBUG_2 0x0260 0x05A8 0x0000 0x8 0x0
1365#define MX6SX_PAD_SD3_DATA2__SDMA_DEBUG_EVENT_CHANNEL_2 0x0260 0x05A8 0x0000 0x9 0x0
1366#define MX6SX_PAD_SD3_DATA3__USDHC3_DATA3 0x0264 0x05AC 0x0000 0x0 0x0
1367#define MX6SX_PAD_SD3_DATA3__UART4_RX 0x0264 0x05AC 0x0848 0x1 0x1
1368#define MX6SX_PAD_SD3_DATA3__UART4_TX 0x0264 0x05AC 0x0000 0x1 0x0
1369#define MX6SX_PAD_SD3_DATA3__ECSPI4_MISO 0x0264 0x05AC 0x0744 0x2 0x0
1370#define MX6SX_PAD_SD3_DATA3__AUDMUX_AUD6_TXD 0x0264 0x05AC 0x0678 0x3 0x0
1371#define MX6SX_PAD_SD3_DATA3__LCDIF2_ENABLE 0x0264 0x05AC 0x0000 0x4 0x0
1372#define MX6SX_PAD_SD3_DATA3__GPIO7_IO_5 0x0264 0x05AC 0x0000 0x5 0x0
1373#define MX6SX_PAD_SD3_DATA3__LCDIF2_RD_E 0x0264 0x05AC 0x0000 0x6 0x0
1374#define MX6SX_PAD_SD3_DATA3__TPSMP_HDATA_27 0x0264 0x05AC 0x0000 0x7 0x0
1375#define MX6SX_PAD_SD3_DATA3__GPU_DEBUG_3 0x0264 0x05AC 0x0000 0x8 0x0
1376#define MX6SX_PAD_SD3_DATA3__SDMA_DEBUG_EVENT_CHANNEL_3 0x0264 0x05AC 0x0000 0x9 0x0
1377#define MX6SX_PAD_SD3_DATA4__USDHC3_DATA4 0x0268 0x05B0 0x0000 0x0 0x0
1378#define MX6SX_PAD_SD3_DATA4__CAN2_RX 0x0268 0x05B0 0x0690 0x1 0x0
1379#define MX6SX_PAD_SD3_DATA4__CANFD_RX2 0x0268 0x05B0 0x0698 0x2 0x0
1380#define MX6SX_PAD_SD3_DATA4__UART3_RX 0x0268 0x05B0 0x0840 0x3 0x2
1381#define MX6SX_PAD_SD3_DATA4__UART3_TX 0x0268 0x05B0 0x0000 0x3 0x0
1382#define MX6SX_PAD_SD3_DATA4__LCDIF2_DATA_3 0x0268 0x05B0 0x0000 0x4 0x0
1383#define MX6SX_PAD_SD3_DATA4__GPIO7_IO_6 0x0268 0x05B0 0x0000 0x5 0x0
1384#define MX6SX_PAD_SD3_DATA4__ENET2_1588_EVENT0_IN 0x0268 0x05B0 0x0000 0x6 0x0
1385#define MX6SX_PAD_SD3_DATA4__TPSMP_HTRANS_1 0x0268 0x05B0 0x0000 0x7 0x0
1386#define MX6SX_PAD_SD3_DATA4__GPU_DEBUG_4 0x0268 0x05B0 0x0000 0x8 0x0
1387#define MX6SX_PAD_SD3_DATA4__SDMA_DEBUG_BUS_DEVICE_0 0x0268 0x05B0 0x0000 0x9 0x0
1388#define MX6SX_PAD_SD3_DATA5__USDHC3_DATA5 0x026C 0x05B4 0x0000 0x0 0x0
1389#define MX6SX_PAD_SD3_DATA5__CAN1_TX 0x026C 0x05B4 0x0000 0x1 0x0
1390#define MX6SX_PAD_SD3_DATA5__CANFD_TX1 0x026C 0x05B4 0x0000 0x2 0x0
1391#define MX6SX_PAD_SD3_DATA5__UART3_RX 0x026C 0x05B4 0x0840 0x3 0x3
1392#define MX6SX_PAD_SD3_DATA5__UART3_TX 0x026C 0x05B4 0x0000 0x3 0x0
1393#define MX6SX_PAD_SD3_DATA5__LCDIF2_DATA_2 0x026C 0x05B4 0x0000 0x4 0x0
1394#define MX6SX_PAD_SD3_DATA5__GPIO7_IO_7 0x026C 0x05B4 0x0000 0x5 0x0
1395#define MX6SX_PAD_SD3_DATA5__ENET2_1588_EVENT0_OUT 0x026C 0x05B4 0x0000 0x6 0x0
1396#define MX6SX_PAD_SD3_DATA5__SIM_M_HWRITE 0x026C 0x05B4 0x0000 0x7 0x0
1397#define MX6SX_PAD_SD3_DATA5__GPU_DEBUG_5 0x026C 0x05B4 0x0000 0x8 0x0
1398#define MX6SX_PAD_SD3_DATA5__SDMA_DEBUG_BUS_DEVICE_1 0x026C 0x05B4 0x0000 0x9 0x0
1399#define MX6SX_PAD_SD3_DATA6__USDHC3_DATA6 0x0270 0x05B8 0x0000 0x0 0x0
1400#define MX6SX_PAD_SD3_DATA6__CAN2_TX 0x0270 0x05B8 0x0000 0x1 0x0
1401#define MX6SX_PAD_SD3_DATA6__CANFD_TX2 0x0270 0x05B8 0x0000 0x2 0x0
1402#define MX6SX_PAD_SD3_DATA6__UART3_RTS_B 0x0270 0x05B8 0x083C 0x3 0x2
1403#define MX6SX_PAD_SD3_DATA6__LCDIF2_DATA_4 0x0270 0x05B8 0x0000 0x4 0x0
1404#define MX6SX_PAD_SD3_DATA6__GPIO7_IO_8 0x0270 0x05B8 0x0000 0x5 0x0
1405#define MX6SX_PAD_SD3_DATA6__ENET1_1588_EVENT0_OUT 0x0270 0x05B8 0x0000 0x6 0x0
1406#define MX6SX_PAD_SD3_DATA6__TPSMP_HTRANS_0 0x0270 0x05B8 0x0000 0x7 0x0
1407#define MX6SX_PAD_SD3_DATA6__GPU_DEBUG_7 0x0270 0x05B8 0x0000 0x8 0x0
1408#define MX6SX_PAD_SD3_DATA6__SDMA_DEBUG_EVT_CHN_LINES_7 0x0270 0x05B8 0x0000 0x9 0x0
1409#define MX6SX_PAD_SD3_DATA7__USDHC3_DATA7 0x0274 0x05BC 0x0000 0x0 0x0
1410#define MX6SX_PAD_SD3_DATA7__CAN1_RX 0x0274 0x05BC 0x068C 0x1 0x0
1411#define MX6SX_PAD_SD3_DATA7__CANFD_RX1 0x0274 0x05BC 0x0694 0x2 0x0
1412#define MX6SX_PAD_SD3_DATA7__UART3_CTS_B 0x0274 0x05BC 0x083C 0x3 0x3
1413#define MX6SX_PAD_SD3_DATA7__LCDIF2_DATA_5 0x0274 0x05BC 0x0000 0x4 0x0
1414#define MX6SX_PAD_SD3_DATA7__GPIO7_IO_9 0x0274 0x05BC 0x0000 0x5 0x0
1415#define MX6SX_PAD_SD3_DATA7__ENET1_1588_EVENT0_IN 0x0274 0x05BC 0x0000 0x6 0x0
1416#define MX6SX_PAD_SD3_DATA7__TPSMP_HDATA_DIR 0x0274 0x05BC 0x0000 0x7 0x0
1417#define MX6SX_PAD_SD3_DATA7__GPU_DEBUG_6 0x0274 0x05BC 0x0000 0x8 0x0
1418#define MX6SX_PAD_SD3_DATA7__SDMA_DEBUG_EVT_CHN_LINES_2 0x0274 0x05BC 0x0000 0x9 0x0
1419#define MX6SX_PAD_SD4_CLK__USDHC4_CLK 0x0278 0x05C0 0x0000 0x0 0x0
1420#define MX6SX_PAD_SD4_CLK__RAWNAND_DATA15 0x0278 0x05C0 0x0000 0x1 0x0
1421#define MX6SX_PAD_SD4_CLK__ECSPI2_MISO 0x0278 0x05C0 0x0724 0x2 0x1
1422#define MX6SX_PAD_SD4_CLK__AUDMUX_AUD3_RXFS 0x0278 0x05C0 0x0638 0x3 0x0
1423#define MX6SX_PAD_SD4_CLK__LCDIF2_DATA_13 0x0278 0x05C0 0x0000 0x4 0x0
1424#define MX6SX_PAD_SD4_CLK__GPIO6_IO_12 0x0278 0x05C0 0x0000 0x5 0x0
1425#define MX6SX_PAD_SD4_CLK__ECSPI3_SS2 0x0278 0x05C0 0x0000 0x6 0x0
1426#define MX6SX_PAD_SD4_CLK__TPSMP_HDATA_20 0x0278 0x05C0 0x0000 0x7 0x0
1427#define MX6SX_PAD_SD4_CLK__VDEC_DEBUG_12 0x0278 0x05C0 0x0000 0x8 0x0
1428#define MX6SX_PAD_SD4_CLK__SDMA_DEBUG_EVENT_CHANNEL_SEL 0x0278 0x05C0 0x0000 0x9 0x0
1429#define MX6SX_PAD_SD4_CMD__USDHC4_CMD 0x027C 0x05C4 0x0000 0x0 0x0
1430#define MX6SX_PAD_SD4_CMD__RAWNAND_DATA14 0x027C 0x05C4 0x0000 0x1 0x0
1431#define MX6SX_PAD_SD4_CMD__ECSPI2_MOSI 0x027C 0x05C4 0x0728 0x2 0x1
1432#define MX6SX_PAD_SD4_CMD__AUDMUX_AUD3_RXC 0x027C 0x05C4 0x0634 0x3 0x0
1433#define MX6SX_PAD_SD4_CMD__LCDIF2_DATA_14 0x027C 0x05C4 0x0000 0x4 0x0
1434#define MX6SX_PAD_SD4_CMD__GPIO6_IO_13 0x027C 0x05C4 0x0000 0x5 0x0
1435#define MX6SX_PAD_SD4_CMD__ECSPI3_SS1 0x027C 0x05C4 0x0000 0x6 0x0
1436#define MX6SX_PAD_SD4_CMD__TPSMP_HDATA_19 0x027C 0x05C4 0x0000 0x7 0x0
1437#define MX6SX_PAD_SD4_CMD__VDEC_DEBUG_11 0x027C 0x05C4 0x0000 0x8 0x0
1438#define MX6SX_PAD_SD4_CMD__SDMA_DEBUG_CORE_RUN 0x027C 0x05C4 0x0000 0x9 0x0
1439#define MX6SX_PAD_SD4_DATA0__USDHC4_DATA0 0x0280 0x05C8 0x0000 0x0 0x0
1440#define MX6SX_PAD_SD4_DATA0__RAWNAND_DATA10 0x0280 0x05C8 0x0000 0x1 0x0
1441#define MX6SX_PAD_SD4_DATA0__ECSPI2_SS0 0x0280 0x05C8 0x072C 0x2 0x1
1442#define MX6SX_PAD_SD4_DATA0__AUDMUX_AUD3_RXD 0x0280 0x05C8 0x062C 0x3 0x0
1443#define MX6SX_PAD_SD4_DATA0__LCDIF2_DATA_12 0x0280 0x05C8 0x0000 0x4 0x0
1444#define MX6SX_PAD_SD4_DATA0__GPIO6_IO_14 0x0280 0x05C8 0x0000 0x5 0x0
1445#define MX6SX_PAD_SD4_DATA0__ECSPI3_SS3 0x0280 0x05C8 0x0000 0x6 0x0
1446#define MX6SX_PAD_SD4_DATA0__TPSMP_HDATA_21 0x0280 0x05C8 0x0000 0x7 0x0
1447#define MX6SX_PAD_SD4_DATA0__VDEC_DEBUG_13 0x0280 0x05C8 0x0000 0x8 0x0
1448#define MX6SX_PAD_SD4_DATA0__SDMA_DEBUG_MODE 0x0280 0x05C8 0x0000 0x9 0x0
1449#define MX6SX_PAD_SD4_DATA1__USDHC4_DATA1 0x0284 0x05CC 0x0000 0x0 0x0
1450#define MX6SX_PAD_SD4_DATA1__RAWNAND_DATA11 0x0284 0x05CC 0x0000 0x1 0x0
1451#define MX6SX_PAD_SD4_DATA1__ECSPI2_SCLK 0x0284 0x05CC 0x0720 0x2 0x1
1452#define MX6SX_PAD_SD4_DATA1__AUDMUX_AUD3_TXC 0x0284 0x05CC 0x063C 0x3 0x0
1453#define MX6SX_PAD_SD4_DATA1__LCDIF2_DATA_11 0x0284 0x05CC 0x0000 0x4 0x0
1454#define MX6SX_PAD_SD4_DATA1__GPIO6_IO_15 0x0284 0x05CC 0x0000 0x5 0x0
1455#define MX6SX_PAD_SD4_DATA1__ECSPI3_RDY 0x0284 0x05CC 0x0000 0x6 0x0
1456#define MX6SX_PAD_SD4_DATA1__TPSMP_HDATA_22 0x0284 0x05CC 0x0000 0x7 0x0
1457#define MX6SX_PAD_SD4_DATA1__VDEC_DEBUG_14 0x0284 0x05CC 0x0000 0x8 0x0
1458#define MX6SX_PAD_SD4_DATA1__SDMA_DEBUG_BUS_ERROR 0x0284 0x05CC 0x0000 0x9 0x0
1459#define MX6SX_PAD_SD4_DATA2__USDHC4_DATA2 0x0288 0x05D0 0x0000 0x0 0x0
1460#define MX6SX_PAD_SD4_DATA2__RAWNAND_DATA12 0x0288 0x05D0 0x0000 0x1 0x0
1461#define MX6SX_PAD_SD4_DATA2__I2C2_SDA 0x0288 0x05D0 0x07B4 0x2 0x0
1462#define MX6SX_PAD_SD4_DATA2__AUDMUX_AUD3_TXFS 0x0288 0x05D0 0x0640 0x3 0x0
1463#define MX6SX_PAD_SD4_DATA2__LCDIF2_DATA_10 0x0288 0x05D0 0x0000 0x4 0x0
1464#define MX6SX_PAD_SD4_DATA2__GPIO6_IO_16 0x0288 0x05D0 0x0000 0x5 0x0
1465#define MX6SX_PAD_SD4_DATA2__ECSPI2_SS3 0x0288 0x05D0 0x0000 0x6 0x0
1466#define MX6SX_PAD_SD4_DATA2__TPSMP_HDATA_23 0x0288 0x05D0 0x0000 0x7 0x0
1467#define MX6SX_PAD_SD4_DATA2__VDEC_DEBUG_15 0x0288 0x05D0 0x0000 0x8 0x0
1468#define MX6SX_PAD_SD4_DATA2__SDMA_DEBUG_BUS_RWB 0x0288 0x05D0 0x0000 0x9 0x0
1469#define MX6SX_PAD_SD4_DATA3__USDHC4_DATA3 0x028C 0x05D4 0x0000 0x0 0x0
1470#define MX6SX_PAD_SD4_DATA3__RAWNAND_DATA13 0x028C 0x05D4 0x0000 0x1 0x0
1471#define MX6SX_PAD_SD4_DATA3__I2C2_SCL 0x028C 0x05D4 0x07B0 0x2 0x0
1472#define MX6SX_PAD_SD4_DATA3__AUDMUX_AUD3_TXD 0x028C 0x05D4 0x0630 0x3 0x0
1473#define MX6SX_PAD_SD4_DATA3__LCDIF2_DATA_9 0x028C 0x05D4 0x0000 0x4 0x0
1474#define MX6SX_PAD_SD4_DATA3__GPIO6_IO_17 0x028C 0x05D4 0x0000 0x5 0x0
1475#define MX6SX_PAD_SD4_DATA3__ECSPI2_RDY 0x028C 0x05D4 0x0000 0x6 0x0
1476#define MX6SX_PAD_SD4_DATA3__TPSMP_HDATA_24 0x028C 0x05D4 0x0000 0x7 0x0
1477#define MX6SX_PAD_SD4_DATA3__VDEC_DEBUG_16 0x028C 0x05D4 0x0000 0x8 0x0
1478#define MX6SX_PAD_SD4_DATA3__SDMA_DEBUG_MATCHED_DMBUS 0x028C 0x05D4 0x0000 0x9 0x0
1479#define MX6SX_PAD_SD4_DATA4__USDHC4_DATA4 0x0290 0x05D8 0x0000 0x0 0x0
1480#define MX6SX_PAD_SD4_DATA4__RAWNAND_DATA09 0x0290 0x05D8 0x0000 0x1 0x0
1481#define MX6SX_PAD_SD4_DATA4__UART5_RX 0x0290 0x05D8 0x0850 0x2 0x0
1482#define MX6SX_PAD_SD4_DATA4__UART5_TX 0x0290 0x05D8 0x0000 0x2 0x0
1483#define MX6SX_PAD_SD4_DATA4__ECSPI3_SCLK 0x0290 0x05D8 0x0730 0x3 0x0
1484#define MX6SX_PAD_SD4_DATA4__LCDIF2_DATA_8 0x0290 0x05D8 0x0000 0x4 0x0
1485#define MX6SX_PAD_SD4_DATA4__GPIO6_IO_18 0x0290 0x05D8 0x0000 0x5 0x0
1486#define MX6SX_PAD_SD4_DATA4__SPDIF_OUT 0x0290 0x05D8 0x0000 0x6 0x0
1487#define MX6SX_PAD_SD4_DATA4__TPSMP_HDATA_16 0x0290 0x05D8 0x0000 0x7 0x0
1488#define MX6SX_PAD_SD4_DATA4__USB_OTG_HOST_MODE 0x0290 0x05D8 0x0000 0x8 0x0
1489#define MX6SX_PAD_SD4_DATA4__SDMA_DEBUG_RTBUFFER_WRITE 0x0290 0x05D8 0x0000 0x9 0x0
1490#define MX6SX_PAD_SD4_DATA5__USDHC4_DATA5 0x0294 0x05DC 0x0000 0x0 0x0
1491#define MX6SX_PAD_SD4_DATA5__RAWNAND_CE2_B 0x0294 0x05DC 0x0000 0x1 0x0
1492#define MX6SX_PAD_SD4_DATA5__UART5_RX 0x0294 0x05DC 0x0850 0x2 0x1
1493#define MX6SX_PAD_SD4_DATA5__UART5_TX 0x0294 0x05DC 0x0000 0x2 0x0
1494#define MX6SX_PAD_SD4_DATA5__ECSPI3_MOSI 0x0294 0x05DC 0x0738 0x3 0x0
1495#define MX6SX_PAD_SD4_DATA5__LCDIF2_DATA_7 0x0294 0x05DC 0x0000 0x4 0x0
1496#define MX6SX_PAD_SD4_DATA5__GPIO6_IO_19 0x0294 0x05DC 0x0000 0x5 0x0
1497#define MX6SX_PAD_SD4_DATA5__SPDIF_IN 0x0294 0x05DC 0x0824 0x6 0x0
1498#define MX6SX_PAD_SD4_DATA5__TPSMP_HDATA_17 0x0294 0x05DC 0x0000 0x7 0x0
1499#define MX6SX_PAD_SD4_DATA5__VDEC_DEBUG_9 0x0294 0x05DC 0x0000 0x8 0x0
1500#define MX6SX_PAD_SD4_DATA5__SDMA_DEBUG_EVENT_CHANNEL_0 0x0294 0x05DC 0x0000 0x9 0x0
1501#define MX6SX_PAD_SD4_DATA6__USDHC4_DATA6 0x0298 0x05E0 0x0000 0x0 0x0
1502#define MX6SX_PAD_SD4_DATA6__RAWNAND_CE3_B 0x0298 0x05E0 0x0000 0x1 0x0
1503#define MX6SX_PAD_SD4_DATA6__UART5_RTS_B 0x0298 0x05E0 0x084C 0x2 0x0
1504#define MX6SX_PAD_SD4_DATA6__ECSPI3_MISO 0x0298 0x05E0 0x0734 0x3 0x0
1505#define MX6SX_PAD_SD4_DATA6__LCDIF2_DATA_6 0x0298 0x05E0 0x0000 0x4 0x0
1506#define MX6SX_PAD_SD4_DATA6__GPIO6_IO_20 0x0298 0x05E0 0x0000 0x5 0x0
1507#define MX6SX_PAD_SD4_DATA6__USDHC4_WP 0x0298 0x05E0 0x0878 0x6 0x0
1508#define MX6SX_PAD_SD4_DATA6__TPSMP_HDATA_18 0x0298 0x05E0 0x0000 0x7 0x0
1509#define MX6SX_PAD_SD4_DATA6__VDEC_DEBUG_10 0x0298 0x05E0 0x0000 0x8 0x0
1510#define MX6SX_PAD_SD4_DATA6__SDMA_DEBUG_EVENT_CHANNEL_1 0x0298 0x05E0 0x0000 0x9 0x0
1511#define MX6SX_PAD_SD4_DATA7__USDHC4_DATA7 0x029C 0x05E4 0x0000 0x0 0x0
1512#define MX6SX_PAD_SD4_DATA7__RAWNAND_DATA08 0x029C 0x05E4 0x0000 0x1 0x0
1513#define MX6SX_PAD_SD4_DATA7__UART5_CTS_B 0x029C 0x05E4 0x084C 0x2 0x1
1514#define MX6SX_PAD_SD4_DATA7__ECSPI3_SS0 0x029C 0x05E4 0x073C 0x3 0x0
1515#define MX6SX_PAD_SD4_DATA7__LCDIF2_DATA_15 0x029C 0x05E4 0x0000 0x4 0x0
1516#define MX6SX_PAD_SD4_DATA7__GPIO6_IO_21 0x029C 0x05E4 0x0000 0x5 0x0
1517#define MX6SX_PAD_SD4_DATA7__USDHC4_CD_B 0x029C 0x05E4 0x0874 0x6 0x0
1518#define MX6SX_PAD_SD4_DATA7__TPSMP_HDATA_15 0x029C 0x05E4 0x0000 0x7 0x0
1519#define MX6SX_PAD_SD4_DATA7__USB_OTG_PWR_WAKE 0x029C 0x05E4 0x0000 0x8 0x0
1520#define MX6SX_PAD_SD4_DATA7__SDMA_DEBUG_YIELD 0x029C 0x05E4 0x0000 0x9 0x0
1521#define MX6SX_PAD_SD4_RESET_B__USDHC4_RESET_B 0x02A0 0x05E8 0x0000 0x0 0x0
1522#define MX6SX_PAD_SD4_RESET_B__RAWNAND_DQS 0x02A0 0x05E8 0x0000 0x1 0x0
1523#define MX6SX_PAD_SD4_RESET_B__USDHC4_RESET 0x02A0 0x05E8 0x0000 0x2 0x0
1524#define MX6SX_PAD_SD4_RESET_B__AUDMUX_MCLK 0x02A0 0x05E8 0x0000 0x3 0x0
1525#define MX6SX_PAD_SD4_RESET_B__LCDIF2_RESET 0x02A0 0x05E8 0x0000 0x4 0x0
1526#define MX6SX_PAD_SD4_RESET_B__GPIO6_IO_22 0x02A0 0x05E8 0x0000 0x5 0x0
1527#define MX6SX_PAD_SD4_RESET_B__LCDIF2_CS 0x02A0 0x05E8 0x0000 0x6 0x0
1528#define MX6SX_PAD_SD4_RESET_B__TPSMP_HDATA_25 0x02A0 0x05E8 0x0000 0x7 0x0
1529#define MX6SX_PAD_SD4_RESET_B__VDEC_DEBUG_17 0x02A0 0x05E8 0x0000 0x8 0x0
1530#define MX6SX_PAD_SD4_RESET_B__SDMA_DEBUG_BUS_DEVICE_2 0x02A0 0x05E8 0x0000 0x9 0x0
1531#define MX6SX_PAD_USB_H_DATA__USB_H_DATA 0x02A4 0x05EC 0x0000 0x0 0x0
1532#define MX6SX_PAD_USB_H_DATA__PWM2_OUT 0x02A4 0x05EC 0x0000 0x1 0x0
1533#define MX6SX_PAD_USB_H_DATA__ANATOP_24M_OUT 0x02A4 0x05EC 0x0000 0x2 0x0
1534#define MX6SX_PAD_USB_H_DATA__I2C4_SDA 0x02A4 0x05EC 0x07C4 0x3 0x1
1535#define MX6SX_PAD_USB_H_DATA__WDOG3_WDOG_B 0x02A4 0x05EC 0x0000 0x4 0x0
1536#define MX6SX_PAD_USB_H_DATA__GPIO7_IO_10 0x02A4 0x05EC 0x0000 0x5 0x0
1537#define MX6SX_PAD_USB_H_STROBE__USB_H_STROBE 0x02A8 0x05F0 0x0000 0x0 0x0
1538#define MX6SX_PAD_USB_H_STROBE__PWM1_OUT 0x02A8 0x05F0 0x0000 0x1 0x0
1539#define MX6SX_PAD_USB_H_STROBE__ANATOP_32K_OUT 0x02A8 0x05F0 0x0000 0x2 0x0
1540#define MX6SX_PAD_USB_H_STROBE__I2C4_SCL 0x02A8 0x05F0 0x07C0 0x3 0x1
1541#define MX6SX_PAD_USB_H_STROBE__WDOG3_WDOG_RST_B_DEB 0x02A8 0x05F0 0x0000 0x4 0x0
1542#define MX6SX_PAD_USB_H_STROBE__GPIO7_IO_11 0x02A8 0x05F0 0x0000 0x5 0x0
1543
1544#endif /* __DTS_IMX6SX_PINFUNC_H */
diff --git a/arch/arm/boot/dts/imx6sx-sdb.dts b/arch/arm/boot/dts/imx6sx-sdb.dts
new file mode 100644
index 000000000000..a3980d970590
--- /dev/null
+++ b/arch/arm/boot/dts/imx6sx-sdb.dts
@@ -0,0 +1,479 @@
1/*
2 * Copyright (C) 2014 Freescale Semiconductor, Inc.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 as
6 * published by the Free Software Foundation.
7 */
8
9/dts-v1/;
10
11#include <dt-bindings/gpio/gpio.h>
12#include <dt-bindings/input/input.h>
13#include "imx6sx.dtsi"
14
15/ {
16 model = "Freescale i.MX6 SoloX SDB Board";
17 compatible = "fsl,imx6sx-sdb", "fsl,imx6sx";
18
19 chosen {
20 stdout-path = &uart1;
21 };
22
23 memory {
24 reg = <0x80000000 0x40000000>;
25 };
26
27 gpio-keys {
28 compatible = "gpio-keys";
29 pinctrl-names = "default";
30 pinctrl-0 = <&pinctrl_gpio_keys>;
31
32 volume-up {
33 label = "Volume Up";
34 gpios = <&gpio1 18 GPIO_ACTIVE_LOW>;
35 linux,code = <KEY_VOLUMEUP>;
36 };
37
38 volume-down {
39 label = "Volume Down";
40 gpios = <&gpio1 19 GPIO_ACTIVE_LOW>;
41 linux,code = <KEY_VOLUMEDOWN>;
42 };
43 };
44
45 regulators {
46 compatible = "simple-bus";
47 #address-cells = <1>;
48 #size-cells = <0>;
49
50 vcc_sd3: regulator@0 {
51 compatible = "regulator-fixed";
52 reg = <0>;
53 pinctrl-names = "default";
54 pinctrl-0 = <&pinctrl_vcc_sd3>;
55 regulator-name = "VCC_SD3";
56 regulator-min-microvolt = <3000000>;
57 regulator-max-microvolt = <3000000>;
58 gpio = <&gpio2 11 GPIO_ACTIVE_HIGH>;
59 enable-active-high;
60 };
61
62 reg_usb_otg1_vbus: regulator@1 {
63 compatible = "regulator-fixed";
64 reg = <1>;
65 pinctrl-names = "default";
66 pinctrl-0 = <&pinctrl_usb_otg1>;
67 regulator-name = "usb_otg1_vbus";
68 regulator-min-microvolt = <5000000>;
69 regulator-max-microvolt = <5000000>;
70 gpio = <&gpio1 9 GPIO_ACTIVE_HIGH>;
71 enable-active-high;
72 };
73
74 reg_usb_otg2_vbus: regulator@2 {
75 compatible = "regulator-fixed";
76 reg = <2>;
77 pinctrl-names = "default";
78 pinctrl-0 = <&pinctrl_usb_otg2>;
79 regulator-name = "usb_otg2_vbus";
80 regulator-min-microvolt = <5000000>;
81 regulator-max-microvolt = <5000000>;
82 gpio = <&gpio1 12 GPIO_ACTIVE_HIGH>;
83 enable-active-high;
84 };
85
86 reg_psu_5v: regulator@3 {
87 compatible = "regulator-fixed";
88 reg = <3>;
89 regulator-name = "PSU-5V0";
90 regulator-min-microvolt = <5000000>;
91 regulator-max-microvolt = <5000000>;
92 };
93 };
94
95 sound {
96 compatible = "fsl,imx6sx-sdb-wm8962", "fsl,imx-audio-wm8962";
97 model = "wm8962-audio";
98 ssi-controller = <&ssi2>;
99 audio-codec = <&codec>;
100 audio-routing =
101 "Headphone Jack", "HPOUTL",
102 "Headphone Jack", "HPOUTR",
103 "Ext Spk", "SPKOUTL",
104 "Ext Spk", "SPKOUTR",
105 "AMIC", "MICBIAS",
106 "IN3R", "AMIC";
107 mux-int-port = <2>;
108 mux-ext-port = <6>;
109 };
110};
111
112&audmux {
113 pinctrl-names = "default";
114 pinctrl-0 = <&pinctrl_audmux>;
115 status = "okay";
116};
117
118&fec1 {
119 pinctrl-names = "default";
120 pinctrl-0 = <&pinctrl_enet1>;
121 phy-mode = "rgmii";
122 status = "okay";
123};
124
125&i2c1 {
126 clock-frequency = <100000>;
127 pinctrl-names = "default";
128 pinctrl-0 = <&pinctrl_i2c1>;
129 status = "okay";
130
131 pmic: pfuze100@08 {
132 compatible = "fsl,pfuze100";
133 reg = <0x08>;
134
135 regulators {
136 sw1a_reg: sw1ab {
137 regulator-min-microvolt = <300000>;
138 regulator-max-microvolt = <1875000>;
139 regulator-boot-on;
140 regulator-always-on;
141 regulator-ramp-delay = <6250>;
142 };
143
144 sw1c_reg: sw1c {
145 regulator-min-microvolt = <300000>;
146 regulator-max-microvolt = <1875000>;
147 regulator-boot-on;
148 regulator-always-on;
149 regulator-ramp-delay = <6250>;
150 };
151
152 sw2_reg: sw2 {
153 regulator-min-microvolt = <800000>;
154 regulator-max-microvolt = <3300000>;
155 regulator-boot-on;
156 regulator-always-on;
157 };
158
159 sw3a_reg: sw3a {
160 regulator-min-microvolt = <400000>;
161 regulator-max-microvolt = <1975000>;
162 regulator-boot-on;
163 regulator-always-on;
164 };
165
166 sw3b_reg: sw3b {
167 regulator-min-microvolt = <400000>;
168 regulator-max-microvolt = <1975000>;
169 regulator-boot-on;
170 regulator-always-on;
171 };
172
173 sw4_reg: sw4 {
174 regulator-min-microvolt = <800000>;
175 regulator-max-microvolt = <3300000>;
176 };
177
178 swbst_reg: swbst {
179 regulator-min-microvolt = <5000000>;
180 regulator-max-microvolt = <5150000>;
181 };
182
183 snvs_reg: vsnvs {
184 regulator-min-microvolt = <1000000>;
185 regulator-max-microvolt = <3000000>;
186 regulator-boot-on;
187 regulator-always-on;
188 };
189
190 vref_reg: vrefddr {
191 regulator-boot-on;
192 regulator-always-on;
193 };
194
195 vgen1_reg: vgen1 {
196 regulator-min-microvolt = <800000>;
197 regulator-max-microvolt = <1550000>;
198 regulator-always-on;
199 };
200
201 vgen2_reg: vgen2 {
202 regulator-min-microvolt = <800000>;
203 regulator-max-microvolt = <1550000>;
204 };
205
206 vgen3_reg: vgen3 {
207 regulator-min-microvolt = <1800000>;
208 regulator-max-microvolt = <3300000>;
209 regulator-always-on;
210 };
211
212 vgen4_reg: vgen4 {
213 regulator-min-microvolt = <1800000>;
214 regulator-max-microvolt = <3300000>;
215 regulator-always-on;
216 };
217
218 vgen5_reg: vgen5 {
219 regulator-min-microvolt = <1800000>;
220 regulator-max-microvolt = <3300000>;
221 regulator-always-on;
222 };
223
224 vgen6_reg: vgen6 {
225 regulator-min-microvolt = <1800000>;
226 regulator-max-microvolt = <3300000>;
227 regulator-always-on;
228 };
229 };
230 };
231};
232
233&i2c4 {
234 clock-frequency = <100000>;
235 pinctrl-names = "default";
236 pinctrl-0 = <&pinctrl_i2c4>;
237 status = "okay";
238
239 codec: wm8962@1a {
240 compatible = "wlf,wm8962";
241 reg = <0x1a>;
242 clocks = <&clks IMX6SX_CLK_AUDIO>;
243 DCVDD-supply = <&vgen4_reg>;
244 DBVDD-supply = <&vgen4_reg>;
245 AVDD-supply = <&vgen4_reg>;
246 CPVDD-supply = <&vgen4_reg>;
247 MICVDD-supply = <&vgen3_reg>;
248 PLLVDD-supply = <&vgen4_reg>;
249 SPKVDD1-supply = <&reg_psu_5v>;
250 SPKVDD2-supply = <&reg_psu_5v>;
251 };
252};
253
254&ssi2 {
255 status = "okay";
256};
257
258&uart1 {
259 pinctrl-names = "default";
260 pinctrl-0 = <&pinctrl_uart1>;
261 status = "okay";
262};
263
264&uart5 { /* for bluetooth */
265 pinctrl-names = "default";
266 pinctrl-0 = <&pinctrl_uart5>;
267 fsl,uart-has-rtscts;
268 status = "okay";
269};
270
271&usbotg1 {
272 vbus-supply = <&reg_usb_otg1_vbus>;
273 pinctrl-names = "default";
274 pinctrl-0 = <&pinctrl_usb_otg1_id>;
275 status = "okay";
276};
277
278&usbotg2 {
279 vbus-supply = <&reg_usb_otg2_vbus>;
280 dr_mode = "host";
281 status = "okay";
282};
283
284&usdhc2 {
285 pinctrl-names = "default";
286 pinctrl-0 = <&pinctrl_usdhc2>;
287 non-removable;
288 no-1-8-v;
289 keep-power-in-suspend;
290 enable-sdio-wakeup;
291 status = "okay";
292};
293
294&usdhc3 {
295 pinctrl-names = "default", "state_100mhz", "state_200mhz";
296 pinctrl-0 = <&pinctrl_usdhc3>;
297 pinctrl-1 = <&pinctrl_usdhc3_100mhz>;
298 pinctrl-2 = <&pinctrl_usdhc3_200mhz>;
299 bus-width = <8>;
300 cd-gpios = <&gpio2 10 GPIO_ACTIVE_HIGH>;
301 wp-gpios = <&gpio2 15 GPIO_ACTIVE_HIGH>;
302 keep-power-in-suspend;
303 enable-sdio-wakeup;
304 vmmc-supply = <&vcc_sd3>;
305 status = "okay";
306};
307
308&usdhc4 {
309 pinctrl-names = "default";
310 pinctrl-0 = <&pinctrl_usdhc4>;
311 cd-gpios = <&gpio6 21 GPIO_ACTIVE_HIGH>;
312 wp-gpios = <&gpio6 20 GPIO_ACTIVE_HIGH>;
313 status = "okay";
314};
315
316&iomuxc {
317 imx6x-sdb {
318 pinctrl_audmux: audmuxgrp {
319 fsl,pins = <
320 MX6SX_PAD_CSI_DATA00__AUDMUX_AUD6_TXC 0x130b0
321 MX6SX_PAD_CSI_DATA01__AUDMUX_AUD6_TXFS 0x130b0
322 MX6SX_PAD_CSI_HSYNC__AUDMUX_AUD6_TXD 0x120b0
323 MX6SX_PAD_CSI_VSYNC__AUDMUX_AUD6_RXD 0x130b0
324 MX6SX_PAD_CSI_PIXCLK__AUDMUX_MCLK 0x130b0
325 >;
326 };
327
328 pinctrl_enet1: enet1grp {
329 fsl,pins = <
330 MX6SX_PAD_ENET1_MDIO__ENET1_MDIO 0xa0b1
331 MX6SX_PAD_ENET1_MDC__ENET1_MDC 0xa0b1
332 MX6SX_PAD_RGMII1_TXC__ENET1_RGMII_TXC 0xa0b1
333 MX6SX_PAD_RGMII1_TD0__ENET1_TX_DATA_0 0xa0b1
334 MX6SX_PAD_RGMII1_TD1__ENET1_TX_DATA_1 0xa0b1
335 MX6SX_PAD_RGMII1_TD2__ENET1_TX_DATA_2 0xa0b1
336 MX6SX_PAD_RGMII1_TD3__ENET1_TX_DATA_3 0xa0b1
337 MX6SX_PAD_RGMII1_TX_CTL__ENET1_TX_EN 0xa0b1
338 MX6SX_PAD_RGMII1_RXC__ENET1_RX_CLK 0x3081
339 MX6SX_PAD_RGMII1_RD0__ENET1_RX_DATA_0 0x3081
340 MX6SX_PAD_RGMII1_RD1__ENET1_RX_DATA_1 0x3081
341 MX6SX_PAD_RGMII1_RD2__ENET1_RX_DATA_2 0x3081
342 MX6SX_PAD_RGMII1_RD3__ENET1_RX_DATA_3 0x3081
343 MX6SX_PAD_RGMII1_RX_CTL__ENET1_RX_EN 0x3081
344 >;
345 };
346
347 pinctrl_gpio_keys: gpio_keysgrp {
348 fsl,pins = <
349 MX6SX_PAD_CSI_DATA04__GPIO1_IO_18 0x17059
350 MX6SX_PAD_CSI_DATA05__GPIO1_IO_19 0x17059
351 >;
352 };
353
354 pinctrl_i2c1: i2c1grp {
355 fsl,pins = <
356 MX6SX_PAD_GPIO1_IO01__I2C1_SDA 0x4001b8b1
357 MX6SX_PAD_GPIO1_IO00__I2C1_SCL 0x4001b8b1
358 >;
359 };
360
361 pinctrl_i2c4: i2c4grp {
362 fsl,pins = <
363 MX6SX_PAD_CSI_DATA07__I2C4_SDA 0x4001b8b1
364 MX6SX_PAD_CSI_DATA06__I2C4_SCL 0x4001b8b1
365 >;
366 };
367
368 pinctrl_vcc_sd3: vccsd3grp {
369 fsl,pins = <
370 MX6SX_PAD_KEY_COL1__GPIO2_IO_11 0x17059
371 >;
372 };
373
374 pinctrl_uart1: uart1grp {
375 fsl,pins = <
376 MX6SX_PAD_GPIO1_IO04__UART1_TX 0x1b0b1
377 MX6SX_PAD_GPIO1_IO05__UART1_RX 0x1b0b1
378 >;
379 };
380
381 pinctrl_uart5: uart5grp {
382 fsl,pins = <
383 MX6SX_PAD_KEY_ROW3__UART5_RX 0x1b0b1
384 MX6SX_PAD_KEY_COL3__UART5_TX 0x1b0b1
385 MX6SX_PAD_KEY_ROW2__UART5_CTS_B 0x1b0b1
386 MX6SX_PAD_KEY_COL2__UART5_RTS_B 0x1b0b1
387 >;
388 };
389
390 pinctrl_usb_otg1: usbotg1grp {
391 fsl,pins = <
392 MX6SX_PAD_GPIO1_IO09__GPIO1_IO_9 0x10b0
393 >;
394 };
395
396 pinctrl_usb_otg1_id: usbotg1idgrp {
397 fsl,pins = <
398 MX6SX_PAD_GPIO1_IO10__ANATOP_OTG1_ID 0x17059
399 >;
400 };
401
402 pinctrl_usb_otg2: usbot2ggrp {
403 fsl,pins = <
404 MX6SX_PAD_GPIO1_IO12__GPIO1_IO_12 0x10b0
405 >;
406 };
407
408 pinctrl_usdhc2: usdhc2grp {
409 fsl,pins = <
410 MX6SX_PAD_SD2_CMD__USDHC2_CMD 0x17059
411 MX6SX_PAD_SD2_CLK__USDHC2_CLK 0x10059
412 MX6SX_PAD_SD2_DATA0__USDHC2_DATA0 0x17059
413 MX6SX_PAD_SD2_DATA1__USDHC2_DATA1 0x17059
414 MX6SX_PAD_SD2_DATA2__USDHC2_DATA2 0x17059
415 MX6SX_PAD_SD2_DATA3__USDHC2_DATA3 0x17059
416 >;
417 };
418
419 pinctrl_usdhc3: usdhc3grp {
420 fsl,pins = <
421 MX6SX_PAD_SD3_CMD__USDHC3_CMD 0x17059
422 MX6SX_PAD_SD3_CLK__USDHC3_CLK 0x10059
423 MX6SX_PAD_SD3_DATA0__USDHC3_DATA0 0x17059
424 MX6SX_PAD_SD3_DATA1__USDHC3_DATA1 0x17059
425 MX6SX_PAD_SD3_DATA2__USDHC3_DATA2 0x17059
426 MX6SX_PAD_SD3_DATA3__USDHC3_DATA3 0x17059
427 MX6SX_PAD_SD3_DATA4__USDHC3_DATA4 0x17059
428 MX6SX_PAD_SD3_DATA5__USDHC3_DATA5 0x17059
429 MX6SX_PAD_SD3_DATA6__USDHC3_DATA6 0x17059
430 MX6SX_PAD_SD3_DATA7__USDHC3_DATA7 0x17059
431 MX6SX_PAD_KEY_COL0__GPIO2_IO_10 0x17059 /* CD */
432 MX6SX_PAD_KEY_ROW0__GPIO2_IO_15 0x17059 /* WP */
433 >;
434 };
435
436 pinctrl_usdhc3_100mhz: usdhc3grp-100mhz {
437 fsl,pins = <
438 MX6SX_PAD_SD3_CMD__USDHC3_CMD 0x170b9
439 MX6SX_PAD_SD3_CLK__USDHC3_CLK 0x100b9
440 MX6SX_PAD_SD3_DATA0__USDHC3_DATA0 0x170b9
441 MX6SX_PAD_SD3_DATA1__USDHC3_DATA1 0x170b9
442 MX6SX_PAD_SD3_DATA2__USDHC3_DATA2 0x170b9
443 MX6SX_PAD_SD3_DATA3__USDHC3_DATA3 0x170b9
444 MX6SX_PAD_SD3_DATA4__USDHC3_DATA4 0x170b9
445 MX6SX_PAD_SD3_DATA5__USDHC3_DATA5 0x170b9
446 MX6SX_PAD_SD3_DATA6__USDHC3_DATA6 0x170b9
447 MX6SX_PAD_SD3_DATA7__USDHC3_DATA7 0x170b9
448 >;
449 };
450
451 pinctrl_usdhc3_200mhz: usdhc3grp-200mhz {
452 fsl,pins = <
453 MX6SX_PAD_SD3_CMD__USDHC3_CMD 0x170f9
454 MX6SX_PAD_SD3_CLK__USDHC3_CLK 0x100f9
455 MX6SX_PAD_SD3_DATA0__USDHC3_DATA0 0x170f9
456 MX6SX_PAD_SD3_DATA1__USDHC3_DATA1 0x170f9
457 MX6SX_PAD_SD3_DATA2__USDHC3_DATA2 0x170f9
458 MX6SX_PAD_SD3_DATA3__USDHC3_DATA3 0x170f9
459 MX6SX_PAD_SD3_DATA4__USDHC3_DATA4 0x170f9
460 MX6SX_PAD_SD3_DATA5__USDHC3_DATA5 0x170f9
461 MX6SX_PAD_SD3_DATA6__USDHC3_DATA6 0x170f9
462 MX6SX_PAD_SD3_DATA7__USDHC3_DATA7 0x170f9
463 >;
464 };
465
466 pinctrl_usdhc4: usdhc4grp {
467 fsl,pins = <
468 MX6SX_PAD_SD4_CMD__USDHC4_CMD 0x17059
469 MX6SX_PAD_SD4_CLK__USDHC4_CLK 0x10059
470 MX6SX_PAD_SD4_DATA0__USDHC4_DATA0 0x17059
471 MX6SX_PAD_SD4_DATA1__USDHC4_DATA1 0x17059
472 MX6SX_PAD_SD4_DATA2__USDHC4_DATA2 0x17059
473 MX6SX_PAD_SD4_DATA3__USDHC4_DATA3 0x17059
474 MX6SX_PAD_SD4_DATA7__GPIO6_IO_21 0x17059 /* CD */
475 MX6SX_PAD_SD4_DATA6__GPIO6_IO_20 0x17059 /* WP */
476 >;
477 };
478 };
479};
diff --git a/arch/arm/boot/dts/imx6sx.dtsi b/arch/arm/boot/dts/imx6sx.dtsi
new file mode 100644
index 000000000000..f4b9da65bc0f
--- /dev/null
+++ b/arch/arm/boot/dts/imx6sx.dtsi
@@ -0,0 +1,1208 @@
1/*
2 * Copyright 2014 Freescale Semiconductor, Inc.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 as
6 * published by the Free Software Foundation.
7 */
8
9#include <dt-bindings/clock/imx6sx-clock.h>
10#include <dt-bindings/gpio/gpio.h>
11#include <dt-bindings/interrupt-controller/arm-gic.h>
12#include "imx6sx-pinfunc.h"
13#include "skeleton.dtsi"
14
15/ {
16 aliases {
17 can0 = &flexcan1;
18 can1 = &flexcan2;
19 ethernet0 = &fec1;
20 ethernet1 = &fec2;
21 gpio0 = &gpio1;
22 gpio1 = &gpio2;
23 gpio2 = &gpio3;
24 gpio3 = &gpio4;
25 gpio4 = &gpio5;
26 gpio5 = &gpio6;
27 gpio6 = &gpio7;
28 i2c0 = &i2c1;
29 i2c1 = &i2c2;
30 i2c2 = &i2c3;
31 i2c3 = &i2c4;
32 mmc0 = &usdhc1;
33 mmc1 = &usdhc2;
34 mmc2 = &usdhc3;
35 mmc3 = &usdhc4;
36 serial0 = &uart1;
37 serial1 = &uart2;
38 serial2 = &uart3;
39 serial3 = &uart4;
40 serial4 = &uart5;
41 serial5 = &uart6;
42 spi0 = &ecspi1;
43 spi1 = &ecspi2;
44 spi2 = &ecspi3;
45 spi3 = &ecspi4;
46 spi4 = &ecspi5;
47 usbphy0 = &usbphy1;
48 usbphy1 = &usbphy2;
49 };
50
51 cpus {
52 #address-cells = <1>;
53 #size-cells = <0>;
54
55 cpu0: cpu@0 {
56 compatible = "arm,cortex-a9";
57 device_type = "cpu";
58 reg = <0>;
59 next-level-cache = <&L2>;
60 operating-points = <
61 /* kHz uV */
62 996000 1250000
63 792000 1175000
64 396000 1075000
65 >;
66 fsl,soc-operating-points = <
67 /* ARM kHz SOC uV */
68 996000 1175000
69 792000 1175000
70 396000 1175000
71 >;
72 clock-latency = <61036>; /* two CLK32 periods */
73 clocks = <&clks IMX6SX_CLK_ARM>,
74 <&clks IMX6SX_CLK_PLL2_PFD2>,
75 <&clks IMX6SX_CLK_STEP>,
76 <&clks IMX6SX_CLK_PLL1_SW>,
77 <&clks IMX6SX_CLK_PLL1_SYS>;
78 clock-names = "arm", "pll2_pfd2_396m", "step",
79 "pll1_sw", "pll1_sys";
80 arm-supply = <&reg_arm>;
81 soc-supply = <&reg_soc>;
82 };
83 };
84
85 intc: interrupt-controller@00a01000 {
86 compatible = "arm,cortex-a9-gic";
87 #interrupt-cells = <3>;
88 interrupt-controller;
89 reg = <0x00a01000 0x1000>,
90 <0x00a00100 0x100>;
91 };
92
93 clocks {
94 #address-cells = <1>;
95 #size-cells = <0>;
96
97 ckil: clock@0 {
98 compatible = "fixed-clock";
99 reg = <0>;
100 #clock-cells = <0>;
101 clock-frequency = <32768>;
102 clock-output-names = "ckil";
103 };
104
105 osc: clock@1 {
106 compatible = "fixed-clock";
107 reg = <1>;
108 #clock-cells = <0>;
109 clock-frequency = <24000000>;
110 clock-output-names = "osc";
111 };
112
113 ipp_di0: clock@2 {
114 compatible = "fixed-clock";
115 reg = <2>;
116 #clock-cells = <0>;
117 clock-frequency = <0>;
118 clock-output-names = "ipp_di0";
119 };
120
121 ipp_di1: clock@3 {
122 compatible = "fixed-clock";
123 reg = <3>;
124 #clock-cells = <0>;
125 clock-frequency = <0>;
126 clock-output-names = "ipp_di1";
127 };
128 };
129
130 soc {
131 #address-cells = <1>;
132 #size-cells = <1>;
133 compatible = "simple-bus";
134 interrupt-parent = <&intc>;
135 ranges;
136
137 pmu {
138 compatible = "arm,cortex-a9-pmu";
139 interrupts = <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>;
140 };
141
142 ocram: sram@00900000 {
143 compatible = "mmio-sram";
144 reg = <0x00900000 0x20000>;
145 clocks = <&clks IMX6SX_CLK_OCRAM>;
146 };
147
148 L2: l2-cache@00a02000 {
149 compatible = "arm,pl310-cache";
150 reg = <0x00a02000 0x1000>;
151 interrupts = <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>;
152 cache-unified;
153 cache-level = <2>;
154 arm,tag-latency = <4 2 3>;
155 arm,data-latency = <4 2 3>;
156 };
157
158 dma_apbh: dma-apbh@01804000 {
159 compatible = "fsl,imx6sx-dma-apbh", "fsl,imx28-dma-apbh";
160 reg = <0x01804000 0x2000>;
161 interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>,
162 <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>,
163 <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>,
164 <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
165 interrupt-names = "gpmi0", "gpmi1", "gpmi2", "gpmi3";
166 #dma-cells = <1>;
167 dma-channels = <4>;
168 clocks = <&clks IMX6SX_CLK_APBH_DMA>;
169 };
170
171 gpmi: gpmi-nand@01806000{
172 compatible = "fsl,imx6sx-gpmi-nand";
173 #address-cells = <1>;
174 #size-cells = <1>;
175 reg = <0x01806000 0x2000>, <0x01808000 0x4000>;
176 reg-names = "gpmi-nand", "bch";
177 interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
178 interrupt-names = "bch";
179 clocks = <&clks IMX6SX_CLK_GPMI_IO>,
180 <&clks IMX6SX_CLK_GPMI_APB>,
181 <&clks IMX6SX_CLK_GPMI_BCH>,
182 <&clks IMX6SX_CLK_GPMI_BCH_APB>,
183 <&clks IMX6SX_CLK_PER1_BCH>;
184 clock-names = "gpmi_io", "gpmi_apb", "gpmi_bch",
185 "gpmi_bch_apb", "per1_bch";
186 dmas = <&dma_apbh 0>;
187 dma-names = "rx-tx";
188 status = "disabled";
189 };
190
191 aips1: aips-bus@02000000 {
192 compatible = "fsl,aips-bus", "simple-bus";
193 #address-cells = <1>;
194 #size-cells = <1>;
195 reg = <0x02000000 0x100000>;
196 ranges;
197
198 spba-bus@02000000 {
199 compatible = "fsl,spba-bus", "simple-bus";
200 #address-cells = <1>;
201 #size-cells = <1>;
202 reg = <0x02000000 0x40000>;
203 ranges;
204
205 spdif: spdif@02004000 {
206 compatible = "fsl,imx6sx-spdif", "fsl,imx35-spdif";
207 reg = <0x02004000 0x4000>;
208 interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
209 dmas = <&sdma 14 18 0>,
210 <&sdma 15 18 0>;
211 dma-names = "rx", "tx";
212 clocks = <&clks IMX6SX_CLK_SPDIF>,
213 <&clks IMX6SX_CLK_OSC>,
214 <&clks IMX6SX_CLK_SPDIF>,
215 <&clks 0>, <&clks 0>, <&clks 0>,
216 <&clks IMX6SX_CLK_IPG>,
217 <&clks 0>, <&clks 0>,
218 <&clks IMX6SX_CLK_SPBA>;
219 clock-names = "core", "rxtx0",
220 "rxtx1", "rxtx2",
221 "rxtx3", "rxtx4",
222 "rxtx5", "rxtx6",
223 "rxtx7", "dma";
224 status = "disabled";
225 };
226
227 ecspi1: ecspi@02008000 {
228 #address-cells = <1>;
229 #size-cells = <0>;
230 compatible = "fsl,imx6sx-ecspi", "fsl,imx51-ecspi";
231 reg = <0x02008000 0x4000>;
232 interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
233 clocks = <&clks IMX6SX_CLK_ECSPI1>,
234 <&clks IMX6SX_CLK_ECSPI1>;
235 clock-names = "ipg", "per";
236 status = "disabled";
237 };
238
239 ecspi2: ecspi@0200c000 {
240 #address-cells = <1>;
241 #size-cells = <0>;
242 compatible = "fsl,imx6sx-ecspi", "fsl,imx51-ecspi";
243 reg = <0x0200c000 0x4000>;
244 interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
245 clocks = <&clks IMX6SX_CLK_ECSPI2>,
246 <&clks IMX6SX_CLK_ECSPI2>;
247 clock-names = "ipg", "per";
248 status = "disabled";
249 };
250
251 ecspi3: ecspi@02010000 {
252 #address-cells = <1>;
253 #size-cells = <0>;
254 compatible = "fsl,imx6sx-ecspi", "fsl,imx51-ecspi";
255 reg = <0x02010000 0x4000>;
256 interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
257 clocks = <&clks IMX6SX_CLK_ECSPI3>,
258 <&clks IMX6SX_CLK_ECSPI3>;
259 clock-names = "ipg", "per";
260 status = "disabled";
261 };
262
263 ecspi4: ecspi@02014000 {
264 #address-cells = <1>;
265 #size-cells = <0>;
266 compatible = "fsl,imx6sx-ecspi", "fsl,imx51-ecspi";
267 reg = <0x02014000 0x4000>;
268 interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
269 clocks = <&clks IMX6SX_CLK_ECSPI4>,
270 <&clks IMX6SX_CLK_ECSPI4>;
271 clock-names = "ipg", "per";
272 status = "disabled";
273 };
274
275 uart1: serial@02020000 {
276 compatible = "fsl,imx6sx-uart", "fsl,imx21-uart";
277 reg = <0x02020000 0x4000>;
278 interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
279 clocks = <&clks IMX6SX_CLK_UART_IPG>,
280 <&clks IMX6SX_CLK_UART_SERIAL>;
281 clock-names = "ipg", "per";
282 dmas = <&sdma 25 4 0>, <&sdma 26 4 0>;
283 dma-names = "rx", "tx";
284 status = "disabled";
285 };
286
287 esai: esai@02024000 {
288 reg = <0x02024000 0x4000>;
289 interrupts = <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>;
290 clocks = <&clks IMX6SX_CLK_ESAI_IPG>,
291 <&clks IMX6SX_CLK_ESAI_MEM>,
292 <&clks IMX6SX_CLK_ESAI_EXTAL>,
293 <&clks IMX6SX_CLK_ESAI_IPG>,
294 <&clks IMX6SX_CLK_SPBA>;
295 clock-names = "core", "mem", "extal",
296 "fsys", "dma";
297 status = "disabled";
298 };
299
300 ssi1: ssi@02028000 {
301 compatible = "fsl,imx6sx-ssi", "fsl,imx51-ssi";
302 reg = <0x02028000 0x4000>;
303 interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
304 clocks = <&clks IMX6SX_CLK_SSI1_IPG>,
305 <&clks IMX6SX_CLK_SSI1>;
306 clock-names = "ipg", "baud";
307 dmas = <&sdma 37 1 0>, <&sdma 38 1 0>;
308 dma-names = "rx", "tx";
309 fsl,fifo-depth = <15>;
310 status = "disabled";
311 };
312
313 ssi2: ssi@0202c000 {
314 compatible = "fsl,imx6sx-ssi", "fsl,imx51-ssi";
315 reg = <0x0202c000 0x4000>;
316 interrupts = <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>;
317 clocks = <&clks IMX6SX_CLK_SSI2_IPG>,
318 <&clks IMX6SX_CLK_SSI2>;
319 clock-names = "ipg", "baud";
320 dmas = <&sdma 41 1 0>, <&sdma 42 1 0>;
321 dma-names = "rx", "tx";
322 fsl,fifo-depth = <15>;
323 status = "disabled";
324 };
325
326 ssi3: ssi@02030000 {
327 compatible = "fsl,imx6sx-ssi", "fsl,imx51-ssi";
328 reg = <0x02030000 0x4000>;
329 interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
330 clocks = <&clks IMX6SX_CLK_SSI3_IPG>,
331 <&clks IMX6SX_CLK_SSI3>;
332 clock-names = "ipg", "baud";
333 dmas = <&sdma 45 1 0>, <&sdma 46 1 0>;
334 dma-names = "rx", "tx";
335 fsl,fifo-depth = <15>;
336 status = "disabled";
337 };
338
339 asrc: asrc@02034000 {
340 reg = <0x02034000 0x4000>;
341 interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
342 clocks = <&clks IMX6SX_CLK_ASRC_MEM>,
343 <&clks IMX6SX_CLK_ASRC_IPG>,
344 <&clks IMX6SX_CLK_SPDIF>,
345 <&clks IMX6SX_CLK_SPBA>;
346 clock-names = "mem", "ipg", "asrck", "dma";
347 dmas = <&sdma 17 20 1>, <&sdma 18 20 1>,
348 <&sdma 19 20 1>, <&sdma 20 20 1>,
349 <&sdma 21 20 1>, <&sdma 22 20 1>;
350 dma-names = "rxa", "rxb", "rxc",
351 "txa", "txb", "txc";
352 status = "okay";
353 };
354 };
355
356 pwm1: pwm@02080000 {
357 compatible = "fsl,imx6sx-pwm", "fsl,imx27-pwm";
358 reg = <0x02080000 0x4000>;
359 interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
360 clocks = <&clks IMX6SX_CLK_PWM1>,
361 <&clks IMX6SX_CLK_PWM1>;
362 clock-names = "ipg", "per";
363 #pwm-cells = <2>;
364 };
365
366 pwm2: pwm@02084000 {
367 compatible = "fsl,imx6sx-pwm", "fsl,imx27-pwm";
368 reg = <0x02084000 0x4000>;
369 interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
370 clocks = <&clks IMX6SX_CLK_PWM2>,
371 <&clks IMX6SX_CLK_PWM2>;
372 clock-names = "ipg", "per";
373 #pwm-cells = <2>;
374 };
375
376 pwm3: pwm@02088000 {
377 compatible = "fsl,imx6sx-pwm", "fsl,imx27-pwm";
378 reg = <0x02088000 0x4000>;
379 interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
380 clocks = <&clks IMX6SX_CLK_PWM3>,
381 <&clks IMX6SX_CLK_PWM3>;
382 clock-names = "ipg", "per";
383 #pwm-cells = <2>;
384 };
385
386 pwm4: pwm@0208c000 {
387 compatible = "fsl,imx6sx-pwm", "fsl,imx27-pwm";
388 reg = <0x0208c000 0x4000>;
389 interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
390 clocks = <&clks IMX6SX_CLK_PWM4>,
391 <&clks IMX6SX_CLK_PWM4>;
392 clock-names = "ipg", "per";
393 #pwm-cells = <2>;
394 };
395
396 flexcan1: can@02090000 {
397 compatible = "fsl,imx6sx-flexcan", "fsl,imx6q-flexcan";
398 reg = <0x02090000 0x4000>;
399 interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>;
400 clocks = <&clks IMX6SX_CLK_CAN1_IPG>,
401 <&clks IMX6SX_CLK_CAN1_SERIAL>;
402 clock-names = "ipg", "per";
403 status = "disabled";
404 };
405
406 flexcan2: can@02094000 {
407 compatible = "fsl,imx6sx-flexcan", "fsl,imx6q-flexcan";
408 reg = <0x02094000 0x4000>;
409 interrupts = <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>;
410 clocks = <&clks IMX6SX_CLK_CAN2_IPG>,
411 <&clks IMX6SX_CLK_CAN2_SERIAL>;
412 clock-names = "ipg", "per";
413 status = "disabled";
414 };
415
416 gpt: gpt@02098000 {
417 compatible = "fsl,imx6sx-gpt", "fsl,imx31-gpt";
418 reg = <0x02098000 0x4000>;
419 interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
420 clocks = <&clks IMX6SX_CLK_GPT_BUS>,
421 <&clks IMX6SX_CLK_GPT_SERIAL>;
422 clock-names = "ipg", "per";
423 };
424
425 gpio1: gpio@0209c000 {
426 compatible = "fsl,imx6sx-gpio", "fsl,imx35-gpio";
427 reg = <0x0209c000 0x4000>;
428 interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>,
429 <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>;
430 gpio-controller;
431 #gpio-cells = <2>;
432 interrupt-controller;
433 #interrupt-cells = <2>;
434 };
435
436 gpio2: gpio@020a0000 {
437 compatible = "fsl,imx6sx-gpio", "fsl,imx35-gpio";
438 reg = <0x020a0000 0x4000>;
439 interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>,
440 <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>;
441 gpio-controller;
442 #gpio-cells = <2>;
443 interrupt-controller;
444 #interrupt-cells = <2>;
445 };
446
447 gpio3: gpio@020a4000 {
448 compatible = "fsl,imx6sx-gpio", "fsl,imx35-gpio";
449 reg = <0x020a4000 0x4000>;
450 interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>,
451 <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
452 gpio-controller;
453 #gpio-cells = <2>;
454 interrupt-controller;
455 #interrupt-cells = <2>;
456 };
457
458 gpio4: gpio@020a8000 {
459 compatible = "fsl,imx6sx-gpio", "fsl,imx35-gpio";
460 reg = <0x020a8000 0x4000>;
461 interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>,
462 <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
463 gpio-controller;
464 #gpio-cells = <2>;
465 interrupt-controller;
466 #interrupt-cells = <2>;
467 };
468
469 gpio5: gpio@020ac000 {
470 compatible = "fsl,imx6sx-gpio", "fsl,imx35-gpio";
471 reg = <0x020ac000 0x4000>;
472 interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>,
473 <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>;
474 gpio-controller;
475 #gpio-cells = <2>;
476 interrupt-controller;
477 #interrupt-cells = <2>;
478 };
479
480 gpio6: gpio@020b0000 {
481 compatible = "fsl,imx6sx-gpio", "fsl,imx35-gpio";
482 reg = <0x020b0000 0x4000>;
483 interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>,
484 <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>;
485 gpio-controller;
486 #gpio-cells = <2>;
487 interrupt-controller;
488 #interrupt-cells = <2>;
489 };
490
491 gpio7: gpio@020b4000 {
492 compatible = "fsl,imx6sx-gpio", "fsl,imx35-gpio";
493 reg = <0x020b4000 0x4000>;
494 interrupts = <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>,
495 <GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>;
496 gpio-controller;
497 #gpio-cells = <2>;
498 interrupt-controller;
499 #interrupt-cells = <2>;
500 };
501
502 kpp: kpp@020b8000 {
503 compatible = "fsl,imx6sx-kpp", "fsl,imx21-kpp";
504 reg = <0x020b8000 0x4000>;
505 interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
506 clocks = <&clks IMX6SX_CLK_DUMMY>;
507 status = "disabled";
508 };
509
510 wdog1: wdog@020bc000 {
511 compatible = "fsl,imx6sx-wdt", "fsl,imx21-wdt";
512 reg = <0x020bc000 0x4000>;
513 interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>;
514 clocks = <&clks IMX6SX_CLK_DUMMY>;
515 };
516
517 wdog2: wdog@020c0000 {
518 compatible = "fsl,imx6sx-wdt", "fsl,imx21-wdt";
519 reg = <0x020c0000 0x4000>;
520 interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>;
521 clocks = <&clks IMX6SX_CLK_DUMMY>;
522 status = "disabled";
523 };
524
525 clks: ccm@020c4000 {
526 compatible = "fsl,imx6sx-ccm";
527 reg = <0x020c4000 0x4000>;
528 interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>,
529 <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>;
530 #clock-cells = <1>;
531 clocks = <&ckil>, <&osc>, <&ipp_di0>, <&ipp_di1>;
532 clock-names = "ckil", "osc", "ipp_di0", "ipp_di1";
533 };
534
535 anatop: anatop@020c8000 {
536 compatible = "fsl,imx6sx-anatop", "fsl,imx6q-anatop",
537 "syscon", "simple-bus";
538 reg = <0x020c8000 0x1000>;
539 interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>,
540 <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>,
541 <GIC_SPI 127 IRQ_TYPE_LEVEL_HIGH>;
542
543 regulator-1p1@110 {
544 compatible = "fsl,anatop-regulator";
545 regulator-name = "vdd1p1";
546 regulator-min-microvolt = <800000>;
547 regulator-max-microvolt = <1375000>;
548 regulator-always-on;
549 anatop-reg-offset = <0x110>;
550 anatop-vol-bit-shift = <8>;
551 anatop-vol-bit-width = <5>;
552 anatop-min-bit-val = <4>;
553 anatop-min-voltage = <800000>;
554 anatop-max-voltage = <1375000>;
555 };
556
557 regulator-3p0@120 {
558 compatible = "fsl,anatop-regulator";
559 regulator-name = "vdd3p0";
560 regulator-min-microvolt = <2800000>;
561 regulator-max-microvolt = <3150000>;
562 regulator-always-on;
563 anatop-reg-offset = <0x120>;
564 anatop-vol-bit-shift = <8>;
565 anatop-vol-bit-width = <5>;
566 anatop-min-bit-val = <0>;
567 anatop-min-voltage = <2625000>;
568 anatop-max-voltage = <3400000>;
569 };
570
571 regulator-2p5@130 {
572 compatible = "fsl,anatop-regulator";
573 regulator-name = "vdd2p5";
574 regulator-min-microvolt = <2100000>;
575 regulator-max-microvolt = <2875000>;
576 regulator-always-on;
577 anatop-reg-offset = <0x130>;
578 anatop-vol-bit-shift = <8>;
579 anatop-vol-bit-width = <5>;
580 anatop-min-bit-val = <0>;
581 anatop-min-voltage = <2100000>;
582 anatop-max-voltage = <2875000>;
583 };
584
585 reg_arm: regulator-vddcore@140 {
586 compatible = "fsl,anatop-regulator";
587 regulator-name = "vddarm";
588 regulator-min-microvolt = <725000>;
589 regulator-max-microvolt = <1450000>;
590 regulator-always-on;
591 anatop-reg-offset = <0x140>;
592 anatop-vol-bit-shift = <0>;
593 anatop-vol-bit-width = <5>;
594 anatop-delay-reg-offset = <0x170>;
595 anatop-delay-bit-shift = <24>;
596 anatop-delay-bit-width = <2>;
597 anatop-min-bit-val = <1>;
598 anatop-min-voltage = <725000>;
599 anatop-max-voltage = <1450000>;
600 };
601
602 reg_pcie: regulator-vddpcie@140 {
603 compatible = "fsl,anatop-regulator";
604 regulator-name = "vddpcie";
605 regulator-min-microvolt = <725000>;
606 regulator-max-microvolt = <1450000>;
607 anatop-reg-offset = <0x140>;
608 anatop-vol-bit-shift = <9>;
609 anatop-vol-bit-width = <5>;
610 anatop-delay-reg-offset = <0x170>;
611 anatop-delay-bit-shift = <26>;
612 anatop-delay-bit-width = <2>;
613 anatop-min-bit-val = <1>;
614 anatop-min-voltage = <725000>;
615 anatop-max-voltage = <1450000>;
616 };
617
618 reg_soc: regulator-vddsoc@140 {
619 compatible = "fsl,anatop-regulator";
620 regulator-name = "vddsoc";
621 regulator-min-microvolt = <725000>;
622 regulator-max-microvolt = <1450000>;
623 regulator-always-on;
624 anatop-reg-offset = <0x140>;
625 anatop-vol-bit-shift = <18>;
626 anatop-vol-bit-width = <5>;
627 anatop-delay-reg-offset = <0x170>;
628 anatop-delay-bit-shift = <28>;
629 anatop-delay-bit-width = <2>;
630 anatop-min-bit-val = <1>;
631 anatop-min-voltage = <725000>;
632 anatop-max-voltage = <1450000>;
633 };
634 };
635
636 tempmon: tempmon {
637 compatible = "fsl,imx6sx-tempmon", "fsl,imx6q-tempmon";
638 interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
639 fsl,tempmon = <&anatop>;
640 fsl,tempmon-data = <&ocotp>;
641 clocks = <&clks IMX6SX_CLK_PLL3_USB_OTG>;
642 };
643
644 usbphy1: usbphy@020c9000 {
645 compatible = "fsl,imx6sx-usbphy", "fsl,imx23-usbphy";
646 reg = <0x020c9000 0x1000>;
647 interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
648 clocks = <&clks IMX6SX_CLK_USBPHY1>;
649 fsl,anatop = <&anatop>;
650 };
651
652 usbphy2: usbphy@020ca000 {
653 compatible = "fsl,imx6sx-usbphy", "fsl,imx23-usbphy";
654 reg = <0x020ca000 0x1000>;
655 interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
656 clocks = <&clks IMX6SX_CLK_USBPHY2>;
657 fsl,anatop = <&anatop>;
658 };
659
660 snvs: snvs@020cc000 {
661 compatible = "fsl,sec-v4.0-mon", "simple-bus";
662 #address-cells = <1>;
663 #size-cells = <1>;
664 ranges = <0 0x020cc000 0x4000>;
665
666 snvs-rtc-lp@34 {
667 compatible = "fsl,sec-v4.0-mon-rtc-lp";
668 reg = <0x34 0x58>;
669 interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
670 };
671 };
672
673 epit1: epit@020d0000 {
674 reg = <0x020d0000 0x4000>;
675 interrupts = <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>;
676 };
677
678 epit2: epit@020d4000 {
679 reg = <0x020d4000 0x4000>;
680 interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>;
681 };
682
683 src: src@020d8000 {
684 compatible = "fsl,imx6sx-src", "fsl,imx51-src";
685 reg = <0x020d8000 0x4000>;
686 interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>,
687 <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
688 #reset-cells = <1>;
689 };
690
691 gpc: gpc@020dc000 {
692 compatible = "fsl,imx6sx-gpc", "fsl,imx6q-gpc";
693 reg = <0x020dc000 0x4000>;
694 interrupts = <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>;
695 };
696
697 iomuxc: iomuxc@020e0000 {
698 compatible = "fsl,imx6sx-iomuxc";
699 reg = <0x020e0000 0x4000>;
700 };
701
702 gpr: iomuxc-gpr@020e4000 {
703 compatible = "fsl,imx6sx-iomuxc-gpr",
704 "fsl,imx6q-iomuxc-gpr", "syscon";
705 reg = <0x020e4000 0x4000>;
706 };
707
708 sdma: sdma@020ec000 {
709 compatible = "fsl,imx6sx-sdma", "fsl,imx6q-sdma";
710 reg = <0x020ec000 0x4000>;
711 interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
712 clocks = <&clks IMX6SX_CLK_SDMA>,
713 <&clks IMX6SX_CLK_SDMA>;
714 clock-names = "ipg", "ahb";
715 #dma-cells = <3>;
716 /* imx6sx reuses imx6q sdma firmware */
717 fsl,sdma-ram-script-name = "imx/sdma/sdma-imx6q.bin";
718 };
719 };
720
721 aips2: aips-bus@02100000 {
722 compatible = "fsl,aips-bus", "simple-bus";
723 #address-cells = <1>;
724 #size-cells = <1>;
725 reg = <0x02100000 0x100000>;
726 ranges;
727
728 usbotg1: usb@02184000 {
729 compatible = "fsl,imx6sx-usb", "fsl,imx27-usb";
730 reg = <0x02184000 0x200>;
731 interrupts = <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>;
732 clocks = <&clks IMX6SX_CLK_USBOH3>;
733 fsl,usbphy = <&usbphy1>;
734 fsl,usbmisc = <&usbmisc 0>;
735 fsl,anatop = <&anatop>;
736 status = "disabled";
737 };
738
739 usbotg2: usb@02184200 {
740 compatible = "fsl,imx6sx-usb", "fsl,imx27-usb";
741 reg = <0x02184200 0x200>;
742 interrupts = <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>;
743 clocks = <&clks IMX6SX_CLK_USBOH3>;
744 fsl,usbphy = <&usbphy2>;
745 fsl,usbmisc = <&usbmisc 1>;
746 status = "disabled";
747 };
748
749 usbh: usb@02184400 {
750 compatible = "fsl,imx6sx-usb", "fsl,imx27-usb";
751 reg = <0x02184400 0x200>;
752 interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
753 clocks = <&clks IMX6SX_CLK_USBOH3>;
754 fsl,usbmisc = <&usbmisc 2>;
755 phy_type = "hsic";
756 fsl,anatop = <&anatop>;
757 status = "disabled";
758 };
759
760 usbmisc: usbmisc@02184800 {
761 #index-cells = <1>;
762 compatible = "fsl,imx6sx-usbmisc", "fsl,imx6q-usbmisc";
763 reg = <0x02184800 0x200>;
764 clocks = <&clks IMX6SX_CLK_USBOH3>;
765 };
766
767 fec1: ethernet@02188000 {
768 compatible = "fsl,imx6sx-fec", "fsl,imx6q-fec";
769 reg = <0x02188000 0x4000>;
770 interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>,
771 <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>;
772 clocks = <&clks IMX6SX_CLK_ENET>,
773 <&clks IMX6SX_CLK_ENET_AHB>,
774 <&clks IMX6SX_CLK_ENET_PTP>,
775 <&clks IMX6SX_CLK_ENET_REF>,
776 <&clks IMX6SX_CLK_ENET_PTP>;
777 clock-names = "ipg", "ahb", "ptp",
778 "enet_clk_ref", "enet_out";
779 status = "disabled";
780 };
781
782 mlb: mlb@0218c000 {
783 reg = <0x0218c000 0x4000>;
784 interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>,
785 <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>,
786 <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>;
787 clocks = <&clks IMX6SX_CLK_MLB>;
788 status = "disabled";
789 };
790
791 usdhc1: usdhc@02190000 {
792 compatible = "fsl,imx6sx-usdhc", "fsl,imx6sl-usdhc";
793 reg = <0x02190000 0x4000>;
794 interrupts = <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>;
795 clocks = <&clks IMX6SX_CLK_USDHC1>,
796 <&clks IMX6SX_CLK_USDHC1>,
797 <&clks IMX6SX_CLK_USDHC1>;
798 clock-names = "ipg", "ahb", "per";
799 bus-width = <4>;
800 status = "disabled";
801 };
802
803 usdhc2: usdhc@02194000 {
804 compatible = "fsl,imx6sx-usdhc", "fsl,imx6sl-usdhc";
805 reg = <0x02194000 0x4000>;
806 interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
807 clocks = <&clks IMX6SX_CLK_USDHC2>,
808 <&clks IMX6SX_CLK_USDHC2>,
809 <&clks IMX6SX_CLK_USDHC2>;
810 clock-names = "ipg", "ahb", "per";
811 bus-width = <4>;
812 status = "disabled";
813 };
814
815 usdhc3: usdhc@02198000 {
816 compatible = "fsl,imx6sx-usdhc", "fsl,imx6sl-usdhc";
817 reg = <0x02198000 0x4000>;
818 interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
819 clocks = <&clks IMX6SX_CLK_USDHC3>,
820 <&clks IMX6SX_CLK_USDHC3>,
821 <&clks IMX6SX_CLK_USDHC3>;
822 clock-names = "ipg", "ahb", "per";
823 bus-width = <4>;
824 status = "disabled";
825 };
826
827 usdhc4: usdhc@0219c000 {
828 compatible = "fsl,imx6sx-usdhc", "fsl,imx6sl-usdhc";
829 reg = <0x0219c000 0x4000>;
830 interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
831 clocks = <&clks IMX6SX_CLK_USDHC4>,
832 <&clks IMX6SX_CLK_USDHC4>,
833 <&clks IMX6SX_CLK_USDHC4>;
834 clock-names = "ipg", "ahb", "per";
835 bus-width = <4>;
836 status = "disabled";
837 };
838
839 i2c1: i2c@021a0000 {
840 #address-cells = <1>;
841 #size-cells = <0>;
842 compatible = "fsl,imx6sx-i2c", "fsl,imx21-i2c";
843 reg = <0x021a0000 0x4000>;
844 interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
845 clocks = <&clks IMX6SX_CLK_I2C1>;
846 status = "disabled";
847 };
848
849 i2c2: i2c@021a4000 {
850 #address-cells = <1>;
851 #size-cells = <0>;
852 compatible = "fsl,imx6sx-i2c", "fsl,imx21-i2c";
853 reg = <0x021a4000 0x4000>;
854 interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
855 clocks = <&clks IMX6SX_CLK_I2C2>;
856 status = "disabled";
857 };
858
859 i2c3: i2c@021a8000 {
860 #address-cells = <1>;
861 #size-cells = <0>;
862 compatible = "fsl,imx6sx-i2c", "fsl,imx21-i2c";
863 reg = <0x021a8000 0x4000>;
864 interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
865 clocks = <&clks IMX6SX_CLK_I2C3>;
866 status = "disabled";
867 };
868
869 mmdc: mmdc@021b0000 {
870 compatible = "fsl,imx6sx-mmdc", "fsl,imx6q-mmdc";
871 reg = <0x021b0000 0x4000>;
872 };
873
874 fec2: ethernet@021b4000 {
875 compatible = "fsl,imx6sx-fec";
876 reg = <0x021b4000 0x4000>;
877 interrupts = <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>,
878 <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
879 clocks = <&clks IMX6SX_CLK_ENET>,
880 <&clks IMX6SX_CLK_ENET_AHB>,
881 <&clks IMX6SX_CLK_ENET_PTP>,
882 <&clks IMX6SX_CLK_ENET2_REF_125M>,
883 <&clks IMX6SX_CLK_ENET_PTP>;
884 clock-names = "ipg", "ahb", "ptp",
885 "enet_clk_ref", "enet_out";
886 status = "disabled";
887 };
888
889 weim: weim@021b8000 {
890 compatible = "fsl,imx6sx-weim", "fsl,imx6q-weim";
891 reg = <0x021b8000 0x4000>;
892 interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
893 clocks = <&clks IMX6SX_CLK_EIM_SLOW>;
894 };
895
896 ocotp: ocotp@021bc000 {
897 compatible = "fsl,imx6sx-ocotp", "syscon";
898 reg = <0x021bc000 0x4000>;
899 clocks = <&clks IMX6SX_CLK_OCOTP>;
900 };
901
902 sai1: sai@021d4000 {
903 compatible = "fsl,imx6sx-sai";
904 reg = <0x021d4000 0x4000>;
905 interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>;
906 clocks = <&clks IMX6SX_CLK_SAI1_IPG>,
907 <&clks IMX6SX_CLK_SAI1>,
908 <&clks 0>, <&clks 0>;
909 clock-names = "bus", "mclk1", "mclk2", "mclk3";
910 dma-names = "rx", "tx";
911 dmas = <&sdma 31 23 0>, <&sdma 32 23 0>;
912 dma-source = <&gpr 0 15 0 16>;
913 status = "disabled";
914 };
915
916 audmux: audmux@021d8000 {
917 compatible = "fsl,imx6sx-audmux", "fsl,imx31-audmux";
918 reg = <0x021d8000 0x4000>;
919 status = "disabled";
920 };
921
922 sai2: sai@021dc000 {
923 compatible = "fsl,imx6sx-sai";
924 reg = <0x021dc000 0x4000>;
925 interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
926 clocks = <&clks IMX6SX_CLK_SAI2_IPG>,
927 <&clks IMX6SX_CLK_SAI2>,
928 <&clks 0>, <&clks 0>;
929 clock-names = "bus", "mclk1", "mclk2", "mclk3";
930 dma-names = "rx", "tx";
931 dmas = <&sdma 33 23 0>, <&sdma 34 23 0>;
932 dma-source = <&gpr 0 17 0 18>;
933 status = "disabled";
934 };
935
936 qspi1: qspi@021e0000 {
937 #address-cells = <1>;
938 #size-cells = <0>;
939 compatible = "fsl,imx6sx-qspi";
940 reg = <0x021e0000 0x4000>, <0x60000000 0x10000000>;
941 reg-names = "QuadSPI", "QuadSPI-memory";
942 interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>;
943 clocks = <&clks IMX6SX_CLK_QSPI1>,
944 <&clks IMX6SX_CLK_QSPI1>;
945 clock-names = "qspi_en", "qspi";
946 status = "disabled";
947 };
948
949 qspi2: qspi@021e4000 {
950 #address-cells = <1>;
951 #size-cells = <0>;
952 compatible = "fsl,imx6sx-qspi";
953 reg = <0x021e4000 0x4000>, <0x70000000 0x10000000>;
954 reg-names = "QuadSPI", "QuadSPI-memory";
955 interrupts = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>;
956 clocks = <&clks IMX6SX_CLK_QSPI2>,
957 <&clks IMX6SX_CLK_QSPI2>;
958 clock-names = "qspi_en", "qspi";
959 status = "disabled";
960 };
961
962 uart2: serial@021e8000 {
963 compatible = "fsl,imx6sx-uart", "fsl,imx21-uart";
964 reg = <0x021e8000 0x4000>;
965 interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>;
966 clocks = <&clks IMX6SX_CLK_UART_IPG>,
967 <&clks IMX6SX_CLK_UART_SERIAL>;
968 clock-names = "ipg", "per";
969 dmas = <&sdma 27 4 0>, <&sdma 28 4 0>;
970 dma-names = "rx", "tx";
971 status = "disabled";
972 };
973
974 uart3: serial@021ec000 {
975 compatible = "fsl,imx6sx-uart", "fsl,imx21-uart";
976 reg = <0x021ec000 0x4000>;
977 interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
978 clocks = <&clks IMX6SX_CLK_UART_IPG>,
979 <&clks IMX6SX_CLK_UART_SERIAL>;
980 clock-names = "ipg", "per";
981 dmas = <&sdma 29 4 0>, <&sdma 30 4 0>;
982 dma-names = "rx", "tx";
983 status = "disabled";
984 };
985
986 uart4: serial@021f0000 {
987 compatible = "fsl,imx6sx-uart", "fsl,imx21-uart";
988 reg = <0x021f0000 0x4000>;
989 interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
990 clocks = <&clks IMX6SX_CLK_UART_IPG>,
991 <&clks IMX6SX_CLK_UART_SERIAL>;
992 clock-names = "ipg", "per";
993 dmas = <&sdma 31 4 0>, <&sdma 32 4 0>;
994 dma-names = "rx", "tx";
995 status = "disabled";
996 };
997
998 uart5: serial@021f4000 {
999 compatible = "fsl,imx6sx-uart", "fsl,imx21-uart";
1000 reg = <0x021f4000 0x4000>;
1001 interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
1002 clocks = <&clks IMX6SX_CLK_UART_IPG>,
1003 <&clks IMX6SX_CLK_UART_SERIAL>;
1004 clock-names = "ipg", "per";
1005 dmas = <&sdma 33 4 0>, <&sdma 34 4 0>;
1006 dma-names = "rx", "tx";
1007 status = "disabled";
1008 };
1009
1010 i2c4: i2c@021f8000 {
1011 #address-cells = <1>;
1012 #size-cells = <0>;
1013 compatible = "fsl,imx6sx-i2c", "fsl,imx21-i2c";
1014 reg = <0x021f8000 0x4000>;
1015 interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
1016 clocks = <&clks IMX6SX_CLK_I2C4>;
1017 status = "disabled";
1018 };
1019 };
1020
1021 aips3: aips-bus@02200000 {
1022 compatible = "fsl,aips-bus", "simple-bus";
1023 #address-cells = <1>;
1024 #size-cells = <1>;
1025 reg = <0x02200000 0x100000>;
1026 ranges;
1027
1028 spba-bus@02200000 {
1029 compatible = "fsl,spba-bus", "simple-bus";
1030 #address-cells = <1>;
1031 #size-cells = <1>;
1032 reg = <0x02240000 0x40000>;
1033 ranges;
1034
1035 csi1: csi@02214000 {
1036 reg = <0x02214000 0x4000>;
1037 interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
1038 clocks = <&clks IMX6SX_CLK_DISPLAY_AXI>,
1039 <&clks IMX6SX_CLK_CSI>,
1040 <&clks IMX6SX_CLK_DCIC1>;
1041 clock-names = "disp-axi", "csi_mclk", "dcic";
1042 status = "disabled";
1043 };
1044
1045 pxp: pxp@02218000 {
1046 reg = <0x02218000 0x4000>;
1047 interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
1048 clocks = <&clks IMX6SX_CLK_PXP_AXI>,
1049 <&clks IMX6SX_CLK_DISPLAY_AXI>;
1050 clock-names = "pxp-axi", "disp-axi";
1051 status = "disabled";
1052 };
1053
1054 csi2: csi@0221c000 {
1055 reg = <0x0221c000 0x4000>;
1056 interrupts = <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
1057 clocks = <&clks IMX6SX_CLK_DISPLAY_AXI>,
1058 <&clks IMX6SX_CLK_CSI>,
1059 <&clks IMX6SX_CLK_DCIC2>;
1060 clock-names = "disp-axi", "csi_mclk", "dcic";
1061 status = "disabled";
1062 };
1063
1064 lcdif1: lcdif@02220000 {
1065 reg = <0x02220000 0x4000>;
1066 interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
1067 clocks = <&clks IMX6SX_CLK_LCDIF1_PIX>,
1068 <&clks IMX6SX_CLK_LCDIF_APB>,
1069 <&clks IMX6SX_CLK_DISPLAY_AXI>;
1070 clock-names = "pix", "axi", "disp_axi";
1071 status = "disabled";
1072 };
1073
1074 lcdif2: lcdif@02224000 {
1075 reg = <0x02224000 0x4000>;
1076 interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
1077 clocks = <&clks IMX6SX_CLK_LCDIF2_PIX>,
1078 <&clks IMX6SX_CLK_LCDIF_APB>,
1079 <&clks IMX6SX_CLK_DISPLAY_AXI>;
1080 clock-names = "pix", "axi", "disp_axi";
1081 status = "disabled";
1082 };
1083
1084 vadc: vadc@02228000 {
1085 reg = <0x02228000 0x4000>, <0x0222c000 0x4000>;
1086 reg-names = "vadc-vafe", "vadc-vdec";
1087 clocks = <&clks IMX6SX_CLK_VADC>,
1088 <&clks IMX6SX_CLK_CSI>;
1089 clock-names = "vadc", "csi";
1090 status = "disabled";
1091 };
1092 };
1093
1094 adc1: adc@02280000 {
1095 compatible = "fsl,imx6sx-adc", "fsl,vf610-adc";
1096 reg = <0x02280000 0x4000>;
1097 interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>;
1098 clocks = <&clks IMX6SX_CLK_IPG>;
1099 clock-names = "adc";
1100 status = "disabled";
1101 };
1102
1103 adc2: adc@02284000 {
1104 compatible = "fsl,imx6sx-adc", "fsl,vf610-adc";
1105 reg = <0x02284000 0x4000>;
1106 interrupts = <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>;
1107 clocks = <&clks IMX6SX_CLK_IPG>;
1108 clock-names = "adc";
1109 status = "disabled";
1110 };
1111
1112 wdog3: wdog@02288000 {
1113 compatible = "fsl,imx6sx-wdt", "fsl,imx21-wdt";
1114 reg = <0x02288000 0x4000>;
1115 interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
1116 clocks = <&clks IMX6SX_CLK_DUMMY>;
1117 status = "disabled";
1118 };
1119
1120 ecspi5: ecspi@0228c000 {
1121 #address-cells = <1>;
1122 #size-cells = <0>;
1123 compatible = "fsl,imx6sx-ecspi", "fsl,imx51-ecspi";
1124 reg = <0x0228c000 0x4000>;
1125 interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>;
1126 clocks = <&clks IMX6SX_CLK_ECSPI5>,
1127 <&clks IMX6SX_CLK_ECSPI5>;
1128 clock-names = "ipg", "per";
1129 status = "disabled";
1130 };
1131
1132 uart6: serial@022a0000 {
1133 compatible = "fsl,imx6sx-uart", "fsl,imx21-uart";
1134 reg = <0x022a0000 0x4000>;
1135 interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
1136 clocks = <&clks IMX6SX_CLK_UART_IPG>,
1137 <&clks IMX6SX_CLK_UART_SERIAL>;
1138 clock-names = "ipg", "per";
1139 dmas = <&sdma 0 4 0>, <&sdma 47 4 0>;
1140 dma-names = "rx", "tx";
1141 status = "disabled";
1142 };
1143
1144 pwm5: pwm@022a4000 {
1145 compatible = "fsl,imx6sx-pwm", "fsl,imx27-pwm";
1146 reg = <0x022a4000 0x4000>;
1147 interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
1148 clocks = <&clks IMX6SX_CLK_PWM5>,
1149 <&clks IMX6SX_CLK_PWM5>;
1150 clock-names = "ipg", "per";
1151 #pwm-cells = <2>;
1152 };
1153
1154 pwm6: pwm@022a8000 {
1155 compatible = "fsl,imx6sx-pwm", "fsl,imx27-pwm";
1156 reg = <0x022a8000 0x4000>;
1157 interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
1158 clocks = <&clks IMX6SX_CLK_PWM6>,
1159 <&clks IMX6SX_CLK_PWM6>;
1160 clock-names = "ipg", "per";
1161 #pwm-cells = <2>;
1162 };
1163
1164 pwm7: pwm@022ac000 {
1165 compatible = "fsl,imx6sx-pwm", "fsl,imx27-pwm";
1166 reg = <0x022ac000 0x4000>;
1167 interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
1168 clocks = <&clks IMX6SX_CLK_PWM7>,
1169 <&clks IMX6SX_CLK_PWM7>;
1170 clock-names = "ipg", "per";
1171 #pwm-cells = <2>;
1172 };
1173
1174 pwm8: pwm@0022b0000 {
1175 compatible = "fsl,imx6sx-pwm", "fsl,imx27-pwm";
1176 reg = <0x0022b0000 0x4000>;
1177 interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
1178 clocks = <&clks IMX6SX_CLK_PWM8>,
1179 <&clks IMX6SX_CLK_PWM8>;
1180 clock-names = "ipg", "per";
1181 #pwm-cells = <2>;
1182 };
1183 };
1184
1185 pcie: pcie@0x08000000 {
1186 compatible = "fsl,imx6sx-pcie", "snps,dw-pcie";
1187 reg = <0x08ffc000 0x4000>; /* DBI */
1188 #address-cells = <3>;
1189 #size-cells = <2>;
1190 device_type = "pci";
1191 /* configuration space */
1192 ranges = <0x00000800 0 0x08f00000 0x08f00000 0 0x00080000
1193 /* downstream I/O */
1194 0x81000000 0 0 0x08f80000 0 0x00010000
1195 /* non-prefetchable memory */
1196 0x82000000 0 0x08000000 0x08000000 0 0x00f00000>;
1197 num-lanes = <1>;
1198 interrupts = <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>;
1199 clocks = <&clks IMX6SX_CLK_PCIE_REF_125M>,
1200 <&clks IMX6SX_CLK_PCIE_AXI>,
1201 <&clks IMX6SX_CLK_LVDS1_OUT>,
1202 <&clks IMX6SX_CLK_DISPLAY_AXI>;
1203 clock-names = "pcie_ref_125m", "pcie_axi",
1204 "lvds_gate", "display_axi";
1205 status = "disabled";
1206 };
1207 };
1208};
diff --git a/arch/arm/boot/dts/vf610.dtsi b/arch/arm/boot/dts/vf610.dtsi
index 6cc314e7b8fb..583dd363c9dc 100644
--- a/arch/arm/boot/dts/vf610.dtsi
+++ b/arch/arm/boot/dts/vf610.dtsi
@@ -14,6 +14,8 @@
14 14
15/ { 15/ {
16 aliases { 16 aliases {
17 can0 = &can0;
18 can1 = &can1;
17 serial0 = &uart0; 19 serial0 = &uart0;
18 serial1 = &uart1; 20 serial1 = &uart1;
19 serial2 = &uart2; 21 serial2 = &uart2;
@@ -103,6 +105,16 @@
103 <&clks VF610_CLK_DMAMUX1>; 105 <&clks VF610_CLK_DMAMUX1>;
104 }; 106 };
105 107
108 can0: flexcan@40020000 {
109 compatible = "fsl,vf610-flexcan";
110 reg = <0x40020000 0x4000>;
111 interrupts = <0 58 IRQ_TYPE_LEVEL_HIGH>;
112 clocks = <&clks VF610_CLK_FLEXCAN0>,
113 <&clks VF610_CLK_FLEXCAN0>;
114 clock-names = "ipg", "per";
115 status = "disabled";
116 };
117
106 uart0: serial@40027000 { 118 uart0: serial@40027000 {
107 compatible = "fsl,vf610-lpuart"; 119 compatible = "fsl,vf610-lpuart";
108 reg = <0x40027000 0x1000>; 120 reg = <0x40027000 0x1000>;
@@ -362,7 +374,7 @@
362 374
363 esdhc1: esdhc@400b2000 { 375 esdhc1: esdhc@400b2000 {
364 compatible = "fsl,imx53-esdhc"; 376 compatible = "fsl,imx53-esdhc";
365 reg = <0x400b2000 0x4000>; 377 reg = <0x400b2000 0x1000>;
366 interrupts = <0 28 0x04>; 378 interrupts = <0 28 0x04>;
367 clocks = <&clks VF610_CLK_IPG_BUS>, 379 clocks = <&clks VF610_CLK_IPG_BUS>,
368 <&clks VF610_CLK_PLATFORM_BUS>, 380 <&clks VF610_CLK_PLATFORM_BUS>,
@@ -405,6 +417,17 @@
405 clock-names = "ipg", "ahb", "ptp"; 417 clock-names = "ipg", "ahb", "ptp";
406 status = "disabled"; 418 status = "disabled";
407 }; 419 };
420
421 can1: flexcan@400d4000 {
422 compatible = "fsl,vf610-flexcan";
423 reg = <0x400d4000 0x4000>;
424 interrupts = <0 59 IRQ_TYPE_LEVEL_HIGH>;
425 clocks = <&clks VF610_CLK_FLEXCAN1>,
426 <&clks VF610_CLK_FLEXCAN1>;
427 clock-names = "ipg", "per";
428 status = "disabled";
429 };
430
408 }; 431 };
409 }; 432 };
410}; 433};
diff --git a/arch/arm/configs/imx_v4_v5_defconfig b/arch/arm/configs/imx_v4_v5_defconfig
index bada59d93b67..63bde0efc041 100644
--- a/arch/arm/configs/imx_v4_v5_defconfig
+++ b/arch/arm/configs/imx_v4_v5_defconfig
@@ -1,6 +1,7 @@
1# CONFIG_SWAP is not set 1# CONFIG_SWAP is not set
2CONFIG_SYSVIPC=y 2CONFIG_SYSVIPC=y
3CONFIG_POSIX_MQUEUE=y 3CONFIG_POSIX_MQUEUE=y
4CONFIG_FHANDLE=y
4CONFIG_NO_HZ=y 5CONFIG_NO_HZ=y
5CONFIG_HIGH_RES_TIMERS=y 6CONFIG_HIGH_RES_TIMERS=y
6CONFIG_LOG_BUF_SHIFT=14 7CONFIG_LOG_BUF_SHIFT=14
@@ -35,10 +36,8 @@ CONFIG_MACH_EUKREA_CPUIMX27_USESDHC2=y
35CONFIG_MACH_EUKREA_CPUIMX27_USEUART4=y 36CONFIG_MACH_EUKREA_CPUIMX27_USEUART4=y
36CONFIG_MACH_MX27_3DS=y 37CONFIG_MACH_MX27_3DS=y
37CONFIG_MACH_IMX27_VISSTRIM_M10=y 38CONFIG_MACH_IMX27_VISSTRIM_M10=y
38CONFIG_MACH_IMX27LITE=y
39CONFIG_MACH_PCA100=y 39CONFIG_MACH_PCA100=y
40CONFIG_MACH_MXT_TD60=y 40CONFIG_MACH_MXT_TD60=y
41CONFIG_MACH_IMX27IPCAM=y
42CONFIG_MACH_IMX27_DT=y 41CONFIG_MACH_IMX27_DT=y
43CONFIG_PREEMPT=y 42CONFIG_PREEMPT=y
44CONFIG_AEABI=y 43CONFIG_AEABI=y
@@ -159,6 +158,8 @@ CONFIG_USB_CHIPIDEA=y
159CONFIG_USB_CHIPIDEA_UDC=y 158CONFIG_USB_CHIPIDEA_UDC=y
160CONFIG_USB_CHIPIDEA_HOST=y 159CONFIG_USB_CHIPIDEA_HOST=y
161CONFIG_NOP_USB_XCEIV=y 160CONFIG_NOP_USB_XCEIV=y
161CONFIG_USB_GADGET=y
162CONFIG_USB_ETH=m
162CONFIG_MMC=y 163CONFIG_MMC=y
163CONFIG_MMC_SDHCI=y 164CONFIG_MMC_SDHCI=y
164CONFIG_MMC_SDHCI_PLTFM=y 165CONFIG_MMC_SDHCI_PLTFM=y
diff --git a/arch/arm/configs/imx_v6_v7_defconfig b/arch/arm/configs/imx_v6_v7_defconfig
index 59b7e45142d8..16cfec4385c8 100644
--- a/arch/arm/configs/imx_v6_v7_defconfig
+++ b/arch/arm/configs/imx_v6_v7_defconfig
@@ -1,5 +1,6 @@
1CONFIG_KERNEL_LZO=y 1CONFIG_KERNEL_LZO=y
2CONFIG_SYSVIPC=y 2CONFIG_SYSVIPC=y
3CONFIG_FHANDLE=y
3CONFIG_NO_HZ=y 4CONFIG_NO_HZ=y
4CONFIG_HIGH_RES_TIMERS=y 5CONFIG_HIGH_RES_TIMERS=y
5CONFIG_LOG_BUF_SHIFT=18 6CONFIG_LOG_BUF_SHIFT=18
@@ -31,11 +32,12 @@ CONFIG_MACH_IMX35_DT=y
31CONFIG_MACH_PCM043=y 32CONFIG_MACH_PCM043=y
32CONFIG_MACH_MX35_3DS=y 33CONFIG_MACH_MX35_3DS=y
33CONFIG_MACH_VPR200=y 34CONFIG_MACH_VPR200=y
34CONFIG_MACH_IMX51_DT=y 35CONFIG_SOC_IMX51=y
35CONFIG_SOC_IMX50=y 36CONFIG_SOC_IMX50=y
36CONFIG_SOC_IMX53=y 37CONFIG_SOC_IMX53=y
37CONFIG_SOC_IMX6Q=y 38CONFIG_SOC_IMX6Q=y
38CONFIG_SOC_IMX6SL=y 39CONFIG_SOC_IMX6SL=y
40CONFIG_SOC_IMX6SX=y
39CONFIG_SOC_VF610=y 41CONFIG_SOC_VF610=y
40CONFIG_PCI=y 42CONFIG_PCI=y
41CONFIG_PCI_IMX6=y 43CONFIG_PCI_IMX6=y
@@ -67,6 +69,8 @@ CONFIG_IP_PNP_DHCP=y
67# CONFIG_INET_LRO is not set 69# CONFIG_INET_LRO is not set
68CONFIG_IPV6=y 70CONFIG_IPV6=y
69CONFIG_NETFILTER=y 71CONFIG_NETFILTER=y
72CONFIG_CAN=y
73CONFIG_CAN_FLEXCAN=y
70CONFIG_CFG80211=y 74CONFIG_CFG80211=y
71CONFIG_MAC80211=y 75CONFIG_MAC80211=y
72CONFIG_RFKILL=y 76CONFIG_RFKILL=y
@@ -160,6 +164,7 @@ CONFIG_SPI=y
160CONFIG_SPI_IMX=y 164CONFIG_SPI_IMX=y
161CONFIG_GPIO_SYSFS=y 165CONFIG_GPIO_SYSFS=y
162CONFIG_GPIO_MC9S08DZ60=y 166CONFIG_GPIO_MC9S08DZ60=y
167CONFIG_GPIO_STMPE=y
163# CONFIG_HWMON is not set 168# CONFIG_HWMON is not set
164CONFIG_WATCHDOG=y 169CONFIG_WATCHDOG=y
165CONFIG_IMX2_WDT=y 170CONFIG_IMX2_WDT=y
@@ -242,6 +247,7 @@ CONFIG_RTC_DRV_SNVS=y
242CONFIG_DMADEVICES=y 247CONFIG_DMADEVICES=y
243CONFIG_IMX_SDMA=y 248CONFIG_IMX_SDMA=y
244CONFIG_MXS_DMA=y 249CONFIG_MXS_DMA=y
250CONFIG_FSL_EDMA=y
245CONFIG_STAGING=y 251CONFIG_STAGING=y
246CONFIG_DRM_IMX=y 252CONFIG_DRM_IMX=y
247CONFIG_DRM_IMX_FB_HELPER=y 253CONFIG_DRM_IMX_FB_HELPER=y
@@ -288,6 +294,7 @@ CONFIG_NLS_ASCII=y
288CONFIG_NLS_ISO8859_1=y 294CONFIG_NLS_ISO8859_1=y
289CONFIG_NLS_ISO8859_15=m 295CONFIG_NLS_ISO8859_15=m
290CONFIG_NLS_UTF8=y 296CONFIG_NLS_UTF8=y
297CONFIG_PRINTK_TIME=y
291CONFIG_DEBUG_FS=y 298CONFIG_DEBUG_FS=y
292CONFIG_MAGIC_SYSRQ=y 299CONFIG_MAGIC_SYSRQ=y
293# CONFIG_SCHED_DEBUG is not set 300# CONFIG_SCHED_DEBUG is not set
diff --git a/arch/arm/configs/multi_v7_defconfig b/arch/arm/configs/multi_v7_defconfig
index 534836497998..f70ea2116fec 100644
--- a/arch/arm/configs/multi_v7_defconfig
+++ b/arch/arm/configs/multi_v7_defconfig
@@ -27,7 +27,7 @@ CONFIG_ARCH_HIGHBANK=y
27CONFIG_ARCH_HI3xxx=y 27CONFIG_ARCH_HI3xxx=y
28CONFIG_ARCH_KEYSTONE=y 28CONFIG_ARCH_KEYSTONE=y
29CONFIG_ARCH_MXC=y 29CONFIG_ARCH_MXC=y
30CONFIG_MACH_IMX51_DT=y 30CONFIG_SOC_IMX51=y
31CONFIG_SOC_IMX53=y 31CONFIG_SOC_IMX53=y
32CONFIG_SOC_IMX6Q=y 32CONFIG_SOC_IMX6Q=y
33CONFIG_SOC_IMX6SL=y 33CONFIG_SOC_IMX6SL=y
diff --git a/arch/arm/configs/mxs_defconfig b/arch/arm/configs/mxs_defconfig
index a9f992335eb2..c7906c2fd645 100644
--- a/arch/arm/configs/mxs_defconfig
+++ b/arch/arm/configs/mxs_defconfig
@@ -1,4 +1,5 @@
1CONFIG_SYSVIPC=y 1CONFIG_SYSVIPC=y
2CONFIG_FHANDLE=y
2CONFIG_NO_HZ=y 3CONFIG_NO_HZ=y
3CONFIG_HIGH_RES_TIMERS=y 4CONFIG_HIGH_RES_TIMERS=y
4CONFIG_TASKSTATS=y 5CONFIG_TASKSTATS=y
diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig
index 4b5185748f74..2bc7b97861b4 100644
--- a/arch/arm/mach-imx/Kconfig
+++ b/arch/arm/mach-imx/Kconfig
@@ -65,18 +65,8 @@ config IMX_HAVE_IOMUX_V1
65config ARCH_MXC_IOMUX_V3 65config ARCH_MXC_IOMUX_V3
66 bool 66 bool
67 67
68config ARCH_MX1
69 bool
70
71config ARCH_MX25
72 bool
73
74config MACH_MX27
75 bool
76
77config SOC_IMX1 68config SOC_IMX1
78 bool 69 bool
79 select ARCH_MX1
80 select CPU_ARM920T 70 select CPU_ARM920T
81 select IMX_HAVE_IOMUX_V1 71 select IMX_HAVE_IOMUX_V1
82 select MXC_AVIC 72 select MXC_AVIC
@@ -89,7 +79,6 @@ config SOC_IMX21
89 79
90config SOC_IMX25 80config SOC_IMX25
91 bool 81 bool
92 select ARCH_MX25
93 select ARCH_MXC_IOMUX_V3 82 select ARCH_MXC_IOMUX_V3
94 select CPU_ARM926T 83 select CPU_ARM926T
95 select MXC_AVIC 84 select MXC_AVIC
@@ -100,7 +89,6 @@ config SOC_IMX27
100 select ARCH_HAS_OPP 89 select ARCH_HAS_OPP
101 select CPU_ARM926T 90 select CPU_ARM926T
102 select IMX_HAVE_IOMUX_V1 91 select IMX_HAVE_IOMUX_V1
103 select MACH_MX27
104 select MXC_AVIC 92 select MXC_AVIC
105 select PINCTRL_IMX27 93 select PINCTRL_IMX27
106 94
@@ -119,18 +107,6 @@ config SOC_IMX35
119 select PINCTRL_IMX35 107 select PINCTRL_IMX35
120 select SMP_ON_UP if SMP 108 select SMP_ON_UP if SMP
121 109
122config SOC_IMX5
123 bool
124 select ARCH_HAS_OPP
125 select ARCH_MXC_IOMUX_V3
126 select MXC_TZIC
127
128config SOC_IMX51
129 bool
130 select HAVE_IMX_SRC
131 select PINCTRL_IMX51
132 select SOC_IMX5
133
134if ARCH_MULTI_V4T 110if ARCH_MULTI_V4T
135 111
136comment "MX1 platforms:" 112comment "MX1 platforms:"
@@ -366,15 +342,6 @@ config MACH_IMX27_VISSTRIM_M10
366 This includes specific configurations for the board and its 342 This includes specific configurations for the board and its
367 peripherals. 343 peripherals.
368 344
369config MACH_IMX27LITE
370 bool "LogicPD MX27 LITEKIT platform"
371 select IMX_HAVE_PLATFORM_IMX_SSI
372 select IMX_HAVE_PLATFORM_IMX_UART
373 select SOC_IMX27
374 help
375 Include support for MX27 LITEKIT platform. This includes specific
376 configurations for the board and its peripherals.
377
378config MACH_PCA100 345config MACH_PCA100
379 bool "Phytec phyCARD-s (pca100)" 346 bool "Phytec phyCARD-s (pca100)"
380 select IMX_HAVE_PLATFORM_FSL_USB2_UDC 347 select IMX_HAVE_PLATFORM_FSL_USB2_UDC
@@ -406,15 +373,6 @@ config MACH_MXT_TD60
406 Include support for i-MXT (aka td60) platform. This 373 Include support for i-MXT (aka td60) platform. This
407 includes specific configurations for the module and its peripherals. 374 includes specific configurations for the module and its peripherals.
408 375
409config MACH_IMX27IPCAM
410 bool "IMX27 IPCAM platform"
411 select IMX_HAVE_PLATFORM_IMX2_WDT
412 select IMX_HAVE_PLATFORM_IMX_UART
413 select SOC_IMX27
414 help
415 Include support for IMX27 IPCAM platform. This includes specific
416 configurations for the board and its peripherals.
417
418config MACH_IMX27_DT 376config MACH_IMX27_DT
419 bool "Support i.MX27 platforms from device tree" 377 bool "Support i.MX27 platforms from device tree"
420 select SOC_IMX27 378 select SOC_IMX27
@@ -700,24 +658,29 @@ if ARCH_MULTI_V7
700 658
701comment "Device tree only" 659comment "Device tree only"
702 660
661config SOC_IMX5
662 bool
663 select ARCH_HAS_OPP
664 select HAVE_IMX_SRC
665 select MXC_TZIC
666
703config SOC_IMX50 667config SOC_IMX50
704 bool "i.MX50 support" 668 bool "i.MX50 support"
705 select HAVE_IMX_SRC
706 select PINCTRL_IMX50 669 select PINCTRL_IMX50
707 select SOC_IMX5 670 select SOC_IMX5
708 671
709 help 672 help
710 This enables support for Freescale i.MX50 processor. 673 This enables support for Freescale i.MX50 processor.
711 674
712config MACH_IMX51_DT 675config SOC_IMX51
713 bool "i.MX51 support" 676 bool "i.MX51 support"
714 select SOC_IMX51 677 select PINCTRL_IMX51
678 select SOC_IMX5
715 help 679 help
716 This enables support for Freescale i.MX51 processor 680 This enables support for Freescale i.MX51 processor
717 681
718config SOC_IMX53 682config SOC_IMX53
719 bool "i.MX53 support" 683 bool "i.MX53 support"
720 select HAVE_IMX_SRC
721 select PINCTRL_IMX53 684 select PINCTRL_IMX53
722 select SOC_IMX5 685 select SOC_IMX5
723 686
@@ -734,8 +697,6 @@ config SOC_IMX6
734 select HAVE_IMX_MMDC 697 select HAVE_IMX_MMDC
735 select HAVE_IMX_SRC 698 select HAVE_IMX_SRC
736 select MFD_SYSCON 699 select MFD_SYSCON
737 select PL310_ERRATA_588369 if CACHE_L2X0
738 select PL310_ERRATA_727915 if CACHE_L2X0
739 select PL310_ERRATA_769419 if CACHE_L2X0 700 select PL310_ERRATA_769419 if CACHE_L2X0
740 701
741config SOC_IMX6Q 702config SOC_IMX6Q
@@ -771,8 +732,6 @@ config SOC_VF610
771 select ARM_GIC 732 select ARM_GIC
772 select PINCTRL_VF610 733 select PINCTRL_VF610
773 select VF_PIT_TIMER 734 select VF_PIT_TIMER
774 select PL310_ERRATA_588369 if CACHE_L2X0
775 select PL310_ERRATA_727915 if CACHE_L2X0
776 select PL310_ERRATA_769419 if CACHE_L2X0 735 select PL310_ERRATA_769419 if CACHE_L2X0
777 736
778 help 737 help
diff --git a/arch/arm/mach-imx/Makefile b/arch/arm/mach-imx/Makefile
index bbe93bbfd003..ac88599ca080 100644
--- a/arch/arm/mach-imx/Makefile
+++ b/arch/arm/mach-imx/Makefile
@@ -12,7 +12,7 @@ obj-$(CONFIG_SOC_IMX31) += mm-imx3.o cpu-imx31.o clk-imx31.o iomux-imx31.o ehci-
12obj-$(CONFIG_SOC_IMX35) += mm-imx3.o cpu-imx35.o clk-imx35.o ehci-imx35.o pm-imx3.o 12obj-$(CONFIG_SOC_IMX35) += mm-imx3.o cpu-imx35.o clk-imx35.o ehci-imx35.o pm-imx3.o
13 13
14imx5-pm-$(CONFIG_PM) += pm-imx5.o 14imx5-pm-$(CONFIG_PM) += pm-imx5.o
15obj-$(CONFIG_SOC_IMX5) += cpu-imx5.o mm-imx5.o clk-imx51-imx53.o ehci-imx5.o $(imx5-pm-y) 15obj-$(CONFIG_SOC_IMX5) += cpu-imx5.o clk-imx51-imx53.o $(imx5-pm-y)
16 16
17obj-$(CONFIG_COMMON_CLK) += clk-pllv1.o clk-pllv2.o clk-pllv3.o clk-gate2.o \ 17obj-$(CONFIG_COMMON_CLK) += clk-pllv1.o clk-pllv2.o clk-pllv3.o clk-gate2.o \
18 clk-pfd.o clk-busy.o clk.o \ 18 clk-pfd.o clk-busy.o clk.o \
@@ -31,6 +31,8 @@ ifeq ($(CONFIG_CPU_IDLE),y)
31obj-$(CONFIG_SOC_IMX5) += cpuidle-imx5.o 31obj-$(CONFIG_SOC_IMX5) += cpuidle-imx5.o
32obj-$(CONFIG_SOC_IMX6Q) += cpuidle-imx6q.o 32obj-$(CONFIG_SOC_IMX6Q) += cpuidle-imx6q.o
33obj-$(CONFIG_SOC_IMX6SL) += cpuidle-imx6sl.o 33obj-$(CONFIG_SOC_IMX6SL) += cpuidle-imx6sl.o
34# i.MX6SX reuses i.MX6Q cpuidle driver
35obj-$(CONFIG_SOC_IMX6SX) += cpuidle-imx6q.o
34endif 36endif
35 37
36ifdef CONFIG_SND_IMX_SOC 38ifdef CONFIG_SND_IMX_SOC
@@ -38,9 +40,6 @@ obj-y += ssi-fiq.o
38obj-y += ssi-fiq-ksym.o 40obj-y += ssi-fiq-ksym.o
39endif 41endif
40 42
41# Support for CMOS sensor interface
42obj-$(CONFIG_MX1_VIDEO) += mx1-camera-fiq.o mx1-camera-fiq-ksym.o
43
44# i.MX1 based machines 43# i.MX1 based machines
45obj-$(CONFIG_ARCH_MX1ADS) += mach-mx1ads.o 44obj-$(CONFIG_ARCH_MX1ADS) += mach-mx1ads.o
46obj-$(CONFIG_MACH_SCB9328) += mach-scb9328.o 45obj-$(CONFIG_MACH_SCB9328) += mach-scb9328.o
@@ -60,13 +59,11 @@ obj-$(CONFIG_MACH_MX27ADS) += mach-mx27ads.o
60obj-$(CONFIG_MACH_PCM038) += mach-pcm038.o 59obj-$(CONFIG_MACH_PCM038) += mach-pcm038.o
61obj-$(CONFIG_MACH_PCM970_BASEBOARD) += pcm970-baseboard.o 60obj-$(CONFIG_MACH_PCM970_BASEBOARD) += pcm970-baseboard.o
62obj-$(CONFIG_MACH_MX27_3DS) += mach-mx27_3ds.o 61obj-$(CONFIG_MACH_MX27_3DS) += mach-mx27_3ds.o
63obj-$(CONFIG_MACH_IMX27LITE) += mach-imx27lite.o
64obj-$(CONFIG_MACH_IMX27_VISSTRIM_M10) += mach-imx27_visstrim_m10.o 62obj-$(CONFIG_MACH_IMX27_VISSTRIM_M10) += mach-imx27_visstrim_m10.o
65obj-$(CONFIG_MACH_CPUIMX27) += mach-cpuimx27.o 63obj-$(CONFIG_MACH_CPUIMX27) += mach-cpuimx27.o
66obj-$(CONFIG_MACH_EUKREA_MBIMX27_BASEBOARD) += eukrea_mbimx27-baseboard.o 64obj-$(CONFIG_MACH_EUKREA_MBIMX27_BASEBOARD) += eukrea_mbimx27-baseboard.o
67obj-$(CONFIG_MACH_PCA100) += mach-pca100.o 65obj-$(CONFIG_MACH_PCA100) += mach-pca100.o
68obj-$(CONFIG_MACH_MXT_TD60) += mach-mxt_td60.o 66obj-$(CONFIG_MACH_MXT_TD60) += mach-mxt_td60.o
69obj-$(CONFIG_MACH_IMX27IPCAM) += mach-imx27ipcam.o
70obj-$(CONFIG_MACH_IMX27_DT) += imx27-dt.o 67obj-$(CONFIG_MACH_IMX27_DT) += imx27-dt.o
71 68
72# i.MX31 based machines 69# i.MX31 based machines
@@ -109,8 +106,8 @@ obj-$(CONFIG_SOC_IMX6) += suspend-imx6.o
109endif 106endif
110obj-$(CONFIG_SOC_IMX6) += pm-imx6.o 107obj-$(CONFIG_SOC_IMX6) += pm-imx6.o
111 108
112obj-$(CONFIG_MACH_IMX51_DT) += imx51-dt.o
113obj-$(CONFIG_SOC_IMX50) += mach-imx50.o 109obj-$(CONFIG_SOC_IMX50) += mach-imx50.o
110obj-$(CONFIG_SOC_IMX51) += mach-imx51.o
114obj-$(CONFIG_SOC_IMX53) += mach-imx53.o 111obj-$(CONFIG_SOC_IMX53) += mach-imx53.o
115 112
116obj-$(CONFIG_SOC_VF610) += clk-vf610.o mach-vf610.o 113obj-$(CONFIG_SOC_VF610) += clk-vf610.o mach-vf610.o
diff --git a/arch/arm/mach-imx/clk-imx1.c b/arch/arm/mach-imx/clk-imx1.c
index 7f739be3de2c..37c307a8d896 100644
--- a/arch/arm/mach-imx/clk-imx1.c
+++ b/arch/arm/mach-imx/clk-imx1.c
@@ -15,100 +15,103 @@
15 * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. 15 * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
16 */ 16 */
17 17
18#include <linux/kernel.h>
19#include <linux/init.h>
20#include <linux/clk.h> 18#include <linux/clk.h>
21#include <linux/io.h>
22#include <linux/clkdev.h> 19#include <linux/clkdev.h>
20#include <linux/clk-provider.h>
23#include <linux/err.h> 21#include <linux/err.h>
22#include <linux/init.h>
23#include <linux/of.h>
24#include <linux/of_address.h>
25#include <dt-bindings/clock/imx1-clock.h>
24 26
25#include "clk.h" 27#include "clk.h"
26#include "common.h" 28#include "common.h"
27#include "hardware.h" 29#include "hardware.h"
28 30
29/* CCM register addresses */
30#define IO_ADDR_CCM(off) (MX1_IO_ADDRESS(MX1_CCM_BASE_ADDR + (off)))
31
32#define CCM_CSCR IO_ADDR_CCM(0x0)
33#define CCM_MPCTL0 IO_ADDR_CCM(0x4)
34#define CCM_SPCTL0 IO_ADDR_CCM(0xc)
35#define CCM_PCDR IO_ADDR_CCM(0x20)
36
37/* SCM register addresses */
38#define IO_ADDR_SCM(off) (MX1_IO_ADDRESS(MX1_SCM_BASE_ADDR + (off)))
39
40#define SCM_GCCR IO_ADDR_SCM(0xc)
41
42static const char *prem_sel_clks[] = { "clk32_premult", "clk16m", }; 31static const char *prem_sel_clks[] = { "clk32_premult", "clk16m", };
43static const char *clko_sel_clks[] = { "per1", "hclk", "clk48m", "clk16m", 32static const char *clko_sel_clks[] = { "per1", "hclk", "clk48m", "clk16m",
44 "prem", "fclk", }; 33 "prem", "fclk", };
45 34
46enum imx1_clks { 35static struct clk *clk[IMX1_CLK_MAX];
47 dummy, clk32, clk16m_ext, clk16m, clk32_premult, prem, mpll, mpll_gate, 36static struct clk_onecell_data clk_data;
48 spll, spll_gate, mcu, fclk, hclk, clk48m, per1, per2, per3, clko,
49 uart3_gate, ssi2_gate, brom_gate, dma_gate, csi_gate, mma_gate,
50 usbd_gate, clk_max
51};
52 37
53static struct clk *clk[clk_max]; 38static void __iomem *ccm __initdata;
39#define CCM_CSCR (ccm + 0x0000)
40#define CCM_MPCTL0 (ccm + 0x0004)
41#define CCM_SPCTL0 (ccm + 0x000c)
42#define CCM_PCDR (ccm + 0x0020)
43#define SCM_GCCR (ccm + 0x0810)
54 44
55int __init mx1_clocks_init(unsigned long fref) 45static void __init _mx1_clocks_init(unsigned long fref)
56{ 46{
57 int i; 47 clk[IMX1_CLK_DUMMY] = imx_clk_fixed("dummy", 0);
48 clk[IMX1_CLK_CLK32] = imx_obtain_fixed_clock("clk32", fref);
49 clk[IMX1_CLK_CLK16M_EXT] = imx_clk_fixed("clk16m_ext", 16000000);
50 clk[IMX1_CLK_CLK16M] = imx_clk_gate("clk16m", "clk16m_ext", CCM_CSCR, 17);
51 clk[IMX1_CLK_CLK32_PREMULT] = imx_clk_fixed_factor("clk32_premult", "clk32", 512, 1);
52 clk[IMX1_CLK_PREM] = imx_clk_mux("prem", CCM_CSCR, 16, 1, prem_sel_clks, ARRAY_SIZE(prem_sel_clks));
53 clk[IMX1_CLK_MPLL] = imx_clk_pllv1("mpll", "clk32_premult", CCM_MPCTL0);
54 clk[IMX1_CLK_MPLL_GATE] = imx_clk_gate("mpll_gate", "mpll", CCM_CSCR, 0);
55 clk[IMX1_CLK_SPLL] = imx_clk_pllv1("spll", "prem", CCM_SPCTL0);
56 clk[IMX1_CLK_SPLL_GATE] = imx_clk_gate("spll_gate", "spll", CCM_CSCR, 1);
57 clk[IMX1_CLK_MCU] = imx_clk_divider("mcu", "clk32_premult", CCM_CSCR, 15, 1);
58 clk[IMX1_CLK_FCLK] = imx_clk_divider("fclk", "mpll_gate", CCM_CSCR, 15, 1);
59 clk[IMX1_CLK_HCLK] = imx_clk_divider("hclk", "spll_gate", CCM_CSCR, 10, 4);
60 clk[IMX1_CLK_CLK48M] = imx_clk_divider("clk48m", "spll_gate", CCM_CSCR, 26, 3);
61 clk[IMX1_CLK_PER1] = imx_clk_divider("per1", "spll_gate", CCM_PCDR, 0, 4);
62 clk[IMX1_CLK_PER2] = imx_clk_divider("per2", "spll_gate", CCM_PCDR, 4, 4);
63 clk[IMX1_CLK_PER3] = imx_clk_divider("per3", "spll_gate", CCM_PCDR, 16, 7);
64 clk[IMX1_CLK_CLKO] = imx_clk_mux("clko", CCM_CSCR, 29, 3, clko_sel_clks, ARRAY_SIZE(clko_sel_clks));
65 clk[IMX1_CLK_UART3_GATE] = imx_clk_gate("uart3_gate", "hclk", SCM_GCCR, 6);
66 clk[IMX1_CLK_SSI2_GATE] = imx_clk_gate("ssi2_gate", "hclk", SCM_GCCR, 5);
67 clk[IMX1_CLK_BROM_GATE] = imx_clk_gate("brom_gate", "hclk", SCM_GCCR, 4);
68 clk[IMX1_CLK_DMA_GATE] = imx_clk_gate("dma_gate", "hclk", SCM_GCCR, 3);
69 clk[IMX1_CLK_CSI_GATE] = imx_clk_gate("csi_gate", "hclk", SCM_GCCR, 2);
70 clk[IMX1_CLK_MMA_GATE] = imx_clk_gate("mma_gate", "hclk", SCM_GCCR, 1);
71 clk[IMX1_CLK_USBD_GATE] = imx_clk_gate("usbd_gate", "clk48m", SCM_GCCR, 0);
72
73 imx_check_clocks(clk, ARRAY_SIZE(clk));
74}
58 75
59 clk[dummy] = imx_clk_fixed("dummy", 0); 76int __init mx1_clocks_init(unsigned long fref)
60 clk[clk32] = imx_clk_fixed("clk32", fref); 77{
61 clk[clk16m_ext] = imx_clk_fixed("clk16m_ext", 16000000); 78 ccm = MX1_IO_ADDRESS(MX1_CCM_BASE_ADDR);
62 clk[clk16m] = imx_clk_gate("clk16m", "clk16m_ext", CCM_CSCR, 17);
63 clk[clk32_premult] = imx_clk_fixed_factor("clk32_premult", "clk32", 512, 1);
64 clk[prem] = imx_clk_mux("prem", CCM_CSCR, 16, 1, prem_sel_clks,
65 ARRAY_SIZE(prem_sel_clks));
66 clk[mpll] = imx_clk_pllv1("mpll", "clk32_premult", CCM_MPCTL0);
67 clk[mpll_gate] = imx_clk_gate("mpll_gate", "mpll", CCM_CSCR, 0);
68 clk[spll] = imx_clk_pllv1("spll", "prem", CCM_SPCTL0);
69 clk[spll_gate] = imx_clk_gate("spll_gate", "spll", CCM_CSCR, 1);
70 clk[mcu] = imx_clk_divider("mcu", "clk32_premult", CCM_CSCR, 15, 1);
71 clk[fclk] = imx_clk_divider("fclk", "mpll_gate", CCM_CSCR, 15, 1);
72 clk[hclk] = imx_clk_divider("hclk", "spll_gate", CCM_CSCR, 10, 4);
73 clk[clk48m] = imx_clk_divider("clk48m", "spll_gate", CCM_CSCR, 26, 3);
74 clk[per1] = imx_clk_divider("per1", "spll_gate", CCM_PCDR, 0, 4);
75 clk[per2] = imx_clk_divider("per2", "spll_gate", CCM_PCDR, 4, 4);
76 clk[per3] = imx_clk_divider("per3", "spll_gate", CCM_PCDR, 16, 7);
77 clk[clko] = imx_clk_mux("clko", CCM_CSCR, 29, 3, clko_sel_clks,
78 ARRAY_SIZE(clko_sel_clks));
79 clk[uart3_gate] = imx_clk_gate("uart3_gate", "hclk", SCM_GCCR, 6);
80 clk[ssi2_gate] = imx_clk_gate("ssi2_gate", "hclk", SCM_GCCR, 5);
81 clk[brom_gate] = imx_clk_gate("brom_gate", "hclk", SCM_GCCR, 4);
82 clk[dma_gate] = imx_clk_gate("dma_gate", "hclk", SCM_GCCR, 3);
83 clk[csi_gate] = imx_clk_gate("csi_gate", "hclk", SCM_GCCR, 2);
84 clk[mma_gate] = imx_clk_gate("mma_gate", "hclk", SCM_GCCR, 1);
85 clk[usbd_gate] = imx_clk_gate("usbd_gate", "clk48m", SCM_GCCR, 0);
86 79
87 for (i = 0; i < ARRAY_SIZE(clk); i++) 80 _mx1_clocks_init(fref);
88 if (IS_ERR(clk[i]))
89 pr_err("imx1 clk %d: register failed with %ld\n",
90 i, PTR_ERR(clk[i]));
91 81
92 clk_register_clkdev(clk[dma_gate], "ahb", "imx1-dma"); 82 clk_register_clkdev(clk[IMX1_CLK_PER1], "per", "imx-gpt.0");
93 clk_register_clkdev(clk[hclk], "ipg", "imx1-dma"); 83 clk_register_clkdev(clk[IMX1_CLK_HCLK], "ipg", "imx-gpt.0");
94 clk_register_clkdev(clk[per1], "per", "imx-gpt.0"); 84 clk_register_clkdev(clk[IMX1_CLK_DMA_GATE], "ahb", "imx1-dma");
95 clk_register_clkdev(clk[hclk], "ipg", "imx-gpt.0"); 85 clk_register_clkdev(clk[IMX1_CLK_HCLK], "ipg", "imx1-dma");
96 clk_register_clkdev(clk[per1], "per", "imx1-uart.0"); 86 clk_register_clkdev(clk[IMX1_CLK_PER1], "per", "imx1-uart.0");
97 clk_register_clkdev(clk[hclk], "ipg", "imx1-uart.0"); 87 clk_register_clkdev(clk[IMX1_CLK_HCLK], "ipg", "imx1-uart.0");
98 clk_register_clkdev(clk[per1], "per", "imx1-uart.1"); 88 clk_register_clkdev(clk[IMX1_CLK_PER1], "per", "imx1-uart.1");
99 clk_register_clkdev(clk[hclk], "ipg", "imx1-uart.1"); 89 clk_register_clkdev(clk[IMX1_CLK_HCLK], "ipg", "imx1-uart.1");
100 clk_register_clkdev(clk[per1], "per", "imx1-uart.2"); 90 clk_register_clkdev(clk[IMX1_CLK_PER1], "per", "imx1-uart.2");
101 clk_register_clkdev(clk[uart3_gate], "ipg", "imx1-uart.2"); 91 clk_register_clkdev(clk[IMX1_CLK_UART3_GATE], "ipg", "imx1-uart.2");
102 clk_register_clkdev(clk[hclk], NULL, "imx1-i2c.0"); 92 clk_register_clkdev(clk[IMX1_CLK_HCLK], NULL, "imx1-i2c.0");
103 clk_register_clkdev(clk[per2], "per", "imx1-cspi.0"); 93 clk_register_clkdev(clk[IMX1_CLK_PER2], "per", "imx1-cspi.0");
104 clk_register_clkdev(clk[dummy], "ipg", "imx1-cspi.0"); 94 clk_register_clkdev(clk[IMX1_CLK_DUMMY], "ipg", "imx1-cspi.0");
105 clk_register_clkdev(clk[per2], "per", "imx1-cspi.1"); 95 clk_register_clkdev(clk[IMX1_CLK_PER2], "per", "imx1-cspi.1");
106 clk_register_clkdev(clk[dummy], "ipg", "imx1-cspi.1"); 96 clk_register_clkdev(clk[IMX1_CLK_DUMMY], "ipg", "imx1-cspi.1");
107 clk_register_clkdev(clk[per2], "per", "imx1-fb.0"); 97 clk_register_clkdev(clk[IMX1_CLK_PER2], "per", "imx1-fb.0");
108 clk_register_clkdev(clk[dummy], "ipg", "imx1-fb.0"); 98 clk_register_clkdev(clk[IMX1_CLK_DUMMY], "ipg", "imx1-fb.0");
109 clk_register_clkdev(clk[dummy], "ahb", "imx1-fb.0"); 99 clk_register_clkdev(clk[IMX1_CLK_DUMMY], "ahb", "imx1-fb.0");
110 100
111 mxc_timer_init(MX1_IO_ADDRESS(MX1_TIM1_BASE_ADDR), MX1_TIM1_INT); 101 mxc_timer_init(MX1_IO_ADDRESS(MX1_TIM1_BASE_ADDR), MX1_TIM1_INT);
112 102
113 return 0; 103 return 0;
114} 104}
105
106static void __init mx1_clocks_init_dt(struct device_node *np)
107{
108 ccm = of_iomap(np, 0);
109 BUG_ON(!ccm);
110
111 _mx1_clocks_init(32768);
112
113 clk_data.clks = clk;
114 clk_data.clk_num = ARRAY_SIZE(clk);
115 of_clk_add_provider(np, of_clk_src_onecell_get, &clk_data);
116}
117CLK_OF_DECLARE(imx1_ccm, "fsl,imx1-ccm", mx1_clocks_init_dt);
diff --git a/arch/arm/mach-imx/clk-imx21.c b/arch/arm/mach-imx/clk-imx21.c
index bdc2e4630a08..4b4c75339aa6 100644
--- a/arch/arm/mach-imx/clk-imx21.c
+++ b/arch/arm/mach-imx/clk-imx21.c
@@ -7,178 +7,165 @@
7 * modify it under the terms of the GNU General Public License 7 * modify it under the terms of the GNU General Public License
8 * as published by the Free Software Foundation; either version 2 8 * as published by the Free Software Foundation; either version 2
9 * of the License, or (at your option) any later version. 9 * of the License, or (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
18 * MA 02110-1301, USA.
19 */ 10 */
20 11
21#include <linux/clk.h> 12#include <linux/clk.h>
22#include <linux/clkdev.h>
23#include <linux/clk-provider.h> 13#include <linux/clk-provider.h>
24#include <linux/io.h> 14#include <linux/clkdev.h>
25#include <linux/module.h> 15#include <linux/of.h>
26#include <linux/err.h> 16#include <linux/of_address.h>
17#include <dt-bindings/clock/imx21-clock.h>
27 18
28#include "clk.h" 19#include "clk.h"
29#include "common.h" 20#include "common.h"
30#include "hardware.h" 21#include "hardware.h"
31 22
32#define IO_ADDR_CCM(off) (MX21_IO_ADDRESS(MX21_CCM_BASE_ADDR + (off))) 23static void __iomem *ccm __initdata;
33 24
34/* Register offsets */ 25/* Register offsets */
35#define CCM_CSCR IO_ADDR_CCM(0x0) 26#define CCM_CSCR (ccm + 0x00)
36#define CCM_MPCTL0 IO_ADDR_CCM(0x4) 27#define CCM_MPCTL0 (ccm + 0x04)
37#define CCM_MPCTL1 IO_ADDR_CCM(0x8) 28#define CCM_SPCTL0 (ccm + 0x0c)
38#define CCM_SPCTL0 IO_ADDR_CCM(0xc) 29#define CCM_PCDR0 (ccm + 0x18)
39#define CCM_SPCTL1 IO_ADDR_CCM(0x10) 30#define CCM_PCDR1 (ccm + 0x1c)
40#define CCM_OSC26MCTL IO_ADDR_CCM(0x14) 31#define CCM_PCCR0 (ccm + 0x20)
41#define CCM_PCDR0 IO_ADDR_CCM(0x18) 32#define CCM_PCCR1 (ccm + 0x24)
42#define CCM_PCDR1 IO_ADDR_CCM(0x1c) 33
43#define CCM_PCCR0 IO_ADDR_CCM(0x20) 34static const char *mpll_osc_sel_clks[] = { "ckih_gate", "ckih_div1p5", };
44#define CCM_PCCR1 IO_ADDR_CCM(0x24) 35static const char *mpll_sel_clks[] = { "fpm_gate", "mpll_osc_sel", };
45#define CCM_CCSR IO_ADDR_CCM(0x28) 36static const char *spll_sel_clks[] = { "fpm_gate", "mpll_osc_sel", };
46#define CCM_PMCTL IO_ADDR_CCM(0x2c) 37static const char *ssi_sel_clks[] = { "spll_gate", "mpll_gate", };
47#define CCM_PMCOUNT IO_ADDR_CCM(0x30) 38
48#define CCM_WKGDCTL IO_ADDR_CCM(0x34) 39static struct clk *clk[IMX21_CLK_MAX];
49 40static struct clk_onecell_data clk_data;
50static const char *mpll_sel_clks[] = { "fpm", "ckih", }; 41
51static const char *spll_sel_clks[] = { "fpm", "ckih", }; 42static void __init _mx21_clocks_init(unsigned long lref, unsigned long href)
52 43{
53enum imx21_clks { 44 BUG_ON(!ccm);
54 ckil, ckih, fpm, mpll_sel, spll_sel, mpll, spll, fclk, hclk, ipg, per1, 45
55 per2, per3, per4, uart1_ipg_gate, uart2_ipg_gate, uart3_ipg_gate, 46 clk[IMX21_CLK_DUMMY] = imx_clk_fixed("dummy", 0);
56 uart4_ipg_gate, gpt1_ipg_gate, gpt2_ipg_gate, gpt3_ipg_gate, 47 clk[IMX21_CLK_CKIL] = imx_obtain_fixed_clock("ckil", lref);
57 pwm_ipg_gate, sdhc1_ipg_gate, sdhc2_ipg_gate, lcdc_ipg_gate, 48 clk[IMX21_CLK_CKIH] = imx_obtain_fixed_clock("ckih", href);
58 lcdc_hclk_gate, cspi3_ipg_gate, cspi2_ipg_gate, cspi1_ipg_gate, 49 clk[IMX21_CLK_FPM] = imx_clk_fixed_factor("fpm", "ckil", 512, 1);
59 per4_gate, csi_hclk_gate, usb_div, usb_gate, usb_hclk_gate, ssi1_gate, 50 clk[IMX21_CLK_CKIH_DIV1P5] = imx_clk_fixed_factor("ckih_div1p5", "ckih_gate", 2, 3);
60 ssi2_gate, nfc_div, nfc_gate, dma_gate, dma_hclk_gate, brom_gate, 51
61 emma_gate, emma_hclk_gate, slcdc_gate, slcdc_hclk_gate, wdog_gate, 52 clk[IMX21_CLK_MPLL_GATE] = imx_clk_gate("mpll_gate", "mpll", CCM_CSCR, 0);
62 gpio_gate, i2c_gate, kpp_gate, owire_gate, rtc_gate, clk_max 53 clk[IMX21_CLK_SPLL_GATE] = imx_clk_gate("spll_gate", "spll", CCM_CSCR, 1);
63}; 54 clk[IMX21_CLK_FPM_GATE] = imx_clk_gate("fpm_gate", "fpm", CCM_CSCR, 2);
64 55 clk[IMX21_CLK_CKIH_GATE] = imx_clk_gate_dis("ckih_gate", "ckih", CCM_CSCR, 3);
65static struct clk *clk[clk_max]; 56 clk[IMX21_CLK_MPLL_OSC_SEL] = imx_clk_mux("mpll_osc_sel", CCM_CSCR, 4, 1, mpll_osc_sel_clks, ARRAY_SIZE(mpll_osc_sel_clks));
57 clk[IMX21_CLK_IPG] = imx_clk_divider("ipg", "hclk", CCM_CSCR, 9, 1);
58 clk[IMX21_CLK_HCLK] = imx_clk_divider("hclk", "fclk", CCM_CSCR, 10, 4);
59 clk[IMX21_CLK_MPLL_SEL] = imx_clk_mux("mpll_sel", CCM_CSCR, 16, 1, mpll_sel_clks, ARRAY_SIZE(mpll_sel_clks));
60 clk[IMX21_CLK_SPLL_SEL] = imx_clk_mux("spll_sel", CCM_CSCR, 17, 1, spll_sel_clks, ARRAY_SIZE(spll_sel_clks));
61 clk[IMX21_CLK_SSI1_SEL] = imx_clk_mux("ssi1_sel", CCM_CSCR, 19, 1, ssi_sel_clks, ARRAY_SIZE(ssi_sel_clks));
62 clk[IMX21_CLK_SSI2_SEL] = imx_clk_mux("ssi2_sel", CCM_CSCR, 20, 1, ssi_sel_clks, ARRAY_SIZE(ssi_sel_clks));
63 clk[IMX21_CLK_USB_DIV] = imx_clk_divider("usb_div", "spll_gate", CCM_CSCR, 26, 3);
64 clk[IMX21_CLK_FCLK] = imx_clk_divider("fclk", "mpll_gate", CCM_CSCR, 29, 3);
65
66 clk[IMX21_CLK_MPLL] = imx_clk_pllv1("mpll", "mpll_sel", CCM_MPCTL0);
67
68 clk[IMX21_CLK_SPLL] = imx_clk_pllv1("spll", "spll_sel", CCM_SPCTL0);
69
70 clk[IMX21_CLK_NFC_DIV] = imx_clk_divider("nfc_div", "fclk", CCM_PCDR0, 12, 4);
71 clk[IMX21_CLK_SSI1_DIV] = imx_clk_divider("ssi1_div", "ssi1_sel", CCM_PCDR0, 16, 6);
72 clk[IMX21_CLK_SSI2_DIV] = imx_clk_divider("ssi2_div", "ssi2_sel", CCM_PCDR0, 26, 6);
73
74 clk[IMX21_CLK_PER1] = imx_clk_divider("per1", "mpll_gate", CCM_PCDR1, 0, 6);
75 clk[IMX21_CLK_PER2] = imx_clk_divider("per2", "mpll_gate", CCM_PCDR1, 8, 6);
76 clk[IMX21_CLK_PER3] = imx_clk_divider("per3", "mpll_gate", CCM_PCDR1, 16, 6);
77 clk[IMX21_CLK_PER4] = imx_clk_divider("per4", "mpll_gate", CCM_PCDR1, 24, 6);
78
79 clk[IMX21_CLK_UART1_IPG_GATE] = imx_clk_gate("uart1_ipg_gate", "ipg", CCM_PCCR0, 0);
80 clk[IMX21_CLK_UART2_IPG_GATE] = imx_clk_gate("uart2_ipg_gate", "ipg", CCM_PCCR0, 1);
81 clk[IMX21_CLK_UART3_IPG_GATE] = imx_clk_gate("uart3_ipg_gate", "ipg", CCM_PCCR0, 2);
82 clk[IMX21_CLK_UART4_IPG_GATE] = imx_clk_gate("uart4_ipg_gate", "ipg", CCM_PCCR0, 3);
83 clk[IMX21_CLK_CSPI1_IPG_GATE] = imx_clk_gate("cspi1_ipg_gate", "ipg", CCM_PCCR0, 4);
84 clk[IMX21_CLK_CSPI2_IPG_GATE] = imx_clk_gate("cspi2_ipg_gate", "ipg", CCM_PCCR0, 5);
85 clk[IMX21_CLK_SSI1_GATE] = imx_clk_gate("ssi1_gate", "ipg", CCM_PCCR0, 6);
86 clk[IMX21_CLK_SSI2_GATE] = imx_clk_gate("ssi2_gate", "ipg", CCM_PCCR0, 7);
87 clk[IMX21_CLK_SDHC1_IPG_GATE] = imx_clk_gate("sdhc1_ipg_gate", "ipg", CCM_PCCR0, 9);
88 clk[IMX21_CLK_SDHC2_IPG_GATE] = imx_clk_gate("sdhc2_ipg_gate", "ipg", CCM_PCCR0, 10);
89 clk[IMX21_CLK_GPIO_GATE] = imx_clk_gate("gpio_gate", "ipg", CCM_PCCR0, 11);
90 clk[IMX21_CLK_I2C_GATE] = imx_clk_gate("i2c_gate", "ipg", CCM_PCCR0, 12);
91 clk[IMX21_CLK_DMA_GATE] = imx_clk_gate("dma_gate", "ipg", CCM_PCCR0, 13);
92 clk[IMX21_CLK_USB_GATE] = imx_clk_gate("usb_gate", "usb_div", CCM_PCCR0, 14);
93 clk[IMX21_CLK_EMMA_GATE] = imx_clk_gate("emma_gate", "ipg", CCM_PCCR0, 15);
94 clk[IMX21_CLK_SSI2_BAUD_GATE] = imx_clk_gate("ssi2_baud_gate", "ipg", CCM_PCCR0, 16);
95 clk[IMX21_CLK_SSI1_BAUD_GATE] = imx_clk_gate("ssi1_baud_gate", "ipg", CCM_PCCR0, 17);
96 clk[IMX21_CLK_LCDC_IPG_GATE] = imx_clk_gate("lcdc_ipg_gate", "ipg", CCM_PCCR0, 18);
97 clk[IMX21_CLK_NFC_GATE] = imx_clk_gate("nfc_gate", "nfc_div", CCM_PCCR0, 19);
98 clk[IMX21_CLK_SLCDC_HCLK_GATE] = imx_clk_gate("slcdc_hclk_gate", "hclk", CCM_PCCR0, 21);
99 clk[IMX21_CLK_PER4_GATE] = imx_clk_gate("per4_gate", "per4", CCM_PCCR0, 22);
100 clk[IMX21_CLK_BMI_GATE] = imx_clk_gate("bmi_gate", "hclk", CCM_PCCR0, 23);
101 clk[IMX21_CLK_USB_HCLK_GATE] = imx_clk_gate("usb_hclk_gate", "hclk", CCM_PCCR0, 24);
102 clk[IMX21_CLK_SLCDC_GATE] = imx_clk_gate("slcdc_gate", "hclk", CCM_PCCR0, 25);
103 clk[IMX21_CLK_LCDC_HCLK_GATE] = imx_clk_gate("lcdc_hclk_gate", "hclk", CCM_PCCR0, 26);
104 clk[IMX21_CLK_EMMA_HCLK_GATE] = imx_clk_gate("emma_hclk_gate", "hclk", CCM_PCCR0, 27);
105 clk[IMX21_CLK_BROM_GATE] = imx_clk_gate("brom_gate", "hclk", CCM_PCCR0, 28);
106 clk[IMX21_CLK_DMA_HCLK_GATE] = imx_clk_gate("dma_hclk_gate", "hclk", CCM_PCCR0, 30);
107 clk[IMX21_CLK_CSI_HCLK_GATE] = imx_clk_gate("csi_hclk_gate", "hclk", CCM_PCCR0, 31);
108
109 clk[IMX21_CLK_CSPI3_IPG_GATE] = imx_clk_gate("cspi3_ipg_gate", "ipg", CCM_PCCR1, 23);
110 clk[IMX21_CLK_WDOG_GATE] = imx_clk_gate("wdog_gate", "ipg", CCM_PCCR1, 24);
111 clk[IMX21_CLK_GPT1_IPG_GATE] = imx_clk_gate("gpt1_ipg_gate", "ipg", CCM_PCCR1, 25);
112 clk[IMX21_CLK_GPT2_IPG_GATE] = imx_clk_gate("gpt2_ipg_gate", "ipg", CCM_PCCR1, 26);
113 clk[IMX21_CLK_GPT3_IPG_GATE] = imx_clk_gate("gpt3_ipg_gate", "ipg", CCM_PCCR1, 27);
114 clk[IMX21_CLK_PWM_IPG_GATE] = imx_clk_gate("pwm_ipg_gate", "ipg", CCM_PCCR1, 28);
115 clk[IMX21_CLK_RTC_GATE] = imx_clk_gate("rtc_gate", "ipg", CCM_PCCR1, 29);
116 clk[IMX21_CLK_KPP_GATE] = imx_clk_gate("kpp_gate", "ipg", CCM_PCCR1, 30);
117 clk[IMX21_CLK_OWIRE_GATE] = imx_clk_gate("owire_gate", "ipg", CCM_PCCR1, 31);
118
119 imx_check_clocks(clk, ARRAY_SIZE(clk));
120}
66 121
67/*
68 * must be called very early to get information about the
69 * available clock rate when the timer framework starts
70 */
71int __init mx21_clocks_init(unsigned long lref, unsigned long href) 122int __init mx21_clocks_init(unsigned long lref, unsigned long href)
72{ 123{
73 int i; 124 ccm = ioremap(MX21_CCM_BASE_ADDR, SZ_2K);
74 125
75 clk[ckil] = imx_clk_fixed("ckil", lref); 126 _mx21_clocks_init(lref, href);
76 clk[ckih] = imx_clk_fixed("ckih", href); 127
77 clk[fpm] = imx_clk_fixed_factor("fpm", "ckil", 512, 1); 128 clk_register_clkdev(clk[IMX21_CLK_PER1], "per", "imx21-uart.0");
78 clk[mpll_sel] = imx_clk_mux("mpll_sel", CCM_CSCR, 16, 1, mpll_sel_clks, 129 clk_register_clkdev(clk[IMX21_CLK_UART1_IPG_GATE], "ipg", "imx21-uart.0");
79 ARRAY_SIZE(mpll_sel_clks)); 130 clk_register_clkdev(clk[IMX21_CLK_PER1], "per", "imx21-uart.1");
80 clk[spll_sel] = imx_clk_mux("spll_sel", CCM_CSCR, 17, 1, spll_sel_clks, 131 clk_register_clkdev(clk[IMX21_CLK_UART2_IPG_GATE], "ipg", "imx21-uart.1");
81 ARRAY_SIZE(spll_sel_clks)); 132 clk_register_clkdev(clk[IMX21_CLK_PER1], "per", "imx21-uart.2");
82 clk[mpll] = imx_clk_pllv1("mpll", "mpll_sel", CCM_MPCTL0); 133 clk_register_clkdev(clk[IMX21_CLK_UART3_IPG_GATE], "ipg", "imx21-uart.2");
83 clk[spll] = imx_clk_pllv1("spll", "spll_sel", CCM_SPCTL0); 134 clk_register_clkdev(clk[IMX21_CLK_PER1], "per", "imx21-uart.3");
84 clk[fclk] = imx_clk_divider("fclk", "mpll", CCM_CSCR, 29, 3); 135 clk_register_clkdev(clk[IMX21_CLK_UART4_IPG_GATE], "ipg", "imx21-uart.3");
85 clk[hclk] = imx_clk_divider("hclk", "fclk", CCM_CSCR, 10, 4); 136 clk_register_clkdev(clk[IMX21_CLK_GPT1_IPG_GATE], "ipg", "imx-gpt.0");
86 clk[ipg] = imx_clk_divider("ipg", "hclk", CCM_CSCR, 9, 1); 137 clk_register_clkdev(clk[IMX21_CLK_PER1], "per", "imx-gpt.0");
87 clk[per1] = imx_clk_divider("per1", "mpll", CCM_PCDR1, 0, 6); 138 clk_register_clkdev(clk[IMX21_CLK_PER2], "per", "imx21-cspi.0");
88 clk[per2] = imx_clk_divider("per2", "mpll", CCM_PCDR1, 8, 6); 139 clk_register_clkdev(clk[IMX21_CLK_CSPI1_IPG_GATE], "ipg", "imx21-cspi.0");
89 clk[per3] = imx_clk_divider("per3", "mpll", CCM_PCDR1, 16, 6); 140 clk_register_clkdev(clk[IMX21_CLK_PER2], "per", "imx21-cspi.1");
90 clk[per4] = imx_clk_divider("per4", "mpll", CCM_PCDR1, 24, 6); 141 clk_register_clkdev(clk[IMX21_CLK_CSPI2_IPG_GATE], "ipg", "imx21-cspi.1");
91 clk[uart1_ipg_gate] = imx_clk_gate("uart1_ipg_gate", "ipg", CCM_PCCR0, 0); 142 clk_register_clkdev(clk[IMX21_CLK_PER2], "per", "imx21-cspi.2");
92 clk[uart2_ipg_gate] = imx_clk_gate("uart2_ipg_gate", "ipg", CCM_PCCR0, 1); 143 clk_register_clkdev(clk[IMX21_CLK_CSPI3_IPG_GATE], "ipg", "imx21-cspi.2");
93 clk[uart3_ipg_gate] = imx_clk_gate("uart3_ipg_gate", "ipg", CCM_PCCR0, 2); 144 clk_register_clkdev(clk[IMX21_CLK_PER3], "per", "imx21-fb.0");
94 clk[uart4_ipg_gate] = imx_clk_gate("uart4_ipg_gate", "ipg", CCM_PCCR0, 3); 145 clk_register_clkdev(clk[IMX21_CLK_LCDC_IPG_GATE], "ipg", "imx21-fb.0");
95 clk[gpt1_ipg_gate] = imx_clk_gate("gpt1_ipg_gate", "ipg", CCM_PCCR1, 25); 146 clk_register_clkdev(clk[IMX21_CLK_LCDC_HCLK_GATE], "ahb", "imx21-fb.0");
96 clk[gpt2_ipg_gate] = imx_clk_gate("gpt2_ipg_gate", "ipg", CCM_PCCR1, 26); 147 clk_register_clkdev(clk[IMX21_CLK_USB_GATE], "per", "imx21-hcd.0");
97 clk[gpt3_ipg_gate] = imx_clk_gate("gpt3_ipg_gate", "ipg", CCM_PCCR1, 27); 148 clk_register_clkdev(clk[IMX21_CLK_USB_HCLK_GATE], "ahb", "imx21-hcd.0");
98 clk[pwm_ipg_gate] = imx_clk_gate("pwm_ipg_gate", "ipg", CCM_PCCR1, 28); 149 clk_register_clkdev(clk[IMX21_CLK_NFC_GATE], NULL, "imx21-nand.0");
99 clk[sdhc1_ipg_gate] = imx_clk_gate("sdhc1_ipg_gate", "ipg", CCM_PCCR0, 9); 150 clk_register_clkdev(clk[IMX21_CLK_DMA_HCLK_GATE], "ahb", "imx21-dma");
100 clk[sdhc2_ipg_gate] = imx_clk_gate("sdhc2_ipg_gate", "ipg", CCM_PCCR0, 10); 151 clk_register_clkdev(clk[IMX21_CLK_DMA_GATE], "ipg", "imx21-dma");
101 clk[lcdc_ipg_gate] = imx_clk_gate("lcdc_ipg_gate", "ipg", CCM_PCCR0, 18); 152 clk_register_clkdev(clk[IMX21_CLK_WDOG_GATE], NULL, "imx2-wdt.0");
102 clk[lcdc_hclk_gate] = imx_clk_gate("lcdc_hclk_gate", "hclk", CCM_PCCR0, 26); 153 clk_register_clkdev(clk[IMX21_CLK_I2C_GATE], NULL, "imx21-i2c.0");
103 clk[cspi3_ipg_gate] = imx_clk_gate("cspi3_ipg_gate", "ipg", CCM_PCCR1, 23); 154 clk_register_clkdev(clk[IMX21_CLK_OWIRE_GATE], NULL, "mxc_w1.0");
104 clk[cspi2_ipg_gate] = imx_clk_gate("cspi2_ipg_gate", "ipg", CCM_PCCR0, 5);
105 clk[cspi1_ipg_gate] = imx_clk_gate("cspi1_ipg_gate", "ipg", CCM_PCCR0, 4);
106 clk[per4_gate] = imx_clk_gate("per4_gate", "per4", CCM_PCCR0, 22);
107 clk[csi_hclk_gate] = imx_clk_gate("csi_hclk_gate", "hclk", CCM_PCCR0, 31);
108 clk[usb_div] = imx_clk_divider("usb_div", "spll", CCM_CSCR, 26, 3);
109 clk[usb_gate] = imx_clk_gate("usb_gate", "usb_div", CCM_PCCR0, 14);
110 clk[usb_hclk_gate] = imx_clk_gate("usb_hclk_gate", "hclk", CCM_PCCR0, 24);
111 clk[ssi1_gate] = imx_clk_gate("ssi1_gate", "ipg", CCM_PCCR0, 6);
112 clk[ssi2_gate] = imx_clk_gate("ssi2_gate", "ipg", CCM_PCCR0, 7);
113 clk[nfc_div] = imx_clk_divider("nfc_div", "ipg", CCM_PCDR0, 12, 4);
114 clk[nfc_gate] = imx_clk_gate("nfc_gate", "nfc_div", CCM_PCCR0, 19);
115 clk[dma_gate] = imx_clk_gate("dma_gate", "ipg", CCM_PCCR0, 13);
116 clk[dma_hclk_gate] = imx_clk_gate("dma_hclk_gate", "hclk", CCM_PCCR0, 30);
117 clk[brom_gate] = imx_clk_gate("brom_gate", "hclk", CCM_PCCR0, 28);
118 clk[emma_gate] = imx_clk_gate("emma_gate", "ipg", CCM_PCCR0, 15);
119 clk[emma_hclk_gate] = imx_clk_gate("emma_hclk_gate", "hclk", CCM_PCCR0, 27);
120 clk[slcdc_gate] = imx_clk_gate("slcdc_gate", "ipg", CCM_PCCR0, 25);
121 clk[slcdc_hclk_gate] = imx_clk_gate("slcdc_hclk_gate", "hclk", CCM_PCCR0, 21);
122 clk[wdog_gate] = imx_clk_gate("wdog_gate", "ipg", CCM_PCCR1, 24);
123 clk[gpio_gate] = imx_clk_gate("gpio_gate", "ipg", CCM_PCCR0, 11);
124 clk[i2c_gate] = imx_clk_gate("i2c_gate", "ipg", CCM_PCCR0, 12);
125 clk[kpp_gate] = imx_clk_gate("kpp_gate", "ipg", CCM_PCCR1, 30);
126 clk[owire_gate] = imx_clk_gate("owire_gate", "ipg", CCM_PCCR1, 31);
127 clk[rtc_gate] = imx_clk_gate("rtc_gate", "ipg", CCM_PCCR1, 29);
128
129 for (i = 0; i < ARRAY_SIZE(clk); i++)
130 if (IS_ERR(clk[i]))
131 pr_err("i.MX21 clk %d: register failed with %ld\n",
132 i, PTR_ERR(clk[i]));
133
134 clk_register_clkdev(clk[per1], "per1", NULL);
135 clk_register_clkdev(clk[per2], "per2", NULL);
136 clk_register_clkdev(clk[per3], "per3", NULL);
137 clk_register_clkdev(clk[per4], "per4", NULL);
138 clk_register_clkdev(clk[per1], "per", "imx21-uart.0");
139 clk_register_clkdev(clk[uart1_ipg_gate], "ipg", "imx21-uart.0");
140 clk_register_clkdev(clk[per1], "per", "imx21-uart.1");
141 clk_register_clkdev(clk[uart2_ipg_gate], "ipg", "imx21-uart.1");
142 clk_register_clkdev(clk[per1], "per", "imx21-uart.2");
143 clk_register_clkdev(clk[uart3_ipg_gate], "ipg", "imx21-uart.2");
144 clk_register_clkdev(clk[per1], "per", "imx21-uart.3");
145 clk_register_clkdev(clk[uart4_ipg_gate], "ipg", "imx21-uart.3");
146 clk_register_clkdev(clk[gpt1_ipg_gate], "ipg", "imx-gpt.0");
147 clk_register_clkdev(clk[per1], "per", "imx-gpt.0");
148 clk_register_clkdev(clk[gpt2_ipg_gate], "ipg", "imx-gpt.1");
149 clk_register_clkdev(clk[per1], "per", "imx-gpt.1");
150 clk_register_clkdev(clk[gpt3_ipg_gate], "ipg", "imx-gpt.2");
151 clk_register_clkdev(clk[per1], "per", "imx-gpt.2");
152 clk_register_clkdev(clk[per2], "per", "imx21-cspi.0");
153 clk_register_clkdev(clk[cspi1_ipg_gate], "ipg", "imx21-cspi.0");
154 clk_register_clkdev(clk[per2], "per", "imx21-cspi.1");
155 clk_register_clkdev(clk[cspi2_ipg_gate], "ipg", "imx21-cspi.1");
156 clk_register_clkdev(clk[per2], "per", "imx21-cspi.2");
157 clk_register_clkdev(clk[cspi3_ipg_gate], "ipg", "imx21-cspi.2");
158 clk_register_clkdev(clk[per3], "per", "imx21-fb.0");
159 clk_register_clkdev(clk[lcdc_ipg_gate], "ipg", "imx21-fb.0");
160 clk_register_clkdev(clk[lcdc_hclk_gate], "ahb", "imx21-fb.0");
161 clk_register_clkdev(clk[usb_gate], "per", "imx21-hcd.0");
162 clk_register_clkdev(clk[usb_hclk_gate], "ahb", "imx21-hcd.0");
163 clk_register_clkdev(clk[nfc_gate], NULL, "imx21-nand.0");
164 clk_register_clkdev(clk[dma_hclk_gate], "ahb", "imx21-dma");
165 clk_register_clkdev(clk[dma_gate], "ipg", "imx21-dma");
166 clk_register_clkdev(clk[wdog_gate], NULL, "imx2-wdt.0");
167 clk_register_clkdev(clk[i2c_gate], NULL, "imx21-i2c.0");
168 clk_register_clkdev(clk[kpp_gate], NULL, "mxc-keypad");
169 clk_register_clkdev(clk[owire_gate], NULL, "mxc_w1.0");
170 clk_register_clkdev(clk[brom_gate], "brom", NULL);
171 clk_register_clkdev(clk[emma_gate], "emma", NULL);
172 clk_register_clkdev(clk[slcdc_gate], "slcdc", NULL);
173 clk_register_clkdev(clk[gpio_gate], "gpio", NULL);
174 clk_register_clkdev(clk[rtc_gate], "rtc", NULL);
175 clk_register_clkdev(clk[csi_hclk_gate], "csi", NULL);
176 clk_register_clkdev(clk[ssi1_gate], "ssi1", NULL);
177 clk_register_clkdev(clk[ssi2_gate], "ssi2", NULL);
178 clk_register_clkdev(clk[sdhc1_ipg_gate], "sdhc1", NULL);
179 clk_register_clkdev(clk[sdhc2_ipg_gate], "sdhc2", NULL);
180 155
181 mxc_timer_init(MX21_IO_ADDRESS(MX21_GPT1_BASE_ADDR), MX21_INT_GPT1); 156 mxc_timer_init(MX21_IO_ADDRESS(MX21_GPT1_BASE_ADDR), MX21_INT_GPT1);
182 157
183 return 0; 158 return 0;
184} 159}
160
161static void __init mx21_clocks_init_dt(struct device_node *np)
162{
163 ccm = of_iomap(np, 0);
164
165 _mx21_clocks_init(32768, 26000000);
166
167 clk_data.clks = clk;
168 clk_data.clk_num = ARRAY_SIZE(clk);
169 of_clk_add_provider(np, of_clk_src_onecell_get, &clk_data);
170}
171CLK_OF_DECLARE(imx27_ccm, "fsl,imx21-ccm", mx21_clocks_init_dt);
diff --git a/arch/arm/mach-imx/clk-imx25.c b/arch/arm/mach-imx/clk-imx25.c
index ae578c096ad8..59c0c8558c6b 100644
--- a/arch/arm/mach-imx/clk-imx25.c
+++ b/arch/arm/mach-imx/clk-imx25.c
@@ -32,8 +32,6 @@
32#include "hardware.h" 32#include "hardware.h"
33#include "mx25.h" 33#include "mx25.h"
34 34
35#define CRM_BASE MX25_IO_ADDRESS(MX25_CRM_BASE_ADDR)
36
37#define CCM_MPCTL 0x00 35#define CCM_MPCTL 0x00
38#define CCM_UPCTL 0x04 36#define CCM_UPCTL 0x04
39#define CCM_CCTL 0x08 37#define CCM_CCTL 0x08
@@ -56,7 +54,7 @@
56#define CCM_LTR3 0x4c 54#define CCM_LTR3 0x4c
57#define CCM_MCR 0x64 55#define CCM_MCR 0x64
58 56
59#define ccm(x) (CRM_BASE + (x)) 57#define ccm(x) (ccm_base + (x))
60 58
61static struct clk_onecell_data clk_data; 59static struct clk_onecell_data clk_data;
62 60
@@ -91,9 +89,10 @@ enum mx25_clks {
91 89
92static struct clk *clk[clk_max]; 90static struct clk *clk[clk_max];
93 91
94static int __init __mx25_clocks_init(unsigned long osc_rate) 92static int __init __mx25_clocks_init(unsigned long osc_rate,
93 void __iomem *ccm_base)
95{ 94{
96 int i; 95 BUG_ON(!ccm_base);
97 96
98 clk[dummy] = imx_clk_fixed("dummy", 0); 97 clk[dummy] = imx_clk_fixed("dummy", 0);
99 clk[osc] = imx_clk_fixed("osc", osc_rate); 98 clk[osc] = imx_clk_fixed("osc", osc_rate);
@@ -224,19 +223,13 @@ static int __init __mx25_clocks_init(unsigned long osc_rate)
224 /* CCM_CGCR2(19): reserved in datasheet, but used as wdt in FSL kernel */ 223 /* CCM_CGCR2(19): reserved in datasheet, but used as wdt in FSL kernel */
225 clk[wdt_ipg] = imx_clk_gate("wdt_ipg", "ipg", ccm(CCM_CGCR2), 19); 224 clk[wdt_ipg] = imx_clk_gate("wdt_ipg", "ipg", ccm(CCM_CGCR2), 19);
226 225
227 for (i = 0; i < ARRAY_SIZE(clk); i++) 226 imx_check_clocks(clk, ARRAY_SIZE(clk));
228 if (IS_ERR(clk[i]))
229 pr_err("i.MX25 clk %d: register failed with %ld\n",
230 i, PTR_ERR(clk[i]));
231 227
232 clk_prepare_enable(clk[emi_ahb]); 228 clk_prepare_enable(clk[emi_ahb]);
233 229
234 /* Clock source for gpt must be derived from AHB */ 230 /* Clock source for gpt must be derived from AHB */
235 clk_set_parent(clk[per5_sel], clk[ahb]); 231 clk_set_parent(clk[per5_sel], clk[ahb]);
236 232
237 clk_register_clkdev(clk[ipg], "ipg", "imx-gpt.0");
238 clk_register_clkdev(clk[gpt_ipg_per], "per", "imx-gpt.0");
239
240 /* 233 /*
241 * Let's initially set up CLKO parent as ipg, since this configuration 234 * Let's initially set up CLKO parent as ipg, since this configuration
242 * is used on some imx25 board designs to clock the audio codec. 235 * is used on some imx25 board designs to clock the audio codec.
@@ -248,8 +241,14 @@ static int __init __mx25_clocks_init(unsigned long osc_rate)
248 241
249int __init mx25_clocks_init(void) 242int __init mx25_clocks_init(void)
250{ 243{
251 __mx25_clocks_init(24000000); 244 void __iomem *ccm;
252 245
246 ccm = ioremap(MX25_CRM_BASE_ADDR, SZ_16K);
247
248 __mx25_clocks_init(24000000, ccm);
249
250 clk_register_clkdev(clk[gpt1_ipg], "ipg", "imx-gpt.0");
251 clk_register_clkdev(clk[gpt_ipg_per], "per", "imx-gpt.0");
253 /* i.mx25 has the i.mx21 type uart */ 252 /* i.mx25 has the i.mx21 type uart */
254 clk_register_clkdev(clk[uart1_ipg], "ipg", "imx21-uart.0"); 253 clk_register_clkdev(clk[uart1_ipg], "ipg", "imx21-uart.0");
255 clk_register_clkdev(clk[uart_ipg_per], "per", "imx21-uart.0"); 254 clk_register_clkdev(clk[uart_ipg_per], "per", "imx21-uart.0");
@@ -314,29 +313,27 @@ int __init mx25_clocks_init(void)
314 return 0; 313 return 0;
315} 314}
316 315
317int __init mx25_clocks_init_dt(void) 316static void __init mx25_clocks_init_dt(struct device_node *np)
318{ 317{
319 struct device_node *np; 318 struct device_node *refnp;
320 unsigned long osc_rate = 24000000; 319 unsigned long osc_rate = 24000000;
320 void __iomem *ccm;
321 321
322 /* retrieve the freqency of fixed clocks from device tree */ 322 /* retrieve the freqency of fixed clocks from device tree */
323 for_each_compatible_node(np, NULL, "fixed-clock") { 323 for_each_compatible_node(refnp, NULL, "fixed-clock") {
324 u32 rate; 324 u32 rate;
325 if (of_property_read_u32(np, "clock-frequency", &rate)) 325 if (of_property_read_u32(refnp, "clock-frequency", &rate))
326 continue; 326 continue;
327 327
328 if (of_device_is_compatible(np, "fsl,imx-osc")) 328 if (of_device_is_compatible(refnp, "fsl,imx-osc"))
329 osc_rate = rate; 329 osc_rate = rate;
330 } 330 }
331 331
332 np = of_find_compatible_node(NULL, NULL, "fsl,imx25-ccm"); 332 ccm = of_iomap(np, 0);
333 __mx25_clocks_init(osc_rate, ccm);
334
333 clk_data.clks = clk; 335 clk_data.clks = clk;
334 clk_data.clk_num = ARRAY_SIZE(clk); 336 clk_data.clk_num = ARRAY_SIZE(clk);
335 of_clk_add_provider(np, of_clk_src_onecell_get, &clk_data); 337 of_clk_add_provider(np, of_clk_src_onecell_get, &clk_data);
336
337 __mx25_clocks_init(osc_rate);
338
339 mxc_timer_init_dt(of_find_compatible_node(NULL, NULL, "fsl,imx25-gpt"));
340
341 return 0;
342} 338}
339CLK_OF_DECLARE(imx25_ccm, "fsl,imx25-ccm", mx25_clocks_init_dt);
diff --git a/arch/arm/mach-imx/clk-imx27.c b/arch/arm/mach-imx/clk-imx27.c
index 317a662626d6..ab6349ec23b9 100644
--- a/arch/arm/mach-imx/clk-imx27.c
+++ b/arch/arm/mach-imx/clk-imx27.c
@@ -1,61 +1,36 @@
1#include <linux/clk.h> 1#include <linux/clk.h>
2#include <linux/io.h> 2#include <linux/clk-provider.h>
3#include <linux/module.h>
4#include <linux/clkdev.h> 3#include <linux/clkdev.h>
5#include <linux/err.h> 4#include <linux/err.h>
6#include <linux/clk-provider.h>
7#include <linux/of.h> 5#include <linux/of.h>
6#include <linux/of_address.h>
7#include <dt-bindings/clock/imx27-clock.h>
8 8
9#include "clk.h" 9#include "clk.h"
10#include "common.h" 10#include "common.h"
11#include "hardware.h" 11#include "hardware.h"
12 12
13#define IO_ADDR_CCM(off) (MX27_IO_ADDRESS(MX27_CCM_BASE_ADDR + (off))) 13static void __iomem *ccm __initdata;
14 14
15/* Register offsets */ 15/* Register offsets */
16#define CCM_CSCR IO_ADDR_CCM(0x0) 16#define CCM_CSCR (ccm + 0x00)
17#define CCM_MPCTL0 IO_ADDR_CCM(0x4) 17#define CCM_MPCTL0 (ccm + 0x04)
18#define CCM_MPCTL1 IO_ADDR_CCM(0x8) 18#define CCM_MPCTL1 (ccm + 0x08)
19#define CCM_SPCTL0 IO_ADDR_CCM(0xc) 19#define CCM_SPCTL0 (ccm + 0x0c)
20#define CCM_SPCTL1 IO_ADDR_CCM(0x10) 20#define CCM_SPCTL1 (ccm + 0x10)
21#define CCM_OSC26MCTL IO_ADDR_CCM(0x14) 21#define CCM_PCDR0 (ccm + 0x18)
22#define CCM_PCDR0 IO_ADDR_CCM(0x18) 22#define CCM_PCDR1 (ccm + 0x1c)
23#define CCM_PCDR1 IO_ADDR_CCM(0x1c) 23#define CCM_PCCR0 (ccm + 0x20)
24#define CCM_PCCR0 IO_ADDR_CCM(0x20) 24#define CCM_PCCR1 (ccm + 0x24)
25#define CCM_PCCR1 IO_ADDR_CCM(0x24) 25#define CCM_CCSR (ccm + 0x28)
26#define CCM_CCSR IO_ADDR_CCM(0x28)
27#define CCM_PMCTL IO_ADDR_CCM(0x2c)
28#define CCM_PMCOUNT IO_ADDR_CCM(0x30)
29#define CCM_WKGDCTL IO_ADDR_CCM(0x34)
30
31#define CCM_CSCR_UPDATE_DIS (1 << 31)
32#define CCM_CSCR_SSI2 (1 << 23)
33#define CCM_CSCR_SSI1 (1 << 22)
34#define CCM_CSCR_VPU (1 << 21)
35#define CCM_CSCR_MSHC (1 << 20)
36#define CCM_CSCR_SPLLRES (1 << 19)
37#define CCM_CSCR_MPLLRES (1 << 18)
38#define CCM_CSCR_SP (1 << 17)
39#define CCM_CSCR_MCU (1 << 16)
40#define CCM_CSCR_OSC26MDIV (1 << 4)
41#define CCM_CSCR_OSC26M (1 << 3)
42#define CCM_CSCR_FPM (1 << 2)
43#define CCM_CSCR_SPEN (1 << 1)
44#define CCM_CSCR_MPEN (1 << 0)
45
46/* i.MX27 TO 2+ */
47#define CCM_CSCR_ARM_SRC (1 << 15)
48
49#define CCM_SPCTL1_LF (1 << 15)
50#define CCM_SPCTL1_BRMO (1 << 6)
51 26
52static const char *vpu_sel_clks[] = { "spll", "mpll_main2", }; 27static const char *vpu_sel_clks[] = { "spll", "mpll_main2", };
53static const char *cpu_sel_clks[] = { "mpll_main2", "mpll", }; 28static const char *cpu_sel_clks[] = { "mpll_main2", "mpll", };
54static const char *mpll_sel_clks[] = { "fpm", "mpll_osc_sel", }; 29static const char *mpll_sel_clks[] = { "fpm", "mpll_osc_sel", };
55static const char *mpll_osc_sel_clks[] = { "ckih", "ckih_div1p5", }; 30static const char *mpll_osc_sel_clks[] = { "ckih_gate", "ckih_div1p5", };
56static const char *clko_sel_clks[] = { 31static const char *clko_sel_clks[] = {
57 "ckil", "fpm", "ckih", "ckih", 32 "ckil", "fpm", "ckih_gate", "ckih_gate",
58 "ckih", "mpll", "spll", "cpu_div", 33 "ckih_gate", "mpll", "spll", "cpu_div",
59 "ahb", "ipg", "per1_div", "per2_div", 34 "ahb", "ipg", "per1_div", "per2_div",
60 "per3_div", "per4_div", "ssi1_div", "ssi2_div", 35 "per3_div", "per4_div", "ssi1_div", "ssi2_div",
61 "nfc_div", "mshc_div", "vpu_div", "60m", 36 "nfc_div", "mshc_div", "vpu_div", "60m",
@@ -64,239 +39,220 @@ static const char *clko_sel_clks[] = {
64 39
65static const char *ssi_sel_clks[] = { "spll_gate", "mpll", }; 40static const char *ssi_sel_clks[] = { "spll_gate", "mpll", };
66 41
67enum mx27_clks { 42static struct clk *clk[IMX27_CLK_MAX];
68 dummy, ckih, ckil, mpll, spll, mpll_main2, ahb, ipg, nfc_div, per1_div,
69 per2_div, per3_div, per4_div, vpu_sel, vpu_div, usb_div, cpu_sel,
70 clko_sel, cpu_div, clko_div, ssi1_sel, ssi2_sel, ssi1_div, ssi2_div,
71 clko_en, ssi2_ipg_gate, ssi1_ipg_gate, slcdc_ipg_gate, sdhc3_ipg_gate,
72 sdhc2_ipg_gate, sdhc1_ipg_gate, scc_ipg_gate, sahara_ipg_gate,
73 rtc_ipg_gate, pwm_ipg_gate, owire_ipg_gate, lcdc_ipg_gate,
74 kpp_ipg_gate, iim_ipg_gate, i2c2_ipg_gate, i2c1_ipg_gate,
75 gpt6_ipg_gate, gpt5_ipg_gate, gpt4_ipg_gate, gpt3_ipg_gate,
76 gpt2_ipg_gate, gpt1_ipg_gate, gpio_ipg_gate, fec_ipg_gate,
77 emma_ipg_gate, dma_ipg_gate, cspi3_ipg_gate, cspi2_ipg_gate,
78 cspi1_ipg_gate, nfc_baud_gate, ssi2_baud_gate, ssi1_baud_gate,
79 vpu_baud_gate, per4_gate, per3_gate, per2_gate, per1_gate,
80 usb_ahb_gate, slcdc_ahb_gate, sahara_ahb_gate, lcdc_ahb_gate,
81 vpu_ahb_gate, fec_ahb_gate, emma_ahb_gate, emi_ahb_gate, dma_ahb_gate,
82 csi_ahb_gate, brom_ahb_gate, ata_ahb_gate, wdog_ipg_gate, usb_ipg_gate,
83 uart6_ipg_gate, uart5_ipg_gate, uart4_ipg_gate, uart3_ipg_gate,
84 uart2_ipg_gate, uart1_ipg_gate, ckih_div1p5, fpm, mpll_osc_sel,
85 mpll_sel, spll_gate, mshc_div, rtic_ipg_gate, mshc_ipg_gate,
86 rtic_ahb_gate, mshc_baud_gate, clk_max
87};
88
89static struct clk *clk[clk_max];
90static struct clk_onecell_data clk_data; 43static struct clk_onecell_data clk_data;
91 44
92int __init mx27_clocks_init(unsigned long fref) 45static void __init _mx27_clocks_init(unsigned long fref)
93{ 46{
94 int i; 47 BUG_ON(!ccm);
95 struct device_node *np;
96
97 clk[dummy] = imx_clk_fixed("dummy", 0);
98 clk[ckih] = imx_clk_fixed("ckih", fref);
99 clk[ckil] = imx_clk_fixed("ckil", 32768);
100 clk[fpm] = imx_clk_fixed_factor("fpm", "ckil", 1024, 1);
101 clk[ckih_div1p5] = imx_clk_fixed_factor("ckih_div1p5", "ckih", 2, 3);
102 48
103 clk[mpll_osc_sel] = imx_clk_mux("mpll_osc_sel", CCM_CSCR, 4, 1, 49 clk[IMX27_CLK_DUMMY] = imx_clk_fixed("dummy", 0);
104 mpll_osc_sel_clks, 50 clk[IMX27_CLK_CKIH] = imx_clk_fixed("ckih", fref);
105 ARRAY_SIZE(mpll_osc_sel_clks)); 51 clk[IMX27_CLK_CKIL] = imx_clk_fixed("ckil", 32768);
106 clk[mpll_sel] = imx_clk_mux("mpll_sel", CCM_CSCR, 16, 1, mpll_sel_clks, 52 clk[IMX27_CLK_FPM] = imx_clk_fixed_factor("fpm", "ckil", 1024, 1);
107 ARRAY_SIZE(mpll_sel_clks)); 53 clk[IMX27_CLK_CKIH_DIV1P5] = imx_clk_fixed_factor("ckih_div1p5", "ckih_gate", 2, 3);
108 clk[mpll] = imx_clk_pllv1("mpll", "mpll_sel", CCM_MPCTL0); 54 clk[IMX27_CLK_CKIH_GATE] = imx_clk_gate_dis("ckih_gate", "ckih", CCM_CSCR, 3);
109 clk[spll] = imx_clk_pllv1("spll", "ckih", CCM_SPCTL0); 55 clk[IMX27_CLK_MPLL_OSC_SEL] = imx_clk_mux("mpll_osc_sel", CCM_CSCR, 4, 1, mpll_osc_sel_clks, ARRAY_SIZE(mpll_osc_sel_clks));
110 clk[spll_gate] = imx_clk_gate("spll_gate", "spll", CCM_CSCR, 1); 56 clk[IMX27_CLK_MPLL_SEL] = imx_clk_mux("mpll_sel", CCM_CSCR, 16, 1, mpll_sel_clks, ARRAY_SIZE(mpll_sel_clks));
111 clk[mpll_main2] = imx_clk_fixed_factor("mpll_main2", "mpll", 2, 3); 57 clk[IMX27_CLK_MPLL] = imx_clk_pllv1("mpll", "mpll_sel", CCM_MPCTL0);
58 clk[IMX27_CLK_SPLL] = imx_clk_pllv1("spll", "ckih_gate", CCM_SPCTL0);
59 clk[IMX27_CLK_SPLL_GATE] = imx_clk_gate("spll_gate", "spll", CCM_CSCR, 1);
60 clk[IMX27_CLK_MPLL_MAIN2] = imx_clk_fixed_factor("mpll_main2", "mpll", 2, 3);
112 61
113 if (mx27_revision() >= IMX_CHIP_REVISION_2_0) { 62 if (mx27_revision() >= IMX_CHIP_REVISION_2_0) {
114 clk[ahb] = imx_clk_divider("ahb", "mpll_main2", CCM_CSCR, 8, 2); 63 clk[IMX27_CLK_AHB] = imx_clk_divider("ahb", "mpll_main2", CCM_CSCR, 8, 2);
115 clk[ipg] = imx_clk_fixed_factor("ipg", "ahb", 1, 2); 64 clk[IMX27_CLK_IPG] = imx_clk_fixed_factor("ipg", "ahb", 1, 2);
116 } else { 65 } else {
117 clk[ahb] = imx_clk_divider("ahb", "mpll_main2", CCM_CSCR, 9, 4); 66 clk[IMX27_CLK_AHB] = imx_clk_divider("ahb", "mpll_main2", CCM_CSCR, 9, 4);
118 clk[ipg] = imx_clk_divider("ipg", "ahb", CCM_CSCR, 8, 1); 67 clk[IMX27_CLK_IPG] = imx_clk_divider("ipg", "ahb", CCM_CSCR, 8, 1);
119 } 68 }
120 69
121 clk[mshc_div] = imx_clk_divider("mshc_div", "ahb", CCM_PCDR0, 0, 6); 70 clk[IMX27_CLK_MSHC_DIV] = imx_clk_divider("mshc_div", "ahb", CCM_PCDR0, 0, 6);
122 clk[nfc_div] = imx_clk_divider("nfc_div", "ahb", CCM_PCDR0, 6, 4); 71 clk[IMX27_CLK_NFC_DIV] = imx_clk_divider("nfc_div", "ahb", CCM_PCDR0, 6, 4);
123 clk[per1_div] = imx_clk_divider("per1_div", "mpll_main2", CCM_PCDR1, 0, 6); 72 clk[IMX27_CLK_PER1_DIV] = imx_clk_divider("per1_div", "mpll_main2", CCM_PCDR1, 0, 6);
124 clk[per2_div] = imx_clk_divider("per2_div", "mpll_main2", CCM_PCDR1, 8, 6); 73 clk[IMX27_CLK_PER2_DIV] = imx_clk_divider("per2_div", "mpll_main2", CCM_PCDR1, 8, 6);
125 clk[per3_div] = imx_clk_divider("per3_div", "mpll_main2", CCM_PCDR1, 16, 6); 74 clk[IMX27_CLK_PER3_DIV] = imx_clk_divider("per3_div", "mpll_main2", CCM_PCDR1, 16, 6);
126 clk[per4_div] = imx_clk_divider("per4_div", "mpll_main2", CCM_PCDR1, 24, 6); 75 clk[IMX27_CLK_PER4_DIV] = imx_clk_divider("per4_div", "mpll_main2", CCM_PCDR1, 24, 6);
127 clk[vpu_sel] = imx_clk_mux("vpu_sel", CCM_CSCR, 21, 1, vpu_sel_clks, ARRAY_SIZE(vpu_sel_clks)); 76 clk[IMX27_CLK_VPU_SEL] = imx_clk_mux("vpu_sel", CCM_CSCR, 21, 1, vpu_sel_clks, ARRAY_SIZE(vpu_sel_clks));
128 clk[vpu_div] = imx_clk_divider("vpu_div", "vpu_sel", CCM_PCDR0, 10, 6); 77 clk[IMX27_CLK_VPU_DIV] = imx_clk_divider("vpu_div", "vpu_sel", CCM_PCDR0, 10, 6);
129 clk[usb_div] = imx_clk_divider("usb_div", "spll_gate", CCM_CSCR, 28, 3); 78 clk[IMX27_CLK_USB_DIV] = imx_clk_divider("usb_div", "spll_gate", CCM_CSCR, 28, 3);
130 clk[cpu_sel] = imx_clk_mux("cpu_sel", CCM_CSCR, 15, 1, cpu_sel_clks, ARRAY_SIZE(cpu_sel_clks)); 79 clk[IMX27_CLK_CPU_SEL] = imx_clk_mux("cpu_sel", CCM_CSCR, 15, 1, cpu_sel_clks, ARRAY_SIZE(cpu_sel_clks));
131 clk[clko_sel] = imx_clk_mux("clko_sel", CCM_CCSR, 0, 5, clko_sel_clks, ARRAY_SIZE(clko_sel_clks)); 80 clk[IMX27_CLK_CLKO_SEL] = imx_clk_mux("clko_sel", CCM_CCSR, 0, 5, clko_sel_clks, ARRAY_SIZE(clko_sel_clks));
81
132 if (mx27_revision() >= IMX_CHIP_REVISION_2_0) 82 if (mx27_revision() >= IMX_CHIP_REVISION_2_0)
133 clk[cpu_div] = imx_clk_divider("cpu_div", "cpu_sel", CCM_CSCR, 12, 2); 83 clk[IMX27_CLK_CPU_DIV] = imx_clk_divider("cpu_div", "cpu_sel", CCM_CSCR, 12, 2);
134 else 84 else
135 clk[cpu_div] = imx_clk_divider("cpu_div", "cpu_sel", CCM_CSCR, 13, 3); 85 clk[IMX27_CLK_CPU_DIV] = imx_clk_divider("cpu_div", "cpu_sel", CCM_CSCR, 13, 3);
136 clk[clko_div] = imx_clk_divider("clko_div", "clko_sel", CCM_PCDR0, 22, 3);
137 clk[ssi1_sel] = imx_clk_mux("ssi1_sel", CCM_CSCR, 22, 1, ssi_sel_clks, ARRAY_SIZE(ssi_sel_clks));
138 clk[ssi2_sel] = imx_clk_mux("ssi2_sel", CCM_CSCR, 23, 1, ssi_sel_clks, ARRAY_SIZE(ssi_sel_clks));
139 clk[ssi1_div] = imx_clk_divider("ssi1_div", "ssi1_sel", CCM_PCDR0, 16, 6);
140 clk[ssi2_div] = imx_clk_divider("ssi2_div", "ssi2_sel", CCM_PCDR0, 26, 6);
141 clk[clko_en] = imx_clk_gate("clko_en", "clko_div", CCM_PCCR0, 0);
142 clk[ssi2_ipg_gate] = imx_clk_gate("ssi2_ipg_gate", "ipg", CCM_PCCR0, 0);
143 clk[ssi1_ipg_gate] = imx_clk_gate("ssi1_ipg_gate", "ipg", CCM_PCCR0, 1);
144 clk[slcdc_ipg_gate] = imx_clk_gate("slcdc_ipg_gate", "ipg", CCM_PCCR0, 2);
145 clk[sdhc3_ipg_gate] = imx_clk_gate("sdhc3_ipg_gate", "ipg", CCM_PCCR0, 3);
146 clk[sdhc2_ipg_gate] = imx_clk_gate("sdhc2_ipg_gate", "ipg", CCM_PCCR0, 4);
147 clk[sdhc1_ipg_gate] = imx_clk_gate("sdhc1_ipg_gate", "ipg", CCM_PCCR0, 5);
148 clk[scc_ipg_gate] = imx_clk_gate("scc_ipg_gate", "ipg", CCM_PCCR0, 6);
149 clk[sahara_ipg_gate] = imx_clk_gate("sahara_ipg_gate", "ipg", CCM_PCCR0, 7);
150 clk[rtic_ipg_gate] = imx_clk_gate("rtic_ipg_gate", "ipg", CCM_PCCR0, 8);
151 clk[rtc_ipg_gate] = imx_clk_gate("rtc_ipg_gate", "ipg", CCM_PCCR0, 9);
152 clk[pwm_ipg_gate] = imx_clk_gate("pwm_ipg_gate", "ipg", CCM_PCCR0, 11);
153 clk[owire_ipg_gate] = imx_clk_gate("owire_ipg_gate", "ipg", CCM_PCCR0, 12);
154 clk[mshc_ipg_gate] = imx_clk_gate("mshc_ipg_gate", "ipg", CCM_PCCR0, 13);
155 clk[lcdc_ipg_gate] = imx_clk_gate("lcdc_ipg_gate", "ipg", CCM_PCCR0, 14);
156 clk[kpp_ipg_gate] = imx_clk_gate("kpp_ipg_gate", "ipg", CCM_PCCR0, 15);
157 clk[iim_ipg_gate] = imx_clk_gate("iim_ipg_gate", "ipg", CCM_PCCR0, 16);
158 clk[i2c2_ipg_gate] = imx_clk_gate("i2c2_ipg_gate", "ipg", CCM_PCCR0, 17);
159 clk[i2c1_ipg_gate] = imx_clk_gate("i2c1_ipg_gate", "ipg", CCM_PCCR0, 18);
160 clk[gpt6_ipg_gate] = imx_clk_gate("gpt6_ipg_gate", "ipg", CCM_PCCR0, 19);
161 clk[gpt5_ipg_gate] = imx_clk_gate("gpt5_ipg_gate", "ipg", CCM_PCCR0, 20);
162 clk[gpt4_ipg_gate] = imx_clk_gate("gpt4_ipg_gate", "ipg", CCM_PCCR0, 21);
163 clk[gpt3_ipg_gate] = imx_clk_gate("gpt3_ipg_gate", "ipg", CCM_PCCR0, 22);
164 clk[gpt2_ipg_gate] = imx_clk_gate("gpt2_ipg_gate", "ipg", CCM_PCCR0, 23);
165 clk[gpt1_ipg_gate] = imx_clk_gate("gpt1_ipg_gate", "ipg", CCM_PCCR0, 24);
166 clk[gpio_ipg_gate] = imx_clk_gate("gpio_ipg_gate", "ipg", CCM_PCCR0, 25);
167 clk[fec_ipg_gate] = imx_clk_gate("fec_ipg_gate", "ipg", CCM_PCCR0, 26);
168 clk[emma_ipg_gate] = imx_clk_gate("emma_ipg_gate", "ipg", CCM_PCCR0, 27);
169 clk[dma_ipg_gate] = imx_clk_gate("dma_ipg_gate", "ipg", CCM_PCCR0, 28);
170 clk[cspi3_ipg_gate] = imx_clk_gate("cspi3_ipg_gate", "ipg", CCM_PCCR0, 29);
171 clk[cspi2_ipg_gate] = imx_clk_gate("cspi2_ipg_gate", "ipg", CCM_PCCR0, 30);
172 clk[cspi1_ipg_gate] = imx_clk_gate("cspi1_ipg_gate", "ipg", CCM_PCCR0, 31);
173 clk[mshc_baud_gate] = imx_clk_gate("mshc_baud_gate", "mshc_div", CCM_PCCR1, 2);
174 clk[nfc_baud_gate] = imx_clk_gate("nfc_baud_gate", "nfc_div", CCM_PCCR1, 3);
175 clk[ssi2_baud_gate] = imx_clk_gate("ssi2_baud_gate", "ssi2_div", CCM_PCCR1, 4);
176 clk[ssi1_baud_gate] = imx_clk_gate("ssi1_baud_gate", "ssi1_div", CCM_PCCR1, 5);
177 clk[vpu_baud_gate] = imx_clk_gate("vpu_baud_gate", "vpu_div", CCM_PCCR1, 6);
178 clk[per4_gate] = imx_clk_gate("per4_gate", "per4_div", CCM_PCCR1, 7);
179 clk[per3_gate] = imx_clk_gate("per3_gate", "per3_div", CCM_PCCR1, 8);
180 clk[per2_gate] = imx_clk_gate("per2_gate", "per2_div", CCM_PCCR1, 9);
181 clk[per1_gate] = imx_clk_gate("per1_gate", "per1_div", CCM_PCCR1, 10);
182 clk[usb_ahb_gate] = imx_clk_gate("usb_ahb_gate", "ahb", CCM_PCCR1, 11);
183 clk[slcdc_ahb_gate] = imx_clk_gate("slcdc_ahb_gate", "ahb", CCM_PCCR1, 12);
184 clk[sahara_ahb_gate] = imx_clk_gate("sahara_ahb_gate", "ahb", CCM_PCCR1, 13);
185 clk[rtic_ahb_gate] = imx_clk_gate("rtic_ahb_gate", "ahb", CCM_PCCR1, 14);
186 clk[lcdc_ahb_gate] = imx_clk_gate("lcdc_ahb_gate", "ahb", CCM_PCCR1, 15);
187 clk[vpu_ahb_gate] = imx_clk_gate("vpu_ahb_gate", "ahb", CCM_PCCR1, 16);
188 clk[fec_ahb_gate] = imx_clk_gate("fec_ahb_gate", "ahb", CCM_PCCR1, 17);
189 clk[emma_ahb_gate] = imx_clk_gate("emma_ahb_gate", "ahb", CCM_PCCR1, 18);
190 clk[emi_ahb_gate] = imx_clk_gate("emi_ahb_gate", "ahb", CCM_PCCR1, 19);
191 clk[dma_ahb_gate] = imx_clk_gate("dma_ahb_gate", "ahb", CCM_PCCR1, 20);
192 clk[csi_ahb_gate] = imx_clk_gate("csi_ahb_gate", "ahb", CCM_PCCR1, 21);
193 clk[brom_ahb_gate] = imx_clk_gate("brom_ahb_gate", "ahb", CCM_PCCR1, 22);
194 clk[ata_ahb_gate] = imx_clk_gate("ata_ahb_gate", "ahb", CCM_PCCR1, 23);
195 clk[wdog_ipg_gate] = imx_clk_gate("wdog_ipg_gate", "ipg", CCM_PCCR1, 24);
196 clk[usb_ipg_gate] = imx_clk_gate("usb_ipg_gate", "ipg", CCM_PCCR1, 25);
197 clk[uart6_ipg_gate] = imx_clk_gate("uart6_ipg_gate", "ipg", CCM_PCCR1, 26);
198 clk[uart5_ipg_gate] = imx_clk_gate("uart5_ipg_gate", "ipg", CCM_PCCR1, 27);
199 clk[uart4_ipg_gate] = imx_clk_gate("uart4_ipg_gate", "ipg", CCM_PCCR1, 28);
200 clk[uart3_ipg_gate] = imx_clk_gate("uart3_ipg_gate", "ipg", CCM_PCCR1, 29);
201 clk[uart2_ipg_gate] = imx_clk_gate("uart2_ipg_gate", "ipg", CCM_PCCR1, 30);
202 clk[uart1_ipg_gate] = imx_clk_gate("uart1_ipg_gate", "ipg", CCM_PCCR1, 31);
203 86
204 for (i = 0; i < ARRAY_SIZE(clk); i++) 87 clk[IMX27_CLK_CLKO_DIV] = imx_clk_divider("clko_div", "clko_sel", CCM_PCDR0, 22, 3);
205 if (IS_ERR(clk[i])) 88 clk[IMX27_CLK_SSI1_SEL] = imx_clk_mux("ssi1_sel", CCM_CSCR, 22, 1, ssi_sel_clks, ARRAY_SIZE(ssi_sel_clks));
206 pr_err("i.MX27 clk %d: register failed with %ld\n", 89 clk[IMX27_CLK_SSI2_SEL] = imx_clk_mux("ssi2_sel", CCM_CSCR, 23, 1, ssi_sel_clks, ARRAY_SIZE(ssi_sel_clks));
207 i, PTR_ERR(clk[i])); 90 clk[IMX27_CLK_SSI1_DIV] = imx_clk_divider("ssi1_div", "ssi1_sel", CCM_PCDR0, 16, 6);
91 clk[IMX27_CLK_SSI2_DIV] = imx_clk_divider("ssi2_div", "ssi2_sel", CCM_PCDR0, 26, 6);
92 clk[IMX27_CLK_CLKO_EN] = imx_clk_gate("clko_en", "clko_div", CCM_PCCR0, 0);
93 clk[IMX27_CLK_SSI2_IPG_GATE] = imx_clk_gate("ssi2_ipg_gate", "ipg", CCM_PCCR0, 0);
94 clk[IMX27_CLK_SSI1_IPG_GATE] = imx_clk_gate("ssi1_ipg_gate", "ipg", CCM_PCCR0, 1);
95 clk[IMX27_CLK_SLCDC_IPG_GATE] = imx_clk_gate("slcdc_ipg_gate", "ipg", CCM_PCCR0, 2);
96 clk[IMX27_CLK_SDHC3_IPG_GATE] = imx_clk_gate("sdhc3_ipg_gate", "ipg", CCM_PCCR0, 3);
97 clk[IMX27_CLK_SDHC2_IPG_GATE] = imx_clk_gate("sdhc2_ipg_gate", "ipg", CCM_PCCR0, 4);
98 clk[IMX27_CLK_SDHC1_IPG_GATE] = imx_clk_gate("sdhc1_ipg_gate", "ipg", CCM_PCCR0, 5);
99 clk[IMX27_CLK_SCC_IPG_GATE] = imx_clk_gate("scc_ipg_gate", "ipg", CCM_PCCR0, 6);
100 clk[IMX27_CLK_SAHARA_IPG_GATE] = imx_clk_gate("sahara_ipg_gate", "ipg", CCM_PCCR0, 7);
101 clk[IMX27_CLK_RTIC_IPG_GATE] = imx_clk_gate("rtic_ipg_gate", "ipg", CCM_PCCR0, 8);
102 clk[IMX27_CLK_RTC_IPG_GATE] = imx_clk_gate("rtc_ipg_gate", "ipg", CCM_PCCR0, 9);
103 clk[IMX27_CLK_PWM_IPG_GATE] = imx_clk_gate("pwm_ipg_gate", "ipg", CCM_PCCR0, 11);
104 clk[IMX27_CLK_OWIRE_IPG_GATE] = imx_clk_gate("owire_ipg_gate", "ipg", CCM_PCCR0, 12);
105 clk[IMX27_CLK_MSHC_IPG_GATE] = imx_clk_gate("mshc_ipg_gate", "ipg", CCM_PCCR0, 13);
106 clk[IMX27_CLK_LCDC_IPG_GATE] = imx_clk_gate("lcdc_ipg_gate", "ipg", CCM_PCCR0, 14);
107 clk[IMX27_CLK_KPP_IPG_GATE] = imx_clk_gate("kpp_ipg_gate", "ipg", CCM_PCCR0, 15);
108 clk[IMX27_CLK_IIM_IPG_GATE] = imx_clk_gate("iim_ipg_gate", "ipg", CCM_PCCR0, 16);
109 clk[IMX27_CLK_I2C2_IPG_GATE] = imx_clk_gate("i2c2_ipg_gate", "ipg", CCM_PCCR0, 17);
110 clk[IMX27_CLK_I2C1_IPG_GATE] = imx_clk_gate("i2c1_ipg_gate", "ipg", CCM_PCCR0, 18);
111 clk[IMX27_CLK_GPT6_IPG_GATE] = imx_clk_gate("gpt6_ipg_gate", "ipg", CCM_PCCR0, 19);
112 clk[IMX27_CLK_GPT5_IPG_GATE] = imx_clk_gate("gpt5_ipg_gate", "ipg", CCM_PCCR0, 20);
113 clk[IMX27_CLK_GPT4_IPG_GATE] = imx_clk_gate("gpt4_ipg_gate", "ipg", CCM_PCCR0, 21);
114 clk[IMX27_CLK_GPT3_IPG_GATE] = imx_clk_gate("gpt3_ipg_gate", "ipg", CCM_PCCR0, 22);
115 clk[IMX27_CLK_GPT2_IPG_GATE] = imx_clk_gate("gpt2_ipg_gate", "ipg", CCM_PCCR0, 23);
116 clk[IMX27_CLK_GPT1_IPG_GATE] = imx_clk_gate("gpt1_ipg_gate", "ipg", CCM_PCCR0, 24);
117 clk[IMX27_CLK_GPIO_IPG_GATE] = imx_clk_gate("gpio_ipg_gate", "ipg", CCM_PCCR0, 25);
118 clk[IMX27_CLK_FEC_IPG_GATE] = imx_clk_gate("fec_ipg_gate", "ipg", CCM_PCCR0, 26);
119 clk[IMX27_CLK_EMMA_IPG_GATE] = imx_clk_gate("emma_ipg_gate", "ipg", CCM_PCCR0, 27);
120 clk[IMX27_CLK_DMA_IPG_GATE] = imx_clk_gate("dma_ipg_gate", "ipg", CCM_PCCR0, 28);
121 clk[IMX27_CLK_CSPI3_IPG_GATE] = imx_clk_gate("cspi3_ipg_gate", "ipg", CCM_PCCR0, 29);
122 clk[IMX27_CLK_CSPI2_IPG_GATE] = imx_clk_gate("cspi2_ipg_gate", "ipg", CCM_PCCR0, 30);
123 clk[IMX27_CLK_CSPI1_IPG_GATE] = imx_clk_gate("cspi1_ipg_gate", "ipg", CCM_PCCR0, 31);
124 clk[IMX27_CLK_MSHC_BAUD_GATE] = imx_clk_gate("mshc_baud_gate", "mshc_div", CCM_PCCR1, 2);
125 clk[IMX27_CLK_NFC_BAUD_GATE] = imx_clk_gate("nfc_baud_gate", "nfc_div", CCM_PCCR1, 3);
126 clk[IMX27_CLK_SSI2_BAUD_GATE] = imx_clk_gate("ssi2_baud_gate", "ssi2_div", CCM_PCCR1, 4);
127 clk[IMX27_CLK_SSI1_BAUD_GATE] = imx_clk_gate("ssi1_baud_gate", "ssi1_div", CCM_PCCR1, 5);
128 clk[IMX27_CLK_VPU_BAUD_GATE] = imx_clk_gate("vpu_baud_gate", "vpu_div", CCM_PCCR1, 6);
129 clk[IMX27_CLK_PER4_GATE] = imx_clk_gate("per4_gate", "per4_div", CCM_PCCR1, 7);
130 clk[IMX27_CLK_PER3_GATE] = imx_clk_gate("per3_gate", "per3_div", CCM_PCCR1, 8);
131 clk[IMX27_CLK_PER2_GATE] = imx_clk_gate("per2_gate", "per2_div", CCM_PCCR1, 9);
132 clk[IMX27_CLK_PER1_GATE] = imx_clk_gate("per1_gate", "per1_div", CCM_PCCR1, 10);
133 clk[IMX27_CLK_USB_AHB_GATE] = imx_clk_gate("usb_ahb_gate", "ahb", CCM_PCCR1, 11);
134 clk[IMX27_CLK_SLCDC_AHB_GATE] = imx_clk_gate("slcdc_ahb_gate", "ahb", CCM_PCCR1, 12);
135 clk[IMX27_CLK_SAHARA_AHB_GATE] = imx_clk_gate("sahara_ahb_gate", "ahb", CCM_PCCR1, 13);
136 clk[IMX27_CLK_RTIC_AHB_GATE] = imx_clk_gate("rtic_ahb_gate", "ahb", CCM_PCCR1, 14);
137 clk[IMX27_CLK_LCDC_AHB_GATE] = imx_clk_gate("lcdc_ahb_gate", "ahb", CCM_PCCR1, 15);
138 clk[IMX27_CLK_VPU_AHB_GATE] = imx_clk_gate("vpu_ahb_gate", "ahb", CCM_PCCR1, 16);
139 clk[IMX27_CLK_FEC_AHB_GATE] = imx_clk_gate("fec_ahb_gate", "ahb", CCM_PCCR1, 17);
140 clk[IMX27_CLK_EMMA_AHB_GATE] = imx_clk_gate("emma_ahb_gate", "ahb", CCM_PCCR1, 18);
141 clk[IMX27_CLK_EMI_AHB_GATE] = imx_clk_gate("emi_ahb_gate", "ahb", CCM_PCCR1, 19);
142 clk[IMX27_CLK_DMA_AHB_GATE] = imx_clk_gate("dma_ahb_gate", "ahb", CCM_PCCR1, 20);
143 clk[IMX27_CLK_CSI_AHB_GATE] = imx_clk_gate("csi_ahb_gate", "ahb", CCM_PCCR1, 21);
144 clk[IMX27_CLK_BROM_AHB_GATE] = imx_clk_gate("brom_ahb_gate", "ahb", CCM_PCCR1, 22);
145 clk[IMX27_CLK_ATA_AHB_GATE] = imx_clk_gate("ata_ahb_gate", "ahb", CCM_PCCR1, 23);
146 clk[IMX27_CLK_WDOG_IPG_GATE] = imx_clk_gate("wdog_ipg_gate", "ipg", CCM_PCCR1, 24);
147 clk[IMX27_CLK_USB_IPG_GATE] = imx_clk_gate("usb_ipg_gate", "ipg", CCM_PCCR1, 25);
148 clk[IMX27_CLK_UART6_IPG_GATE] = imx_clk_gate("uart6_ipg_gate", "ipg", CCM_PCCR1, 26);
149 clk[IMX27_CLK_UART5_IPG_GATE] = imx_clk_gate("uart5_ipg_gate", "ipg", CCM_PCCR1, 27);
150 clk[IMX27_CLK_UART4_IPG_GATE] = imx_clk_gate("uart4_ipg_gate", "ipg", CCM_PCCR1, 28);
151 clk[IMX27_CLK_UART3_IPG_GATE] = imx_clk_gate("uart3_ipg_gate", "ipg", CCM_PCCR1, 29);
152 clk[IMX27_CLK_UART2_IPG_GATE] = imx_clk_gate("uart2_ipg_gate", "ipg", CCM_PCCR1, 30);
153 clk[IMX27_CLK_UART1_IPG_GATE] = imx_clk_gate("uart1_ipg_gate", "ipg", CCM_PCCR1, 31);
208 154
209 np = of_find_compatible_node(NULL, NULL, "fsl,imx27-ccm"); 155 imx_check_clocks(clk, ARRAY_SIZE(clk));
210 if (np) {
211 clk_data.clks = clk;
212 clk_data.clk_num = ARRAY_SIZE(clk);
213 of_clk_add_provider(np, of_clk_src_onecell_get, &clk_data);
214 }
215 156
216 clk_register_clkdev(clk[uart1_ipg_gate], "ipg", "imx21-uart.0"); 157 clk_register_clkdev(clk[IMX27_CLK_CPU_DIV], NULL, "cpu0");
217 clk_register_clkdev(clk[per1_gate], "per", "imx21-uart.0");
218 clk_register_clkdev(clk[uart2_ipg_gate], "ipg", "imx21-uart.1");
219 clk_register_clkdev(clk[per1_gate], "per", "imx21-uart.1");
220 clk_register_clkdev(clk[uart3_ipg_gate], "ipg", "imx21-uart.2");
221 clk_register_clkdev(clk[per1_gate], "per", "imx21-uart.2");
222 clk_register_clkdev(clk[uart4_ipg_gate], "ipg", "imx21-uart.3");
223 clk_register_clkdev(clk[per1_gate], "per", "imx21-uart.3");
224 clk_register_clkdev(clk[uart5_ipg_gate], "ipg", "imx21-uart.4");
225 clk_register_clkdev(clk[per1_gate], "per", "imx21-uart.4");
226 clk_register_clkdev(clk[uart6_ipg_gate], "ipg", "imx21-uart.5");
227 clk_register_clkdev(clk[per1_gate], "per", "imx21-uart.5");
228 clk_register_clkdev(clk[gpt1_ipg_gate], "ipg", "imx-gpt.0");
229 clk_register_clkdev(clk[per1_gate], "per", "imx-gpt.0");
230 clk_register_clkdev(clk[per2_gate], "per", "imx21-mmc.0");
231 clk_register_clkdev(clk[sdhc1_ipg_gate], "ipg", "imx21-mmc.0");
232 clk_register_clkdev(clk[per2_gate], "per", "imx21-mmc.1");
233 clk_register_clkdev(clk[sdhc2_ipg_gate], "ipg", "imx21-mmc.1");
234 clk_register_clkdev(clk[per2_gate], "per", "imx21-mmc.2");
235 clk_register_clkdev(clk[sdhc2_ipg_gate], "ipg", "imx21-mmc.2");
236 clk_register_clkdev(clk[per2_gate], "per", "imx27-cspi.0");
237 clk_register_clkdev(clk[cspi1_ipg_gate], "ipg", "imx27-cspi.0");
238 clk_register_clkdev(clk[per2_gate], "per", "imx27-cspi.1");
239 clk_register_clkdev(clk[cspi2_ipg_gate], "ipg", "imx27-cspi.1");
240 clk_register_clkdev(clk[per2_gate], "per", "imx27-cspi.2");
241 clk_register_clkdev(clk[cspi3_ipg_gate], "ipg", "imx27-cspi.2");
242 clk_register_clkdev(clk[per3_gate], "per", "imx21-fb.0");
243 clk_register_clkdev(clk[lcdc_ipg_gate], "ipg", "imx21-fb.0");
244 clk_register_clkdev(clk[lcdc_ahb_gate], "ahb", "imx21-fb.0");
245 clk_register_clkdev(clk[csi_ahb_gate], "ahb", "imx27-camera.0");
246 clk_register_clkdev(clk[per4_gate], "per", "imx27-camera.0");
247 clk_register_clkdev(clk[usb_div], "per", "imx-udc-mx27");
248 clk_register_clkdev(clk[usb_ipg_gate], "ipg", "imx-udc-mx27");
249 clk_register_clkdev(clk[usb_ahb_gate], "ahb", "imx-udc-mx27");
250 clk_register_clkdev(clk[usb_div], "per", "mxc-ehci.0");
251 clk_register_clkdev(clk[usb_ipg_gate], "ipg", "mxc-ehci.0");
252 clk_register_clkdev(clk[usb_ahb_gate], "ahb", "mxc-ehci.0");
253 clk_register_clkdev(clk[usb_div], "per", "mxc-ehci.1");
254 clk_register_clkdev(clk[usb_ipg_gate], "ipg", "mxc-ehci.1");
255 clk_register_clkdev(clk[usb_ahb_gate], "ahb", "mxc-ehci.1");
256 clk_register_clkdev(clk[usb_div], "per", "mxc-ehci.2");
257 clk_register_clkdev(clk[usb_ipg_gate], "ipg", "mxc-ehci.2");
258 clk_register_clkdev(clk[usb_ahb_gate], "ahb", "mxc-ehci.2");
259 clk_register_clkdev(clk[ssi1_ipg_gate], NULL, "imx-ssi.0");
260 clk_register_clkdev(clk[ssi2_ipg_gate], NULL, "imx-ssi.1");
261 clk_register_clkdev(clk[nfc_baud_gate], NULL, "imx27-nand.0");
262 clk_register_clkdev(clk[vpu_baud_gate], "per", "coda-imx27.0");
263 clk_register_clkdev(clk[vpu_ahb_gate], "ahb", "coda-imx27.0");
264 clk_register_clkdev(clk[dma_ahb_gate], "ahb", "imx27-dma");
265 clk_register_clkdev(clk[dma_ipg_gate], "ipg", "imx27-dma");
266 clk_register_clkdev(clk[fec_ipg_gate], "ipg", "imx27-fec.0");
267 clk_register_clkdev(clk[fec_ahb_gate], "ahb", "imx27-fec.0");
268 clk_register_clkdev(clk[wdog_ipg_gate], NULL, "imx2-wdt.0");
269 clk_register_clkdev(clk[i2c1_ipg_gate], NULL, "imx21-i2c.0");
270 clk_register_clkdev(clk[i2c2_ipg_gate], NULL, "imx21-i2c.1");
271 clk_register_clkdev(clk[owire_ipg_gate], NULL, "mxc_w1.0");
272 clk_register_clkdev(clk[kpp_ipg_gate], NULL, "imx-keypad");
273 clk_register_clkdev(clk[emma_ahb_gate], "emma-ahb", "imx27-camera.0");
274 clk_register_clkdev(clk[emma_ipg_gate], "emma-ipg", "imx27-camera.0");
275 clk_register_clkdev(clk[emma_ahb_gate], "ahb", "m2m-emmaprp.0");
276 clk_register_clkdev(clk[emma_ipg_gate], "ipg", "m2m-emmaprp.0");
277 clk_register_clkdev(clk[cpu_div], NULL, "cpu0");
278 158
279 mxc_timer_init(MX27_IO_ADDRESS(MX27_GPT1_BASE_ADDR), MX27_INT_GPT1); 159 clk_prepare_enable(clk[IMX27_CLK_EMI_AHB_GATE]);
280
281 clk_prepare_enable(clk[emi_ahb_gate]);
282 160
283 imx_print_silicon_rev("i.MX27", mx27_revision()); 161 imx_print_silicon_rev("i.MX27", mx27_revision());
162}
163
164int __init mx27_clocks_init(unsigned long fref)
165{
166 ccm = ioremap(MX27_CCM_BASE_ADDR, SZ_4K);
167
168 _mx27_clocks_init(fref);
169
170 clk_register_clkdev(clk[IMX27_CLK_UART1_IPG_GATE], "ipg", "imx21-uart.0");
171 clk_register_clkdev(clk[IMX27_CLK_PER1_GATE], "per", "imx21-uart.0");
172 clk_register_clkdev(clk[IMX27_CLK_UART2_IPG_GATE], "ipg", "imx21-uart.1");
173 clk_register_clkdev(clk[IMX27_CLK_PER1_GATE], "per", "imx21-uart.1");
174 clk_register_clkdev(clk[IMX27_CLK_UART3_IPG_GATE], "ipg", "imx21-uart.2");
175 clk_register_clkdev(clk[IMX27_CLK_PER1_GATE], "per", "imx21-uart.2");
176 clk_register_clkdev(clk[IMX27_CLK_UART4_IPG_GATE], "ipg", "imx21-uart.3");
177 clk_register_clkdev(clk[IMX27_CLK_PER1_GATE], "per", "imx21-uart.3");
178 clk_register_clkdev(clk[IMX27_CLK_UART5_IPG_GATE], "ipg", "imx21-uart.4");
179 clk_register_clkdev(clk[IMX27_CLK_PER1_GATE], "per", "imx21-uart.4");
180 clk_register_clkdev(clk[IMX27_CLK_UART6_IPG_GATE], "ipg", "imx21-uart.5");
181 clk_register_clkdev(clk[IMX27_CLK_PER1_GATE], "per", "imx21-uart.5");
182 clk_register_clkdev(clk[IMX27_CLK_GPT1_IPG_GATE], "ipg", "imx-gpt.0");
183 clk_register_clkdev(clk[IMX27_CLK_PER1_GATE], "per", "imx-gpt.0");
184 clk_register_clkdev(clk[IMX27_CLK_PER2_GATE], "per", "imx21-mmc.0");
185 clk_register_clkdev(clk[IMX27_CLK_SDHC1_IPG_GATE], "ipg", "imx21-mmc.0");
186 clk_register_clkdev(clk[IMX27_CLK_PER2_GATE], "per", "imx21-mmc.1");
187 clk_register_clkdev(clk[IMX27_CLK_SDHC2_IPG_GATE], "ipg", "imx21-mmc.1");
188 clk_register_clkdev(clk[IMX27_CLK_PER2_GATE], "per", "imx21-mmc.2");
189 clk_register_clkdev(clk[IMX27_CLK_SDHC2_IPG_GATE], "ipg", "imx21-mmc.2");
190 clk_register_clkdev(clk[IMX27_CLK_PER2_GATE], "per", "imx27-cspi.0");
191 clk_register_clkdev(clk[IMX27_CLK_CSPI1_IPG_GATE], "ipg", "imx27-cspi.0");
192 clk_register_clkdev(clk[IMX27_CLK_PER2_GATE], "per", "imx27-cspi.1");
193 clk_register_clkdev(clk[IMX27_CLK_CSPI2_IPG_GATE], "ipg", "imx27-cspi.1");
194 clk_register_clkdev(clk[IMX27_CLK_PER2_GATE], "per", "imx27-cspi.2");
195 clk_register_clkdev(clk[IMX27_CLK_CSPI3_IPG_GATE], "ipg", "imx27-cspi.2");
196 clk_register_clkdev(clk[IMX27_CLK_PER3_GATE], "per", "imx21-fb.0");
197 clk_register_clkdev(clk[IMX27_CLK_LCDC_IPG_GATE], "ipg", "imx21-fb.0");
198 clk_register_clkdev(clk[IMX27_CLK_LCDC_AHB_GATE], "ahb", "imx21-fb.0");
199 clk_register_clkdev(clk[IMX27_CLK_CSI_AHB_GATE], "ahb", "imx27-camera.0");
200 clk_register_clkdev(clk[IMX27_CLK_PER4_GATE], "per", "imx27-camera.0");
201 clk_register_clkdev(clk[IMX27_CLK_USB_DIV], "per", "imx-udc-mx27");
202 clk_register_clkdev(clk[IMX27_CLK_USB_IPG_GATE], "ipg", "imx-udc-mx27");
203 clk_register_clkdev(clk[IMX27_CLK_USB_AHB_GATE], "ahb", "imx-udc-mx27");
204 clk_register_clkdev(clk[IMX27_CLK_USB_DIV], "per", "mxc-ehci.0");
205 clk_register_clkdev(clk[IMX27_CLK_USB_IPG_GATE], "ipg", "mxc-ehci.0");
206 clk_register_clkdev(clk[IMX27_CLK_USB_AHB_GATE], "ahb", "mxc-ehci.0");
207 clk_register_clkdev(clk[IMX27_CLK_USB_DIV], "per", "mxc-ehci.1");
208 clk_register_clkdev(clk[IMX27_CLK_USB_IPG_GATE], "ipg", "mxc-ehci.1");
209 clk_register_clkdev(clk[IMX27_CLK_USB_AHB_GATE], "ahb", "mxc-ehci.1");
210 clk_register_clkdev(clk[IMX27_CLK_USB_DIV], "per", "mxc-ehci.2");
211 clk_register_clkdev(clk[IMX27_CLK_USB_IPG_GATE], "ipg", "mxc-ehci.2");
212 clk_register_clkdev(clk[IMX27_CLK_USB_AHB_GATE], "ahb", "mxc-ehci.2");
213 clk_register_clkdev(clk[IMX27_CLK_SSI1_IPG_GATE], NULL, "imx-ssi.0");
214 clk_register_clkdev(clk[IMX27_CLK_SSI2_IPG_GATE], NULL, "imx-ssi.1");
215 clk_register_clkdev(clk[IMX27_CLK_NFC_BAUD_GATE], NULL, "imx27-nand.0");
216 clk_register_clkdev(clk[IMX27_CLK_VPU_BAUD_GATE], "per", "coda-imx27.0");
217 clk_register_clkdev(clk[IMX27_CLK_VPU_AHB_GATE], "ahb", "coda-imx27.0");
218 clk_register_clkdev(clk[IMX27_CLK_DMA_AHB_GATE], "ahb", "imx27-dma");
219 clk_register_clkdev(clk[IMX27_CLK_DMA_IPG_GATE], "ipg", "imx27-dma");
220 clk_register_clkdev(clk[IMX27_CLK_FEC_IPG_GATE], "ipg", "imx27-fec.0");
221 clk_register_clkdev(clk[IMX27_CLK_FEC_AHB_GATE], "ahb", "imx27-fec.0");
222 clk_register_clkdev(clk[IMX27_CLK_WDOG_IPG_GATE], NULL, "imx2-wdt.0");
223 clk_register_clkdev(clk[IMX27_CLK_I2C1_IPG_GATE], NULL, "imx21-i2c.0");
224 clk_register_clkdev(clk[IMX27_CLK_I2C2_IPG_GATE], NULL, "imx21-i2c.1");
225 clk_register_clkdev(clk[IMX27_CLK_OWIRE_IPG_GATE], NULL, "mxc_w1.0");
226 clk_register_clkdev(clk[IMX27_CLK_KPP_IPG_GATE], NULL, "imx-keypad");
227 clk_register_clkdev(clk[IMX27_CLK_EMMA_AHB_GATE], "emma-ahb", "imx27-camera.0");
228 clk_register_clkdev(clk[IMX27_CLK_EMMA_IPG_GATE], "emma-ipg", "imx27-camera.0");
229 clk_register_clkdev(clk[IMX27_CLK_EMMA_AHB_GATE], "ahb", "m2m-emmaprp.0");
230 clk_register_clkdev(clk[IMX27_CLK_EMMA_IPG_GATE], "ipg", "m2m-emmaprp.0");
231
232 mxc_timer_init(MX27_IO_ADDRESS(MX27_GPT1_BASE_ADDR), MX27_INT_GPT1);
284 233
285 return 0; 234 return 0;
286} 235}
287 236
288int __init mx27_clocks_init_dt(void) 237static void __init mx27_clocks_init_dt(struct device_node *np)
289{ 238{
290 struct device_node *np; 239 struct device_node *refnp;
291 u32 fref = 26000000; /* default */ 240 u32 fref = 26000000; /* default */
292 241
293 for_each_compatible_node(np, NULL, "fixed-clock") { 242 for_each_compatible_node(refnp, NULL, "fixed-clock") {
294 if (!of_device_is_compatible(np, "fsl,imx-osc26m")) 243 if (!of_device_is_compatible(refnp, "fsl,imx-osc26m"))
295 continue; 244 continue;
296 245
297 if (!of_property_read_u32(np, "clock-frequency", &fref)) 246 if (!of_property_read_u32(refnp, "clock-frequency", &fref))
298 break; 247 break;
299 } 248 }
300 249
301 return mx27_clocks_init(fref); 250 ccm = of_iomap(np, 0);
251
252 _mx27_clocks_init(fref);
253
254 clk_data.clks = clk;
255 clk_data.clk_num = ARRAY_SIZE(clk);
256 of_clk_add_provider(np, of_clk_src_onecell_get, &clk_data);
302} 257}
258CLK_OF_DECLARE(imx27_ccm, "fsl,imx27-ccm", mx27_clocks_init_dt);
diff --git a/arch/arm/mach-imx/clk-imx31.c b/arch/arm/mach-imx/clk-imx31.c
index 4a9de0835eb1..286ef422cebc 100644
--- a/arch/arm/mach-imx/clk-imx31.c
+++ b/arch/arm/mach-imx/clk-imx31.c
@@ -51,7 +51,6 @@ static struct clk_onecell_data clk_data;
51int __init mx31_clocks_init(unsigned long fref) 51int __init mx31_clocks_init(unsigned long fref)
52{ 52{
53 void __iomem *base = MX31_IO_ADDRESS(MX31_CCM_BASE_ADDR); 53 void __iomem *base = MX31_IO_ADDRESS(MX31_CCM_BASE_ADDR);
54 int i;
55 struct device_node *np; 54 struct device_node *np;
56 55
57 clk[dummy] = imx_clk_fixed("dummy", 0); 56 clk[dummy] = imx_clk_fixed("dummy", 0);
@@ -114,10 +113,7 @@ int __init mx31_clocks_init(unsigned long fref)
114 clk[rtic_gate] = imx_clk_gate2("rtic_gate", "ahb", base + MXC_CCM_CGR2, 10); 113 clk[rtic_gate] = imx_clk_gate2("rtic_gate", "ahb", base + MXC_CCM_CGR2, 10);
115 clk[firi_gate] = imx_clk_gate2("firi_gate", "upll", base+MXC_CCM_CGR2, 12); 114 clk[firi_gate] = imx_clk_gate2("firi_gate", "upll", base+MXC_CCM_CGR2, 12);
116 115
117 for (i = 0; i < ARRAY_SIZE(clk); i++) 116 imx_check_clocks(clk, ARRAY_SIZE(clk));
118 if (IS_ERR(clk[i]))
119 pr_err("imx31 clk %d: register failed with %ld\n",
120 i, PTR_ERR(clk[i]));
121 117
122 np = of_find_compatible_node(NULL, NULL, "fsl,imx31-ccm"); 118 np = of_find_compatible_node(NULL, NULL, "fsl,imx31-ccm");
123 119
diff --git a/arch/arm/mach-imx/clk-imx35.c b/arch/arm/mach-imx/clk-imx35.c
index 71c86a2f856d..a0d2b57fd376 100644
--- a/arch/arm/mach-imx/clk-imx35.c
+++ b/arch/arm/mach-imx/clk-imx35.c
@@ -75,7 +75,6 @@ int __init mx35_clocks_init(void)
75 u32 pdr0, consumer_sel, hsp_sel; 75 u32 pdr0, consumer_sel, hsp_sel;
76 struct arm_ahb_div *aad; 76 struct arm_ahb_div *aad;
77 unsigned char *hsp_div; 77 unsigned char *hsp_div;
78 u32 i;
79 78
80 pdr0 = __raw_readl(base + MXC_CCM_PDR0); 79 pdr0 = __raw_readl(base + MXC_CCM_PDR0);
81 consumer_sel = (pdr0 >> 16) & 0xf; 80 consumer_sel = (pdr0 >> 16) & 0xf;
@@ -200,10 +199,7 @@ int __init mx35_clocks_init(void)
200 clk[iim_gate] = imx_clk_gate2("iim_gate", "ipg", base + MX35_CCM_CGR3, 2); 199 clk[iim_gate] = imx_clk_gate2("iim_gate", "ipg", base + MX35_CCM_CGR3, 2);
201 clk[gpu2d_gate] = imx_clk_gate2("gpu2d_gate", "ahb", base + MX35_CCM_CGR3, 4); 200 clk[gpu2d_gate] = imx_clk_gate2("gpu2d_gate", "ahb", base + MX35_CCM_CGR3, 4);
202 201
203 for (i = 0; i < ARRAY_SIZE(clk); i++) 202 imx_check_clocks(clk, ARRAY_SIZE(clk));
204 if (IS_ERR(clk[i]))
205 pr_err("i.MX35 clk %d: register failed with %ld\n",
206 i, PTR_ERR(clk[i]));
207 203
208 clk_register_clkdev(clk[pata_gate], NULL, "pata_imx"); 204 clk_register_clkdev(clk[pata_gate], NULL, "pata_imx");
209 clk_register_clkdev(clk[can1_gate], NULL, "flexcan.0"); 205 clk_register_clkdev(clk[can1_gate], NULL, "flexcan.0");
diff --git a/arch/arm/mach-imx/clk-imx51-imx53.c b/arch/arm/mach-imx/clk-imx51-imx53.c
index 21d2b111c83d..72d65214223e 100644
--- a/arch/arm/mach-imx/clk-imx51-imx53.c
+++ b/arch/arm/mach-imx/clk-imx51-imx53.c
@@ -18,11 +18,54 @@
18#include <linux/of_irq.h> 18#include <linux/of_irq.h>
19#include <dt-bindings/clock/imx5-clock.h> 19#include <dt-bindings/clock/imx5-clock.h>
20 20
21#include "crm-regs-imx5.h"
22#include "clk.h" 21#include "clk.h"
23#include "common.h" 22#include "common.h"
24#include "hardware.h" 23#include "hardware.h"
25 24
25#define MX51_DPLL1_BASE 0x83f80000
26#define MX51_DPLL2_BASE 0x83f84000
27#define MX51_DPLL3_BASE 0x83f88000
28
29#define MX53_DPLL1_BASE 0x63f80000
30#define MX53_DPLL2_BASE 0x63f84000
31#define MX53_DPLL3_BASE 0x63f88000
32#define MX53_DPLL4_BASE 0x63f8c000
33
34#define MXC_CCM_CCR (ccm_base + 0x00)
35#define MXC_CCM_CCDR (ccm_base + 0x04)
36#define MXC_CCM_CSR (ccm_base + 0x08)
37#define MXC_CCM_CCSR (ccm_base + 0x0c)
38#define MXC_CCM_CACRR (ccm_base + 0x10)
39#define MXC_CCM_CBCDR (ccm_base + 0x14)
40#define MXC_CCM_CBCMR (ccm_base + 0x18)
41#define MXC_CCM_CSCMR1 (ccm_base + 0x1c)
42#define MXC_CCM_CSCMR2 (ccm_base + 0x20)
43#define MXC_CCM_CSCDR1 (ccm_base + 0x24)
44#define MXC_CCM_CS1CDR (ccm_base + 0x28)
45#define MXC_CCM_CS2CDR (ccm_base + 0x2c)
46#define MXC_CCM_CDCDR (ccm_base + 0x30)
47#define MXC_CCM_CHSCDR (ccm_base + 0x34)
48#define MXC_CCM_CSCDR2 (ccm_base + 0x38)
49#define MXC_CCM_CSCDR3 (ccm_base + 0x3c)
50#define MXC_CCM_CSCDR4 (ccm_base + 0x40)
51#define MXC_CCM_CWDR (ccm_base + 0x44)
52#define MXC_CCM_CDHIPR (ccm_base + 0x48)
53#define MXC_CCM_CDCR (ccm_base + 0x4c)
54#define MXC_CCM_CTOR (ccm_base + 0x50)
55#define MXC_CCM_CLPCR (ccm_base + 0x54)
56#define MXC_CCM_CISR (ccm_base + 0x58)
57#define MXC_CCM_CIMR (ccm_base + 0x5c)
58#define MXC_CCM_CCOSR (ccm_base + 0x60)
59#define MXC_CCM_CGPR (ccm_base + 0x64)
60#define MXC_CCM_CCGR0 (ccm_base + 0x68)
61#define MXC_CCM_CCGR1 (ccm_base + 0x6c)
62#define MXC_CCM_CCGR2 (ccm_base + 0x70)
63#define MXC_CCM_CCGR3 (ccm_base + 0x74)
64#define MXC_CCM_CCGR4 (ccm_base + 0x78)
65#define MXC_CCM_CCGR5 (ccm_base + 0x7c)
66#define MXC_CCM_CCGR6 (ccm_base + 0x80)
67#define MXC_CCM_CCGR7 (ccm_base + 0x84)
68
26/* Low-power Audio Playback Mode clock */ 69/* Low-power Audio Playback Mode clock */
27static const char *lp_apm_sel[] = { "osc", }; 70static const char *lp_apm_sel[] = { "osc", };
28 71
@@ -86,17 +129,15 @@ static const char *mx51_spdif1_com_sel[] = { "spdif1_podf", "ssi2_root_gate", };
86static struct clk *clk[IMX5_CLK_END]; 129static struct clk *clk[IMX5_CLK_END];
87static struct clk_onecell_data clk_data; 130static struct clk_onecell_data clk_data;
88 131
89static void __init mx5_clocks_common_init(unsigned long rate_ckil, 132static void __init mx5_clocks_common_init(void __iomem *ccm_base)
90 unsigned long rate_osc, unsigned long rate_ckih1,
91 unsigned long rate_ckih2)
92{ 133{
93 int i; 134 imx5_pm_set_ccm_base(ccm_base);
94 135
95 clk[IMX5_CLK_DUMMY] = imx_clk_fixed("dummy", 0); 136 clk[IMX5_CLK_DUMMY] = imx_clk_fixed("dummy", 0);
96 clk[IMX5_CLK_CKIL] = imx_obtain_fixed_clock("ckil", rate_ckil); 137 clk[IMX5_CLK_CKIL] = imx_obtain_fixed_clock("ckil", 0);
97 clk[IMX5_CLK_OSC] = imx_obtain_fixed_clock("osc", rate_osc); 138 clk[IMX5_CLK_OSC] = imx_obtain_fixed_clock("osc", 0);
98 clk[IMX5_CLK_CKIH1] = imx_obtain_fixed_clock("ckih1", rate_ckih1); 139 clk[IMX5_CLK_CKIH1] = imx_obtain_fixed_clock("ckih1", 0);
99 clk[IMX5_CLK_CKIH2] = imx_obtain_fixed_clock("ckih2", rate_ckih2); 140 clk[IMX5_CLK_CKIH2] = imx_obtain_fixed_clock("ckih2", 0);
100 141
101 clk[IMX5_CLK_PERIPH_APM] = imx_clk_mux("periph_apm", MXC_CCM_CBCMR, 12, 2, 142 clk[IMX5_CLK_PERIPH_APM] = imx_clk_mux("periph_apm", MXC_CCM_CBCMR, 12, 2,
102 periph_apm_sel, ARRAY_SIZE(periph_apm_sel)); 143 periph_apm_sel, ARRAY_SIZE(periph_apm_sel));
@@ -244,58 +285,8 @@ static void __init mx5_clocks_common_init(unsigned long rate_ckil,
244 clk[IMX5_CLK_SAHARA_IPG_GATE] = imx_clk_gate2("sahara_ipg_gate", "ipg", MXC_CCM_CCGR4, 14); 285 clk[IMX5_CLK_SAHARA_IPG_GATE] = imx_clk_gate2("sahara_ipg_gate", "ipg", MXC_CCM_CCGR4, 14);
245 clk[IMX5_CLK_SATA_REF] = imx_clk_fixed_factor("sata_ref", "usb_phy1_gate", 1, 1); 286 clk[IMX5_CLK_SATA_REF] = imx_clk_fixed_factor("sata_ref", "usb_phy1_gate", 1, 1);
246 287
247 for (i = 0; i < ARRAY_SIZE(clk); i++)
248 if (IS_ERR(clk[i]))
249 pr_err("i.MX5 clk %d: register failed with %ld\n",
250 i, PTR_ERR(clk[i]));
251
252 clk_register_clkdev(clk[IMX5_CLK_GPT_HF_GATE], "per", "imx-gpt.0");
253 clk_register_clkdev(clk[IMX5_CLK_GPT_IPG_GATE], "ipg", "imx-gpt.0");
254 clk_register_clkdev(clk[IMX5_CLK_UART1_PER_GATE], "per", "imx21-uart.0");
255 clk_register_clkdev(clk[IMX5_CLK_UART1_IPG_GATE], "ipg", "imx21-uart.0");
256 clk_register_clkdev(clk[IMX5_CLK_UART2_PER_GATE], "per", "imx21-uart.1");
257 clk_register_clkdev(clk[IMX5_CLK_UART2_IPG_GATE], "ipg", "imx21-uart.1");
258 clk_register_clkdev(clk[IMX5_CLK_UART3_PER_GATE], "per", "imx21-uart.2");
259 clk_register_clkdev(clk[IMX5_CLK_UART3_IPG_GATE], "ipg", "imx21-uart.2");
260 clk_register_clkdev(clk[IMX5_CLK_UART4_PER_GATE], "per", "imx21-uart.3");
261 clk_register_clkdev(clk[IMX5_CLK_UART4_IPG_GATE], "ipg", "imx21-uart.3");
262 clk_register_clkdev(clk[IMX5_CLK_UART5_PER_GATE], "per", "imx21-uart.4");
263 clk_register_clkdev(clk[IMX5_CLK_UART5_IPG_GATE], "ipg", "imx21-uart.4");
264 clk_register_clkdev(clk[IMX5_CLK_ECSPI1_PER_GATE], "per", "imx51-ecspi.0");
265 clk_register_clkdev(clk[IMX5_CLK_ECSPI1_IPG_GATE], "ipg", "imx51-ecspi.0");
266 clk_register_clkdev(clk[IMX5_CLK_ECSPI2_PER_GATE], "per", "imx51-ecspi.1");
267 clk_register_clkdev(clk[IMX5_CLK_ECSPI2_IPG_GATE], "ipg", "imx51-ecspi.1");
268 clk_register_clkdev(clk[IMX5_CLK_CSPI_IPG_GATE], NULL, "imx35-cspi.2");
269 clk_register_clkdev(clk[IMX5_CLK_I2C1_GATE], NULL, "imx21-i2c.0");
270 clk_register_clkdev(clk[IMX5_CLK_I2C2_GATE], NULL, "imx21-i2c.1");
271 clk_register_clkdev(clk[IMX5_CLK_USBOH3_PER_GATE], "per", "mxc-ehci.0");
272 clk_register_clkdev(clk[IMX5_CLK_USBOH3_GATE], "ipg", "mxc-ehci.0");
273 clk_register_clkdev(clk[IMX5_CLK_USBOH3_GATE], "ahb", "mxc-ehci.0");
274 clk_register_clkdev(clk[IMX5_CLK_USBOH3_PER_GATE], "per", "mxc-ehci.1");
275 clk_register_clkdev(clk[IMX5_CLK_USBOH3_GATE], "ipg", "mxc-ehci.1");
276 clk_register_clkdev(clk[IMX5_CLK_USBOH3_GATE], "ahb", "mxc-ehci.1");
277 clk_register_clkdev(clk[IMX5_CLK_USBOH3_PER_GATE], "per", "mxc-ehci.2");
278 clk_register_clkdev(clk[IMX5_CLK_USBOH3_GATE], "ipg", "mxc-ehci.2");
279 clk_register_clkdev(clk[IMX5_CLK_USBOH3_GATE], "ahb", "mxc-ehci.2");
280 clk_register_clkdev(clk[IMX5_CLK_USBOH3_PER_GATE], "per", "imx-udc-mx51");
281 clk_register_clkdev(clk[IMX5_CLK_USBOH3_GATE], "ipg", "imx-udc-mx51");
282 clk_register_clkdev(clk[IMX5_CLK_USBOH3_GATE], "ahb", "imx-udc-mx51");
283 clk_register_clkdev(clk[IMX5_CLK_NFC_GATE], NULL, "imx51-nand");
284 clk_register_clkdev(clk[IMX5_CLK_SSI1_IPG_GATE], NULL, "imx-ssi.0");
285 clk_register_clkdev(clk[IMX5_CLK_SSI2_IPG_GATE], NULL, "imx-ssi.1");
286 clk_register_clkdev(clk[IMX5_CLK_SSI3_IPG_GATE], NULL, "imx-ssi.2");
287 clk_register_clkdev(clk[IMX5_CLK_SDMA_GATE], NULL, "imx35-sdma");
288 clk_register_clkdev(clk[IMX5_CLK_CPU_PODF], NULL, "cpu0"); 288 clk_register_clkdev(clk[IMX5_CLK_CPU_PODF], NULL, "cpu0");
289 clk_register_clkdev(clk[IMX5_CLK_IIM_GATE], "iim", NULL);
290 clk_register_clkdev(clk[IMX5_CLK_DUMMY], NULL, "imx2-wdt.0");
291 clk_register_clkdev(clk[IMX5_CLK_DUMMY], NULL, "imx2-wdt.1");
292 clk_register_clkdev(clk[IMX5_CLK_DUMMY], NULL, "imx-keypad");
293 clk_register_clkdev(clk[IMX5_CLK_IPU_DI1_GATE], "di1", "imx-tve.0");
294 clk_register_clkdev(clk[IMX5_CLK_GPC_DVFS], "gpc_dvfs", NULL); 289 clk_register_clkdev(clk[IMX5_CLK_GPC_DVFS], "gpc_dvfs", NULL);
295 clk_register_clkdev(clk[IMX5_CLK_EPIT1_IPG_GATE], "ipg", "imx-epit.0");
296 clk_register_clkdev(clk[IMX5_CLK_EPIT1_HF_GATE], "per", "imx-epit.0");
297 clk_register_clkdev(clk[IMX5_CLK_EPIT2_IPG_GATE], "ipg", "imx-epit.1");
298 clk_register_clkdev(clk[IMX5_CLK_EPIT2_HF_GATE], "per", "imx-epit.1");
299 290
300 /* Set SDHC parents to be PLL2 */ 291 /* Set SDHC parents to be PLL2 */
301 clk_set_parent(clk[IMX5_CLK_ESDHC_A_SEL], clk[IMX5_CLK_PLL2_SW]); 292 clk_set_parent(clk[IMX5_CLK_ESDHC_A_SEL], clk[IMX5_CLK_PLL2_SW]);
@@ -322,12 +313,26 @@ static void __init mx5_clocks_common_init(unsigned long rate_ckil,
322 313
323static void __init mx50_clocks_init(struct device_node *np) 314static void __init mx50_clocks_init(struct device_node *np)
324{ 315{
316 void __iomem *ccm_base;
317 void __iomem *pll_base;
325 unsigned long r; 318 unsigned long r;
326 int i;
327 319
328 clk[IMX5_CLK_PLL1_SW] = imx_clk_pllv2("pll1_sw", "osc", MX53_DPLL1_BASE); 320 pll_base = ioremap(MX53_DPLL1_BASE, SZ_16K);
329 clk[IMX5_CLK_PLL2_SW] = imx_clk_pllv2("pll2_sw", "osc", MX53_DPLL2_BASE); 321 WARN_ON(!pll_base);
330 clk[IMX5_CLK_PLL3_SW] = imx_clk_pllv2("pll3_sw", "osc", MX53_DPLL3_BASE); 322 clk[IMX5_CLK_PLL1_SW] = imx_clk_pllv2("pll1_sw", "osc", pll_base);
323
324 pll_base = ioremap(MX53_DPLL2_BASE, SZ_16K);
325 WARN_ON(!pll_base);
326 clk[IMX5_CLK_PLL2_SW] = imx_clk_pllv2("pll2_sw", "osc", pll_base);
327
328 pll_base = ioremap(MX53_DPLL3_BASE, SZ_16K);
329 WARN_ON(!pll_base);
330 clk[IMX5_CLK_PLL3_SW] = imx_clk_pllv2("pll3_sw", "osc", pll_base);
331
332 ccm_base = of_iomap(np, 0);
333 WARN_ON(!ccm_base);
334
335 mx5_clocks_common_init(ccm_base);
331 336
332 clk[IMX5_CLK_LP_APM] = imx_clk_mux("lp_apm", MXC_CCM_CCSR, 10, 1, 337 clk[IMX5_CLK_LP_APM] = imx_clk_mux("lp_apm", MXC_CCM_CCSR, 10, 1,
333 lp_apm_sel, ARRAY_SIZE(lp_apm_sel)); 338 lp_apm_sel, ARRAY_SIZE(lp_apm_sel));
@@ -349,17 +354,12 @@ static void __init mx50_clocks_init(struct device_node *np)
349 clk[IMX5_CLK_CKO2_PODF] = imx_clk_divider("cko2_podf", "cko2_sel", MXC_CCM_CCOSR, 21, 3); 354 clk[IMX5_CLK_CKO2_PODF] = imx_clk_divider("cko2_podf", "cko2_sel", MXC_CCM_CCOSR, 21, 3);
350 clk[IMX5_CLK_CKO2] = imx_clk_gate2("cko2", "cko2_podf", MXC_CCM_CCOSR, 24); 355 clk[IMX5_CLK_CKO2] = imx_clk_gate2("cko2", "cko2_podf", MXC_CCM_CCOSR, 24);
351 356
352 for (i = 0; i < ARRAY_SIZE(clk); i++) 357 imx_check_clocks(clk, ARRAY_SIZE(clk));
353 if (IS_ERR(clk[i]))
354 pr_err("i.MX50 clk %d: register failed with %ld\n",
355 i, PTR_ERR(clk[i]));
356 358
357 clk_data.clks = clk; 359 clk_data.clks = clk;
358 clk_data.clk_num = ARRAY_SIZE(clk); 360 clk_data.clk_num = ARRAY_SIZE(clk);
359 of_clk_add_provider(np, of_clk_src_onecell_get, &clk_data); 361 of_clk_add_provider(np, of_clk_src_onecell_get, &clk_data);
360 362
361 mx5_clocks_common_init(0, 0, 0, 0);
362
363 /* set SDHC root clock to 200MHZ*/ 363 /* set SDHC root clock to 200MHZ*/
364 clk_set_rate(clk[IMX5_CLK_ESDHC_A_PODF], 200000000); 364 clk_set_rate(clk[IMX5_CLK_ESDHC_A_PODF], 200000000);
365 clk_set_rate(clk[IMX5_CLK_ESDHC_B_PODF], 200000000); 365 clk_set_rate(clk[IMX5_CLK_ESDHC_B_PODF], 200000000);
@@ -370,21 +370,32 @@ static void __init mx50_clocks_init(struct device_node *np)
370 370
371 r = clk_round_rate(clk[IMX5_CLK_USBOH3_PER_GATE], 54000000); 371 r = clk_round_rate(clk[IMX5_CLK_USBOH3_PER_GATE], 54000000);
372 clk_set_rate(clk[IMX5_CLK_USBOH3_PER_GATE], r); 372 clk_set_rate(clk[IMX5_CLK_USBOH3_PER_GATE], r);
373
374 mxc_timer_init_dt(of_find_compatible_node(NULL, NULL, "fsl,imx50-gpt"));
375} 373}
376CLK_OF_DECLARE(imx50_ccm, "fsl,imx50-ccm", mx50_clocks_init); 374CLK_OF_DECLARE(imx50_ccm, "fsl,imx50-ccm", mx50_clocks_init);
377 375
378int __init mx51_clocks_init(unsigned long rate_ckil, unsigned long rate_osc, 376static void __init mx51_clocks_init(struct device_node *np)
379 unsigned long rate_ckih1, unsigned long rate_ckih2)
380{ 377{
381 int i; 378 void __iomem *ccm_base;
379 void __iomem *pll_base;
382 u32 val; 380 u32 val;
383 struct device_node *np;
384 381
385 clk[IMX5_CLK_PLL1_SW] = imx_clk_pllv2("pll1_sw", "osc", MX51_DPLL1_BASE); 382 pll_base = ioremap(MX51_DPLL1_BASE, SZ_16K);
386 clk[IMX5_CLK_PLL2_SW] = imx_clk_pllv2("pll2_sw", "osc", MX51_DPLL2_BASE); 383 WARN_ON(!pll_base);
387 clk[IMX5_CLK_PLL3_SW] = imx_clk_pllv2("pll3_sw", "osc", MX51_DPLL3_BASE); 384 clk[IMX5_CLK_PLL1_SW] = imx_clk_pllv2("pll1_sw", "osc", pll_base);
385
386 pll_base = ioremap(MX51_DPLL2_BASE, SZ_16K);
387 WARN_ON(!pll_base);
388 clk[IMX5_CLK_PLL2_SW] = imx_clk_pllv2("pll2_sw", "osc", pll_base);
389
390 pll_base = ioremap(MX51_DPLL3_BASE, SZ_16K);
391 WARN_ON(!pll_base);
392 clk[IMX5_CLK_PLL3_SW] = imx_clk_pllv2("pll3_sw", "osc", pll_base);
393
394 ccm_base = of_iomap(np, 0);
395 WARN_ON(!ccm_base);
396
397 mx5_clocks_common_init(ccm_base);
398
388 clk[IMX5_CLK_LP_APM] = imx_clk_mux("lp_apm", MXC_CCM_CCSR, 9, 1, 399 clk[IMX5_CLK_LP_APM] = imx_clk_mux("lp_apm", MXC_CCM_CCSR, 9, 1,
389 lp_apm_sel, ARRAY_SIZE(lp_apm_sel)); 400 lp_apm_sel, ARRAY_SIZE(lp_apm_sel));
390 clk[IMX5_CLK_IPU_DI0_SEL] = imx_clk_mux("ipu_di0_sel", MXC_CCM_CSCMR2, 26, 3, 401 clk[IMX5_CLK_IPU_DI0_SEL] = imx_clk_mux("ipu_di0_sel", MXC_CCM_CSCMR2, 26, 3,
@@ -417,35 +428,12 @@ int __init mx51_clocks_init(unsigned long rate_ckil, unsigned long rate_osc,
417 mx51_spdif1_com_sel, ARRAY_SIZE(mx51_spdif1_com_sel)); 428 mx51_spdif1_com_sel, ARRAY_SIZE(mx51_spdif1_com_sel));
418 clk[IMX5_CLK_SPDIF1_GATE] = imx_clk_gate2("spdif1_gate", "spdif1_com_sel", MXC_CCM_CCGR5, 28); 429 clk[IMX5_CLK_SPDIF1_GATE] = imx_clk_gate2("spdif1_gate", "spdif1_com_sel", MXC_CCM_CCGR5, 28);
419 430
420 for (i = 0; i < ARRAY_SIZE(clk); i++) 431 imx_check_clocks(clk, ARRAY_SIZE(clk));
421 if (IS_ERR(clk[i]))
422 pr_err("i.MX51 clk %d: register failed with %ld\n",
423 i, PTR_ERR(clk[i]));
424 432
425 np = of_find_compatible_node(NULL, NULL, "fsl,imx51-ccm");
426 clk_data.clks = clk; 433 clk_data.clks = clk;
427 clk_data.clk_num = ARRAY_SIZE(clk); 434 clk_data.clk_num = ARRAY_SIZE(clk);
428 of_clk_add_provider(np, of_clk_src_onecell_get, &clk_data); 435 of_clk_add_provider(np, of_clk_src_onecell_get, &clk_data);
429 436
430 mx5_clocks_common_init(rate_ckil, rate_osc, rate_ckih1, rate_ckih2);
431
432 clk_register_clkdev(clk[IMX5_CLK_HSI2C_GATE], NULL, "imx21-i2c.2");
433 clk_register_clkdev(clk[IMX5_CLK_MX51_MIPI], "mipi_hsp", NULL);
434 clk_register_clkdev(clk[IMX5_CLK_FEC_GATE], NULL, "imx27-fec.0");
435 clk_register_clkdev(clk[IMX5_CLK_USB_PHY_GATE], "phy", "mxc-ehci.0");
436 clk_register_clkdev(clk[IMX5_CLK_ESDHC1_IPG_GATE], "ipg", "sdhci-esdhc-imx51.0");
437 clk_register_clkdev(clk[IMX5_CLK_DUMMY], "ahb", "sdhci-esdhc-imx51.0");
438 clk_register_clkdev(clk[IMX5_CLK_ESDHC1_PER_GATE], "per", "sdhci-esdhc-imx51.0");
439 clk_register_clkdev(clk[IMX5_CLK_ESDHC2_IPG_GATE], "ipg", "sdhci-esdhc-imx51.1");
440 clk_register_clkdev(clk[IMX5_CLK_DUMMY], "ahb", "sdhci-esdhc-imx51.1");
441 clk_register_clkdev(clk[IMX5_CLK_ESDHC2_PER_GATE], "per", "sdhci-esdhc-imx51.1");
442 clk_register_clkdev(clk[IMX5_CLK_ESDHC3_IPG_GATE], "ipg", "sdhci-esdhc-imx51.2");
443 clk_register_clkdev(clk[IMX5_CLK_DUMMY], "ahb", "sdhci-esdhc-imx51.2");
444 clk_register_clkdev(clk[IMX5_CLK_ESDHC3_PER_GATE], "per", "sdhci-esdhc-imx51.2");
445 clk_register_clkdev(clk[IMX5_CLK_ESDHC4_IPG_GATE], "ipg", "sdhci-esdhc-imx51.3");
446 clk_register_clkdev(clk[IMX5_CLK_DUMMY], "ahb", "sdhci-esdhc-imx51.3");
447 clk_register_clkdev(clk[IMX5_CLK_ESDHC4_PER_GATE], "per", "sdhci-esdhc-imx51.3");
448
449 /* set the usboh3 parent to pll2_sw */ 437 /* set the usboh3 parent to pll2_sw */
450 clk_set_parent(clk[IMX5_CLK_USBOH3_SEL], clk[IMX5_CLK_PLL2_SW]); 438 clk_set_parent(clk[IMX5_CLK_USBOH3_SEL], clk[IMX5_CLK_PLL2_SW]);
451 439
@@ -453,9 +441,6 @@ int __init mx51_clocks_init(unsigned long rate_ckil, unsigned long rate_osc,
453 clk_set_rate(clk[IMX5_CLK_ESDHC_A_PODF], 166250000); 441 clk_set_rate(clk[IMX5_CLK_ESDHC_A_PODF], 166250000);
454 clk_set_rate(clk[IMX5_CLK_ESDHC_B_PODF], 166250000); 442 clk_set_rate(clk[IMX5_CLK_ESDHC_B_PODF], 166250000);
455 443
456 /* System timer */
457 mxc_timer_init(MX51_IO_ADDRESS(MX51_GPT1_BASE_ADDR), MX51_INT_GPT);
458
459 clk_prepare_enable(clk[IMX5_CLK_IIM_GATE]); 444 clk_prepare_enable(clk[IMX5_CLK_IIM_GATE]);
460 imx_print_silicon_rev("i.MX51", mx51_revision()); 445 imx_print_silicon_rev("i.MX51", mx51_revision());
461 clk_disable_unprepare(clk[IMX5_CLK_IIM_GATE]); 446 clk_disable_unprepare(clk[IMX5_CLK_IIM_GATE]);
@@ -474,25 +459,35 @@ int __init mx51_clocks_init(unsigned long rate_ckil, unsigned long rate_osc,
474 val = readl(MXC_CCM_CLPCR); 459 val = readl(MXC_CCM_CLPCR);
475 val |= 1 << 23; 460 val |= 1 << 23;
476 writel(val, MXC_CCM_CLPCR); 461 writel(val, MXC_CCM_CLPCR);
477
478 return 0;
479}
480
481static void __init mx51_clocks_init_dt(struct device_node *np)
482{
483 mx51_clocks_init(0, 0, 0, 0);
484} 462}
485CLK_OF_DECLARE(imx51_ccm, "fsl,imx51-ccm", mx51_clocks_init_dt); 463CLK_OF_DECLARE(imx51_ccm, "fsl,imx51-ccm", mx51_clocks_init);
486 464
487static void __init mx53_clocks_init(struct device_node *np) 465static void __init mx53_clocks_init(struct device_node *np)
488{ 466{
489 int i; 467 void __iomem *ccm_base;
468 void __iomem *pll_base;
490 unsigned long r; 469 unsigned long r;
491 470
492 clk[IMX5_CLK_PLL1_SW] = imx_clk_pllv2("pll1_sw", "osc", MX53_DPLL1_BASE); 471 pll_base = ioremap(MX53_DPLL1_BASE, SZ_16K);
493 clk[IMX5_CLK_PLL2_SW] = imx_clk_pllv2("pll2_sw", "osc", MX53_DPLL2_BASE); 472 WARN_ON(!pll_base);
494 clk[IMX5_CLK_PLL3_SW] = imx_clk_pllv2("pll3_sw", "osc", MX53_DPLL3_BASE); 473 clk[IMX5_CLK_PLL1_SW] = imx_clk_pllv2("pll1_sw", "osc", pll_base);
495 clk[IMX5_CLK_PLL4_SW] = imx_clk_pllv2("pll4_sw", "osc", MX53_DPLL4_BASE); 474
475 pll_base = ioremap(MX53_DPLL2_BASE, SZ_16K);
476 WARN_ON(!pll_base);
477 clk[IMX5_CLK_PLL2_SW] = imx_clk_pllv2("pll2_sw", "osc", pll_base);
478
479 pll_base = ioremap(MX53_DPLL3_BASE, SZ_16K);
480 WARN_ON(!pll_base);
481 clk[IMX5_CLK_PLL3_SW] = imx_clk_pllv2("pll3_sw", "osc", pll_base);
482
483 pll_base = ioremap(MX53_DPLL4_BASE, SZ_16K);
484 WARN_ON(!pll_base);
485 clk[IMX5_CLK_PLL4_SW] = imx_clk_pllv2("pll4_sw", "osc", pll_base);
486
487 ccm_base = of_iomap(np, 0);
488 WARN_ON(!ccm_base);
489
490 mx5_clocks_common_init(ccm_base);
496 491
497 clk[IMX5_CLK_LP_APM] = imx_clk_mux("lp_apm", MXC_CCM_CCSR, 10, 1, 492 clk[IMX5_CLK_LP_APM] = imx_clk_mux("lp_apm", MXC_CCM_CCSR, 10, 1,
498 lp_apm_sel, ARRAY_SIZE(lp_apm_sel)); 493 lp_apm_sel, ARRAY_SIZE(lp_apm_sel));
@@ -543,33 +538,12 @@ static void __init mx53_clocks_init(struct device_node *np)
543 clk[IMX5_CLK_SPDIF_XTAL_SEL] = imx_clk_mux("spdif_xtal_sel", MXC_CCM_CSCMR1, 2, 2, 538 clk[IMX5_CLK_SPDIF_XTAL_SEL] = imx_clk_mux("spdif_xtal_sel", MXC_CCM_CSCMR1, 2, 2,
544 mx53_spdif_xtal_sel, ARRAY_SIZE(mx53_spdif_xtal_sel)); 539 mx53_spdif_xtal_sel, ARRAY_SIZE(mx53_spdif_xtal_sel));
545 540
546 for (i = 0; i < ARRAY_SIZE(clk); i++) 541 imx_check_clocks(clk, ARRAY_SIZE(clk));
547 if (IS_ERR(clk[i]))
548 pr_err("i.MX53 clk %d: register failed with %ld\n",
549 i, PTR_ERR(clk[i]));
550 542
551 clk_data.clks = clk; 543 clk_data.clks = clk;
552 clk_data.clk_num = ARRAY_SIZE(clk); 544 clk_data.clk_num = ARRAY_SIZE(clk);
553 of_clk_add_provider(np, of_clk_src_onecell_get, &clk_data); 545 of_clk_add_provider(np, of_clk_src_onecell_get, &clk_data);
554 546
555 mx5_clocks_common_init(0, 0, 0, 0);
556
557 clk_register_clkdev(clk[IMX5_CLK_I2C3_GATE], NULL, "imx21-i2c.2");
558 clk_register_clkdev(clk[IMX5_CLK_FEC_GATE], NULL, "imx25-fec.0");
559 clk_register_clkdev(clk[IMX5_CLK_USB_PHY1_GATE], "usb_phy1", "mxc-ehci.0");
560 clk_register_clkdev(clk[IMX5_CLK_ESDHC1_IPG_GATE], "ipg", "sdhci-esdhc-imx53.0");
561 clk_register_clkdev(clk[IMX5_CLK_DUMMY], "ahb", "sdhci-esdhc-imx53.0");
562 clk_register_clkdev(clk[IMX5_CLK_ESDHC1_PER_GATE], "per", "sdhci-esdhc-imx53.0");
563 clk_register_clkdev(clk[IMX5_CLK_ESDHC2_IPG_GATE], "ipg", "sdhci-esdhc-imx53.1");
564 clk_register_clkdev(clk[IMX5_CLK_DUMMY], "ahb", "sdhci-esdhc-imx53.1");
565 clk_register_clkdev(clk[IMX5_CLK_ESDHC2_PER_GATE], "per", "sdhci-esdhc-imx53.1");
566 clk_register_clkdev(clk[IMX5_CLK_ESDHC3_IPG_GATE], "ipg", "sdhci-esdhc-imx53.2");
567 clk_register_clkdev(clk[IMX5_CLK_DUMMY], "ahb", "sdhci-esdhc-imx53.2");
568 clk_register_clkdev(clk[IMX5_CLK_ESDHC3_PER_GATE], "per", "sdhci-esdhc-imx53.2");
569 clk_register_clkdev(clk[IMX5_CLK_ESDHC4_IPG_GATE], "ipg", "sdhci-esdhc-imx53.3");
570 clk_register_clkdev(clk[IMX5_CLK_DUMMY], "ahb", "sdhci-esdhc-imx53.3");
571 clk_register_clkdev(clk[IMX5_CLK_ESDHC4_PER_GATE], "per", "sdhci-esdhc-imx53.3");
572
573 /* set SDHC root clock to 200MHZ*/ 547 /* set SDHC root clock to 200MHZ*/
574 clk_set_rate(clk[IMX5_CLK_ESDHC_A_PODF], 200000000); 548 clk_set_rate(clk[IMX5_CLK_ESDHC_A_PODF], 200000000);
575 clk_set_rate(clk[IMX5_CLK_ESDHC_B_PODF], 200000000); 549 clk_set_rate(clk[IMX5_CLK_ESDHC_B_PODF], 200000000);
@@ -583,7 +557,5 @@ static void __init mx53_clocks_init(struct device_node *np)
583 557
584 r = clk_round_rate(clk[IMX5_CLK_USBOH3_PER_GATE], 54000000); 558 r = clk_round_rate(clk[IMX5_CLK_USBOH3_PER_GATE], 54000000);
585 clk_set_rate(clk[IMX5_CLK_USBOH3_PER_GATE], r); 559 clk_set_rate(clk[IMX5_CLK_USBOH3_PER_GATE], r);
586
587 mxc_timer_init_dt(of_find_compatible_node(NULL, NULL, "fsl,imx53-gpt"));
588} 560}
589CLK_OF_DECLARE(imx53_ccm, "fsl,imx53-ccm", mx53_clocks_init); 561CLK_OF_DECLARE(imx53_ccm, "fsl,imx53-ccm", mx53_clocks_init);
diff --git a/arch/arm/mach-imx/clk-imx6q.c b/arch/arm/mach-imx/clk-imx6q.c
index 8e795dea02ec..6cceb7765c14 100644
--- a/arch/arm/mach-imx/clk-imx6q.c
+++ b/arch/arm/mach-imx/clk-imx6q.c
@@ -19,6 +19,7 @@
19#include <linux/of.h> 19#include <linux/of.h>
20#include <linux/of_address.h> 20#include <linux/of_address.h>
21#include <linux/of_irq.h> 21#include <linux/of_irq.h>
22#include <dt-bindings/clock/imx6qdl-clock.h>
22 23
23#include "clk.h" 24#include "clk.h"
24#include "common.h" 25#include "common.h"
@@ -70,51 +71,16 @@ static const char *cko_sels[] = { "cko1", "cko2", };
70static const char *lvds_sels[] = { 71static const char *lvds_sels[] = {
71 "dummy", "dummy", "dummy", "dummy", "dummy", "dummy", 72 "dummy", "dummy", "dummy", "dummy", "dummy", "dummy",
72 "pll4_audio", "pll5_video", "pll8_mlb", "enet_ref", 73 "pll4_audio", "pll5_video", "pll8_mlb", "enet_ref",
73 "pcie_ref", "sata_ref", 74 "pcie_ref_125m", "sata_ref_100m",
74}; 75};
75 76
76enum mx6q_clks { 77static struct clk *clk[IMX6QDL_CLK_END];
77 dummy, ckil, ckih, osc, pll2_pfd0_352m, pll2_pfd1_594m, pll2_pfd2_396m,
78 pll3_pfd0_720m, pll3_pfd1_540m, pll3_pfd2_508m, pll3_pfd3_454m,
79 pll2_198m, pll3_120m, pll3_80m, pll3_60m, twd, step, pll1_sw,
80 periph_pre, periph2_pre, periph_clk2_sel, periph2_clk2_sel, axi_sel,
81 esai_sel, asrc_sel, spdif_sel, gpu2d_axi, gpu3d_axi, gpu2d_core_sel,
82 gpu3d_core_sel, gpu3d_shader_sel, ipu1_sel, ipu2_sel, ldb_di0_sel,
83 ldb_di1_sel, ipu1_di0_pre_sel, ipu1_di1_pre_sel, ipu2_di0_pre_sel,
84 ipu2_di1_pre_sel, ipu1_di0_sel, ipu1_di1_sel, ipu2_di0_sel,
85 ipu2_di1_sel, hsi_tx_sel, pcie_axi_sel, ssi1_sel, ssi2_sel, ssi3_sel,
86 usdhc1_sel, usdhc2_sel, usdhc3_sel, usdhc4_sel, enfc_sel, emi_sel,
87 emi_slow_sel, vdo_axi_sel, vpu_axi_sel, cko1_sel, periph, periph2,
88 periph_clk2, periph2_clk2, ipg, ipg_per, esai_pred, esai_podf,
89 asrc_pred, asrc_podf, spdif_pred, spdif_podf, can_root, ecspi_root,
90 gpu2d_core_podf, gpu3d_core_podf, gpu3d_shader, ipu1_podf, ipu2_podf,
91 ldb_di0_podf, ldb_di1_podf, ipu1_di0_pre, ipu1_di1_pre, ipu2_di0_pre,
92 ipu2_di1_pre, hsi_tx_podf, ssi1_pred, ssi1_podf, ssi2_pred, ssi2_podf,
93 ssi3_pred, ssi3_podf, uart_serial_podf, usdhc1_podf, usdhc2_podf,
94 usdhc3_podf, usdhc4_podf, enfc_pred, enfc_podf, emi_podf,
95 emi_slow_podf, vpu_axi_podf, cko1_podf, axi, mmdc_ch0_axi_podf,
96 mmdc_ch1_axi_podf, arm, ahb, apbh_dma, asrc, can1_ipg, can1_serial,
97 can2_ipg, can2_serial, ecspi1, ecspi2, ecspi3, ecspi4, ecspi5, enet,
98 esai, gpt_ipg, gpt_ipg_per, gpu2d_core, gpu3d_core, hdmi_iahb,
99 hdmi_isfr, i2c1, i2c2, i2c3, iim, enfc, ipu1, ipu1_di0, ipu1_di1, ipu2,
100 ipu2_di0, ldb_di0, ldb_di1, ipu2_di1, hsi_tx, mlb, mmdc_ch0_axi,
101 mmdc_ch1_axi, ocram, openvg_axi, pcie_axi, pwm1, pwm2, pwm3, pwm4, per1_bch,
102 gpmi_bch_apb, gpmi_bch, gpmi_io, gpmi_apb, sata, sdma, spba, ssi1,
103 ssi2, ssi3, uart_ipg, uart_serial, usboh3, usdhc1, usdhc2, usdhc3,
104 usdhc4, vdo_axi, vpu_axi, cko1, pll1_sys, pll2_bus, pll3_usb_otg,
105 pll4_audio, pll5_video, pll8_mlb, pll7_usb_host, pll6_enet, ssi1_ipg,
106 ssi2_ipg, ssi3_ipg, rom, usbphy1, usbphy2, ldb_di0_div_3_5, ldb_di1_div_3_5,
107 sata_ref, sata_ref_100m, pcie_ref, pcie_ref_125m, enet_ref, usbphy1_gate,
108 usbphy2_gate, pll4_post_div, pll5_post_div, pll5_video_div, eim_slow,
109 spdif, cko2_sel, cko2_podf, cko2, cko, vdoa, pll4_audio_div,
110 lvds1_sel, lvds2_sel, lvds1_gate, lvds2_gate, esai_ahb, clk_max
111};
112
113static struct clk *clk[clk_max];
114static struct clk_onecell_data clk_data; 78static struct clk_onecell_data clk_data;
115 79
116static enum mx6q_clks const clks_init_on[] __initconst = { 80static unsigned int const clks_init_on[] __initconst = {
117 mmdc_ch0_axi, rom, arm, 81 IMX6QDL_CLK_MMDC_CH0_AXI,
82 IMX6QDL_CLK_ROM,
83 IMX6QDL_CLK_ARM,
118}; 84};
119 85
120static struct clk_div_table clk_enet_ref_table[] = { 86static struct clk_div_table clk_enet_ref_table[] = {
@@ -149,10 +115,10 @@ static void __init imx6q_clocks_init(struct device_node *ccm_node)
149 int i; 115 int i;
150 int ret; 116 int ret;
151 117
152 clk[dummy] = imx_clk_fixed("dummy", 0); 118 clk[IMX6QDL_CLK_DUMMY] = imx_clk_fixed("dummy", 0);
153 clk[ckil] = imx_obtain_fixed_clock("ckil", 0); 119 clk[IMX6QDL_CLK_CKIL] = imx_obtain_fixed_clock("ckil", 0);
154 clk[ckih] = imx_obtain_fixed_clock("ckih1", 0); 120 clk[IMX6QDL_CLK_CKIH] = imx_obtain_fixed_clock("ckih1", 0);
155 clk[osc] = imx_obtain_fixed_clock("osc", 0); 121 clk[IMX6QDL_CLK_OSC] = imx_obtain_fixed_clock("osc", 0);
156 122
157 np = of_find_compatible_node(NULL, NULL, "fsl,imx6q-anatop"); 123 np = of_find_compatible_node(NULL, NULL, "fsl,imx6q-anatop");
158 base = of_iomap(np, 0); 124 base = of_iomap(np, 0);
@@ -166,14 +132,14 @@ static void __init imx6q_clocks_init(struct device_node *ccm_node)
166 video_div_table[2].div = 1; 132 video_div_table[2].div = 1;
167 }; 133 };
168 134
169 /* type name parent_name base div_mask */ 135 /* type name parent_name base div_mask */
170 clk[pll1_sys] = imx_clk_pllv3(IMX_PLLV3_SYS, "pll1_sys", "osc", base, 0x7f); 136 clk[IMX6QDL_CLK_PLL1_SYS] = imx_clk_pllv3(IMX_PLLV3_SYS, "pll1_sys", "osc", base, 0x7f);
171 clk[pll2_bus] = imx_clk_pllv3(IMX_PLLV3_GENERIC, "pll2_bus", "osc", base + 0x30, 0x1); 137 clk[IMX6QDL_CLK_PLL2_BUS] = imx_clk_pllv3(IMX_PLLV3_GENERIC, "pll2_bus", "osc", base + 0x30, 0x1);
172 clk[pll3_usb_otg] = imx_clk_pllv3(IMX_PLLV3_USB, "pll3_usb_otg", "osc", base + 0x10, 0x3); 138 clk[IMX6QDL_CLK_PLL3_USB_OTG] = imx_clk_pllv3(IMX_PLLV3_USB, "pll3_usb_otg", "osc", base + 0x10, 0x3);
173 clk[pll4_audio] = imx_clk_pllv3(IMX_PLLV3_AV, "pll4_audio", "osc", base + 0x70, 0x7f); 139 clk[IMX6QDL_CLK_PLL4_AUDIO] = imx_clk_pllv3(IMX_PLLV3_AV, "pll4_audio", "osc", base + 0x70, 0x7f);
174 clk[pll5_video] = imx_clk_pllv3(IMX_PLLV3_AV, "pll5_video", "osc", base + 0xa0, 0x7f); 140 clk[IMX6QDL_CLK_PLL5_VIDEO] = imx_clk_pllv3(IMX_PLLV3_AV, "pll5_video", "osc", base + 0xa0, 0x7f);
175 clk[pll6_enet] = imx_clk_pllv3(IMX_PLLV3_ENET, "pll6_enet", "osc", base + 0xe0, 0x3); 141 clk[IMX6QDL_CLK_PLL6_ENET] = imx_clk_pllv3(IMX_PLLV3_ENET, "pll6_enet", "osc", base + 0xe0, 0x3);
176 clk[pll7_usb_host] = imx_clk_pllv3(IMX_PLLV3_USB, "pll7_usb_host","osc", base + 0x20, 0x3); 142 clk[IMX6QDL_CLK_PLL7_USB_HOST] = imx_clk_pllv3(IMX_PLLV3_USB, "pll7_usb_host","osc", base + 0x20, 0x3);
177 143
178 /* 144 /*
179 * Bit 20 is the reserved and read-only bit, we do this only for: 145 * Bit 20 is the reserved and read-only bit, we do this only for:
@@ -181,28 +147,28 @@ static void __init imx6q_clocks_init(struct device_node *ccm_node)
181 * - Keep refcount when do usbphy clk_enable/disable, in that case, 147 * - Keep refcount when do usbphy clk_enable/disable, in that case,
182 * the clk framework may need to enable/disable usbphy's parent 148 * the clk framework may need to enable/disable usbphy's parent
183 */ 149 */
184 clk[usbphy1] = imx_clk_gate("usbphy1", "pll3_usb_otg", base + 0x10, 20); 150 clk[IMX6QDL_CLK_USBPHY1] = imx_clk_gate("usbphy1", "pll3_usb_otg", base + 0x10, 20);
185 clk[usbphy2] = imx_clk_gate("usbphy2", "pll7_usb_host", base + 0x20, 20); 151 clk[IMX6QDL_CLK_USBPHY2] = imx_clk_gate("usbphy2", "pll7_usb_host", base + 0x20, 20);
186 152
187 /* 153 /*
188 * usbphy*_gate needs to be on after system boots up, and software 154 * usbphy*_gate needs to be on after system boots up, and software
189 * never needs to control it anymore. 155 * never needs to control it anymore.
190 */ 156 */
191 clk[usbphy1_gate] = imx_clk_gate("usbphy1_gate", "dummy", base + 0x10, 6); 157 clk[IMX6QDL_CLK_USBPHY1_GATE] = imx_clk_gate("usbphy1_gate", "dummy", base + 0x10, 6);
192 clk[usbphy2_gate] = imx_clk_gate("usbphy2_gate", "dummy", base + 0x20, 6); 158 clk[IMX6QDL_CLK_USBPHY2_GATE] = imx_clk_gate("usbphy2_gate", "dummy", base + 0x20, 6);
193 159
194 clk[sata_ref] = imx_clk_fixed_factor("sata_ref", "pll6_enet", 1, 5); 160 clk[IMX6QDL_CLK_SATA_REF] = imx_clk_fixed_factor("sata_ref", "pll6_enet", 1, 5);
195 clk[pcie_ref] = imx_clk_fixed_factor("pcie_ref", "pll6_enet", 1, 4); 161 clk[IMX6QDL_CLK_PCIE_REF] = imx_clk_fixed_factor("pcie_ref", "pll6_enet", 1, 4);
196 162
197 clk[sata_ref_100m] = imx_clk_gate("sata_ref_100m", "sata_ref", base + 0xe0, 20); 163 clk[IMX6QDL_CLK_SATA_REF_100M] = imx_clk_gate("sata_ref_100m", "sata_ref", base + 0xe0, 20);
198 clk[pcie_ref_125m] = imx_clk_gate("pcie_ref_125m", "pcie_ref", base + 0xe0, 19); 164 clk[IMX6QDL_CLK_PCIE_REF_125M] = imx_clk_gate("pcie_ref_125m", "pcie_ref", base + 0xe0, 19);
199 165
200 clk[enet_ref] = clk_register_divider_table(NULL, "enet_ref", "pll6_enet", 0, 166 clk[IMX6QDL_CLK_ENET_REF] = clk_register_divider_table(NULL, "enet_ref", "pll6_enet", 0,
201 base + 0xe0, 0, 2, 0, clk_enet_ref_table, 167 base + 0xe0, 0, 2, 0, clk_enet_ref_table,
202 &imx_ccm_lock); 168 &imx_ccm_lock);
203 169
204 clk[lvds1_sel] = imx_clk_mux("lvds1_sel", base + 0x160, 0, 5, lvds_sels, ARRAY_SIZE(lvds_sels)); 170 clk[IMX6QDL_CLK_LVDS1_SEL] = imx_clk_mux("lvds1_sel", base + 0x160, 0, 5, lvds_sels, ARRAY_SIZE(lvds_sels));
205 clk[lvds2_sel] = imx_clk_mux("lvds2_sel", base + 0x160, 5, 5, lvds_sels, ARRAY_SIZE(lvds_sels)); 171 clk[IMX6QDL_CLK_LVDS2_SEL] = imx_clk_mux("lvds2_sel", base + 0x160, 5, 5, lvds_sels, ARRAY_SIZE(lvds_sels));
206 172
207 /* 173 /*
208 * lvds1_gate and lvds2_gate are pseudo-gates. Both can be 174 * lvds1_gate and lvds2_gate are pseudo-gates. Both can be
@@ -210,29 +176,29 @@ static void __init imx6q_clocks_init(struct device_node *ccm_node)
210 * the "output_enable" bit as a gate, even though it's really just 176 * the "output_enable" bit as a gate, even though it's really just
211 * enabling clock output. 177 * enabling clock output.
212 */ 178 */
213 clk[lvds1_gate] = imx_clk_gate("lvds1_gate", "lvds1_sel", base + 0x160, 10); 179 clk[IMX6QDL_CLK_LVDS1_GATE] = imx_clk_gate("lvds1_gate", "lvds1_sel", base + 0x160, 10);
214 clk[lvds2_gate] = imx_clk_gate("lvds2_gate", "lvds2_sel", base + 0x160, 11); 180 clk[IMX6QDL_CLK_LVDS2_GATE] = imx_clk_gate("lvds2_gate", "lvds2_sel", base + 0x160, 11);
215 181
216 /* name parent_name reg idx */ 182 /* name parent_name reg idx */
217 clk[pll2_pfd0_352m] = imx_clk_pfd("pll2_pfd0_352m", "pll2_bus", base + 0x100, 0); 183 clk[IMX6QDL_CLK_PLL2_PFD0_352M] = imx_clk_pfd("pll2_pfd0_352m", "pll2_bus", base + 0x100, 0);
218 clk[pll2_pfd1_594m] = imx_clk_pfd("pll2_pfd1_594m", "pll2_bus", base + 0x100, 1); 184 clk[IMX6QDL_CLK_PLL2_PFD1_594M] = imx_clk_pfd("pll2_pfd1_594m", "pll2_bus", base + 0x100, 1);
219 clk[pll2_pfd2_396m] = imx_clk_pfd("pll2_pfd2_396m", "pll2_bus", base + 0x100, 2); 185 clk[IMX6QDL_CLK_PLL2_PFD2_396M] = imx_clk_pfd("pll2_pfd2_396m", "pll2_bus", base + 0x100, 2);
220 clk[pll3_pfd0_720m] = imx_clk_pfd("pll3_pfd0_720m", "pll3_usb_otg", base + 0xf0, 0); 186 clk[IMX6QDL_CLK_PLL3_PFD0_720M] = imx_clk_pfd("pll3_pfd0_720m", "pll3_usb_otg", base + 0xf0, 0);
221 clk[pll3_pfd1_540m] = imx_clk_pfd("pll3_pfd1_540m", "pll3_usb_otg", base + 0xf0, 1); 187 clk[IMX6QDL_CLK_PLL3_PFD1_540M] = imx_clk_pfd("pll3_pfd1_540m", "pll3_usb_otg", base + 0xf0, 1);
222 clk[pll3_pfd2_508m] = imx_clk_pfd("pll3_pfd2_508m", "pll3_usb_otg", base + 0xf0, 2); 188 clk[IMX6QDL_CLK_PLL3_PFD2_508M] = imx_clk_pfd("pll3_pfd2_508m", "pll3_usb_otg", base + 0xf0, 2);
223 clk[pll3_pfd3_454m] = imx_clk_pfd("pll3_pfd3_454m", "pll3_usb_otg", base + 0xf0, 3); 189 clk[IMX6QDL_CLK_PLL3_PFD3_454M] = imx_clk_pfd("pll3_pfd3_454m", "pll3_usb_otg", base + 0xf0, 3);
224 190
225 /* name parent_name mult div */ 191 /* name parent_name mult div */
226 clk[pll2_198m] = imx_clk_fixed_factor("pll2_198m", "pll2_pfd2_396m", 1, 2); 192 clk[IMX6QDL_CLK_PLL2_198M] = imx_clk_fixed_factor("pll2_198m", "pll2_pfd2_396m", 1, 2);
227 clk[pll3_120m] = imx_clk_fixed_factor("pll3_120m", "pll3_usb_otg", 1, 4); 193 clk[IMX6QDL_CLK_PLL3_120M] = imx_clk_fixed_factor("pll3_120m", "pll3_usb_otg", 1, 4);
228 clk[pll3_80m] = imx_clk_fixed_factor("pll3_80m", "pll3_usb_otg", 1, 6); 194 clk[IMX6QDL_CLK_PLL3_80M] = imx_clk_fixed_factor("pll3_80m", "pll3_usb_otg", 1, 6);
229 clk[pll3_60m] = imx_clk_fixed_factor("pll3_60m", "pll3_usb_otg", 1, 8); 195 clk[IMX6QDL_CLK_PLL3_60M] = imx_clk_fixed_factor("pll3_60m", "pll3_usb_otg", 1, 8);
230 clk[twd] = imx_clk_fixed_factor("twd", "arm", 1, 2); 196 clk[IMX6QDL_CLK_TWD] = imx_clk_fixed_factor("twd", "arm", 1, 2);
231 197
232 clk[pll4_post_div] = clk_register_divider_table(NULL, "pll4_post_div", "pll4_audio", CLK_SET_RATE_PARENT, base + 0x70, 19, 2, 0, post_div_table, &imx_ccm_lock); 198 clk[IMX6QDL_CLK_PLL4_POST_DIV] = clk_register_divider_table(NULL, "pll4_post_div", "pll4_audio", CLK_SET_RATE_PARENT, base + 0x70, 19, 2, 0, post_div_table, &imx_ccm_lock);
233 clk[pll4_audio_div] = clk_register_divider(NULL, "pll4_audio_div", "pll4_post_div", CLK_SET_RATE_PARENT, base + 0x170, 15, 1, 0, &imx_ccm_lock); 199 clk[IMX6QDL_CLK_PLL4_AUDIO_DIV] = clk_register_divider(NULL, "pll4_audio_div", "pll4_post_div", CLK_SET_RATE_PARENT, base + 0x170, 15, 1, 0, &imx_ccm_lock);
234 clk[pll5_post_div] = clk_register_divider_table(NULL, "pll5_post_div", "pll5_video", CLK_SET_RATE_PARENT, base + 0xa0, 19, 2, 0, post_div_table, &imx_ccm_lock); 200 clk[IMX6QDL_CLK_PLL5_POST_DIV] = clk_register_divider_table(NULL, "pll5_post_div", "pll5_video", CLK_SET_RATE_PARENT, base + 0xa0, 19, 2, 0, post_div_table, &imx_ccm_lock);
235 clk[pll5_video_div] = clk_register_divider_table(NULL, "pll5_video_div", "pll5_post_div", CLK_SET_RATE_PARENT, base + 0x170, 30, 2, 0, video_div_table, &imx_ccm_lock); 201 clk[IMX6QDL_CLK_PLL5_VIDEO_DIV] = clk_register_divider_table(NULL, "pll5_video_div", "pll5_post_div", CLK_SET_RATE_PARENT, base + 0x170, 30, 2, 0, video_div_table, &imx_ccm_lock);
236 202
237 np = ccm_node; 203 np = ccm_node;
238 base = of_iomap(np, 0); 204 base = of_iomap(np, 0);
@@ -240,262 +206,254 @@ static void __init imx6q_clocks_init(struct device_node *ccm_node)
240 206
241 imx6q_pm_set_ccm_base(base); 207 imx6q_pm_set_ccm_base(base);
242 208
243 /* name reg shift width parent_names num_parents */ 209 /* name reg shift width parent_names num_parents */
244 clk[step] = imx_clk_mux("step", base + 0xc, 8, 1, step_sels, ARRAY_SIZE(step_sels)); 210 clk[IMX6QDL_CLK_STEP] = imx_clk_mux("step", base + 0xc, 8, 1, step_sels, ARRAY_SIZE(step_sels));
245 clk[pll1_sw] = imx_clk_mux("pll1_sw", base + 0xc, 2, 1, pll1_sw_sels, ARRAY_SIZE(pll1_sw_sels)); 211 clk[IMX6QDL_CLK_PLL1_SW] = imx_clk_mux("pll1_sw", base + 0xc, 2, 1, pll1_sw_sels, ARRAY_SIZE(pll1_sw_sels));
246 clk[periph_pre] = imx_clk_mux("periph_pre", base + 0x18, 18, 2, periph_pre_sels, ARRAY_SIZE(periph_pre_sels)); 212 clk[IMX6QDL_CLK_PERIPH_PRE] = imx_clk_mux("periph_pre", base + 0x18, 18, 2, periph_pre_sels, ARRAY_SIZE(periph_pre_sels));
247 clk[periph2_pre] = imx_clk_mux("periph2_pre", base + 0x18, 21, 2, periph_pre_sels, ARRAY_SIZE(periph_pre_sels)); 213 clk[IMX6QDL_CLK_PERIPH2_PRE] = imx_clk_mux("periph2_pre", base + 0x18, 21, 2, periph_pre_sels, ARRAY_SIZE(periph_pre_sels));
248 clk[periph_clk2_sel] = imx_clk_mux("periph_clk2_sel", base + 0x18, 12, 2, periph_clk2_sels, ARRAY_SIZE(periph_clk2_sels)); 214 clk[IMX6QDL_CLK_PERIPH_CLK2_SEL] = imx_clk_mux("periph_clk2_sel", base + 0x18, 12, 2, periph_clk2_sels, ARRAY_SIZE(periph_clk2_sels));
249 clk[periph2_clk2_sel] = imx_clk_mux("periph2_clk2_sel", base + 0x18, 20, 1, periph2_clk2_sels, ARRAY_SIZE(periph2_clk2_sels)); 215 clk[IMX6QDL_CLK_PERIPH2_CLK2_SEL] = imx_clk_mux("periph2_clk2_sel", base + 0x18, 20, 1, periph2_clk2_sels, ARRAY_SIZE(periph2_clk2_sels));
250 clk[axi_sel] = imx_clk_mux("axi_sel", base + 0x14, 6, 2, axi_sels, ARRAY_SIZE(axi_sels)); 216 clk[IMX6QDL_CLK_AXI_SEL] = imx_clk_mux("axi_sel", base + 0x14, 6, 2, axi_sels, ARRAY_SIZE(axi_sels));
251 clk[esai_sel] = imx_clk_mux("esai_sel", base + 0x20, 19, 2, audio_sels, ARRAY_SIZE(audio_sels)); 217 clk[IMX6QDL_CLK_ESAI_SEL] = imx_clk_mux("esai_sel", base + 0x20, 19, 2, audio_sels, ARRAY_SIZE(audio_sels));
252 clk[asrc_sel] = imx_clk_mux("asrc_sel", base + 0x30, 7, 2, audio_sels, ARRAY_SIZE(audio_sels)); 218 clk[IMX6QDL_CLK_ASRC_SEL] = imx_clk_mux("asrc_sel", base + 0x30, 7, 2, audio_sels, ARRAY_SIZE(audio_sels));
253 clk[spdif_sel] = imx_clk_mux("spdif_sel", base + 0x30, 20, 2, audio_sels, ARRAY_SIZE(audio_sels)); 219 clk[IMX6QDL_CLK_SPDIF_SEL] = imx_clk_mux("spdif_sel", base + 0x30, 20, 2, audio_sels, ARRAY_SIZE(audio_sels));
254 clk[gpu2d_axi] = imx_clk_mux("gpu2d_axi", base + 0x18, 0, 1, gpu_axi_sels, ARRAY_SIZE(gpu_axi_sels)); 220 clk[IMX6QDL_CLK_GPU2D_AXI] = imx_clk_mux("gpu2d_axi", base + 0x18, 0, 1, gpu_axi_sels, ARRAY_SIZE(gpu_axi_sels));
255 clk[gpu3d_axi] = imx_clk_mux("gpu3d_axi", base + 0x18, 1, 1, gpu_axi_sels, ARRAY_SIZE(gpu_axi_sels)); 221 clk[IMX6QDL_CLK_GPU3D_AXI] = imx_clk_mux("gpu3d_axi", base + 0x18, 1, 1, gpu_axi_sels, ARRAY_SIZE(gpu_axi_sels));
256 clk[gpu2d_core_sel] = imx_clk_mux("gpu2d_core_sel", base + 0x18, 16, 2, gpu2d_core_sels, ARRAY_SIZE(gpu2d_core_sels)); 222 clk[IMX6QDL_CLK_GPU2D_CORE_SEL] = imx_clk_mux("gpu2d_core_sel", base + 0x18, 16, 2, gpu2d_core_sels, ARRAY_SIZE(gpu2d_core_sels));
257 clk[gpu3d_core_sel] = imx_clk_mux("gpu3d_core_sel", base + 0x18, 4, 2, gpu3d_core_sels, ARRAY_SIZE(gpu3d_core_sels)); 223 clk[IMX6QDL_CLK_GPU3D_CORE_SEL] = imx_clk_mux("gpu3d_core_sel", base + 0x18, 4, 2, gpu3d_core_sels, ARRAY_SIZE(gpu3d_core_sels));
258 clk[gpu3d_shader_sel] = imx_clk_mux("gpu3d_shader_sel", base + 0x18, 8, 2, gpu3d_shader_sels, ARRAY_SIZE(gpu3d_shader_sels)); 224 clk[IMX6QDL_CLK_GPU3D_SHADER_SEL] = imx_clk_mux("gpu3d_shader_sel", base + 0x18, 8, 2, gpu3d_shader_sels, ARRAY_SIZE(gpu3d_shader_sels));
259 clk[ipu1_sel] = imx_clk_mux("ipu1_sel", base + 0x3c, 9, 2, ipu_sels, ARRAY_SIZE(ipu_sels)); 225 clk[IMX6QDL_CLK_IPU1_SEL] = imx_clk_mux("ipu1_sel", base + 0x3c, 9, 2, ipu_sels, ARRAY_SIZE(ipu_sels));
260 clk[ipu2_sel] = imx_clk_mux("ipu2_sel", base + 0x3c, 14, 2, ipu_sels, ARRAY_SIZE(ipu_sels)); 226 clk[IMX6QDL_CLK_IPU2_SEL] = imx_clk_mux("ipu2_sel", base + 0x3c, 14, 2, ipu_sels, ARRAY_SIZE(ipu_sels));
261 clk[ldb_di0_sel] = imx_clk_mux_flags("ldb_di0_sel", base + 0x2c, 9, 3, ldb_di_sels, ARRAY_SIZE(ldb_di_sels), CLK_SET_RATE_PARENT); 227 clk[IMX6QDL_CLK_LDB_DI0_SEL] = imx_clk_mux_flags("ldb_di0_sel", base + 0x2c, 9, 3, ldb_di_sels, ARRAY_SIZE(ldb_di_sels), CLK_SET_RATE_PARENT);
262 clk[ldb_di1_sel] = imx_clk_mux_flags("ldb_di1_sel", base + 0x2c, 12, 3, ldb_di_sels, ARRAY_SIZE(ldb_di_sels), CLK_SET_RATE_PARENT); 228 clk[IMX6QDL_CLK_LDB_DI1_SEL] = imx_clk_mux_flags("ldb_di1_sel", base + 0x2c, 12, 3, ldb_di_sels, ARRAY_SIZE(ldb_di_sels), CLK_SET_RATE_PARENT);
263 clk[ipu1_di0_pre_sel] = imx_clk_mux_flags("ipu1_di0_pre_sel", base + 0x34, 6, 3, ipu_di_pre_sels, ARRAY_SIZE(ipu_di_pre_sels), CLK_SET_RATE_PARENT); 229 clk[IMX6QDL_CLK_IPU1_DI0_PRE_SEL] = imx_clk_mux_flags("ipu1_di0_pre_sel", base + 0x34, 6, 3, ipu_di_pre_sels, ARRAY_SIZE(ipu_di_pre_sels), CLK_SET_RATE_PARENT);
264 clk[ipu1_di1_pre_sel] = imx_clk_mux_flags("ipu1_di1_pre_sel", base + 0x34, 15, 3, ipu_di_pre_sels, ARRAY_SIZE(ipu_di_pre_sels), CLK_SET_RATE_PARENT); 230 clk[IMX6QDL_CLK_IPU1_DI1_PRE_SEL] = imx_clk_mux_flags("ipu1_di1_pre_sel", base + 0x34, 15, 3, ipu_di_pre_sels, ARRAY_SIZE(ipu_di_pre_sels), CLK_SET_RATE_PARENT);
265 clk[ipu2_di0_pre_sel] = imx_clk_mux_flags("ipu2_di0_pre_sel", base + 0x38, 6, 3, ipu_di_pre_sels, ARRAY_SIZE(ipu_di_pre_sels), CLK_SET_RATE_PARENT); 231 clk[IMX6QDL_CLK_IPU2_DI0_PRE_SEL] = imx_clk_mux_flags("ipu2_di0_pre_sel", base + 0x38, 6, 3, ipu_di_pre_sels, ARRAY_SIZE(ipu_di_pre_sels), CLK_SET_RATE_PARENT);
266 clk[ipu2_di1_pre_sel] = imx_clk_mux_flags("ipu2_di1_pre_sel", base + 0x38, 15, 3, ipu_di_pre_sels, ARRAY_SIZE(ipu_di_pre_sels), CLK_SET_RATE_PARENT); 232 clk[IMX6QDL_CLK_IPU2_DI1_PRE_SEL] = imx_clk_mux_flags("ipu2_di1_pre_sel", base + 0x38, 15, 3, ipu_di_pre_sels, ARRAY_SIZE(ipu_di_pre_sels), CLK_SET_RATE_PARENT);
267 clk[ipu1_di0_sel] = imx_clk_mux_flags("ipu1_di0_sel", base + 0x34, 0, 3, ipu1_di0_sels, ARRAY_SIZE(ipu1_di0_sels), CLK_SET_RATE_PARENT); 233 clk[IMX6QDL_CLK_IPU1_DI0_SEL] = imx_clk_mux_flags("ipu1_di0_sel", base + 0x34, 0, 3, ipu1_di0_sels, ARRAY_SIZE(ipu1_di0_sels), CLK_SET_RATE_PARENT);
268 clk[ipu1_di1_sel] = imx_clk_mux_flags("ipu1_di1_sel", base + 0x34, 9, 3, ipu1_di1_sels, ARRAY_SIZE(ipu1_di1_sels), CLK_SET_RATE_PARENT); 234 clk[IMX6QDL_CLK_IPU1_DI1_SEL] = imx_clk_mux_flags("ipu1_di1_sel", base + 0x34, 9, 3, ipu1_di1_sels, ARRAY_SIZE(ipu1_di1_sels), CLK_SET_RATE_PARENT);
269 clk[ipu2_di0_sel] = imx_clk_mux_flags("ipu2_di0_sel", base + 0x38, 0, 3, ipu2_di0_sels, ARRAY_SIZE(ipu2_di0_sels), CLK_SET_RATE_PARENT); 235 clk[IMX6QDL_CLK_IPU2_DI0_SEL] = imx_clk_mux_flags("ipu2_di0_sel", base + 0x38, 0, 3, ipu2_di0_sels, ARRAY_SIZE(ipu2_di0_sels), CLK_SET_RATE_PARENT);
270 clk[ipu2_di1_sel] = imx_clk_mux_flags("ipu2_di1_sel", base + 0x38, 9, 3, ipu2_di1_sels, ARRAY_SIZE(ipu2_di1_sels), CLK_SET_RATE_PARENT); 236 clk[IMX6QDL_CLK_IPU2_DI1_SEL] = imx_clk_mux_flags("ipu2_di1_sel", base + 0x38, 9, 3, ipu2_di1_sels, ARRAY_SIZE(ipu2_di1_sels), CLK_SET_RATE_PARENT);
271 clk[hsi_tx_sel] = imx_clk_mux("hsi_tx_sel", base + 0x30, 28, 1, hsi_tx_sels, ARRAY_SIZE(hsi_tx_sels)); 237 clk[IMX6QDL_CLK_HSI_TX_SEL] = imx_clk_mux("hsi_tx_sel", base + 0x30, 28, 1, hsi_tx_sels, ARRAY_SIZE(hsi_tx_sels));
272 clk[pcie_axi_sel] = imx_clk_mux("pcie_axi_sel", base + 0x18, 10, 1, pcie_axi_sels, ARRAY_SIZE(pcie_axi_sels)); 238 clk[IMX6QDL_CLK_PCIE_AXI_SEL] = imx_clk_mux("pcie_axi_sel", base + 0x18, 10, 1, pcie_axi_sels, ARRAY_SIZE(pcie_axi_sels));
273 clk[ssi1_sel] = imx_clk_fixup_mux("ssi1_sel", base + 0x1c, 10, 2, ssi_sels, ARRAY_SIZE(ssi_sels), imx_cscmr1_fixup); 239 clk[IMX6QDL_CLK_SSI1_SEL] = imx_clk_fixup_mux("ssi1_sel", base + 0x1c, 10, 2, ssi_sels, ARRAY_SIZE(ssi_sels), imx_cscmr1_fixup);
274 clk[ssi2_sel] = imx_clk_fixup_mux("ssi2_sel", base + 0x1c, 12, 2, ssi_sels, ARRAY_SIZE(ssi_sels), imx_cscmr1_fixup); 240 clk[IMX6QDL_CLK_SSI2_SEL] = imx_clk_fixup_mux("ssi2_sel", base + 0x1c, 12, 2, ssi_sels, ARRAY_SIZE(ssi_sels), imx_cscmr1_fixup);
275 clk[ssi3_sel] = imx_clk_fixup_mux("ssi3_sel", base + 0x1c, 14, 2, ssi_sels, ARRAY_SIZE(ssi_sels), imx_cscmr1_fixup); 241 clk[IMX6QDL_CLK_SSI3_SEL] = imx_clk_fixup_mux("ssi3_sel", base + 0x1c, 14, 2, ssi_sels, ARRAY_SIZE(ssi_sels), imx_cscmr1_fixup);
276 clk[usdhc1_sel] = imx_clk_fixup_mux("usdhc1_sel", base + 0x1c, 16, 1, usdhc_sels, ARRAY_SIZE(usdhc_sels), imx_cscmr1_fixup); 242 clk[IMX6QDL_CLK_USDHC1_SEL] = imx_clk_fixup_mux("usdhc1_sel", base + 0x1c, 16, 1, usdhc_sels, ARRAY_SIZE(usdhc_sels), imx_cscmr1_fixup);
277 clk[usdhc2_sel] = imx_clk_fixup_mux("usdhc2_sel", base + 0x1c, 17, 1, usdhc_sels, ARRAY_SIZE(usdhc_sels), imx_cscmr1_fixup); 243 clk[IMX6QDL_CLK_USDHC2_SEL] = imx_clk_fixup_mux("usdhc2_sel", base + 0x1c, 17, 1, usdhc_sels, ARRAY_SIZE(usdhc_sels), imx_cscmr1_fixup);
278 clk[usdhc3_sel] = imx_clk_fixup_mux("usdhc3_sel", base + 0x1c, 18, 1, usdhc_sels, ARRAY_SIZE(usdhc_sels), imx_cscmr1_fixup); 244 clk[IMX6QDL_CLK_USDHC3_SEL] = imx_clk_fixup_mux("usdhc3_sel", base + 0x1c, 18, 1, usdhc_sels, ARRAY_SIZE(usdhc_sels), imx_cscmr1_fixup);
279 clk[usdhc4_sel] = imx_clk_fixup_mux("usdhc4_sel", base + 0x1c, 19, 1, usdhc_sels, ARRAY_SIZE(usdhc_sels), imx_cscmr1_fixup); 245 clk[IMX6QDL_CLK_USDHC4_SEL] = imx_clk_fixup_mux("usdhc4_sel", base + 0x1c, 19, 1, usdhc_sels, ARRAY_SIZE(usdhc_sels), imx_cscmr1_fixup);
280 clk[enfc_sel] = imx_clk_mux("enfc_sel", base + 0x2c, 16, 2, enfc_sels, ARRAY_SIZE(enfc_sels)); 246 clk[IMX6QDL_CLK_ENFC_SEL] = imx_clk_mux("enfc_sel", base + 0x2c, 16, 2, enfc_sels, ARRAY_SIZE(enfc_sels));
281 clk[emi_sel] = imx_clk_fixup_mux("emi_sel", base + 0x1c, 27, 2, emi_sels, ARRAY_SIZE(emi_sels), imx_cscmr1_fixup); 247 clk[IMX6QDL_CLK_EMI_SEL] = imx_clk_fixup_mux("emi_sel", base + 0x1c, 27, 2, emi_sels, ARRAY_SIZE(emi_sels), imx_cscmr1_fixup);
282 clk[emi_slow_sel] = imx_clk_fixup_mux("emi_slow_sel", base + 0x1c, 29, 2, emi_slow_sels, ARRAY_SIZE(emi_slow_sels), imx_cscmr1_fixup); 248 clk[IMX6QDL_CLK_EMI_SLOW_SEL] = imx_clk_fixup_mux("emi_slow_sel", base + 0x1c, 29, 2, emi_slow_sels, ARRAY_SIZE(emi_slow_sels), imx_cscmr1_fixup);
283 clk[vdo_axi_sel] = imx_clk_mux("vdo_axi_sel", base + 0x18, 11, 1, vdo_axi_sels, ARRAY_SIZE(vdo_axi_sels)); 249 clk[IMX6QDL_CLK_VDO_AXI_SEL] = imx_clk_mux("vdo_axi_sel", base + 0x18, 11, 1, vdo_axi_sels, ARRAY_SIZE(vdo_axi_sels));
284 clk[vpu_axi_sel] = imx_clk_mux("vpu_axi_sel", base + 0x18, 14, 2, vpu_axi_sels, ARRAY_SIZE(vpu_axi_sels)); 250 clk[IMX6QDL_CLK_VPU_AXI_SEL] = imx_clk_mux("vpu_axi_sel", base + 0x18, 14, 2, vpu_axi_sels, ARRAY_SIZE(vpu_axi_sels));
285 clk[cko1_sel] = imx_clk_mux("cko1_sel", base + 0x60, 0, 4, cko1_sels, ARRAY_SIZE(cko1_sels)); 251 clk[IMX6QDL_CLK_CKO1_SEL] = imx_clk_mux("cko1_sel", base + 0x60, 0, 4, cko1_sels, ARRAY_SIZE(cko1_sels));
286 clk[cko2_sel] = imx_clk_mux("cko2_sel", base + 0x60, 16, 5, cko2_sels, ARRAY_SIZE(cko2_sels)); 252 clk[IMX6QDL_CLK_CKO2_SEL] = imx_clk_mux("cko2_sel", base + 0x60, 16, 5, cko2_sels, ARRAY_SIZE(cko2_sels));
287 clk[cko] = imx_clk_mux("cko", base + 0x60, 8, 1, cko_sels, ARRAY_SIZE(cko_sels)); 253 clk[IMX6QDL_CLK_CKO] = imx_clk_mux("cko", base + 0x60, 8, 1, cko_sels, ARRAY_SIZE(cko_sels));
288 254
289 /* name reg shift width busy: reg, shift parent_names num_parents */ 255 /* name reg shift width busy: reg, shift parent_names num_parents */
290 clk[periph] = imx_clk_busy_mux("periph", base + 0x14, 25, 1, base + 0x48, 5, periph_sels, ARRAY_SIZE(periph_sels)); 256 clk[IMX6QDL_CLK_PERIPH] = imx_clk_busy_mux("periph", base + 0x14, 25, 1, base + 0x48, 5, periph_sels, ARRAY_SIZE(periph_sels));
291 clk[periph2] = imx_clk_busy_mux("periph2", base + 0x14, 26, 1, base + 0x48, 3, periph2_sels, ARRAY_SIZE(periph2_sels)); 257 clk[IMX6QDL_CLK_PERIPH2] = imx_clk_busy_mux("periph2", base + 0x14, 26, 1, base + 0x48, 3, periph2_sels, ARRAY_SIZE(periph2_sels));
292 258
293 /* name parent_name reg shift width */ 259 /* name parent_name reg shift width */
294 clk[periph_clk2] = imx_clk_divider("periph_clk2", "periph_clk2_sel", base + 0x14, 27, 3); 260 clk[IMX6QDL_CLK_PERIPH_CLK2] = imx_clk_divider("periph_clk2", "periph_clk2_sel", base + 0x14, 27, 3);
295 clk[periph2_clk2] = imx_clk_divider("periph2_clk2", "periph2_clk2_sel", base + 0x14, 0, 3); 261 clk[IMX6QDL_CLK_PERIPH2_CLK2] = imx_clk_divider("periph2_clk2", "periph2_clk2_sel", base + 0x14, 0, 3);
296 clk[ipg] = imx_clk_divider("ipg", "ahb", base + 0x14, 8, 2); 262 clk[IMX6QDL_CLK_IPG] = imx_clk_divider("ipg", "ahb", base + 0x14, 8, 2);
297 clk[ipg_per] = imx_clk_fixup_divider("ipg_per", "ipg", base + 0x1c, 0, 6, imx_cscmr1_fixup); 263 clk[IMX6QDL_CLK_IPG_PER] = imx_clk_fixup_divider("ipg_per", "ipg", base + 0x1c, 0, 6, imx_cscmr1_fixup);
298 clk[esai_pred] = imx_clk_divider("esai_pred", "esai_sel", base + 0x28, 9, 3); 264 clk[IMX6QDL_CLK_ESAI_PRED] = imx_clk_divider("esai_pred", "esai_sel", base + 0x28, 9, 3);
299 clk[esai_podf] = imx_clk_divider("esai_podf", "esai_pred", base + 0x28, 25, 3); 265 clk[IMX6QDL_CLK_ESAI_PODF] = imx_clk_divider("esai_podf", "esai_pred", base + 0x28, 25, 3);
300 clk[asrc_pred] = imx_clk_divider("asrc_pred", "asrc_sel", base + 0x30, 12, 3); 266 clk[IMX6QDL_CLK_ASRC_PRED] = imx_clk_divider("asrc_pred", "asrc_sel", base + 0x30, 12, 3);
301 clk[asrc_podf] = imx_clk_divider("asrc_podf", "asrc_pred", base + 0x30, 9, 3); 267 clk[IMX6QDL_CLK_ASRC_PODF] = imx_clk_divider("asrc_podf", "asrc_pred", base + 0x30, 9, 3);
302 clk[spdif_pred] = imx_clk_divider("spdif_pred", "spdif_sel", base + 0x30, 25, 3); 268 clk[IMX6QDL_CLK_SPDIF_PRED] = imx_clk_divider("spdif_pred", "spdif_sel", base + 0x30, 25, 3);
303 clk[spdif_podf] = imx_clk_divider("spdif_podf", "spdif_pred", base + 0x30, 22, 3); 269 clk[IMX6QDL_CLK_SPDIF_PODF] = imx_clk_divider("spdif_podf", "spdif_pred", base + 0x30, 22, 3);
304 clk[can_root] = imx_clk_divider("can_root", "pll3_60m", base + 0x20, 2, 6); 270 clk[IMX6QDL_CLK_CAN_ROOT] = imx_clk_divider("can_root", "pll3_60m", base + 0x20, 2, 6);
305 clk[ecspi_root] = imx_clk_divider("ecspi_root", "pll3_60m", base + 0x38, 19, 6); 271 clk[IMX6QDL_CLK_ECSPI_ROOT] = imx_clk_divider("ecspi_root", "pll3_60m", base + 0x38, 19, 6);
306 clk[gpu2d_core_podf] = imx_clk_divider("gpu2d_core_podf", "gpu2d_core_sel", base + 0x18, 23, 3); 272 clk[IMX6QDL_CLK_GPU2D_CORE_PODF] = imx_clk_divider("gpu2d_core_podf", "gpu2d_core_sel", base + 0x18, 23, 3);
307 clk[gpu3d_core_podf] = imx_clk_divider("gpu3d_core_podf", "gpu3d_core_sel", base + 0x18, 26, 3); 273 clk[IMX6QDL_CLK_GPU3D_CORE_PODF] = imx_clk_divider("gpu3d_core_podf", "gpu3d_core_sel", base + 0x18, 26, 3);
308 clk[gpu3d_shader] = imx_clk_divider("gpu3d_shader", "gpu3d_shader_sel", base + 0x18, 29, 3); 274 clk[IMX6QDL_CLK_GPU3D_SHADER] = imx_clk_divider("gpu3d_shader", "gpu3d_shader_sel", base + 0x18, 29, 3);
309 clk[ipu1_podf] = imx_clk_divider("ipu1_podf", "ipu1_sel", base + 0x3c, 11, 3); 275 clk[IMX6QDL_CLK_IPU1_PODF] = imx_clk_divider("ipu1_podf", "ipu1_sel", base + 0x3c, 11, 3);
310 clk[ipu2_podf] = imx_clk_divider("ipu2_podf", "ipu2_sel", base + 0x3c, 16, 3); 276 clk[IMX6QDL_CLK_IPU2_PODF] = imx_clk_divider("ipu2_podf", "ipu2_sel", base + 0x3c, 16, 3);
311 clk[ldb_di0_div_3_5] = imx_clk_fixed_factor("ldb_di0_div_3_5", "ldb_di0_sel", 2, 7); 277 clk[IMX6QDL_CLK_LDB_DI0_DIV_3_5] = imx_clk_fixed_factor("ldb_di0_div_3_5", "ldb_di0_sel", 2, 7);
312 clk[ldb_di0_podf] = imx_clk_divider_flags("ldb_di0_podf", "ldb_di0_div_3_5", base + 0x20, 10, 1, 0); 278 clk[IMX6QDL_CLK_LDB_DI0_PODF] = imx_clk_divider_flags("ldb_di0_podf", "ldb_di0_div_3_5", base + 0x20, 10, 1, 0);
313 clk[ldb_di1_div_3_5] = imx_clk_fixed_factor("ldb_di1_div_3_5", "ldb_di1_sel", 2, 7); 279 clk[IMX6QDL_CLK_LDB_DI1_DIV_3_5] = imx_clk_fixed_factor("ldb_di1_div_3_5", "ldb_di1_sel", 2, 7);
314 clk[ldb_di1_podf] = imx_clk_divider_flags("ldb_di1_podf", "ldb_di1_div_3_5", base + 0x20, 11, 1, 0); 280 clk[IMX6QDL_CLK_LDB_DI1_PODF] = imx_clk_divider_flags("ldb_di1_podf", "ldb_di1_div_3_5", base + 0x20, 11, 1, 0);
315 clk[ipu1_di0_pre] = imx_clk_divider("ipu1_di0_pre", "ipu1_di0_pre_sel", base + 0x34, 3, 3); 281 clk[IMX6QDL_CLK_IPU1_DI0_PRE] = imx_clk_divider("ipu1_di0_pre", "ipu1_di0_pre_sel", base + 0x34, 3, 3);
316 clk[ipu1_di1_pre] = imx_clk_divider("ipu1_di1_pre", "ipu1_di1_pre_sel", base + 0x34, 12, 3); 282 clk[IMX6QDL_CLK_IPU1_DI1_PRE] = imx_clk_divider("ipu1_di1_pre", "ipu1_di1_pre_sel", base + 0x34, 12, 3);
317 clk[ipu2_di0_pre] = imx_clk_divider("ipu2_di0_pre", "ipu2_di0_pre_sel", base + 0x38, 3, 3); 283 clk[IMX6QDL_CLK_IPU2_DI0_PRE] = imx_clk_divider("ipu2_di0_pre", "ipu2_di0_pre_sel", base + 0x38, 3, 3);
318 clk[ipu2_di1_pre] = imx_clk_divider("ipu2_di1_pre", "ipu2_di1_pre_sel", base + 0x38, 12, 3); 284 clk[IMX6QDL_CLK_IPU2_DI1_PRE] = imx_clk_divider("ipu2_di1_pre", "ipu2_di1_pre_sel", base + 0x38, 12, 3);
319 clk[hsi_tx_podf] = imx_clk_divider("hsi_tx_podf", "hsi_tx_sel", base + 0x30, 29, 3); 285 clk[IMX6QDL_CLK_HSI_TX_PODF] = imx_clk_divider("hsi_tx_podf", "hsi_tx_sel", base + 0x30, 29, 3);
320 clk[ssi1_pred] = imx_clk_divider("ssi1_pred", "ssi1_sel", base + 0x28, 6, 3); 286 clk[IMX6QDL_CLK_SSI1_PRED] = imx_clk_divider("ssi1_pred", "ssi1_sel", base + 0x28, 6, 3);
321 clk[ssi1_podf] = imx_clk_divider("ssi1_podf", "ssi1_pred", base + 0x28, 0, 6); 287 clk[IMX6QDL_CLK_SSI1_PODF] = imx_clk_divider("ssi1_podf", "ssi1_pred", base + 0x28, 0, 6);
322 clk[ssi2_pred] = imx_clk_divider("ssi2_pred", "ssi2_sel", base + 0x2c, 6, 3); 288 clk[IMX6QDL_CLK_SSI2_PRED] = imx_clk_divider("ssi2_pred", "ssi2_sel", base + 0x2c, 6, 3);
323 clk[ssi2_podf] = imx_clk_divider("ssi2_podf", "ssi2_pred", base + 0x2c, 0, 6); 289 clk[IMX6QDL_CLK_SSI2_PODF] = imx_clk_divider("ssi2_podf", "ssi2_pred", base + 0x2c, 0, 6);
324 clk[ssi3_pred] = imx_clk_divider("ssi3_pred", "ssi3_sel", base + 0x28, 22, 3); 290 clk[IMX6QDL_CLK_SSI3_PRED] = imx_clk_divider("ssi3_pred", "ssi3_sel", base + 0x28, 22, 3);
325 clk[ssi3_podf] = imx_clk_divider("ssi3_podf", "ssi3_pred", base + 0x28, 16, 6); 291 clk[IMX6QDL_CLK_SSI3_PODF] = imx_clk_divider("ssi3_podf", "ssi3_pred", base + 0x28, 16, 6);
326 clk[uart_serial_podf] = imx_clk_divider("uart_serial_podf", "pll3_80m", base + 0x24, 0, 6); 292 clk[IMX6QDL_CLK_UART_SERIAL_PODF] = imx_clk_divider("uart_serial_podf", "pll3_80m", base + 0x24, 0, 6);
327 clk[usdhc1_podf] = imx_clk_divider("usdhc1_podf", "usdhc1_sel", base + 0x24, 11, 3); 293 clk[IMX6QDL_CLK_USDHC1_PODF] = imx_clk_divider("usdhc1_podf", "usdhc1_sel", base + 0x24, 11, 3);
328 clk[usdhc2_podf] = imx_clk_divider("usdhc2_podf", "usdhc2_sel", base + 0x24, 16, 3); 294 clk[IMX6QDL_CLK_USDHC2_PODF] = imx_clk_divider("usdhc2_podf", "usdhc2_sel", base + 0x24, 16, 3);
329 clk[usdhc3_podf] = imx_clk_divider("usdhc3_podf", "usdhc3_sel", base + 0x24, 19, 3); 295 clk[IMX6QDL_CLK_USDHC3_PODF] = imx_clk_divider("usdhc3_podf", "usdhc3_sel", base + 0x24, 19, 3);
330 clk[usdhc4_podf] = imx_clk_divider("usdhc4_podf", "usdhc4_sel", base + 0x24, 22, 3); 296 clk[IMX6QDL_CLK_USDHC4_PODF] = imx_clk_divider("usdhc4_podf", "usdhc4_sel", base + 0x24, 22, 3);
331 clk[enfc_pred] = imx_clk_divider("enfc_pred", "enfc_sel", base + 0x2c, 18, 3); 297 clk[IMX6QDL_CLK_ENFC_PRED] = imx_clk_divider("enfc_pred", "enfc_sel", base + 0x2c, 18, 3);
332 clk[enfc_podf] = imx_clk_divider("enfc_podf", "enfc_pred", base + 0x2c, 21, 6); 298 clk[IMX6QDL_CLK_ENFC_PODF] = imx_clk_divider("enfc_podf", "enfc_pred", base + 0x2c, 21, 6);
333 clk[emi_podf] = imx_clk_fixup_divider("emi_podf", "emi_sel", base + 0x1c, 20, 3, imx_cscmr1_fixup); 299 clk[IMX6QDL_CLK_EMI_PODF] = imx_clk_fixup_divider("emi_podf", "emi_sel", base + 0x1c, 20, 3, imx_cscmr1_fixup);
334 clk[emi_slow_podf] = imx_clk_fixup_divider("emi_slow_podf", "emi_slow_sel", base + 0x1c, 23, 3, imx_cscmr1_fixup); 300 clk[IMX6QDL_CLK_EMI_SLOW_PODF] = imx_clk_fixup_divider("emi_slow_podf", "emi_slow_sel", base + 0x1c, 23, 3, imx_cscmr1_fixup);
335 clk[vpu_axi_podf] = imx_clk_divider("vpu_axi_podf", "vpu_axi_sel", base + 0x24, 25, 3); 301 clk[IMX6QDL_CLK_VPU_AXI_PODF] = imx_clk_divider("vpu_axi_podf", "vpu_axi_sel", base + 0x24, 25, 3);
336 clk[cko1_podf] = imx_clk_divider("cko1_podf", "cko1_sel", base + 0x60, 4, 3); 302 clk[IMX6QDL_CLK_CKO1_PODF] = imx_clk_divider("cko1_podf", "cko1_sel", base + 0x60, 4, 3);
337 clk[cko2_podf] = imx_clk_divider("cko2_podf", "cko2_sel", base + 0x60, 21, 3); 303 clk[IMX6QDL_CLK_CKO2_PODF] = imx_clk_divider("cko2_podf", "cko2_sel", base + 0x60, 21, 3);
338 304
339 /* name parent_name reg shift width busy: reg, shift */ 305 /* name parent_name reg shift width busy: reg, shift */
340 clk[axi] = imx_clk_busy_divider("axi", "axi_sel", base + 0x14, 16, 3, base + 0x48, 0); 306 clk[IMX6QDL_CLK_AXI] = imx_clk_busy_divider("axi", "axi_sel", base + 0x14, 16, 3, base + 0x48, 0);
341 clk[mmdc_ch0_axi_podf] = imx_clk_busy_divider("mmdc_ch0_axi_podf", "periph", base + 0x14, 19, 3, base + 0x48, 4); 307 clk[IMX6QDL_CLK_MMDC_CH0_AXI_PODF] = imx_clk_busy_divider("mmdc_ch0_axi_podf", "periph", base + 0x14, 19, 3, base + 0x48, 4);
342 clk[mmdc_ch1_axi_podf] = imx_clk_busy_divider("mmdc_ch1_axi_podf", "periph2", base + 0x14, 3, 3, base + 0x48, 2); 308 clk[IMX6QDL_CLK_MMDC_CH1_AXI_PODF] = imx_clk_busy_divider("mmdc_ch1_axi_podf", "periph2", base + 0x14, 3, 3, base + 0x48, 2);
343 clk[arm] = imx_clk_busy_divider("arm", "pll1_sw", base + 0x10, 0, 3, base + 0x48, 16); 309 clk[IMX6QDL_CLK_ARM] = imx_clk_busy_divider("arm", "pll1_sw", base + 0x10, 0, 3, base + 0x48, 16);
344 clk[ahb] = imx_clk_busy_divider("ahb", "periph", base + 0x14, 10, 3, base + 0x48, 1); 310 clk[IMX6QDL_CLK_AHB] = imx_clk_busy_divider("ahb", "periph", base + 0x14, 10, 3, base + 0x48, 1);
345 311
346 /* name parent_name reg shift */ 312 /* name parent_name reg shift */
347 clk[apbh_dma] = imx_clk_gate2("apbh_dma", "usdhc3", base + 0x68, 4); 313 clk[IMX6QDL_CLK_APBH_DMA] = imx_clk_gate2("apbh_dma", "usdhc3", base + 0x68, 4);
348 clk[asrc] = imx_clk_gate2("asrc", "asrc_podf", base + 0x68, 6); 314 clk[IMX6QDL_CLK_ASRC] = imx_clk_gate2("asrc", "asrc_podf", base + 0x68, 6);
349 clk[can1_ipg] = imx_clk_gate2("can1_ipg", "ipg", base + 0x68, 14); 315 clk[IMX6QDL_CLK_CAN1_IPG] = imx_clk_gate2("can1_ipg", "ipg", base + 0x68, 14);
350 clk[can1_serial] = imx_clk_gate2("can1_serial", "can_root", base + 0x68, 16); 316 clk[IMX6QDL_CLK_CAN1_SERIAL] = imx_clk_gate2("can1_serial", "can_root", base + 0x68, 16);
351 clk[can2_ipg] = imx_clk_gate2("can2_ipg", "ipg", base + 0x68, 18); 317 clk[IMX6QDL_CLK_CAN2_IPG] = imx_clk_gate2("can2_ipg", "ipg", base + 0x68, 18);
352 clk[can2_serial] = imx_clk_gate2("can2_serial", "can_root", base + 0x68, 20); 318 clk[IMX6QDL_CLK_CAN2_SERIAL] = imx_clk_gate2("can2_serial", "can_root", base + 0x68, 20);
353 clk[ecspi1] = imx_clk_gate2("ecspi1", "ecspi_root", base + 0x6c, 0); 319 clk[IMX6QDL_CLK_ECSPI1] = imx_clk_gate2("ecspi1", "ecspi_root", base + 0x6c, 0);
354 clk[ecspi2] = imx_clk_gate2("ecspi2", "ecspi_root", base + 0x6c, 2); 320 clk[IMX6QDL_CLK_ECSPI2] = imx_clk_gate2("ecspi2", "ecspi_root", base + 0x6c, 2);
355 clk[ecspi3] = imx_clk_gate2("ecspi3", "ecspi_root", base + 0x6c, 4); 321 clk[IMX6QDL_CLK_ECSPI3] = imx_clk_gate2("ecspi3", "ecspi_root", base + 0x6c, 4);
356 clk[ecspi4] = imx_clk_gate2("ecspi4", "ecspi_root", base + 0x6c, 6); 322 clk[IMX6QDL_CLK_ECSPI4] = imx_clk_gate2("ecspi4", "ecspi_root", base + 0x6c, 6);
357 if (cpu_is_imx6dl()) 323 if (cpu_is_imx6dl())
358 /* ecspi5 is replaced with i2c4 on imx6dl & imx6s */ 324 clk[IMX6DL_CLK_I2C4] = imx_clk_gate2("i2c4", "ipg_per", base + 0x6c, 8);
359 clk[ecspi5] = imx_clk_gate2("i2c4", "ipg_per", base + 0x6c, 8);
360 else 325 else
361 clk[ecspi5] = imx_clk_gate2("ecspi5", "ecspi_root", base + 0x6c, 8); 326 clk[IMX6Q_CLK_ECSPI5] = imx_clk_gate2("ecspi5", "ecspi_root", base + 0x6c, 8);
362 clk[enet] = imx_clk_gate2("enet", "ipg", base + 0x6c, 10); 327 clk[IMX6QDL_CLK_ENET] = imx_clk_gate2("enet", "ipg", base + 0x6c, 10);
363 clk[esai] = imx_clk_gate2_shared("esai", "esai_podf", base + 0x6c, 16, &share_count_esai); 328 clk[IMX6QDL_CLK_ESAI] = imx_clk_gate2_shared("esai", "esai_podf", base + 0x6c, 16, &share_count_esai);
364 clk[esai_ahb] = imx_clk_gate2_shared("esai_ahb", "ahb", base + 0x6c, 16, &share_count_esai); 329 clk[IMX6QDL_CLK_ESAI_AHB] = imx_clk_gate2_shared("esai_ahb", "ahb", base + 0x6c, 16, &share_count_esai);
365 clk[gpt_ipg] = imx_clk_gate2("gpt_ipg", "ipg", base + 0x6c, 20); 330 clk[IMX6QDL_CLK_GPT_IPG] = imx_clk_gate2("gpt_ipg", "ipg", base + 0x6c, 20);
366 clk[gpt_ipg_per] = imx_clk_gate2("gpt_ipg_per", "ipg_per", base + 0x6c, 22); 331 clk[IMX6QDL_CLK_GPT_IPG_PER] = imx_clk_gate2("gpt_ipg_per", "ipg_per", base + 0x6c, 22);
367 if (cpu_is_imx6dl()) 332 if (cpu_is_imx6dl())
368 /* 333 /*
369 * The multiplexer and divider of imx6q clock gpu3d_shader get 334 * The multiplexer and divider of imx6q clock gpu3d_shader get
370 * redefined/reused as gpu2d_core_sel and gpu2d_core_podf on imx6dl. 335 * redefined/reused as gpu2d_core_sel and gpu2d_core_podf on imx6dl.
371 */ 336 */
372 clk[gpu2d_core] = imx_clk_gate2("gpu2d_core", "gpu3d_shader", base + 0x6c, 24); 337 clk[IMX6QDL_CLK_GPU2D_CORE] = imx_clk_gate2("gpu2d_core", "gpu3d_shader", base + 0x6c, 24);
373 else 338 else
374 clk[gpu2d_core] = imx_clk_gate2("gpu2d_core", "gpu2d_core_podf", base + 0x6c, 24); 339 clk[IMX6QDL_CLK_GPU2D_CORE] = imx_clk_gate2("gpu2d_core", "gpu2d_core_podf", base + 0x6c, 24);
375 clk[gpu3d_core] = imx_clk_gate2("gpu3d_core", "gpu3d_core_podf", base + 0x6c, 26); 340 clk[IMX6QDL_CLK_GPU3D_CORE] = imx_clk_gate2("gpu3d_core", "gpu3d_core_podf", base + 0x6c, 26);
376 clk[hdmi_iahb] = imx_clk_gate2("hdmi_iahb", "ahb", base + 0x70, 0); 341 clk[IMX6QDL_CLK_HDMI_IAHB] = imx_clk_gate2("hdmi_iahb", "ahb", base + 0x70, 0);
377 clk[hdmi_isfr] = imx_clk_gate2("hdmi_isfr", "pll3_pfd1_540m", base + 0x70, 4); 342 clk[IMX6QDL_CLK_HDMI_ISFR] = imx_clk_gate2("hdmi_isfr", "pll3_pfd1_540m", base + 0x70, 4);
378 clk[i2c1] = imx_clk_gate2("i2c1", "ipg_per", base + 0x70, 6); 343 clk[IMX6QDL_CLK_I2C1] = imx_clk_gate2("i2c1", "ipg_per", base + 0x70, 6);
379 clk[i2c2] = imx_clk_gate2("i2c2", "ipg_per", base + 0x70, 8); 344 clk[IMX6QDL_CLK_I2C2] = imx_clk_gate2("i2c2", "ipg_per", base + 0x70, 8);
380 clk[i2c3] = imx_clk_gate2("i2c3", "ipg_per", base + 0x70, 10); 345 clk[IMX6QDL_CLK_I2C3] = imx_clk_gate2("i2c3", "ipg_per", base + 0x70, 10);
381 clk[iim] = imx_clk_gate2("iim", "ipg", base + 0x70, 12); 346 clk[IMX6QDL_CLK_IIM] = imx_clk_gate2("iim", "ipg", base + 0x70, 12);
382 clk[enfc] = imx_clk_gate2("enfc", "enfc_podf", base + 0x70, 14); 347 clk[IMX6QDL_CLK_ENFC] = imx_clk_gate2("enfc", "enfc_podf", base + 0x70, 14);
383 clk[vdoa] = imx_clk_gate2("vdoa", "vdo_axi", base + 0x70, 26); 348 clk[IMX6QDL_CLK_VDOA] = imx_clk_gate2("vdoa", "vdo_axi", base + 0x70, 26);
384 clk[ipu1] = imx_clk_gate2("ipu1", "ipu1_podf", base + 0x74, 0); 349 clk[IMX6QDL_CLK_IPU1] = imx_clk_gate2("ipu1", "ipu1_podf", base + 0x74, 0);
385 clk[ipu1_di0] = imx_clk_gate2("ipu1_di0", "ipu1_di0_sel", base + 0x74, 2); 350 clk[IMX6QDL_CLK_IPU1_DI0] = imx_clk_gate2("ipu1_di0", "ipu1_di0_sel", base + 0x74, 2);
386 clk[ipu1_di1] = imx_clk_gate2("ipu1_di1", "ipu1_di1_sel", base + 0x74, 4); 351 clk[IMX6QDL_CLK_IPU1_DI1] = imx_clk_gate2("ipu1_di1", "ipu1_di1_sel", base + 0x74, 4);
387 clk[ipu2] = imx_clk_gate2("ipu2", "ipu2_podf", base + 0x74, 6); 352 clk[IMX6QDL_CLK_IPU2] = imx_clk_gate2("ipu2", "ipu2_podf", base + 0x74, 6);
388 clk[ipu2_di0] = imx_clk_gate2("ipu2_di0", "ipu2_di0_sel", base + 0x74, 8); 353 clk[IMX6QDL_CLK_IPU2_DI0] = imx_clk_gate2("ipu2_di0", "ipu2_di0_sel", base + 0x74, 8);
389 clk[ldb_di0] = imx_clk_gate2("ldb_di0", "ldb_di0_podf", base + 0x74, 12); 354 clk[IMX6QDL_CLK_LDB_DI0] = imx_clk_gate2("ldb_di0", "ldb_di0_podf", base + 0x74, 12);
390 clk[ldb_di1] = imx_clk_gate2("ldb_di1", "ldb_di1_podf", base + 0x74, 14); 355 clk[IMX6QDL_CLK_LDB_DI1] = imx_clk_gate2("ldb_di1", "ldb_di1_podf", base + 0x74, 14);
391 clk[ipu2_di1] = imx_clk_gate2("ipu2_di1", "ipu2_di1_sel", base + 0x74, 10); 356 clk[IMX6QDL_CLK_IPU2_DI1] = imx_clk_gate2("ipu2_di1", "ipu2_di1_sel", base + 0x74, 10);
392 clk[hsi_tx] = imx_clk_gate2("hsi_tx", "hsi_tx_podf", base + 0x74, 16); 357 clk[IMX6QDL_CLK_HSI_TX] = imx_clk_gate2("hsi_tx", "hsi_tx_podf", base + 0x74, 16);
393 if (cpu_is_imx6dl()) 358 if (cpu_is_imx6dl())
394 /* 359 /*
395 * The multiplexer and divider of the imx6q clock gpu2d get 360 * The multiplexer and divider of the imx6q clock gpu2d get
396 * redefined/reused as mlb_sys_sel and mlb_sys_clk_podf on imx6dl. 361 * redefined/reused as mlb_sys_sel and mlb_sys_clk_podf on imx6dl.
397 */ 362 */
398 clk[mlb] = imx_clk_gate2("mlb", "gpu2d_core_podf", base + 0x74, 18); 363 clk[IMX6QDL_CLK_MLB] = imx_clk_gate2("mlb", "gpu2d_core_podf", base + 0x74, 18);
399 else 364 else
400 clk[mlb] = imx_clk_gate2("mlb", "axi", base + 0x74, 18); 365 clk[IMX6QDL_CLK_MLB] = imx_clk_gate2("mlb", "axi", base + 0x74, 18);
401 clk[mmdc_ch0_axi] = imx_clk_gate2("mmdc_ch0_axi", "mmdc_ch0_axi_podf", base + 0x74, 20); 366 clk[IMX6QDL_CLK_MMDC_CH0_AXI] = imx_clk_gate2("mmdc_ch0_axi", "mmdc_ch0_axi_podf", base + 0x74, 20);
402 clk[mmdc_ch1_axi] = imx_clk_gate2("mmdc_ch1_axi", "mmdc_ch1_axi_podf", base + 0x74, 22); 367 clk[IMX6QDL_CLK_MMDC_CH1_AXI] = imx_clk_gate2("mmdc_ch1_axi", "mmdc_ch1_axi_podf", base + 0x74, 22);
403 clk[ocram] = imx_clk_gate2("ocram", "ahb", base + 0x74, 28); 368 clk[IMX6QDL_CLK_OCRAM] = imx_clk_gate2("ocram", "ahb", base + 0x74, 28);
404 clk[openvg_axi] = imx_clk_gate2("openvg_axi", "axi", base + 0x74, 30); 369 clk[IMX6QDL_CLK_OPENVG_AXI] = imx_clk_gate2("openvg_axi", "axi", base + 0x74, 30);
405 clk[pcie_axi] = imx_clk_gate2("pcie_axi", "pcie_axi_sel", base + 0x78, 0); 370 clk[IMX6QDL_CLK_PCIE_AXI] = imx_clk_gate2("pcie_axi", "pcie_axi_sel", base + 0x78, 0);
406 clk[per1_bch] = imx_clk_gate2("per1_bch", "usdhc3", base + 0x78, 12); 371 clk[IMX6QDL_CLK_PER1_BCH] = imx_clk_gate2("per1_bch", "usdhc3", base + 0x78, 12);
407 clk[pwm1] = imx_clk_gate2("pwm1", "ipg_per", base + 0x78, 16); 372 clk[IMX6QDL_CLK_PWM1] = imx_clk_gate2("pwm1", "ipg_per", base + 0x78, 16);
408 clk[pwm2] = imx_clk_gate2("pwm2", "ipg_per", base + 0x78, 18); 373 clk[IMX6QDL_CLK_PWM2] = imx_clk_gate2("pwm2", "ipg_per", base + 0x78, 18);
409 clk[pwm3] = imx_clk_gate2("pwm3", "ipg_per", base + 0x78, 20); 374 clk[IMX6QDL_CLK_PWM3] = imx_clk_gate2("pwm3", "ipg_per", base + 0x78, 20);
410 clk[pwm4] = imx_clk_gate2("pwm4", "ipg_per", base + 0x78, 22); 375 clk[IMX6QDL_CLK_PWM4] = imx_clk_gate2("pwm4", "ipg_per", base + 0x78, 22);
411 clk[gpmi_bch_apb] = imx_clk_gate2("gpmi_bch_apb", "usdhc3", base + 0x78, 24); 376 clk[IMX6QDL_CLK_GPMI_BCH_APB] = imx_clk_gate2("gpmi_bch_apb", "usdhc3", base + 0x78, 24);
412 clk[gpmi_bch] = imx_clk_gate2("gpmi_bch", "usdhc4", base + 0x78, 26); 377 clk[IMX6QDL_CLK_GPMI_BCH] = imx_clk_gate2("gpmi_bch", "usdhc4", base + 0x78, 26);
413 clk[gpmi_io] = imx_clk_gate2("gpmi_io", "enfc", base + 0x78, 28); 378 clk[IMX6QDL_CLK_GPMI_IO] = imx_clk_gate2("gpmi_io", "enfc", base + 0x78, 28);
414 clk[gpmi_apb] = imx_clk_gate2("gpmi_apb", "usdhc3", base + 0x78, 30); 379 clk[IMX6QDL_CLK_GPMI_APB] = imx_clk_gate2("gpmi_apb", "usdhc3", base + 0x78, 30);
415 clk[rom] = imx_clk_gate2("rom", "ahb", base + 0x7c, 0); 380 clk[IMX6QDL_CLK_ROM] = imx_clk_gate2("rom", "ahb", base + 0x7c, 0);
416 clk[sata] = imx_clk_gate2("sata", "ipg", base + 0x7c, 4); 381 clk[IMX6QDL_CLK_SATA] = imx_clk_gate2("sata", "ipg", base + 0x7c, 4);
417 clk[sdma] = imx_clk_gate2("sdma", "ahb", base + 0x7c, 6); 382 clk[IMX6QDL_CLK_SDMA] = imx_clk_gate2("sdma", "ahb", base + 0x7c, 6);
418 clk[spba] = imx_clk_gate2("spba", "ipg", base + 0x7c, 12); 383 clk[IMX6QDL_CLK_SPBA] = imx_clk_gate2("spba", "ipg", base + 0x7c, 12);
419 clk[spdif] = imx_clk_gate2("spdif", "spdif_podf", base + 0x7c, 14); 384 clk[IMX6QDL_CLK_SPDIF] = imx_clk_gate2("spdif", "spdif_podf", base + 0x7c, 14);
420 clk[ssi1_ipg] = imx_clk_gate2("ssi1_ipg", "ipg", base + 0x7c, 18); 385 clk[IMX6QDL_CLK_SSI1_IPG] = imx_clk_gate2("ssi1_ipg", "ipg", base + 0x7c, 18);
421 clk[ssi2_ipg] = imx_clk_gate2("ssi2_ipg", "ipg", base + 0x7c, 20); 386 clk[IMX6QDL_CLK_SSI2_IPG] = imx_clk_gate2("ssi2_ipg", "ipg", base + 0x7c, 20);
422 clk[ssi3_ipg] = imx_clk_gate2("ssi3_ipg", "ipg", base + 0x7c, 22); 387 clk[IMX6QDL_CLK_SSI3_IPG] = imx_clk_gate2("ssi3_ipg", "ipg", base + 0x7c, 22);
423 clk[uart_ipg] = imx_clk_gate2("uart_ipg", "ipg", base + 0x7c, 24); 388 clk[IMX6QDL_CLK_UART_IPG] = imx_clk_gate2("uart_ipg", "ipg", base + 0x7c, 24);
424 clk[uart_serial] = imx_clk_gate2("uart_serial", "uart_serial_podf", base + 0x7c, 26); 389 clk[IMX6QDL_CLK_UART_SERIAL] = imx_clk_gate2("uart_serial", "uart_serial_podf", base + 0x7c, 26);
425 clk[usboh3] = imx_clk_gate2("usboh3", "ipg", base + 0x80, 0); 390 clk[IMX6QDL_CLK_USBOH3] = imx_clk_gate2("usboh3", "ipg", base + 0x80, 0);
426 clk[usdhc1] = imx_clk_gate2("usdhc1", "usdhc1_podf", base + 0x80, 2); 391 clk[IMX6QDL_CLK_USDHC1] = imx_clk_gate2("usdhc1", "usdhc1_podf", base + 0x80, 2);
427 clk[usdhc2] = imx_clk_gate2("usdhc2", "usdhc2_podf", base + 0x80, 4); 392 clk[IMX6QDL_CLK_USDHC2] = imx_clk_gate2("usdhc2", "usdhc2_podf", base + 0x80, 4);
428 clk[usdhc3] = imx_clk_gate2("usdhc3", "usdhc3_podf", base + 0x80, 6); 393 clk[IMX6QDL_CLK_USDHC3] = imx_clk_gate2("usdhc3", "usdhc3_podf", base + 0x80, 6);
429 clk[usdhc4] = imx_clk_gate2("usdhc4", "usdhc4_podf", base + 0x80, 8); 394 clk[IMX6QDL_CLK_USDHC4] = imx_clk_gate2("usdhc4", "usdhc4_podf", base + 0x80, 8);
430 clk[eim_slow] = imx_clk_gate2("eim_slow", "emi_slow_podf", base + 0x80, 10); 395 clk[IMX6QDL_CLK_EIM_SLOW] = imx_clk_gate2("eim_slow", "emi_slow_podf", base + 0x80, 10);
431 clk[vdo_axi] = imx_clk_gate2("vdo_axi", "vdo_axi_sel", base + 0x80, 12); 396 clk[IMX6QDL_CLK_VDO_AXI] = imx_clk_gate2("vdo_axi", "vdo_axi_sel", base + 0x80, 12);
432 clk[vpu_axi] = imx_clk_gate2("vpu_axi", "vpu_axi_podf", base + 0x80, 14); 397 clk[IMX6QDL_CLK_VPU_AXI] = imx_clk_gate2("vpu_axi", "vpu_axi_podf", base + 0x80, 14);
433 clk[cko1] = imx_clk_gate("cko1", "cko1_podf", base + 0x60, 7); 398 clk[IMX6QDL_CLK_CKO1] = imx_clk_gate("cko1", "cko1_podf", base + 0x60, 7);
434 clk[cko2] = imx_clk_gate("cko2", "cko2_podf", base + 0x60, 24); 399 clk[IMX6QDL_CLK_CKO2] = imx_clk_gate("cko2", "cko2_podf", base + 0x60, 24);
435 400
436 for (i = 0; i < ARRAY_SIZE(clk); i++) 401 imx_check_clocks(clk, ARRAY_SIZE(clk));
437 if (IS_ERR(clk[i]))
438 pr_err("i.MX6q clk %d: register failed with %ld\n",
439 i, PTR_ERR(clk[i]));
440 402
441 clk_data.clks = clk; 403 clk_data.clks = clk;
442 clk_data.clk_num = ARRAY_SIZE(clk); 404 clk_data.clk_num = ARRAY_SIZE(clk);
443 of_clk_add_provider(np, of_clk_src_onecell_get, &clk_data); 405 of_clk_add_provider(np, of_clk_src_onecell_get, &clk_data);
444 406
445 clk_register_clkdev(clk[gpt_ipg], "ipg", "imx-gpt.0"); 407 clk_register_clkdev(clk[IMX6QDL_CLK_ENET_REF], "enet_ref", NULL);
446 clk_register_clkdev(clk[gpt_ipg_per], "per", "imx-gpt.0");
447 clk_register_clkdev(clk[enet_ref], "enet_ref", NULL);
448 408
449 if ((imx_get_soc_revision() != IMX_CHIP_REVISION_1_0) || 409 if ((imx_get_soc_revision() != IMX_CHIP_REVISION_1_0) ||
450 cpu_is_imx6dl()) { 410 cpu_is_imx6dl()) {
451 clk_set_parent(clk[ldb_di0_sel], clk[pll5_video_div]); 411 clk_set_parent(clk[IMX6QDL_CLK_LDB_DI0_SEL], clk[IMX6QDL_CLK_PLL5_VIDEO_DIV]);
452 clk_set_parent(clk[ldb_di1_sel], clk[pll5_video_div]); 412 clk_set_parent(clk[IMX6QDL_CLK_LDB_DI1_SEL], clk[IMX6QDL_CLK_PLL5_VIDEO_DIV]);
453 } 413 }
454 414
455 clk_set_parent(clk[ipu1_di0_pre_sel], clk[pll5_video_div]); 415 clk_set_parent(clk[IMX6QDL_CLK_IPU1_DI0_PRE_SEL], clk[IMX6QDL_CLK_PLL5_VIDEO_DIV]);
456 clk_set_parent(clk[ipu1_di1_pre_sel], clk[pll5_video_div]); 416 clk_set_parent(clk[IMX6QDL_CLK_IPU1_DI1_PRE_SEL], clk[IMX6QDL_CLK_PLL5_VIDEO_DIV]);
457 clk_set_parent(clk[ipu2_di0_pre_sel], clk[pll5_video_div]); 417 clk_set_parent(clk[IMX6QDL_CLK_IPU2_DI0_PRE_SEL], clk[IMX6QDL_CLK_PLL5_VIDEO_DIV]);
458 clk_set_parent(clk[ipu2_di1_pre_sel], clk[pll5_video_div]); 418 clk_set_parent(clk[IMX6QDL_CLK_IPU2_DI1_PRE_SEL], clk[IMX6QDL_CLK_PLL5_VIDEO_DIV]);
459 clk_set_parent(clk[ipu1_di0_sel], clk[ipu1_di0_pre]); 419 clk_set_parent(clk[IMX6QDL_CLK_IPU1_DI0_SEL], clk[IMX6QDL_CLK_IPU1_DI0_PRE]);
460 clk_set_parent(clk[ipu1_di1_sel], clk[ipu1_di1_pre]); 420 clk_set_parent(clk[IMX6QDL_CLK_IPU1_DI1_SEL], clk[IMX6QDL_CLK_IPU1_DI1_PRE]);
461 clk_set_parent(clk[ipu2_di0_sel], clk[ipu2_di0_pre]); 421 clk_set_parent(clk[IMX6QDL_CLK_IPU2_DI0_SEL], clk[IMX6QDL_CLK_IPU2_DI0_PRE]);
462 clk_set_parent(clk[ipu2_di1_sel], clk[ipu2_di1_pre]); 422 clk_set_parent(clk[IMX6QDL_CLK_IPU2_DI1_SEL], clk[IMX6QDL_CLK_IPU2_DI1_PRE]);
463 423
464 /* 424 /*
465 * The gpmi needs 100MHz frequency in the EDO/Sync mode, 425 * The gpmi needs 100MHz frequency in the EDO/Sync mode,
466 * We can not get the 100MHz from the pll2_pfd0_352m. 426 * We can not get the 100MHz from the pll2_pfd0_352m.
467 * So choose pll2_pfd2_396m as enfc_sel's parent. 427 * So choose pll2_pfd2_396m as enfc_sel's parent.
468 */ 428 */
469 clk_set_parent(clk[enfc_sel], clk[pll2_pfd2_396m]); 429 clk_set_parent(clk[IMX6QDL_CLK_ENFC_SEL], clk[IMX6QDL_CLK_PLL2_PFD2_396M]);
470 430
471 for (i = 0; i < ARRAY_SIZE(clks_init_on); i++) 431 for (i = 0; i < ARRAY_SIZE(clks_init_on); i++)
472 clk_prepare_enable(clk[clks_init_on[i]]); 432 clk_prepare_enable(clk[clks_init_on[i]]);
473 433
474 if (IS_ENABLED(CONFIG_USB_MXS_PHY)) { 434 if (IS_ENABLED(CONFIG_USB_MXS_PHY)) {
475 clk_prepare_enable(clk[usbphy1_gate]); 435 clk_prepare_enable(clk[IMX6QDL_CLK_USBPHY1_GATE]);
476 clk_prepare_enable(clk[usbphy2_gate]); 436 clk_prepare_enable(clk[IMX6QDL_CLK_USBPHY2_GATE]);
477 } 437 }
478 438
479 /* 439 /*
480 * Let's initially set up CLKO with OSC24M, since this configuration 440 * Let's initially set up CLKO with OSC24M, since this configuration
481 * is widely used by imx6q board designs to clock audio codec. 441 * is widely used by imx6q board designs to clock audio codec.
482 */ 442 */
483 ret = clk_set_parent(clk[cko2_sel], clk[osc]); 443 ret = clk_set_parent(clk[IMX6QDL_CLK_CKO2_SEL], clk[IMX6QDL_CLK_OSC]);
484 if (!ret) 444 if (!ret)
485 ret = clk_set_parent(clk[cko], clk[cko2]); 445 ret = clk_set_parent(clk[IMX6QDL_CLK_CKO], clk[IMX6QDL_CLK_CKO2]);
486 if (ret) 446 if (ret)
487 pr_warn("failed to set up CLKO: %d\n", ret); 447 pr_warn("failed to set up CLKO: %d\n", ret);
488 448
489 /* Audio-related clocks configuration */ 449 /* Audio-related clocks configuration */
490 clk_set_parent(clk[spdif_sel], clk[pll3_pfd3_454m]); 450 clk_set_parent(clk[IMX6QDL_CLK_SPDIF_SEL], clk[IMX6QDL_CLK_PLL3_PFD3_454M]);
491 451
492 /* All existing boards with PCIe use LVDS1 */ 452 /* All existing boards with PCIe use LVDS1 */
493 if (IS_ENABLED(CONFIG_PCI_IMX6)) 453 if (IS_ENABLED(CONFIG_PCI_IMX6))
494 clk_set_parent(clk[lvds1_sel], clk[sata_ref]); 454 clk_set_parent(clk[IMX6QDL_CLK_LVDS1_SEL], clk[IMX6QDL_CLK_SATA_REF_100M]);
495 455
496 /* Set initial power mode */ 456 /* Set initial power mode */
497 imx6q_set_lpm(WAIT_CLOCKED); 457 imx6q_set_lpm(WAIT_CLOCKED);
498
499 mxc_timer_init_dt(of_find_compatible_node(NULL, NULL, "fsl,imx6q-gpt"));
500} 458}
501CLK_OF_DECLARE(imx6q, "fsl,imx6q-ccm", imx6q_clocks_init); 459CLK_OF_DECLARE(imx6q, "fsl,imx6q-ccm", imx6q_clocks_init);
diff --git a/arch/arm/mach-imx/clk-imx6sl.c b/arch/arm/mach-imx/clk-imx6sl.c
index 5408ca70c8d6..fef46faf692f 100644
--- a/arch/arm/mach-imx/clk-imx6sl.c
+++ b/arch/arm/mach-imx/clk-imx6sl.c
@@ -348,18 +348,12 @@ static void __init imx6sl_clocks_init(struct device_node *ccm_node)
348 clks[IMX6SL_CLK_USDHC3] = imx_clk_gate2("usdhc3", "usdhc3_podf", base + 0x80, 6); 348 clks[IMX6SL_CLK_USDHC3] = imx_clk_gate2("usdhc3", "usdhc3_podf", base + 0x80, 6);
349 clks[IMX6SL_CLK_USDHC4] = imx_clk_gate2("usdhc4", "usdhc4_podf", base + 0x80, 8); 349 clks[IMX6SL_CLK_USDHC4] = imx_clk_gate2("usdhc4", "usdhc4_podf", base + 0x80, 8);
350 350
351 for (i = 0; i < ARRAY_SIZE(clks); i++) 351 imx_check_clocks(clks, ARRAY_SIZE(clks));
352 if (IS_ERR(clks[i]))
353 pr_err("i.MX6SL clk %d: register failed with %ld\n",
354 i, PTR_ERR(clks[i]));
355 352
356 clk_data.clks = clks; 353 clk_data.clks = clks;
357 clk_data.clk_num = ARRAY_SIZE(clks); 354 clk_data.clk_num = ARRAY_SIZE(clks);
358 of_clk_add_provider(np, of_clk_src_onecell_get, &clk_data); 355 of_clk_add_provider(np, of_clk_src_onecell_get, &clk_data);
359 356
360 clk_register_clkdev(clks[IMX6SL_CLK_GPT], "ipg", "imx-gpt.0");
361 clk_register_clkdev(clks[IMX6SL_CLK_GPT_SERIAL], "per", "imx-gpt.0");
362
363 /* Ensure the AHB clk is at 132MHz. */ 357 /* Ensure the AHB clk is at 132MHz. */
364 ret = clk_set_rate(clks[IMX6SL_CLK_AHB], 132000000); 358 ret = clk_set_rate(clks[IMX6SL_CLK_AHB], 132000000);
365 if (ret) 359 if (ret)
@@ -383,8 +377,5 @@ static void __init imx6sl_clocks_init(struct device_node *ccm_node)
383 377
384 /* Set initial power mode */ 378 /* Set initial power mode */
385 imx6q_set_lpm(WAIT_CLOCKED); 379 imx6q_set_lpm(WAIT_CLOCKED);
386
387 np = of_find_compatible_node(NULL, NULL, "fsl,imx6sl-gpt");
388 mxc_timer_init_dt(np);
389} 380}
390CLK_OF_DECLARE(imx6sl, "fsl,imx6sl-ccm", imx6sl_clocks_init); 381CLK_OF_DECLARE(imx6sl, "fsl,imx6sl-ccm", imx6sl_clocks_init);
diff --git a/arch/arm/mach-imx/clk-imx6sx.c b/arch/arm/mach-imx/clk-imx6sx.c
index 72f8902235d1..ecde72bdfe88 100644
--- a/arch/arm/mach-imx/clk-imx6sx.c
+++ b/arch/arm/mach-imx/clk-imx6sx.c
@@ -124,6 +124,9 @@ static struct clk_div_table video_div_table[] = {
124static u32 share_count_asrc; 124static u32 share_count_asrc;
125static u32 share_count_audio; 125static u32 share_count_audio;
126static u32 share_count_esai; 126static u32 share_count_esai;
127static u32 share_count_ssi1;
128static u32 share_count_ssi2;
129static u32 share_count_ssi3;
127 130
128static void __init imx6sx_clocks_init(struct device_node *ccm_node) 131static void __init imx6sx_clocks_init(struct device_node *ccm_node)
129{ 132{
@@ -409,12 +412,12 @@ static void __init imx6sx_clocks_init(struct device_node *ccm_node)
409 clks[IMX6SX_CLK_SPBA] = imx_clk_gate2("spba", "ipg", base + 0x7c, 12); 412 clks[IMX6SX_CLK_SPBA] = imx_clk_gate2("spba", "ipg", base + 0x7c, 12);
410 clks[IMX6SX_CLK_AUDIO] = imx_clk_gate2_shared("audio", "audio_podf", base + 0x7c, 14, &share_count_audio); 413 clks[IMX6SX_CLK_AUDIO] = imx_clk_gate2_shared("audio", "audio_podf", base + 0x7c, 14, &share_count_audio);
411 clks[IMX6SX_CLK_SPDIF] = imx_clk_gate2_shared("spdif", "spdif_podf", base + 0x7c, 14, &share_count_audio); 414 clks[IMX6SX_CLK_SPDIF] = imx_clk_gate2_shared("spdif", "spdif_podf", base + 0x7c, 14, &share_count_audio);
412 clks[IMX6SX_CLK_SSI1_IPG] = imx_clk_gate2("ssi1_ipg", "ipg", base + 0x7c, 18); 415 clks[IMX6SX_CLK_SSI1_IPG] = imx_clk_gate2_shared("ssi1_ipg", "ipg", base + 0x7c, 18, &share_count_ssi1);
413 clks[IMX6SX_CLK_SSI2_IPG] = imx_clk_gate2("ssi2_ipg", "ipg", base + 0x7c, 20); 416 clks[IMX6SX_CLK_SSI2_IPG] = imx_clk_gate2_shared("ssi2_ipg", "ipg", base + 0x7c, 20, &share_count_ssi2);
414 clks[IMX6SX_CLK_SSI3_IPG] = imx_clk_gate2("ssi3_ipg", "ipg", base + 0x7c, 22); 417 clks[IMX6SX_CLK_SSI3_IPG] = imx_clk_gate2_shared("ssi3_ipg", "ipg", base + 0x7c, 22, &share_count_ssi3);
415 clks[IMX6SX_CLK_SSI1] = imx_clk_gate2("ssi1", "ssi1_podf", base + 0x7c, 18); 418 clks[IMX6SX_CLK_SSI1] = imx_clk_gate2_shared("ssi1", "ssi1_podf", base + 0x7c, 18, &share_count_ssi1);
416 clks[IMX6SX_CLK_SSI2] = imx_clk_gate2("ssi2", "ssi2_podf", base + 0x7c, 20); 419 clks[IMX6SX_CLK_SSI2] = imx_clk_gate2_shared("ssi2", "ssi2_podf", base + 0x7c, 20, &share_count_ssi2);
417 clks[IMX6SX_CLK_SSI3] = imx_clk_gate2("ssi3", "ssi3_podf", base + 0x7c, 22); 420 clks[IMX6SX_CLK_SSI3] = imx_clk_gate2_shared("ssi3", "ssi3_podf", base + 0x7c, 22, &share_count_ssi3);
418 clks[IMX6SX_CLK_UART_IPG] = imx_clk_gate2("uart_ipg", "ipg", base + 0x7c, 24); 421 clks[IMX6SX_CLK_UART_IPG] = imx_clk_gate2("uart_ipg", "ipg", base + 0x7c, 24);
419 clks[IMX6SX_CLK_UART_SERIAL] = imx_clk_gate2("uart_serial", "uart_podf", base + 0x7c, 26); 422 clks[IMX6SX_CLK_UART_SERIAL] = imx_clk_gate2("uart_serial", "uart_podf", base + 0x7c, 26);
420 clks[IMX6SX_CLK_SAI1_IPG] = imx_clk_gate2("sai1_ipg", "ipg", base + 0x7c, 28); 423 clks[IMX6SX_CLK_SAI1_IPG] = imx_clk_gate2("sai1_ipg", "ipg", base + 0x7c, 28);
@@ -443,17 +446,12 @@ static void __init imx6sx_clocks_init(struct device_node *ccm_node)
443 /* mask handshake of mmdc */ 446 /* mask handshake of mmdc */
444 writel_relaxed(BM_CCM_CCDR_MMDC_CH0_MASK, base + CCDR); 447 writel_relaxed(BM_CCM_CCDR_MMDC_CH0_MASK, base + CCDR);
445 448
446 for (i = 0; i < ARRAY_SIZE(clks); i++) 449 imx_check_clocks(clks, ARRAY_SIZE(clks));
447 if (IS_ERR(clks[i]))
448 pr_err("i.MX6sx clk %d: register failed with %ld\n", i, PTR_ERR(clks[i]));
449 450
450 clk_data.clks = clks; 451 clk_data.clks = clks;
451 clk_data.clk_num = ARRAY_SIZE(clks); 452 clk_data.clk_num = ARRAY_SIZE(clks);
452 of_clk_add_provider(np, of_clk_src_onecell_get, &clk_data); 453 of_clk_add_provider(np, of_clk_src_onecell_get, &clk_data);
453 454
454 clk_register_clkdev(clks[IMX6SX_CLK_GPT_BUS], "ipg", "imx-gpt.0");
455 clk_register_clkdev(clks[IMX6SX_CLK_GPT_SERIAL], "per", "imx-gpt.0");
456
457 for (i = 0; i < ARRAY_SIZE(clks_init_on); i++) 455 for (i = 0; i < ARRAY_SIZE(clks_init_on); i++)
458 clk_prepare_enable(clks[clks_init_on[i]]); 456 clk_prepare_enable(clks[clks_init_on[i]]);
459 457
@@ -517,8 +515,5 @@ static void __init imx6sx_clocks_init(struct device_node *ccm_node)
517 515
518 /* Set initial power mode */ 516 /* Set initial power mode */
519 imx6q_set_lpm(WAIT_CLOCKED); 517 imx6q_set_lpm(WAIT_CLOCKED);
520
521 np = of_find_compatible_node(NULL, NULL, "fsl,imx6sx-gpt");
522 mxc_timer_init_dt(np);
523} 518}
524CLK_OF_DECLARE(imx6sx, "fsl,imx6sx-ccm", imx6sx_clocks_init); 519CLK_OF_DECLARE(imx6sx, "fsl,imx6sx-ccm", imx6sx_clocks_init);
diff --git a/arch/arm/mach-imx/clk-vf610.c b/arch/arm/mach-imx/clk-vf610.c
index 22dc3ee21fd4..f60d6d569ce3 100644
--- a/arch/arm/mach-imx/clk-vf610.c
+++ b/arch/arm/mach-imx/clk-vf610.c
@@ -295,14 +295,18 @@ static void __init vf610_clocks_init(struct device_node *ccm_node)
295 295
296 clk[VF610_CLK_ASRC] = imx_clk_gate2("asrc", "ipg_bus", CCM_CCGR4, CCM_CCGRx_CGn(1)); 296 clk[VF610_CLK_ASRC] = imx_clk_gate2("asrc", "ipg_bus", CCM_CCGR4, CCM_CCGRx_CGn(1));
297 297
298 clk[VF610_CLK_FLEXCAN0] = imx_clk_gate2("flexcan0", "ipg_bus", CCM_CCGR0, CCM_CCGRx_CGn(0)); 298 clk[VF610_CLK_FLEXCAN0_EN] = imx_clk_gate("flexcan0_en", "ipg_bus", CCM_CSCDR2, 11);
299 clk[VF610_CLK_FLEXCAN1] = imx_clk_gate2("flexcan1", "ipg_bus", CCM_CCGR9, CCM_CCGRx_CGn(4)); 299 clk[VF610_CLK_FLEXCAN0] = imx_clk_gate2("flexcan0", "flexcan0_en", CCM_CCGR0, CCM_CCGRx_CGn(0));
300 clk[VF610_CLK_FLEXCAN1_EN] = imx_clk_gate("flexcan1_en", "ipg_bus", CCM_CSCDR2, 12);
301 clk[VF610_CLK_FLEXCAN1] = imx_clk_gate2("flexcan1", "flexcan1_en", CCM_CCGR9, CCM_CCGRx_CGn(4));
300 302
301 clk[VF610_CLK_DMAMUX0] = imx_clk_gate2("dmamux0", "platform_bus", CCM_CCGR0, CCM_CCGRx_CGn(4)); 303 clk[VF610_CLK_DMAMUX0] = imx_clk_gate2("dmamux0", "platform_bus", CCM_CCGR0, CCM_CCGRx_CGn(4));
302 clk[VF610_CLK_DMAMUX1] = imx_clk_gate2("dmamux1", "platform_bus", CCM_CCGR0, CCM_CCGRx_CGn(5)); 304 clk[VF610_CLK_DMAMUX1] = imx_clk_gate2("dmamux1", "platform_bus", CCM_CCGR0, CCM_CCGRx_CGn(5));
303 clk[VF610_CLK_DMAMUX2] = imx_clk_gate2("dmamux2", "platform_bus", CCM_CCGR6, CCM_CCGRx_CGn(1)); 305 clk[VF610_CLK_DMAMUX2] = imx_clk_gate2("dmamux2", "platform_bus", CCM_CCGR6, CCM_CCGRx_CGn(1));
304 clk[VF610_CLK_DMAMUX3] = imx_clk_gate2("dmamux3", "platform_bus", CCM_CCGR6, CCM_CCGRx_CGn(2)); 306 clk[VF610_CLK_DMAMUX3] = imx_clk_gate2("dmamux3", "platform_bus", CCM_CCGR6, CCM_CCGRx_CGn(2));
305 307
308 imx_check_clocks(clk, ARRAY_SIZE(clk));
309
306 clk_set_parent(clk[VF610_CLK_QSPI0_SEL], clk[VF610_CLK_PLL1_PFD4]); 310 clk_set_parent(clk[VF610_CLK_QSPI0_SEL], clk[VF610_CLK_PLL1_PFD4]);
307 clk_set_rate(clk[VF610_CLK_QSPI0_X4_DIV], clk_get_rate(clk[VF610_CLK_QSPI0_SEL]) / 2); 311 clk_set_rate(clk[VF610_CLK_QSPI0_X4_DIV], clk_get_rate(clk[VF610_CLK_QSPI0_SEL]) / 2);
308 clk_set_rate(clk[VF610_CLK_QSPI0_X2_DIV], clk_get_rate(clk[VF610_CLK_QSPI0_X4_DIV]) / 2); 312 clk_set_rate(clk[VF610_CLK_QSPI0_X2_DIV], clk_get_rate(clk[VF610_CLK_QSPI0_X4_DIV]) / 2);
diff --git a/arch/arm/mach-imx/clk.c b/arch/arm/mach-imx/clk.c
index edc35df7bed4..df12b5307175 100644
--- a/arch/arm/mach-imx/clk.c
+++ b/arch/arm/mach-imx/clk.c
@@ -7,6 +7,16 @@
7 7
8DEFINE_SPINLOCK(imx_ccm_lock); 8DEFINE_SPINLOCK(imx_ccm_lock);
9 9
10void __init imx_check_clocks(struct clk *clks[], unsigned int count)
11{
12 unsigned i;
13
14 for (i = 0; i < count; i++)
15 if (IS_ERR(clks[i]))
16 pr_err("i.MX clk %u: register failed with %ld\n",
17 i, PTR_ERR(clks[i]));
18}
19
10static struct clk * __init imx_obtain_fixed_clock_from_dt(const char *name) 20static struct clk * __init imx_obtain_fixed_clock_from_dt(const char *name)
11{ 21{
12 struct of_phandle_args phandle; 22 struct of_phandle_args phandle;
diff --git a/arch/arm/mach-imx/clk.h b/arch/arm/mach-imx/clk.h
index e29f6ebe9f39..d5ba76fee115 100644
--- a/arch/arm/mach-imx/clk.h
+++ b/arch/arm/mach-imx/clk.h
@@ -6,6 +6,8 @@
6 6
7extern spinlock_t imx_ccm_lock; 7extern spinlock_t imx_ccm_lock;
8 8
9void imx_check_clocks(struct clk *clks[], unsigned int count);
10
9extern void imx_cscmr1_fixup(u32 *val); 11extern void imx_cscmr1_fixup(u32 *val);
10 12
11struct clk *imx_clk_pllv1(const char *name, const char *parent, 13struct clk *imx_clk_pllv1(const char *name, const char *parent,
@@ -95,6 +97,13 @@ static inline struct clk *imx_clk_gate(const char *name, const char *parent,
95 shift, 0, &imx_ccm_lock); 97 shift, 0, &imx_ccm_lock);
96} 98}
97 99
100static inline struct clk *imx_clk_gate_dis(const char *name, const char *parent,
101 void __iomem *reg, u8 shift)
102{
103 return clk_register_gate(NULL, name, parent, CLK_SET_RATE_PARENT, reg,
104 shift, CLK_GATE_SET_TO_DISABLE, &imx_ccm_lock);
105}
106
98static inline struct clk *imx_clk_mux(const char *name, void __iomem *reg, 107static inline struct clk *imx_clk_mux(const char *name, void __iomem *reg,
99 u8 shift, u8 width, const char **parents, int num_parents) 108 u8 shift, u8 width, const char **parents, int num_parents)
100{ 109{
diff --git a/arch/arm/mach-imx/common.h b/arch/arm/mach-imx/common.h
index 9ab785ce13e8..22ba8973bcb9 100644
--- a/arch/arm/mach-imx/common.h
+++ b/arch/arm/mach-imx/common.h
@@ -19,6 +19,7 @@ struct pt_regs;
19struct clk; 19struct clk;
20struct device_node; 20struct device_node;
21enum mxc_cpu_pwr_mode; 21enum mxc_cpu_pwr_mode;
22struct of_device_id;
22 23
23void mx1_map_io(void); 24void mx1_map_io(void);
24void mx21_map_io(void); 25void mx21_map_io(void);
@@ -26,48 +27,34 @@ void mx25_map_io(void);
26void mx27_map_io(void); 27void mx27_map_io(void);
27void mx31_map_io(void); 28void mx31_map_io(void);
28void mx35_map_io(void); 29void mx35_map_io(void);
29void mx51_map_io(void);
30void mx53_map_io(void);
31void imx1_init_early(void); 30void imx1_init_early(void);
32void imx21_init_early(void); 31void imx21_init_early(void);
33void imx25_init_early(void); 32void imx25_init_early(void);
34void imx27_init_early(void); 33void imx27_init_early(void);
35void imx31_init_early(void); 34void imx31_init_early(void);
36void imx35_init_early(void); 35void imx35_init_early(void);
37void imx51_init_early(void);
38void imx53_init_early(void);
39void mxc_init_irq(void __iomem *); 36void mxc_init_irq(void __iomem *);
40void tzic_init_irq(void __iomem *); 37void tzic_init_irq(void);
41void mx1_init_irq(void); 38void mx1_init_irq(void);
42void mx21_init_irq(void); 39void mx21_init_irq(void);
43void mx25_init_irq(void); 40void mx25_init_irq(void);
44void mx27_init_irq(void); 41void mx27_init_irq(void);
45void mx31_init_irq(void); 42void mx31_init_irq(void);
46void mx35_init_irq(void); 43void mx35_init_irq(void);
47void mx51_init_irq(void);
48void mx53_init_irq(void);
49void imx1_soc_init(void); 44void imx1_soc_init(void);
50void imx21_soc_init(void); 45void imx21_soc_init(void);
51void imx25_soc_init(void); 46void imx25_soc_init(void);
52void imx27_soc_init(void); 47void imx27_soc_init(void);
53void imx31_soc_init(void); 48void imx31_soc_init(void);
54void imx35_soc_init(void); 49void imx35_soc_init(void);
55void imx51_soc_init(void);
56void imx51_init_late(void);
57void imx53_init_late(void);
58void epit_timer_init(void __iomem *base, int irq); 50void epit_timer_init(void __iomem *base, int irq);
59void mxc_timer_init(void __iomem *, int); 51void mxc_timer_init(void __iomem *, int);
60void mxc_timer_init_dt(struct device_node *);
61int mx1_clocks_init(unsigned long fref); 52int mx1_clocks_init(unsigned long fref);
62int mx21_clocks_init(unsigned long lref, unsigned long fref); 53int mx21_clocks_init(unsigned long lref, unsigned long fref);
63int mx25_clocks_init(void); 54int mx25_clocks_init(void);
64int mx27_clocks_init(unsigned long fref); 55int mx27_clocks_init(unsigned long fref);
65int mx31_clocks_init(unsigned long fref); 56int mx31_clocks_init(unsigned long fref);
66int mx35_clocks_init(void); 57int mx35_clocks_init(void);
67int mx51_clocks_init(unsigned long ckil, unsigned long osc,
68 unsigned long ckih1, unsigned long ckih2);
69int mx25_clocks_init_dt(void);
70int mx27_clocks_init_dt(void);
71int mx31_clocks_init_dt(void); 58int mx31_clocks_init_dt(void);
72struct platform_device *mxc_register_gpio(char *name, int id, 59struct platform_device *mxc_register_gpio(char *name, int id,
73 resource_size_t iobase, resource_size_t iosize, int irq, int irq_high); 60 resource_size_t iobase, resource_size_t iosize, int irq, int irq_high);
@@ -75,8 +62,10 @@ void mxc_set_cpu_type(unsigned int type);
75void mxc_restart(enum reboot_mode, const char *); 62void mxc_restart(enum reboot_mode, const char *);
76void mxc_arch_reset_init(void __iomem *); 63void mxc_arch_reset_init(void __iomem *);
77void mxc_arch_reset_init_dt(void); 64void mxc_arch_reset_init_dt(void);
65int mx51_revision(void);
78int mx53_revision(void); 66int mx53_revision(void);
79void imx_set_aips(void __iomem *); 67void imx_set_aips(void __iomem *);
68void imx_aips_allow_unprivileged_access(const char *compat);
80int mxc_device_init(void); 69int mxc_device_init(void);
81void imx_set_soc_revision(unsigned int rev); 70void imx_set_soc_revision(unsigned int rev);
82unsigned int imx_get_soc_revision(void); 71unsigned int imx_get_soc_revision(void);
@@ -117,7 +106,7 @@ static inline void imx_scu_standby_enable(void) {}
117#endif 106#endif
118void imx_src_init(void); 107void imx_src_init(void);
119void imx_gpc_init(void); 108void imx_gpc_init(void);
120void imx_gpc_pre_suspend(void); 109void imx_gpc_pre_suspend(bool arm_power_off);
121void imx_gpc_post_resume(void); 110void imx_gpc_post_resume(void);
122void imx_gpc_mask_all(void); 111void imx_gpc_mask_all(void);
123void imx_gpc_restore_all(void); 112void imx_gpc_restore_all(void);
@@ -127,7 +116,7 @@ void imx_anatop_init(void);
127void imx_anatop_pre_suspend(void); 116void imx_anatop_pre_suspend(void);
128void imx_anatop_post_resume(void); 117void imx_anatop_post_resume(void);
129int imx6q_set_lpm(enum mxc_cpu_pwr_mode mode); 118int imx6q_set_lpm(enum mxc_cpu_pwr_mode mode);
130void imx6q_set_int_mem_clk_lpm(void); 119void imx6q_set_int_mem_clk_lpm(bool enable);
131void imx6sl_set_wait_clk(bool enter); 120void imx6sl_set_wait_clk(bool enter);
132 121
133void imx_cpu_die(unsigned int cpu); 122void imx_cpu_die(unsigned int cpu);
@@ -144,12 +133,17 @@ static inline void imx6_suspend(void __iomem *ocram_vbase) {}
144void imx6q_pm_init(void); 133void imx6q_pm_init(void);
145void imx6dl_pm_init(void); 134void imx6dl_pm_init(void);
146void imx6sl_pm_init(void); 135void imx6sl_pm_init(void);
136void imx6sx_pm_init(void);
147void imx6q_pm_set_ccm_base(void __iomem *base); 137void imx6q_pm_set_ccm_base(void __iomem *base);
148 138
149#ifdef CONFIG_PM 139#ifdef CONFIG_PM
150void imx5_pm_init(void); 140void imx51_pm_init(void);
141void imx53_pm_init(void);
142void imx5_pm_set_ccm_base(void __iomem *base);
151#else 143#else
152static inline void imx5_pm_init(void) {} 144static inline void imx51_pm_init(void) {}
145static inline void imx53_pm_init(void) {}
146static inline void imx5_pm_set_ccm_base(void __iomem *base) {}
153#endif 147#endif
154 148
155#ifdef CONFIG_NEON 149#ifdef CONFIG_NEON
diff --git a/arch/arm/mach-imx/cpu-imx5.c b/arch/arm/mach-imx/cpu-imx5.c
index c1c99a72c6a1..3403bac94a31 100644
--- a/arch/arm/mach-imx/cpu-imx5.c
+++ b/arch/arm/mach-imx/cpu-imx5.c
@@ -16,6 +16,8 @@
16#include <linux/init.h> 16#include <linux/init.h>
17#include <linux/module.h> 17#include <linux/module.h>
18#include <linux/io.h> 18#include <linux/io.h>
19#include <linux/of.h>
20#include <linux/of_address.h>
19 21
20#include "hardware.h" 22#include "hardware.h"
21#include "common.h" 23#include "common.h"
@@ -24,10 +26,26 @@ static int mx5_cpu_rev = -1;
24 26
25#define IIM_SREV 0x24 27#define IIM_SREV 0x24
26 28
29static u32 imx5_read_srev_reg(const char *compat)
30{
31 void __iomem *iim_base;
32 struct device_node *np;
33 u32 srev;
34
35 np = of_find_compatible_node(NULL, NULL, compat);
36 iim_base = of_iomap(np, 0);
37 WARN_ON(!iim_base);
38
39 srev = readl(iim_base + IIM_SREV) & 0xff;
40
41 iounmap(iim_base);
42
43 return srev;
44}
45
27static int get_mx51_srev(void) 46static int get_mx51_srev(void)
28{ 47{
29 void __iomem *iim_base = MX51_IO_ADDRESS(MX51_IIM_BASE_ADDR); 48 u32 rev = imx5_read_srev_reg("fsl,imx51-iim");
30 u32 rev = readl(iim_base + IIM_SREV) & 0xff;
31 49
32 switch (rev) { 50 switch (rev) {
33 case 0x0: 51 case 0x0:
@@ -77,8 +95,7 @@ int __init mx51_neon_fixup(void)
77 95
78static int get_mx53_srev(void) 96static int get_mx53_srev(void)
79{ 97{
80 void __iomem *iim_base = MX51_IO_ADDRESS(MX53_IIM_BASE_ADDR); 98 u32 rev = imx5_read_srev_reg("fsl,imx53-iim");
81 u32 rev = readl(iim_base + IIM_SREV) & 0xff;
82 99
83 switch (rev) { 100 switch (rev) {
84 case 0x0: 101 case 0x0:
diff --git a/arch/arm/mach-imx/cpu.c b/arch/arm/mach-imx/cpu.c
index bbe8ff1f0412..df42c14ff749 100644
--- a/arch/arm/mach-imx/cpu.c
+++ b/arch/arm/mach-imx/cpu.c
@@ -2,6 +2,7 @@
2#include <linux/module.h> 2#include <linux/module.h>
3#include <linux/io.h> 3#include <linux/io.h>
4#include <linux/of.h> 4#include <linux/of.h>
5#include <linux/of_address.h>
5#include <linux/slab.h> 6#include <linux/slab.h>
6#include <linux/sys_soc.h> 7#include <linux/sys_soc.h>
7 8
@@ -60,6 +61,18 @@ void __init imx_set_aips(void __iomem *base)
60 __raw_writel(reg, base + 0x50); 61 __raw_writel(reg, base + 0x50);
61} 62}
62 63
64void __init imx_aips_allow_unprivileged_access(
65 const char *compat)
66{
67 void __iomem *aips_base_addr;
68 struct device_node *np;
69
70 for_each_compatible_node(np, NULL, compat) {
71 aips_base_addr = of_iomap(np, 0);
72 imx_set_aips(aips_base_addr);
73 }
74}
75
63struct device * __init imx_soc_device_init(void) 76struct device * __init imx_soc_device_init(void)
64{ 77{
65 struct soc_device_attribute *soc_dev_attr; 78 struct soc_device_attribute *soc_dev_attr;
diff --git a/arch/arm/mach-imx/cpuidle-imx6q.c b/arch/arm/mach-imx/cpuidle-imx6q.c
index 6bcae0479049..10844d3bb926 100644
--- a/arch/arm/mach-imx/cpuidle-imx6q.c
+++ b/arch/arm/mach-imx/cpuidle-imx6q.c
@@ -13,6 +13,7 @@
13 13
14#include "common.h" 14#include "common.h"
15#include "cpuidle.h" 15#include "cpuidle.h"
16#include "hardware.h"
16 17
17static atomic_t master = ATOMIC_INIT(0); 18static atomic_t master = ATOMIC_INIT(0);
18static DEFINE_SPINLOCK(master_lock); 19static DEFINE_SPINLOCK(master_lock);
@@ -66,10 +67,11 @@ static struct cpuidle_driver imx6q_cpuidle_driver = {
66int __init imx6q_cpuidle_init(void) 67int __init imx6q_cpuidle_init(void)
67{ 68{
68 /* Need to enable SCU standby for entering WAIT modes */ 69 /* Need to enable SCU standby for entering WAIT modes */
69 imx_scu_standby_enable(); 70 if (!cpu_is_imx6sx())
71 imx_scu_standby_enable();
70 72
71 /* Set INT_MEM_CLK_LPM bit to get a reliable WAIT mode support */ 73 /* Set INT_MEM_CLK_LPM bit to get a reliable WAIT mode support */
72 imx6q_set_int_mem_clk_lpm(); 74 imx6q_set_int_mem_clk_lpm(true);
73 75
74 return cpuidle_register(&imx6q_cpuidle_driver, NULL); 76 return cpuidle_register(&imx6q_cpuidle_driver, NULL);
75} 77}
diff --git a/arch/arm/mach-imx/crm-regs-imx5.h b/arch/arm/mach-imx/crm-regs-imx5.h
deleted file mode 100644
index 5e3f1f0f4cab..000000000000
--- a/arch/arm/mach-imx/crm-regs-imx5.h
+++ /dev/null
@@ -1,600 +0,0 @@
1/*
2 * Copyright 2008-2009 Freescale Semiconductor, Inc. All Rights Reserved.
3 *
4 * The code contained herein is licensed under the GNU General Public
5 * License. You may obtain a copy of the GNU General Public License
6 * Version 2 or later at the following locations:
7 *
8 * http://www.opensource.org/licenses/gpl-license.html
9 * http://www.gnu.org/copyleft/gpl.html
10 */
11#ifndef __ARCH_ARM_MACH_MX51_CRM_REGS_H__
12#define __ARCH_ARM_MACH_MX51_CRM_REGS_H__
13
14#define MX51_CCM_BASE MX51_IO_ADDRESS(MX51_CCM_BASE_ADDR)
15#define MX51_DPLL1_BASE MX51_IO_ADDRESS(MX51_PLL1_BASE_ADDR)
16#define MX51_DPLL2_BASE MX51_IO_ADDRESS(MX51_PLL2_BASE_ADDR)
17#define MX51_DPLL3_BASE MX51_IO_ADDRESS(MX51_PLL3_BASE_ADDR)
18#define MX51_CORTEXA8_BASE MX51_IO_ADDRESS(MX51_ARM_BASE_ADDR)
19#define MX51_GPC_BASE MX51_IO_ADDRESS(MX51_GPC_BASE_ADDR)
20
21/*MX53*/
22#define MX53_CCM_BASE MX53_IO_ADDRESS(MX53_CCM_BASE_ADDR)
23#define MX53_DPLL1_BASE MX53_IO_ADDRESS(MX53_PLL1_BASE_ADDR)
24#define MX53_DPLL2_BASE MX53_IO_ADDRESS(MX53_PLL2_BASE_ADDR)
25#define MX53_DPLL3_BASE MX53_IO_ADDRESS(MX53_PLL3_BASE_ADDR)
26#define MX53_DPLL4_BASE MX53_IO_ADDRESS(MX53_PLL4_BASE_ADDR)
27
28/* PLL Register Offsets */
29#define MXC_PLL_DP_CTL 0x00
30#define MXC_PLL_DP_CONFIG 0x04
31#define MXC_PLL_DP_OP 0x08
32#define MXC_PLL_DP_MFD 0x0C
33#define MXC_PLL_DP_MFN 0x10
34#define MXC_PLL_DP_MFNMINUS 0x14
35#define MXC_PLL_DP_MFNPLUS 0x18
36#define MXC_PLL_DP_HFS_OP 0x1C
37#define MXC_PLL_DP_HFS_MFD 0x20
38#define MXC_PLL_DP_HFS_MFN 0x24
39#define MXC_PLL_DP_MFN_TOGC 0x28
40#define MXC_PLL_DP_DESTAT 0x2c
41
42/* PLL Register Bit definitions */
43#define MXC_PLL_DP_CTL_MUL_CTRL 0x2000
44#define MXC_PLL_DP_CTL_DPDCK0_2_EN 0x1000
45#define MXC_PLL_DP_CTL_DPDCK0_2_OFFSET 12
46#define MXC_PLL_DP_CTL_ADE 0x800
47#define MXC_PLL_DP_CTL_REF_CLK_DIV 0x400
48#define MXC_PLL_DP_CTL_REF_CLK_SEL_MASK (3 << 8)
49#define MXC_PLL_DP_CTL_REF_CLK_SEL_OFFSET 8
50#define MXC_PLL_DP_CTL_HFSM 0x80
51#define MXC_PLL_DP_CTL_PRE 0x40
52#define MXC_PLL_DP_CTL_UPEN 0x20
53#define MXC_PLL_DP_CTL_RST 0x10
54#define MXC_PLL_DP_CTL_RCP 0x8
55#define MXC_PLL_DP_CTL_PLM 0x4
56#define MXC_PLL_DP_CTL_BRM0 0x2
57#define MXC_PLL_DP_CTL_LRF 0x1
58
59#define MXC_PLL_DP_CONFIG_BIST 0x8
60#define MXC_PLL_DP_CONFIG_SJC_CE 0x4
61#define MXC_PLL_DP_CONFIG_AREN 0x2
62#define MXC_PLL_DP_CONFIG_LDREQ 0x1
63
64#define MXC_PLL_DP_OP_MFI_OFFSET 4
65#define MXC_PLL_DP_OP_MFI_MASK (0xF << 4)
66#define MXC_PLL_DP_OP_PDF_OFFSET 0
67#define MXC_PLL_DP_OP_PDF_MASK 0xF
68
69#define MXC_PLL_DP_MFD_OFFSET 0
70#define MXC_PLL_DP_MFD_MASK 0x07FFFFFF
71
72#define MXC_PLL_DP_MFN_OFFSET 0x0
73#define MXC_PLL_DP_MFN_MASK 0x07FFFFFF
74
75#define MXC_PLL_DP_MFN_TOGC_TOG_DIS (1 << 17)
76#define MXC_PLL_DP_MFN_TOGC_TOG_EN (1 << 16)
77#define MXC_PLL_DP_MFN_TOGC_CNT_OFFSET 0x0
78#define MXC_PLL_DP_MFN_TOGC_CNT_MASK 0xFFFF
79
80#define MXC_PLL_DP_DESTAT_TOG_SEL (1 << 31)
81#define MXC_PLL_DP_DESTAT_MFN 0x07FFFFFF
82
83/* Register addresses of CCM*/
84#define MXC_CCM_CCR (MX51_CCM_BASE + 0x00)
85#define MXC_CCM_CCDR (MX51_CCM_BASE + 0x04)
86#define MXC_CCM_CSR (MX51_CCM_BASE + 0x08)
87#define MXC_CCM_CCSR (MX51_CCM_BASE + 0x0C)
88#define MXC_CCM_CACRR (MX51_CCM_BASE + 0x10)
89#define MXC_CCM_CBCDR (MX51_CCM_BASE + 0x14)
90#define MXC_CCM_CBCMR (MX51_CCM_BASE + 0x18)
91#define MXC_CCM_CSCMR1 (MX51_CCM_BASE + 0x1C)
92#define MXC_CCM_CSCMR2 (MX51_CCM_BASE + 0x20)
93#define MXC_CCM_CSCDR1 (MX51_CCM_BASE + 0x24)
94#define MXC_CCM_CS1CDR (MX51_CCM_BASE + 0x28)
95#define MXC_CCM_CS2CDR (MX51_CCM_BASE + 0x2C)
96#define MXC_CCM_CDCDR (MX51_CCM_BASE + 0x30)
97#define MXC_CCM_CHSCDR (MX51_CCM_BASE + 0x34)
98#define MXC_CCM_CSCDR2 (MX51_CCM_BASE + 0x38)
99#define MXC_CCM_CSCDR3 (MX51_CCM_BASE + 0x3C)
100#define MXC_CCM_CSCDR4 (MX51_CCM_BASE + 0x40)
101#define MXC_CCM_CWDR (MX51_CCM_BASE + 0x44)
102#define MXC_CCM_CDHIPR (MX51_CCM_BASE + 0x48)
103#define MXC_CCM_CDCR (MX51_CCM_BASE + 0x4C)
104#define MXC_CCM_CTOR (MX51_CCM_BASE + 0x50)
105#define MXC_CCM_CLPCR (MX51_CCM_BASE + 0x54)
106#define MXC_CCM_CISR (MX51_CCM_BASE + 0x58)
107#define MXC_CCM_CIMR (MX51_CCM_BASE + 0x5C)
108#define MXC_CCM_CCOSR (MX51_CCM_BASE + 0x60)
109#define MXC_CCM_CGPR (MX51_CCM_BASE + 0x64)
110#define MXC_CCM_CCGR0 (MX51_CCM_BASE + 0x68)
111#define MXC_CCM_CCGR1 (MX51_CCM_BASE + 0x6C)
112#define MXC_CCM_CCGR2 (MX51_CCM_BASE + 0x70)
113#define MXC_CCM_CCGR3 (MX51_CCM_BASE + 0x74)
114#define MXC_CCM_CCGR4 (MX51_CCM_BASE + 0x78)
115#define MXC_CCM_CCGR5 (MX51_CCM_BASE + 0x7C)
116#define MXC_CCM_CCGR6 (MX51_CCM_BASE + 0x80)
117#define MXC_CCM_CCGR7 (MX51_CCM_BASE + 0x84)
118
119#define MXC_CCM_CMEOR (MX51_CCM_BASE + 0x84)
120
121/* Define the bits in register CCR */
122#define MXC_CCM_CCR_COSC_EN (1 << 12)
123#define MXC_CCM_CCR_FPM_MULT_MASK (1 << 11)
124#define MXC_CCM_CCR_CAMP2_EN (1 << 10)
125#define MXC_CCM_CCR_CAMP1_EN (1 << 9)
126#define MXC_CCM_CCR_FPM_EN (1 << 8)
127#define MXC_CCM_CCR_OSCNT_OFFSET (0)
128#define MXC_CCM_CCR_OSCNT_MASK (0xFF)
129
130/* Define the bits in register CCDR */
131#define MXC_CCM_CCDR_HSC_HS_MASK (0x1 << 18)
132#define MXC_CCM_CCDR_IPU_HS_MASK (0x1 << 17)
133#define MXC_CCM_CCDR_EMI_HS_MASK (0x1 << 16)
134
135/* Define the bits in register CSR */
136#define MXC_CCM_CSR_COSR_READY (1 << 5)
137#define MXC_CCM_CSR_LVS_VALUE (1 << 4)
138#define MXC_CCM_CSR_CAMP2_READY (1 << 3)
139#define MXC_CCM_CSR_CAMP1_READY (1 << 2)
140#define MXC_CCM_CSR_FPM_READY (1 << 1)
141#define MXC_CCM_CSR_REF_EN_B (1 << 0)
142
143/* Define the bits in register CCSR */
144#define MXC_CCM_CCSR_LP_APM_SEL (0x1 << 9)
145#define MXC_CCM_CCSR_STEP_SEL_OFFSET (7)
146#define MXC_CCM_CCSR_STEP_SEL_MASK (0x3 << 7)
147#define MXC_CCM_CCSR_STEP_SEL_LP_APM 0
148#define MXC_CCM_CCSR_STEP_SEL_PLL1_BYPASS 1 /* Only when JTAG connected? */
149#define MXC_CCM_CCSR_STEP_SEL_PLL2_DIVIDED 2
150#define MXC_CCM_CCSR_STEP_SEL_PLL3_DIVIDED 3
151#define MXC_CCM_CCSR_PLL2_PODF_OFFSET (5)
152#define MXC_CCM_CCSR_PLL2_PODF_MASK (0x3 << 5)
153#define MXC_CCM_CCSR_PLL3_PODF_OFFSET (3)
154#define MXC_CCM_CCSR_PLL3_PODF_MASK (0x3 << 3)
155#define MXC_CCM_CCSR_PLL1_SW_CLK_SEL (1 << 2) /* 0: pll1_main_clk,
156 1: step_clk */
157#define MXC_CCM_CCSR_PLL2_SW_CLK_SEL (1 << 1)
158#define MXC_CCM_CCSR_PLL3_SW_CLK_SEL (1 << 0)
159
160/* Define the bits in register CACRR */
161#define MXC_CCM_CACRR_ARM_PODF_OFFSET (0)
162#define MXC_CCM_CACRR_ARM_PODF_MASK (0x7)
163
164/* Define the bits in register CBCDR */
165#define MXC_CCM_CBCDR_EMI_CLK_SEL (0x1 << 26)
166#define MXC_CCM_CBCDR_PERIPH_CLK_SEL (0x1 << 25)
167#define MXC_CCM_CBCDR_DDR_HF_SEL_OFFSET (30)
168#define MXC_CCM_CBCDR_DDR_HF_SEL (0x1 << 30)
169#define MXC_CCM_CBCDR_DDR_PODF_OFFSET (27)
170#define MXC_CCM_CBCDR_DDR_PODF_MASK (0x7 << 27)
171#define MXC_CCM_CBCDR_EMI_PODF_OFFSET (22)
172#define MXC_CCM_CBCDR_EMI_PODF_MASK (0x7 << 22)
173#define MXC_CCM_CBCDR_AXI_B_PODF_OFFSET (19)
174#define MXC_CCM_CBCDR_AXI_B_PODF_MASK (0x7 << 19)
175#define MXC_CCM_CBCDR_AXI_A_PODF_OFFSET (16)
176#define MXC_CCM_CBCDR_AXI_A_PODF_MASK (0x7 << 16)
177#define MXC_CCM_CBCDR_NFC_PODF_OFFSET (13)
178#define MXC_CCM_CBCDR_NFC_PODF_MASK (0x7 << 13)
179#define MXC_CCM_CBCDR_AHB_PODF_OFFSET (10)
180#define MXC_CCM_CBCDR_AHB_PODF_MASK (0x7 << 10)
181#define MXC_CCM_CBCDR_IPG_PODF_OFFSET (8)
182#define MXC_CCM_CBCDR_IPG_PODF_MASK (0x3 << 8)
183#define MXC_CCM_CBCDR_PERCLK_PRED1_OFFSET (6)
184#define MXC_CCM_CBCDR_PERCLK_PRED1_MASK (0x3 << 6)
185#define MXC_CCM_CBCDR_PERCLK_PRED2_OFFSET (3)
186#define MXC_CCM_CBCDR_PERCLK_PRED2_MASK (0x7 << 3)
187#define MXC_CCM_CBCDR_PERCLK_PODF_OFFSET (0)
188#define MXC_CCM_CBCDR_PERCLK_PODF_MASK (0x7)
189
190/* Define the bits in register CBCMR */
191#define MXC_CCM_CBCMR_VPU_AXI_CLK_SEL_OFFSET (14)
192#define MXC_CCM_CBCMR_VPU_AXI_CLK_SEL_MASK (0x3 << 14)
193#define MXC_CCM_CBCMR_PERIPH_CLK_SEL_OFFSET (12)
194#define MXC_CCM_CBCMR_PERIPH_CLK_SEL_MASK (0x3 << 12)
195#define MXC_CCM_CBCMR_DDR_CLK_SEL_OFFSET (10)
196#define MXC_CCM_CBCMR_DDR_CLK_SEL_MASK (0x3 << 10)
197#define MXC_CCM_CBCMR_ARM_AXI_CLK_SEL_OFFSET (8)
198#define MXC_CCM_CBCMR_ARM_AXI_CLK_SEL_MASK (0x3 << 8)
199#define MXC_CCM_CBCMR_IPU_HSP_CLK_SEL_OFFSET (6)
200#define MXC_CCM_CBCMR_IPU_HSP_CLK_SEL_MASK (0x3 << 6)
201#define MXC_CCM_CBCMR_GPU_CLK_SEL_OFFSET (4)
202#define MXC_CCM_CBCMR_GPU_CLK_SEL_MASK (0x3 << 4)
203#define MXC_CCM_CBCMR_GPU2D_CLK_SEL_OFFSET (14)
204#define MXC_CCM_CBCMR_GPU2D_CLK_SEL_MASK (0x3 << 14)
205#define MXC_CCM_CBCMR_PERCLK_LP_APM_CLK_SEL (0x1 << 1)
206#define MXC_CCM_CBCMR_PERCLK_IPG_CLK_SEL (0x1 << 0)
207
208/* Define the bits in register CSCMR1 */
209#define MXC_CCM_CSCMR1_SSI_EXT2_CLK_SEL_OFFSET (30)
210#define MXC_CCM_CSCMR1_SSI_EXT2_CLK_SEL_MASK (0x3 << 30)
211#define MXC_CCM_CSCMR1_SSI_EXT1_CLK_SEL_OFFSET (28)
212#define MXC_CCM_CSCMR1_SSI_EXT1_CLK_SEL_MASK (0x3 << 28)
213#define MXC_CCM_CSCMR1_USB_PHY_CLK_SEL_OFFSET (26)
214#define MXC_CCM_CSCMR1_USB_PHY_CLK_SEL (0x1 << 26)
215#define MXC_CCM_CSCMR1_UART_CLK_SEL_OFFSET (24)
216#define MXC_CCM_CSCMR1_UART_CLK_SEL_MASK (0x3 << 24)
217#define MXC_CCM_CSCMR1_USBOH3_CLK_SEL_OFFSET (22)
218#define MXC_CCM_CSCMR1_USBOH3_CLK_SEL_MASK (0x3 << 22)
219#define MXC_CCM_CSCMR1_ESDHC1_MSHC1_CLK_SEL_OFFSET (20)
220#define MXC_CCM_CSCMR1_ESDHC1_MSHC1_CLK_SEL_MASK (0x3 << 20)
221#define MXC_CCM_CSCMR1_ESDHC3_CLK_SEL (0x1 << 19)
222#define MXC_CCM_CSCMR1_ESDHC2_MSHC2_MX53_CLK_SEL (0x1 << 19)
223#define MXC_CCM_CSCMR1_ESDHC4_CLK_SEL (0x1 << 18)
224#define MXC_CCM_CSCMR1_ESDHC2_MSHC2_CLK_SEL_OFFSET (16)
225#define MXC_CCM_CSCMR1_ESDHC2_MSHC2_CLK_SEL_MASK (0x3 << 16)
226#define MXC_CCM_CSCMR1_ESDHC3_MX53_CLK_SEL_OFFSET (16)
227#define MXC_CCM_CSCMR1_ESDHC3_MX53_CLK_SEL_MASK (0x3 << 16)
228#define MXC_CCM_CSCMR1_SSI1_CLK_SEL_OFFSET (14)
229#define MXC_CCM_CSCMR1_SSI1_CLK_SEL_MASK (0x3 << 14)
230#define MXC_CCM_CSCMR1_SSI2_CLK_SEL_OFFSET (12)
231#define MXC_CCM_CSCMR1_SSI2_CLK_SEL_MASK (0x3 << 12)
232#define MXC_CCM_CSCMR1_SSI3_CLK_SEL (0x1 << 11)
233#define MXC_CCM_CSCMR1_VPU_RCLK_SEL (0x1 << 10)
234#define MXC_CCM_CSCMR1_SSI_APM_CLK_SEL_OFFSET (8)
235#define MXC_CCM_CSCMR1_SSI_APM_CLK_SEL_MASK (0x3 << 8)
236#define MXC_CCM_CSCMR1_TVE_CLK_SEL (0x1 << 7)
237#define MXC_CCM_CSCMR1_TVE_EXT_CLK_SEL (0x1 << 6)
238#define MXC_CCM_CSCMR1_CSPI_CLK_SEL_OFFSET (4)
239#define MXC_CCM_CSCMR1_CSPI_CLK_SEL_MASK (0x3 << 4)
240#define MXC_CCM_CSCMR1_SPDIF_CLK_SEL_OFFSET (2)
241#define MXC_CCM_CSCMR1_SPDIF_CLK_SEL_MASK (0x3 << 2)
242#define MXC_CCM_CSCMR1_SSI_EXT2_COM_CLK_SEL (0x1 << 1)
243#define MXC_CCM_CSCMR1_SSI_EXT1_COM_CLK_SEL (0x1)
244
245/* Define the bits in register CSCMR2 */
246#define MXC_CCM_CSCMR2_DI_CLK_SEL_OFFSET(n) (26+n*3)
247#define MXC_CCM_CSCMR2_DI_CLK_SEL_MASK(n) (0x7 << (26+n*3))
248#define MXC_CCM_CSCMR2_CSI_MCLK2_CLK_SEL_OFFSET (24)
249#define MXC_CCM_CSCMR2_CSI_MCLK2_CLK_SEL_MASK (0x3 << 24)
250#define MXC_CCM_CSCMR2_CSI_MCLK1_CLK_SEL_OFFSET (22)
251#define MXC_CCM_CSCMR2_CSI_MCLK1_CLK_SEL_MASK (0x3 << 22)
252#define MXC_CCM_CSCMR2_ESC_CLK_SEL_OFFSET (20)
253#define MXC_CCM_CSCMR2_ESC_CLK_SEL_MASK (0x3 << 20)
254#define MXC_CCM_CSCMR2_HSC2_CLK_SEL_OFFSET (18)
255#define MXC_CCM_CSCMR2_HSC2_CLK_SEL_MASK (0x3 << 18)
256#define MXC_CCM_CSCMR2_HSC1_CLK_SEL_OFFSET (16)
257#define MXC_CCM_CSCMR2_HSC1_CLK_SEL_MASK (0x3 << 16)
258#define MXC_CCM_CSCMR2_HSI2C_CLK_SEL_OFFSET (14)
259#define MXC_CCM_CSCMR2_HSI2C_CLK_SEL_MASK (0x3 << 14)
260#define MXC_CCM_CSCMR2_FIRI_CLK_SEL_OFFSET (12)
261#define MXC_CCM_CSCMR2_FIRI_CLK_SEL_MASK (0x3 << 12)
262#define MXC_CCM_CSCMR2_SIM_CLK_SEL_OFFSET (10)
263#define MXC_CCM_CSCMR2_SIM_CLK_SEL_MASK (0x3 << 10)
264#define MXC_CCM_CSCMR2_SLIMBUS_COM (0x1 << 9)
265#define MXC_CCM_CSCMR2_SLIMBUS_CLK_SEL_OFFSET (6)
266#define MXC_CCM_CSCMR2_SLIMBUS_CLK_SEL_MASK (0x7 << 6)
267#define MXC_CCM_CSCMR2_SPDIF1_COM (1 << 5)
268#define MXC_CCM_CSCMR2_SPDIF0_COM (1 << 4)
269#define MXC_CCM_CSCMR2_SPDIF1_CLK_SEL_OFFSET (2)
270#define MXC_CCM_CSCMR2_SPDIF1_CLK_SEL_MASK (0x3 << 2)
271#define MXC_CCM_CSCMR2_SPDIF0_CLK_SEL_OFFSET (0)
272#define MXC_CCM_CSCMR2_SPDIF0_CLK_SEL_MASK (0x3)
273
274/* Define the bits in register CSCDR1 */
275#define MXC_CCM_CSCDR1_ESDHC2_MSHC2_CLK_PRED_OFFSET (22)
276#define MXC_CCM_CSCDR1_ESDHC2_MSHC2_CLK_PRED_MASK (0x7 << 22)
277#define MXC_CCM_CSCDR1_ESDHC2_MSHC2_CLK_PODF_OFFSET (19)
278#define MXC_CCM_CSCDR1_ESDHC2_MSHC2_CLK_PODF_MASK (0x7 << 19)
279#define MXC_CCM_CSCDR1_ESDHC3_MX53_CLK_PRED_OFFSET (22)
280#define MXC_CCM_CSCDR1_ESDHC3_MX53_CLK_PRED_MASK (0x7 << 22)
281#define MXC_CCM_CSCDR1_ESDHC3_MX53_CLK_PODF_OFFSET (19)
282#define MXC_CCM_CSCDR1_ESDHC3_MX53_CLK_PODF_MASK (0x7 << 19)
283#define MXC_CCM_CSCDR1_ESDHC1_MSHC1_CLK_PRED_OFFSET (16)
284#define MXC_CCM_CSCDR1_ESDHC1_MSHC1_CLK_PRED_MASK (0x7 << 16)
285#define MXC_CCM_CSCDR1_PGC_CLK_PODF_OFFSET (14)
286#define MXC_CCM_CSCDR1_PGC_CLK_PODF_MASK (0x3 << 14)
287#define MXC_CCM_CSCDR1_ESDHC1_MSHC1_CLK_PODF_OFFSET (11)
288#define MXC_CCM_CSCDR1_ESDHC1_MSHC1_CLK_PODF_MASK (0x7 << 11)
289#define MXC_CCM_CSCDR1_USBOH3_CLK_PRED_OFFSET (8)
290#define MXC_CCM_CSCDR1_USBOH3_CLK_PRED_MASK (0x7 << 8)
291#define MXC_CCM_CSCDR1_USBOH3_CLK_PODF_OFFSET (6)
292#define MXC_CCM_CSCDR1_USBOH3_CLK_PODF_MASK (0x3 << 6)
293#define MXC_CCM_CSCDR1_UART_CLK_PRED_OFFSET (3)
294#define MXC_CCM_CSCDR1_UART_CLK_PRED_MASK (0x7 << 3)
295#define MXC_CCM_CSCDR1_UART_CLK_PODF_OFFSET (0)
296#define MXC_CCM_CSCDR1_UART_CLK_PODF_MASK (0x7)
297
298/* Define the bits in register CS1CDR and CS2CDR */
299#define MXC_CCM_CS1CDR_SSI_EXT1_CLK_PRED_OFFSET (22)
300#define MXC_CCM_CS1CDR_SSI_EXT1_CLK_PRED_MASK (0x7 << 22)
301#define MXC_CCM_CS1CDR_SSI_EXT1_CLK_PODF_OFFSET (16)
302#define MXC_CCM_CS1CDR_SSI_EXT1_CLK_PODF_MASK (0x3F << 16)
303#define MXC_CCM_CS1CDR_SSI1_CLK_PRED_OFFSET (6)
304#define MXC_CCM_CS1CDR_SSI1_CLK_PRED_MASK (0x7 << 6)
305#define MXC_CCM_CS1CDR_SSI1_CLK_PODF_OFFSET (0)
306#define MXC_CCM_CS1CDR_SSI1_CLK_PODF_MASK (0x3F)
307
308#define MXC_CCM_CS2CDR_SSI_EXT2_CLK_PRED_OFFSET (22)
309#define MXC_CCM_CS2CDR_SSI_EXT2_CLK_PRED_MASK (0x7 << 22)
310#define MXC_CCM_CS2CDR_SSI_EXT2_CLK_PODF_OFFSET (16)
311#define MXC_CCM_CS2CDR_SSI_EXT2_CLK_PODF_MASK (0x3F << 16)
312#define MXC_CCM_CS2CDR_SSI2_CLK_PRED_OFFSET (6)
313#define MXC_CCM_CS2CDR_SSI2_CLK_PRED_MASK (0x7 << 6)
314#define MXC_CCM_CS2CDR_SSI2_CLK_PODF_OFFSET (0)
315#define MXC_CCM_CS2CDR_SSI2_CLK_PODF_MASK (0x3F)
316
317/* Define the bits in register CDCDR */
318#define MXC_CCM_CDCDR_TVE_CLK_PRED_OFFSET (28)
319#define MXC_CCM_CDCDR_TVE_CLK_PRED_MASK (0x7 << 28)
320#define MXC_CCM_CDCDR_SPDIF0_CLK_PRED_OFFSET (25)
321#define MXC_CCM_CDCDR_SPDIF0_CLK_PRED_MASK (0x7 << 25)
322#define MXC_CCM_CDCDR_SPDIF0_CLK_PODF_OFFSET (19)
323#define MXC_CCM_CDCDR_SPDIF0_CLK_PODF_MASK (0x3F << 19)
324#define MXC_CCM_CDCDR_SPDIF1_CLK_PRED_OFFSET (16)
325#define MXC_CCM_CDCDR_SPDIF1_CLK_PRED_MASK (0x7 << 16)
326#define MXC_CCM_CDCDR_SPDIF1_CLK_PODF_OFFSET (9)
327#define MXC_CCM_CDCDR_SPDIF1_CLK_PODF_MASK (0x3F << 9)
328#define MXC_CCM_CDCDR_DI_CLK_PRED_OFFSET (6)
329#define MXC_CCM_CDCDR_DI_CLK_PRED_MASK (0x7 << 6)
330#define MXC_CCM_CDCDR_USB_PHY_PRED_OFFSET (3)
331#define MXC_CCM_CDCDR_USB_PHY_PRED_MASK (0x7 << 3)
332#define MXC_CCM_CDCDR_USB_PHY_PODF_OFFSET (0)
333#define MXC_CCM_CDCDR_USB_PHY_PODF_MASK (0x7)
334
335/* Define the bits in register CHSCCDR */
336#define MXC_CCM_CHSCCDR_ESC_CLK_PRED_OFFSET (12)
337#define MXC_CCM_CHSCCDR_ESC_CLK_PRED_MASK (0x7 << 12)
338#define MXC_CCM_CHSCCDR_ESC_CLK_PODF_OFFSET (6)
339#define MXC_CCM_CHSCCDR_ESC_CLK_PODF_MASK (0x3F << 6)
340#define MXC_CCM_CHSCCDR_HSC2_CLK_PODF_OFFSET (3)
341#define MXC_CCM_CHSCCDR_HSC2_CLK_PODF_MASK (0x7 << 3)
342#define MXC_CCM_CHSCCDR_HSC1_CLK_PODF_OFFSET (0)
343#define MXC_CCM_CHSCCDR_HSC1_CLK_PODF_MASK (0x7)
344
345/* Define the bits in register CSCDR2 */
346#define MXC_CCM_CSCDR2_CSPI_CLK_PRED_OFFSET (25)
347#define MXC_CCM_CSCDR2_CSPI_CLK_PRED_MASK (0x7 << 25)
348#define MXC_CCM_CSCDR2_CSPI_CLK_PODF_OFFSET (19)
349#define MXC_CCM_CSCDR2_CSPI_CLK_PODF_MASK (0x3F << 19)
350#define MXC_CCM_CSCDR2_SIM_CLK_PRED_OFFSET (16)
351#define MXC_CCM_CSCDR2_SIM_CLK_PRED_MASK (0x7 << 16)
352#define MXC_CCM_CSCDR2_SIM_CLK_PODF_OFFSET (9)
353#define MXC_CCM_CSCDR2_SIM_CLK_PODF_MASK (0x3F << 9)
354#define MXC_CCM_CSCDR2_SLIMBUS_CLK_PRED_OFFSET (6)
355#define MXC_CCM_CSCDR2_SLIMBUS_PRED_MASK (0x7 << 6)
356#define MXC_CCM_CSCDR2_SLIMBUS_PODF_OFFSET (0)
357#define MXC_CCM_CSCDR2_SLIMBUS_PODF_MASK (0x3F)
358
359/* Define the bits in register CSCDR3 */
360#define MXC_CCM_CSCDR3_HSI2C_CLK_PRED_OFFSET (16)
361#define MXC_CCM_CSCDR3_HSI2C_CLK_PRED_MASK (0x7 << 16)
362#define MXC_CCM_CSCDR3_HSI2C_CLK_PODF_OFFSET (9)
363#define MXC_CCM_CSCDR3_HSI2C_CLK_PODF_MASK (0x3F << 9)
364#define MXC_CCM_CSCDR3_FIRI_CLK_PRED_OFFSET (6)
365#define MXC_CCM_CSCDR3_FIRI_CLK_PRED_MASK (0x7 << 6)
366#define MXC_CCM_CSCDR3_FIRI_CLK_PODF_OFFSET (0)
367#define MXC_CCM_CSCDR3_FIRI_CLK_PODF_MASK (0x3F)
368
369/* Define the bits in register CSCDR4 */
370#define MXC_CCM_CSCDR4_CSI_MCLK2_CLK_PRED_OFFSET (16)
371#define MXC_CCM_CSCDR4_CSI_MCLK2_CLK_PRED_MASK (0x7 << 16)
372#define MXC_CCM_CSCDR4_CSI_MCLK2_CLK_PODF_OFFSET (9)
373#define MXC_CCM_CSCDR4_CSI_MCLK2_CLK_PODF_MASK (0x3F << 9)
374#define MXC_CCM_CSCDR4_CSI_MCLK1_CLK_PRED_OFFSET (6)
375#define MXC_CCM_CSCDR4_CSI_MCLK1_CLK_PRED_MASK (0x7 << 6)
376#define MXC_CCM_CSCDR4_CSI_MCLK1_CLK_PODF_OFFSET (0)
377#define MXC_CCM_CSCDR4_CSI_MCLK1_CLK_PODF_MASK (0x3F)
378
379/* Define the bits in register CDHIPR */
380#define MXC_CCM_CDHIPR_ARM_PODF_BUSY (1 << 16)
381#define MXC_CCM_CDHIPR_DDR_HF_CLK_SEL_BUSY (1 << 8)
382#define MXC_CCM_CDHIPR_DDR_PODF_BUSY (1 << 7)
383#define MXC_CCM_CDHIPR_EMI_CLK_SEL_BUSY (1 << 6)
384#define MXC_CCM_CDHIPR_PERIPH_CLK_SEL_BUSY (1 << 5)
385#define MXC_CCM_CDHIPR_NFC_IPG_INT_MEM_PODF_BUSY (1 << 4)
386#define MXC_CCM_CDHIPR_AHB_PODF_BUSY (1 << 3)
387#define MXC_CCM_CDHIPR_EMI_PODF_BUSY (1 << 2)
388#define MXC_CCM_CDHIPR_AXI_B_PODF_BUSY (1 << 1)
389#define MXC_CCM_CDHIPR_AXI_A_PODF_BUSY (1 << 0)
390
391/* Define the bits in register CDCR */
392#define MXC_CCM_CDCR_ARM_FREQ_SHIFT_DIVIDER (0x1 << 2)
393#define MXC_CCM_CDCR_PERIPH_CLK_DVFS_PODF_OFFSET (0)
394#define MXC_CCM_CDCR_PERIPH_CLK_DVFS_PODF_MASK (0x3)
395
396/* Define the bits in register CLPCR */
397#define MXC_CCM_CLPCR_BYPASS_HSC_LPM_HS (0x1 << 23)
398#define MXC_CCM_CLPCR_BYPASS_SCC_LPM_HS (0x1 << 22)
399#define MX51_CCM_CLPCR_BYPASS_MAX_LPM_HS (0x1 << 21)
400#define MX53_CCM_CLPCR_BYPASS_MAX_LPM_HS (0x1 << 25)
401#define MXC_CCM_CLPCR_BYPASS_SDMA_LPM_HS (0x1 << 20)
402#define MXC_CCM_CLPCR_BYPASS_EMI_LPM_HS (0x1 << 19)
403#define MXC_CCM_CLPCR_BYPASS_IPU_LPM_HS (0x1 << 18)
404#define MXC_CCM_CLPCR_BYPASS_RTIC_LPM_HS (0x1 << 17)
405#define MXC_CCM_CLPCR_BYPASS_RNGC_LPM_HS (0x1 << 16)
406#define MXC_CCM_CLPCR_COSC_PWRDOWN (0x1 << 11)
407#define MXC_CCM_CLPCR_STBY_COUNT_OFFSET (9)
408#define MXC_CCM_CLPCR_STBY_COUNT_MASK (0x3 << 9)
409#define MXC_CCM_CLPCR_VSTBY (0x1 << 8)
410#define MXC_CCM_CLPCR_DIS_REF_OSC (0x1 << 7)
411#define MXC_CCM_CLPCR_SBYOS (0x1 << 6)
412#define MXC_CCM_CLPCR_ARM_CLK_DIS_ON_LPM (0x1 << 5)
413#define MXC_CCM_CLPCR_LPSR_CLK_SEL_OFFSET (3)
414#define MXC_CCM_CLPCR_LPSR_CLK_SEL_MASK (0x3 << 3)
415#define MXC_CCM_CLPCR_LPM_OFFSET (0)
416#define MXC_CCM_CLPCR_LPM_MASK (0x3)
417
418/* Define the bits in register CISR */
419#define MXC_CCM_CISR_ARM_PODF_LOADED (0x1 << 25)
420#define MXC_CCM_CISR_NFC_IPG_INT_MEM_PODF_LOADED (0x1 << 21)
421#define MXC_CCM_CISR_AHB_PODF_LOADED (0x1 << 20)
422#define MXC_CCM_CISR_EMI_PODF_LOADED (0x1 << 19)
423#define MXC_CCM_CISR_AXI_B_PODF_LOADED (0x1 << 18)
424#define MXC_CCM_CISR_AXI_A_PODF_LOADED (0x1 << 17)
425#define MXC_CCM_CISR_DIVIDER_LOADED (0x1 << 16)
426#define MXC_CCM_CISR_COSC_READY (0x1 << 6)
427#define MXC_CCM_CISR_CKIH2_READY (0x1 << 5)
428#define MXC_CCM_CISR_CKIH_READY (0x1 << 4)
429#define MXC_CCM_CISR_FPM_READY (0x1 << 3)
430#define MXC_CCM_CISR_LRF_PLL3 (0x1 << 2)
431#define MXC_CCM_CISR_LRF_PLL2 (0x1 << 1)
432#define MXC_CCM_CISR_LRF_PLL1 (0x1)
433
434/* Define the bits in register CIMR */
435#define MXC_CCM_CIMR_MASK_ARM_PODF_LOADED (0x1 << 25)
436#define MXC_CCM_CIMR_MASK_NFC_IPG_INT_MEM_PODF_LOADED (0x1 << 21)
437#define MXC_CCM_CIMR_MASK_EMI_PODF_LOADED (0x1 << 20)
438#define MXC_CCM_CIMR_MASK_AXI_C_PODF_LOADED (0x1 << 19)
439#define MXC_CCM_CIMR_MASK_AXI_B_PODF_LOADED (0x1 << 18)
440#define MXC_CCM_CIMR_MASK_AXI_A_PODF_LOADED (0x1 << 17)
441#define MXC_CCM_CIMR_MASK_DIVIDER_LOADED (0x1 << 16)
442#define MXC_CCM_CIMR_MASK_COSC_READY (0x1 << 5)
443#define MXC_CCM_CIMR_MASK_CKIH_READY (0x1 << 4)
444#define MXC_CCM_CIMR_MASK_FPM_READY (0x1 << 3)
445#define MXC_CCM_CIMR_MASK_LRF_PLL3 (0x1 << 2)
446#define MXC_CCM_CIMR_MASK_LRF_PLL2 (0x1 << 1)
447#define MXC_CCM_CIMR_MASK_LRF_PLL1 (0x1)
448
449/* Define the bits in register CCOSR */
450#define MXC_CCM_CCOSR_CKO2_EN_OFFSET (0x1 << 24)
451#define MXC_CCM_CCOSR_CKO2_DIV_OFFSET (21)
452#define MXC_CCM_CCOSR_CKO2_DIV_MASK (0x7 << 21)
453#define MXC_CCM_CCOSR_CKO2_SEL_OFFSET (16)
454#define MXC_CCM_CCOSR_CKO2_SEL_MASK (0x1F << 16)
455#define MXC_CCM_CCOSR_CKOL_EN (0x1 << 7)
456#define MXC_CCM_CCOSR_CKOL_DIV_OFFSET (4)
457#define MXC_CCM_CCOSR_CKOL_DIV_MASK (0x7 << 4)
458#define MXC_CCM_CCOSR_CKOL_SEL_OFFSET (0)
459#define MXC_CCM_CCOSR_CKOL_SEL_MASK (0xF)
460
461/* Define the bits in registers CGPR */
462#define MXC_CCM_CGPR_EFUSE_PROG_SUPPLY_GATE (0x1 << 4)
463#define MXC_CCM_CGPR_FPM_SEL (0x1 << 3)
464#define MXC_CCM_CGPR_VL_L2BIST_CLKDIV_OFFSET (0)
465#define MXC_CCM_CGPR_VL_L2BIST_CLKDIV_MASK (0x7)
466
467/* Define the bits in registers CCGRx */
468#define MXC_CCM_CCGRx_CG_MASK 0x3
469#define MXC_CCM_CCGRx_MOD_OFF 0x0
470#define MXC_CCM_CCGRx_MOD_ON 0x3
471#define MXC_CCM_CCGRx_MOD_IDLE 0x1
472
473#define MXC_CCM_CCGRx_CG15_MASK (0x3 << 30)
474#define MXC_CCM_CCGRx_CG14_MASK (0x3 << 28)
475#define MXC_CCM_CCGRx_CG13_MASK (0x3 << 26)
476#define MXC_CCM_CCGRx_CG12_MASK (0x3 << 24)
477#define MXC_CCM_CCGRx_CG11_MASK (0x3 << 22)
478#define MXC_CCM_CCGRx_CG10_MASK (0x3 << 20)
479#define MXC_CCM_CCGRx_CG9_MASK (0x3 << 18)
480#define MXC_CCM_CCGRx_CG8_MASK (0x3 << 16)
481#define MXC_CCM_CCGRx_CG5_MASK (0x3 << 10)
482#define MXC_CCM_CCGRx_CG4_MASK (0x3 << 8)
483#define MXC_CCM_CCGRx_CG3_MASK (0x3 << 6)
484#define MXC_CCM_CCGRx_CG2_MASK (0x3 << 4)
485#define MXC_CCM_CCGRx_CG1_MASK (0x3 << 2)
486#define MXC_CCM_CCGRx_CG0_MASK (0x3 << 0)
487
488#define MXC_CCM_CCGRx_CG15_OFFSET 30
489#define MXC_CCM_CCGRx_CG14_OFFSET 28
490#define MXC_CCM_CCGRx_CG13_OFFSET 26
491#define MXC_CCM_CCGRx_CG12_OFFSET 24
492#define MXC_CCM_CCGRx_CG11_OFFSET 22
493#define MXC_CCM_CCGRx_CG10_OFFSET 20
494#define MXC_CCM_CCGRx_CG9_OFFSET 18
495#define MXC_CCM_CCGRx_CG8_OFFSET 16
496#define MXC_CCM_CCGRx_CG7_OFFSET 14
497#define MXC_CCM_CCGRx_CG6_OFFSET 12
498#define MXC_CCM_CCGRx_CG5_OFFSET 10
499#define MXC_CCM_CCGRx_CG4_OFFSET 8
500#define MXC_CCM_CCGRx_CG3_OFFSET 6
501#define MXC_CCM_CCGRx_CG2_OFFSET 4
502#define MXC_CCM_CCGRx_CG1_OFFSET 2
503#define MXC_CCM_CCGRx_CG0_OFFSET 0
504
505#define MXC_DPTC_LP_BASE (MX51_GPC_BASE + 0x80)
506#define MXC_DPTC_GP_BASE (MX51_GPC_BASE + 0x100)
507#define MXC_DVFS_CORE_BASE (MX51_GPC_BASE + 0x180)
508#define MXC_DPTC_PER_BASE (MX51_GPC_BASE + 0x1C0)
509#define MXC_PGC_IPU_BASE (MX51_GPC_BASE + 0x220)
510#define MXC_PGC_VPU_BASE (MX51_GPC_BASE + 0x240)
511#define MXC_PGC_GPU_BASE (MX51_GPC_BASE + 0x260)
512#define MXC_SRPG_NEON_BASE (MX51_GPC_BASE + 0x280)
513#define MXC_SRPG_ARM_BASE (MX51_GPC_BASE + 0x2A0)
514#define MXC_SRPG_EMPGC0_BASE (MX51_GPC_BASE + 0x2C0)
515#define MXC_SRPG_EMPGC1_BASE (MX51_GPC_BASE + 0x2D0)
516#define MXC_SRPG_MEGAMIX_BASE (MX51_GPC_BASE + 0x2E0)
517#define MXC_SRPG_EMI_BASE (MX51_GPC_BASE + 0x300)
518
519/* CORTEXA8 platform */
520#define MXC_CORTEXA8_PLAT_PVID (MX51_CORTEXA8_BASE + 0x0)
521#define MXC_CORTEXA8_PLAT_GPC (MX51_CORTEXA8_BASE + 0x4)
522#define MXC_CORTEXA8_PLAT_PIC (MX51_CORTEXA8_BASE + 0x8)
523#define MXC_CORTEXA8_PLAT_LPC (MX51_CORTEXA8_BASE + 0xC)
524#define MXC_CORTEXA8_PLAT_NEON_LPC (MX51_CORTEXA8_BASE + 0x10)
525#define MXC_CORTEXA8_PLAT_ICGC (MX51_CORTEXA8_BASE + 0x14)
526#define MXC_CORTEXA8_PLAT_AMC (MX51_CORTEXA8_BASE + 0x18)
527#define MXC_CORTEXA8_PLAT_NMC (MX51_CORTEXA8_BASE + 0x20)
528#define MXC_CORTEXA8_PLAT_NMS (MX51_CORTEXA8_BASE + 0x24)
529
530/* DVFS CORE */
531#define MXC_DVFSTHRS (MXC_DVFS_CORE_BASE + 0x00)
532#define MXC_DVFSCOUN (MXC_DVFS_CORE_BASE + 0x04)
533#define MXC_DVFSSIG1 (MXC_DVFS_CORE_BASE + 0x08)
534#define MXC_DVFSSIG0 (MXC_DVFS_CORE_BASE + 0x0C)
535#define MXC_DVFSGPC0 (MXC_DVFS_CORE_BASE + 0x10)
536#define MXC_DVFSGPC1 (MXC_DVFS_CORE_BASE + 0x14)
537#define MXC_DVFSGPBT (MXC_DVFS_CORE_BASE + 0x18)
538#define MXC_DVFSEMAC (MXC_DVFS_CORE_BASE + 0x1C)
539#define MXC_DVFSCNTR (MXC_DVFS_CORE_BASE + 0x20)
540#define MXC_DVFSLTR0_0 (MXC_DVFS_CORE_BASE + 0x24)
541#define MXC_DVFSLTR0_1 (MXC_DVFS_CORE_BASE + 0x28)
542#define MXC_DVFSLTR1_0 (MXC_DVFS_CORE_BASE + 0x2C)
543#define MXC_DVFSLTR1_1 (MXC_DVFS_CORE_BASE + 0x30)
544#define MXC_DVFSPT0 (MXC_DVFS_CORE_BASE + 0x34)
545#define MXC_DVFSPT1 (MXC_DVFS_CORE_BASE + 0x38)
546#define MXC_DVFSPT2 (MXC_DVFS_CORE_BASE + 0x3C)
547#define MXC_DVFSPT3 (MXC_DVFS_CORE_BASE + 0x40)
548
549/* GPC */
550#define MXC_GPC_CNTR (MX51_GPC_BASE + 0x0)
551#define MXC_GPC_PGR (MX51_GPC_BASE + 0x4)
552#define MXC_GPC_VCR (MX51_GPC_BASE + 0x8)
553#define MXC_GPC_ALL_PU (MX51_GPC_BASE + 0xC)
554#define MXC_GPC_NEON (MX51_GPC_BASE + 0x10)
555#define MXC_GPC_PGR_ARMPG_OFFSET 8
556#define MXC_GPC_PGR_ARMPG_MASK (3 << 8)
557
558/* PGC */
559#define MXC_PGC_IPU_PGCR (MXC_PGC_IPU_BASE + 0x0)
560#define MXC_PGC_IPU_PGSR (MXC_PGC_IPU_BASE + 0xC)
561#define MXC_PGC_VPU_PGCR (MXC_PGC_VPU_BASE + 0x0)
562#define MXC_PGC_VPU_PGSR (MXC_PGC_VPU_BASE + 0xC)
563#define MXC_PGC_GPU_PGCR (MXC_PGC_GPU_BASE + 0x0)
564#define MXC_PGC_GPU_PGSR (MXC_PGC_GPU_BASE + 0xC)
565
566#define MXC_PGCR_PCR 1
567#define MXC_SRPGCR_PCR 1
568#define MXC_EMPGCR_PCR 1
569#define MXC_PGSR_PSR 1
570
571
572#define MXC_CORTEXA8_PLAT_LPC_DSM (1 << 0)
573#define MXC_CORTEXA8_PLAT_LPC_DBG_DSM (1 << 1)
574
575/* SRPG */
576#define MXC_SRPG_NEON_SRPGCR (MXC_SRPG_NEON_BASE + 0x0)
577#define MXC_SRPG_NEON_PUPSCR (MXC_SRPG_NEON_BASE + 0x4)
578#define MXC_SRPG_NEON_PDNSCR (MXC_SRPG_NEON_BASE + 0x8)
579
580#define MXC_SRPG_ARM_SRPGCR (MXC_SRPG_ARM_BASE + 0x0)
581#define MXC_SRPG_ARM_PUPSCR (MXC_SRPG_ARM_BASE + 0x4)
582#define MXC_SRPG_ARM_PDNSCR (MXC_SRPG_ARM_BASE + 0x8)
583
584#define MXC_SRPG_EMPGC0_SRPGCR (MXC_SRPG_EMPGC0_BASE + 0x0)
585#define MXC_SRPG_EMPGC0_PUPSCR (MXC_SRPG_EMPGC0_BASE + 0x4)
586#define MXC_SRPG_EMPGC0_PDNSCR (MXC_SRPG_EMPGC0_BASE + 0x8)
587
588#define MXC_SRPG_EMPGC1_SRPGCR (MXC_SRPG_EMPGC1_BASE + 0x0)
589#define MXC_SRPG_EMPGC1_PUPSCR (MXC_SRPG_EMPGC1_BASE + 0x4)
590#define MXC_SRPG_EMPGC1_PDNSCR (MXC_SRPG_EMPGC1_BASE + 0x8)
591
592#define MXC_SRPG_MEGAMIX_SRPGCR (MXC_SRPG_MEGAMIX_BASE + 0x0)
593#define MXC_SRPG_MEGAMIX_PUPSCR (MXC_SRPG_MEGAMIX_BASE + 0x4)
594#define MXC_SRPG_MEGAMIX_PDNSCR (MXC_SRPG_MEGAMIX_BASE + 0x8)
595
596#define MXC_SRPGC_EMI_SRPGCR (MXC_SRPGC_EMI_BASE + 0x0)
597#define MXC_SRPGC_EMI_PUPSCR (MXC_SRPGC_EMI_BASE + 0x4)
598#define MXC_SRPGC_EMI_PDNSCR (MXC_SRPGC_EMI_BASE + 0x8)
599
600#endif /* __ARCH_ARM_MACH_MX51_CRM_REGS_H__ */
diff --git a/arch/arm/mach-imx/devices-imx51.h b/arch/arm/mach-imx/devices-imx51.h
deleted file mode 100644
index 26389f35a2b2..000000000000
--- a/arch/arm/mach-imx/devices-imx51.h
+++ /dev/null
@@ -1,66 +0,0 @@
1/*
2 * Copyright (C) 2010 Pengutronix
3 * Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de>
4 *
5 * This program is free software; you can redistribute it and/or modify it under
6 * the terms of the GNU General Public License version 2 as published by the
7 * Free Software Foundation.
8 */
9#include "devices/devices-common.h"
10
11extern const struct imx_fec_data imx51_fec_data;
12#define imx51_add_fec(pdata) \
13 imx_add_fec(&imx51_fec_data, pdata)
14
15extern const struct imx_fsl_usb2_udc_data imx51_fsl_usb2_udc_data;
16#define imx51_add_fsl_usb2_udc(pdata) \
17 imx_add_fsl_usb2_udc(&imx51_fsl_usb2_udc_data, pdata)
18
19extern const struct imx_imx_i2c_data imx51_imx_i2c_data[];
20#define imx51_add_imx_i2c(id, pdata) \
21 imx_add_imx_i2c(&imx51_imx_i2c_data[id], pdata)
22#define imx51_add_hsi2c(pdata) \
23 imx51_add_imx_i2c(2, pdata)
24
25extern const struct imx_imx_ssi_data imx51_imx_ssi_data[];
26#define imx51_add_imx_ssi(id, pdata) \
27 imx_add_imx_ssi(&imx51_imx_ssi_data[id], pdata)
28
29extern const struct imx_imx_uart_1irq_data imx51_imx_uart_data[];
30#define imx51_add_imx_uart(id, pdata) \
31 imx_add_imx_uart_1irq(&imx51_imx_uart_data[id], pdata)
32
33extern const struct imx_mxc_ehci_data imx51_mxc_ehci_otg_data;
34#define imx51_add_mxc_ehci_otg(pdata) \
35 imx_add_mxc_ehci(&imx51_mxc_ehci_otg_data, pdata)
36extern const struct imx_mxc_ehci_data imx51_mxc_ehci_hs_data[];
37#define imx51_add_mxc_ehci_hs(id, pdata) \
38 imx_add_mxc_ehci(&imx51_mxc_ehci_hs_data[id - 1], pdata)
39
40extern const struct imx_mxc_nand_data imx51_mxc_nand_data;
41#define imx51_add_mxc_nand(pdata) \
42 imx_add_mxc_nand(&imx51_mxc_nand_data, pdata)
43
44extern const struct imx_sdhci_esdhc_imx_data imx51_sdhci_esdhc_imx_data[];
45#define imx51_add_sdhci_esdhc_imx(id, pdata) \
46 imx_add_sdhci_esdhc_imx(&imx51_sdhci_esdhc_imx_data[id], pdata)
47
48extern const struct imx_spi_imx_data imx51_cspi_data;
49#define imx51_add_cspi(pdata) \
50 imx_add_spi_imx(&imx51_cspi_data, pdata)
51
52extern const struct imx_spi_imx_data imx51_ecspi_data[];
53#define imx51_add_ecspi(id, pdata) \
54 imx_add_spi_imx(&imx51_ecspi_data[id], pdata)
55
56extern const struct imx_imx2_wdt_data imx51_imx2_wdt_data[];
57#define imx51_add_imx2_wdt(id) \
58 imx_add_imx2_wdt(&imx51_imx2_wdt_data[id])
59
60extern const struct imx_imx_keypad_data imx51_imx_keypad_data;
61#define imx51_add_imx_keypad(pdata) \
62 imx_add_imx_keypad(&imx51_imx_keypad_data, pdata)
63
64extern const struct imx_pata_imx_data imx51_pata_imx_data;
65#define imx51_add_pata_imx() \
66 imx_add_pata_imx(&imx51_pata_imx_data)
diff --git a/arch/arm/mach-imx/devices/Kconfig b/arch/arm/mach-imx/devices/Kconfig
index 2d260a5a307c..1d2cc1805f3e 100644
--- a/arch/arm/mach-imx/devices/Kconfig
+++ b/arch/arm/mach-imx/devices/Kconfig
@@ -1,6 +1,6 @@
1config IMX_HAVE_PLATFORM_FEC 1config IMX_HAVE_PLATFORM_FEC
2 bool 2 bool
3 default y if ARCH_MX25 || SOC_IMX27 || SOC_IMX35 || SOC_IMX51 || SOC_IMX53 3 default y if SOC_IMX25 || SOC_IMX27 || SOC_IMX35
4 4
5config IMX_HAVE_PLATFORM_FLEXCAN 5config IMX_HAVE_PLATFORM_FLEXCAN
6 bool 6 bool
@@ -10,7 +10,6 @@ config IMX_HAVE_PLATFORM_FSL_USB2_UDC
10 10
11config IMX_HAVE_PLATFORM_GPIO_KEYS 11config IMX_HAVE_PLATFORM_GPIO_KEYS
12 bool 12 bool
13 default y if SOC_IMX51
14 13
15config IMX_HAVE_PLATFORM_IMX21_HCD 14config IMX_HAVE_PLATFORM_IMX21_HCD
16 bool 15 bool
@@ -43,15 +42,9 @@ config IMX_HAVE_PLATFORM_IMX_SSI
43config IMX_HAVE_PLATFORM_IMX_UART 42config IMX_HAVE_PLATFORM_IMX_UART
44 bool 43 bool
45 44
46config IMX_HAVE_PLATFORM_IMX_UDC
47 bool
48
49config IMX_HAVE_PLATFORM_IPU_CORE 45config IMX_HAVE_PLATFORM_IPU_CORE
50 bool 46 bool
51 47
52config IMX_HAVE_PLATFORM_MX1_CAMERA
53 bool
54
55config IMX_HAVE_PLATFORM_MX2_CAMERA 48config IMX_HAVE_PLATFORM_MX2_CAMERA
56 bool 49 bool
57 50
diff --git a/arch/arm/mach-imx/devices/Makefile b/arch/arm/mach-imx/devices/Makefile
index 1cbc14cd80d1..8fdb12b4ca7e 100644
--- a/arch/arm/mach-imx/devices/Makefile
+++ b/arch/arm/mach-imx/devices/Makefile
@@ -16,9 +16,7 @@ obj-$(CONFIG_IMX_HAVE_PLATFORM_IMX_KEYPAD) += platform-imx-keypad.o
16obj-$(CONFIG_IMX_HAVE_PLATFORM_PATA_IMX) += platform-pata_imx.o 16obj-$(CONFIG_IMX_HAVE_PLATFORM_PATA_IMX) += platform-pata_imx.o
17obj-$(CONFIG_IMX_HAVE_PLATFORM_IMX_SSI) += platform-imx-ssi.o 17obj-$(CONFIG_IMX_HAVE_PLATFORM_IMX_SSI) += platform-imx-ssi.o
18obj-$(CONFIG_IMX_HAVE_PLATFORM_IMX_UART) += platform-imx-uart.o 18obj-$(CONFIG_IMX_HAVE_PLATFORM_IMX_UART) += platform-imx-uart.o
19obj-$(CONFIG_IMX_HAVE_PLATFORM_IMX_UDC) += platform-imx_udc.o
20obj-$(CONFIG_IMX_HAVE_PLATFORM_IPU_CORE) += platform-ipu-core.o 19obj-$(CONFIG_IMX_HAVE_PLATFORM_IPU_CORE) += platform-ipu-core.o
21obj-$(CONFIG_IMX_HAVE_PLATFORM_MX1_CAMERA) += platform-mx1-camera.o
22obj-$(CONFIG_IMX_HAVE_PLATFORM_MX2_CAMERA) += platform-mx2-camera.o 20obj-$(CONFIG_IMX_HAVE_PLATFORM_MX2_CAMERA) += platform-mx2-camera.o
23obj-$(CONFIG_IMX_HAVE_PLATFORM_MXC_EHCI) += platform-mxc-ehci.o 21obj-$(CONFIG_IMX_HAVE_PLATFORM_MXC_EHCI) += platform-mxc-ehci.o
24obj-$(CONFIG_IMX_HAVE_PLATFORM_MXC_MMC) += platform-mxc-mmc.o 22obj-$(CONFIG_IMX_HAVE_PLATFORM_MXC_MMC) += platform-mxc-mmc.o
diff --git a/arch/arm/mach-imx/devices/devices-common.h b/arch/arm/mach-imx/devices/devices-common.h
index 61352a80bb59..67f7fb13050d 100644
--- a/arch/arm/mach-imx/devices/devices-common.h
+++ b/arch/arm/mach-imx/devices/devices-common.h
@@ -176,22 +176,6 @@ struct platform_device *__init imx_add_imx_uart_1irq(
176 const struct imx_imx_uart_1irq_data *data, 176 const struct imx_imx_uart_1irq_data *data,
177 const struct imxuart_platform_data *pdata); 177 const struct imxuart_platform_data *pdata);
178 178
179#include <linux/platform_data/usb-imx_udc.h>
180struct imx_imx_udc_data {
181 resource_size_t iobase;
182 resource_size_t iosize;
183 resource_size_t irq0;
184 resource_size_t irq1;
185 resource_size_t irq2;
186 resource_size_t irq3;
187 resource_size_t irq4;
188 resource_size_t irq5;
189 resource_size_t irq6;
190};
191struct platform_device *__init imx_add_imx_udc(
192 const struct imx_imx_udc_data *data,
193 const struct imxusb_platform_data *pdata);
194
195#include <linux/platform_data/video-mx3fb.h> 179#include <linux/platform_data/video-mx3fb.h>
196#include <linux/platform_data/camera-mx3.h> 180#include <linux/platform_data/camera-mx3.h>
197struct imx_ipu_core_data { 181struct imx_ipu_core_data {
@@ -208,16 +192,6 @@ struct platform_device *__init imx_add_mx3_sdc_fb(
208 const struct imx_ipu_core_data *data, 192 const struct imx_ipu_core_data *data,
209 struct mx3fb_platform_data *pdata); 193 struct mx3fb_platform_data *pdata);
210 194
211#include <linux/platform_data/camera-mx1.h>
212struct imx_mx1_camera_data {
213 resource_size_t iobase;
214 resource_size_t iosize;
215 resource_size_t irq;
216};
217struct platform_device *__init imx_add_mx1_camera(
218 const struct imx_mx1_camera_data *data,
219 const struct mx1_camera_pdata *pdata);
220
221#include <linux/platform_data/camera-mx2.h> 195#include <linux/platform_data/camera-mx2.h>
222struct imx_mx2_camera_data { 196struct imx_mx2_camera_data {
223 const char *devid; 197 const char *devid;
diff --git a/arch/arm/mach-imx/devices/platform-fec.c b/arch/arm/mach-imx/devices/platform-fec.c
index 63eba08f87b1..d86f9250b4ee 100644
--- a/arch/arm/mach-imx/devices/platform-fec.c
+++ b/arch/arm/mach-imx/devices/platform-fec.c
@@ -35,18 +35,6 @@ const struct imx_fec_data imx35_fec_data __initconst =
35 imx_fec_data_entry_single(MX35, "imx27-fec"); 35 imx_fec_data_entry_single(MX35, "imx27-fec");
36#endif 36#endif
37 37
38#ifdef CONFIG_SOC_IMX51
39/* i.mx51 has the i.mx27 type fec */
40const struct imx_fec_data imx51_fec_data __initconst =
41 imx_fec_data_entry_single(MX51, "imx27-fec");
42#endif
43
44#ifdef CONFIG_SOC_IMX53
45/* i.mx53 has the i.mx25 type fec */
46const struct imx_fec_data imx53_fec_data __initconst =
47 imx_fec_data_entry_single(MX53, "imx25-fec");
48#endif
49
50struct platform_device *__init imx_add_fec( 38struct platform_device *__init imx_add_fec(
51 const struct imx_fec_data *data, 39 const struct imx_fec_data *data,
52 const struct fec_platform_data *pdata) 40 const struct fec_platform_data *pdata)
diff --git a/arch/arm/mach-imx/devices/platform-fsl-usb2-udc.c b/arch/arm/mach-imx/devices/platform-fsl-usb2-udc.c
index 3c06bd96e9cc..23b0061347cb 100644
--- a/arch/arm/mach-imx/devices/platform-fsl-usb2-udc.c
+++ b/arch/arm/mach-imx/devices/platform-fsl-usb2-udc.c
@@ -38,11 +38,6 @@ const struct imx_fsl_usb2_udc_data imx35_fsl_usb2_udc_data __initconst =
38 imx_fsl_usb2_udc_data_entry_single(MX35, "imx-udc-mx27"); 38 imx_fsl_usb2_udc_data_entry_single(MX35, "imx-udc-mx27");
39#endif /* ifdef CONFIG_SOC_IMX35 */ 39#endif /* ifdef CONFIG_SOC_IMX35 */
40 40
41#ifdef CONFIG_SOC_IMX51
42const struct imx_fsl_usb2_udc_data imx51_fsl_usb2_udc_data __initconst =
43 imx_fsl_usb2_udc_data_entry_single(MX51, "imx-udc-mx51");
44#endif
45
46struct platform_device *__init imx_add_fsl_usb2_udc( 41struct platform_device *__init imx_add_fsl_usb2_udc(
47 const struct imx_fsl_usb2_udc_data *data, 42 const struct imx_fsl_usb2_udc_data *data,
48 const struct fsl_usb2_platform_data *pdata) 43 const struct fsl_usb2_platform_data *pdata)
diff --git a/arch/arm/mach-imx/devices/platform-imx-i2c.c b/arch/arm/mach-imx/devices/platform-imx-i2c.c
index 57d342e85c2f..644ac2689882 100644
--- a/arch/arm/mach-imx/devices/platform-imx-i2c.c
+++ b/arch/arm/mach-imx/devices/platform-imx-i2c.c
@@ -70,32 +70,6 @@ const struct imx_imx_i2c_data imx35_imx_i2c_data[] __initconst = {
70}; 70};
71#endif /* ifdef CONFIG_SOC_IMX35 */ 71#endif /* ifdef CONFIG_SOC_IMX35 */
72 72
73#ifdef CONFIG_SOC_IMX51
74const struct imx_imx_i2c_data imx51_imx_i2c_data[] __initconst = {
75#define imx51_imx_i2c_data_entry(_id, _hwid) \
76 imx_imx_i2c_data_entry(MX51, "imx21-i2c", _id, _hwid, SZ_4K)
77 imx51_imx_i2c_data_entry(0, 1),
78 imx51_imx_i2c_data_entry(1, 2),
79 {
80 .devid = "imx21-i2c",
81 .id = 2,
82 .iobase = MX51_HSI2C_DMA_BASE_ADDR,
83 .iosize = SZ_16K,
84 .irq = MX51_INT_HS_I2C,
85 },
86};
87#endif /* ifdef CONFIG_SOC_IMX51 */
88
89#ifdef CONFIG_SOC_IMX53
90const struct imx_imx_i2c_data imx53_imx_i2c_data[] __initconst = {
91#define imx53_imx_i2c_data_entry(_id, _hwid) \
92 imx_imx_i2c_data_entry(MX53, "imx21-i2c", _id, _hwid, SZ_4K)
93 imx53_imx_i2c_data_entry(0, 1),
94 imx53_imx_i2c_data_entry(1, 2),
95 imx53_imx_i2c_data_entry(2, 3),
96};
97#endif /* ifdef CONFIG_SOC_IMX53 */
98
99struct platform_device *__init imx_add_imx_i2c( 73struct platform_device *__init imx_add_imx_i2c(
100 const struct imx_imx_i2c_data *data, 74 const struct imx_imx_i2c_data *data,
101 const struct imxi2c_platform_data *pdata) 75 const struct imxi2c_platform_data *pdata)
diff --git a/arch/arm/mach-imx/devices/platform-imx-keypad.c b/arch/arm/mach-imx/devices/platform-imx-keypad.c
index 8f22a4c98a4c..f42200b7aca9 100644
--- a/arch/arm/mach-imx/devices/platform-imx-keypad.c
+++ b/arch/arm/mach-imx/devices/platform-imx-keypad.c
@@ -41,16 +41,6 @@ const struct imx_imx_keypad_data imx35_imx_keypad_data __initconst =
41 imx_imx_keypad_data_entry_single(MX35, SZ_16); 41 imx_imx_keypad_data_entry_single(MX35, SZ_16);
42#endif /* ifdef CONFIG_SOC_IMX35 */ 42#endif /* ifdef CONFIG_SOC_IMX35 */
43 43
44#ifdef CONFIG_SOC_IMX51
45const struct imx_imx_keypad_data imx51_imx_keypad_data __initconst =
46 imx_imx_keypad_data_entry_single(MX51, SZ_16);
47#endif /* ifdef CONFIG_SOC_IMX51 */
48
49#ifdef CONFIG_SOC_IMX53
50const struct imx_imx_keypad_data imx53_imx_keypad_data __initconst =
51 imx_imx_keypad_data_entry_single(MX53, SZ_16);
52#endif /* ifdef CONFIG_SOC_IMX53 */
53
54struct platform_device *__init imx_add_imx_keypad( 44struct platform_device *__init imx_add_imx_keypad(
55 const struct imx_imx_keypad_data *data, 45 const struct imx_imx_keypad_data *data,
56 const struct matrix_keymap_data *pdata) 46 const struct matrix_keymap_data *pdata)
diff --git a/arch/arm/mach-imx/devices/platform-imx-ssi.c b/arch/arm/mach-imx/devices/platform-imx-ssi.c
index bfcb8f3dfa8d..1c7c721ebff1 100644
--- a/arch/arm/mach-imx/devices/platform-imx-ssi.c
+++ b/arch/arm/mach-imx/devices/platform-imx-ssi.c
@@ -66,26 +66,6 @@ const struct imx_imx_ssi_data imx35_imx_ssi_data[] __initconst = {
66}; 66};
67#endif /* ifdef CONFIG_SOC_IMX35 */ 67#endif /* ifdef CONFIG_SOC_IMX35 */
68 68
69#ifdef CONFIG_SOC_IMX51
70const struct imx_imx_ssi_data imx51_imx_ssi_data[] __initconst = {
71#define imx51_imx_ssi_data_entry(_id, _hwid) \
72 imx_imx_ssi_data_entry(MX51, _id, _hwid, SZ_16K)
73 imx51_imx_ssi_data_entry(0, 1),
74 imx51_imx_ssi_data_entry(1, 2),
75 imx51_imx_ssi_data_entry(2, 3),
76};
77#endif /* ifdef CONFIG_SOC_IMX51 */
78
79#ifdef CONFIG_SOC_IMX53
80const struct imx_imx_ssi_data imx53_imx_ssi_data[] __initconst = {
81#define imx53_imx_ssi_data_entry(_id, _hwid) \
82 imx_imx_ssi_data_entry(MX53, _id, _hwid, SZ_16K)
83 imx53_imx_ssi_data_entry(0, 1),
84 imx53_imx_ssi_data_entry(1, 2),
85 imx53_imx_ssi_data_entry(2, 3),
86};
87#endif /* ifdef CONFIG_SOC_IMX53 */
88
89struct platform_device *__init imx_add_imx_ssi( 69struct platform_device *__init imx_add_imx_ssi(
90 const struct imx_imx_ssi_data *data, 70 const struct imx_imx_ssi_data *data,
91 const struct imx_ssi_platform_data *pdata) 71 const struct imx_ssi_platform_data *pdata)
diff --git a/arch/arm/mach-imx/devices/platform-imx-uart.c b/arch/arm/mach-imx/devices/platform-imx-uart.c
index faac4aa6ca6d..8c01836bc1d4 100644
--- a/arch/arm/mach-imx/devices/platform-imx-uart.c
+++ b/arch/arm/mach-imx/devices/platform-imx-uart.c
@@ -94,28 +94,6 @@ const struct imx_imx_uart_1irq_data imx35_imx_uart_data[] __initconst = {
94}; 94};
95#endif /* ifdef CONFIG_SOC_IMX35 */ 95#endif /* ifdef CONFIG_SOC_IMX35 */
96 96
97#ifdef CONFIG_SOC_IMX51
98const struct imx_imx_uart_1irq_data imx51_imx_uart_data[] __initconst = {
99#define imx51_imx_uart_data_entry(_id, _hwid) \
100 imx_imx_uart_1irq_data_entry(MX51, _id, _hwid, SZ_4K)
101 imx51_imx_uart_data_entry(0, 1),
102 imx51_imx_uart_data_entry(1, 2),
103 imx51_imx_uart_data_entry(2, 3),
104};
105#endif /* ifdef CONFIG_SOC_IMX51 */
106
107#ifdef CONFIG_SOC_IMX53
108const struct imx_imx_uart_1irq_data imx53_imx_uart_data[] __initconst = {
109#define imx53_imx_uart_data_entry(_id, _hwid) \
110 imx_imx_uart_1irq_data_entry(MX53, _id, _hwid, SZ_4K)
111 imx53_imx_uart_data_entry(0, 1),
112 imx53_imx_uart_data_entry(1, 2),
113 imx53_imx_uart_data_entry(2, 3),
114 imx53_imx_uart_data_entry(3, 4),
115 imx53_imx_uart_data_entry(4, 5),
116};
117#endif /* ifdef CONFIG_SOC_IMX53 */
118
119struct platform_device *__init imx_add_imx_uart_3irq( 97struct platform_device *__init imx_add_imx_uart_3irq(
120 const struct imx_imx_uart_3irq_data *data, 98 const struct imx_imx_uart_3irq_data *data,
121 const struct imxuart_platform_data *pdata) 99 const struct imxuart_platform_data *pdata)
diff --git a/arch/arm/mach-imx/devices/platform-imx2-wdt.c b/arch/arm/mach-imx/devices/platform-imx2-wdt.c
index ec75d6413686..54f63bc25ca4 100644
--- a/arch/arm/mach-imx/devices/platform-imx2-wdt.c
+++ b/arch/arm/mach-imx/devices/platform-imx2-wdt.c
@@ -45,24 +45,6 @@ const struct imx_imx2_wdt_data imx35_imx2_wdt_data __initconst =
45 imx_imx2_wdt_data_entry_single(MX35, 0, , SZ_16K); 45 imx_imx2_wdt_data_entry_single(MX35, 0, , SZ_16K);
46#endif /* ifdef CONFIG_SOC_IMX35 */ 46#endif /* ifdef CONFIG_SOC_IMX35 */
47 47
48#ifdef CONFIG_SOC_IMX51
49const struct imx_imx2_wdt_data imx51_imx2_wdt_data[] __initconst = {
50#define imx51_imx2_wdt_data_entry(_id, _hwid) \
51 imx_imx2_wdt_data_entry(MX51, _id, _hwid, SZ_16K)
52 imx51_imx2_wdt_data_entry(0, 1),
53 imx51_imx2_wdt_data_entry(1, 2),
54};
55#endif /* ifdef CONFIG_SOC_IMX51 */
56
57#ifdef CONFIG_SOC_IMX53
58const struct imx_imx2_wdt_data imx53_imx2_wdt_data[] __initconst = {
59#define imx53_imx2_wdt_data_entry(_id, _hwid) \
60 imx_imx2_wdt_data_entry(MX53, _id, _hwid, SZ_16K)
61 imx53_imx2_wdt_data_entry(0, 1),
62 imx53_imx2_wdt_data_entry(1, 2),
63};
64#endif /* ifdef CONFIG_SOC_IMX53 */
65
66struct platform_device *__init imx_add_imx2_wdt( 48struct platform_device *__init imx_add_imx2_wdt(
67 const struct imx_imx2_wdt_data *data) 49 const struct imx_imx2_wdt_data *data)
68{ 50{
diff --git a/arch/arm/mach-imx/devices/platform-imx_udc.c b/arch/arm/mach-imx/devices/platform-imx_udc.c
deleted file mode 100644
index 5ced7e4e2c71..000000000000
--- a/arch/arm/mach-imx/devices/platform-imx_udc.c
+++ /dev/null
@@ -1,75 +0,0 @@
1/*
2 * Copyright (C) 2010 Pengutronix
3 * Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de>
4 *
5 * This program is free software; you can redistribute it and/or modify it under
6 * the terms of the GNU General Public License version 2 as published by the
7 * Free Software Foundation.
8 */
9#include "../hardware.h"
10#include "devices-common.h"
11
12#define imx_imx_udc_data_entry_single(soc, _size) \
13 { \
14 .iobase = soc ## _USBD_BASE_ADDR, \
15 .iosize = _size, \
16 .irq0 = soc ## _INT_USBD0, \
17 .irq1 = soc ## _INT_USBD1, \
18 .irq2 = soc ## _INT_USBD2, \
19 .irq3 = soc ## _INT_USBD3, \
20 .irq4 = soc ## _INT_USBD4, \
21 .irq5 = soc ## _INT_USBD5, \
22 .irq6 = soc ## _INT_USBD6, \
23 }
24
25#define imx_imx_udc_data_entry(soc, _size) \
26 [_id] = imx_imx_udc_data_entry_single(soc, _size)
27
28#ifdef CONFIG_SOC_IMX1
29const struct imx_imx_udc_data imx1_imx_udc_data __initconst =
30 imx_imx_udc_data_entry_single(MX1, SZ_4K);
31#endif /* ifdef CONFIG_SOC_IMX1 */
32
33struct platform_device *__init imx_add_imx_udc(
34 const struct imx_imx_udc_data *data,
35 const struct imxusb_platform_data *pdata)
36{
37 struct resource res[] = {
38 {
39 .start = data->iobase,
40 .end = data->iobase + data->iosize - 1,
41 .flags = IORESOURCE_MEM,
42 }, {
43 .start = data->irq0,
44 .end = data->irq0,
45 .flags = IORESOURCE_IRQ,
46 }, {
47 .start = data->irq1,
48 .end = data->irq1,
49 .flags = IORESOURCE_IRQ,
50 }, {
51 .start = data->irq2,
52 .end = data->irq2,
53 .flags = IORESOURCE_IRQ,
54 }, {
55 .start = data->irq3,
56 .end = data->irq3,
57 .flags = IORESOURCE_IRQ,
58 }, {
59 .start = data->irq4,
60 .end = data->irq4,
61 .flags = IORESOURCE_IRQ,
62 }, {
63 .start = data->irq5,
64 .end = data->irq5,
65 .flags = IORESOURCE_IRQ,
66 }, {
67 .start = data->irq6,
68 .end = data->irq6,
69 .flags = IORESOURCE_IRQ,
70 },
71 };
72
73 return imx_add_platform_device("imx_udc", 0,
74 res, ARRAY_SIZE(res), pdata, sizeof(*pdata));
75}
diff --git a/arch/arm/mach-imx/devices/platform-mx1-camera.c b/arch/arm/mach-imx/devices/platform-mx1-camera.c
deleted file mode 100644
index 2c6788131080..000000000000
--- a/arch/arm/mach-imx/devices/platform-mx1-camera.c
+++ /dev/null
@@ -1,42 +0,0 @@
1/*
2 * Copyright (C) 2010 Pengutronix
3 * Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de>
4 *
5 * This program is free software; you can redistribute it and/or modify it under
6 * the terms of the GNU General Public License version 2 as published by the
7 * Free Software Foundation.
8 */
9#include "../hardware.h"
10#include "devices-common.h"
11
12#define imx_mx1_camera_data_entry_single(soc, _size) \
13 { \
14 .iobase = soc ## _CSI ## _BASE_ADDR, \
15 .iosize = _size, \
16 .irq = soc ## _INT_CSI, \
17 }
18
19#ifdef CONFIG_SOC_IMX1
20const struct imx_mx1_camera_data imx1_mx1_camera_data __initconst =
21 imx_mx1_camera_data_entry_single(MX1, 10);
22#endif /* ifdef CONFIG_SOC_IMX1 */
23
24struct platform_device *__init imx_add_mx1_camera(
25 const struct imx_mx1_camera_data *data,
26 const struct mx1_camera_pdata *pdata)
27{
28 struct resource res[] = {
29 {
30 .start = data->iobase,
31 .end = data->iobase + data->iosize - 1,
32 .flags = IORESOURCE_MEM,
33 }, {
34 .start = data->irq,
35 .end = data->irq,
36 .flags = IORESOURCE_IRQ,
37 },
38 };
39 return imx_add_platform_device_dmamask("mx1-camera", 0,
40 res, ARRAY_SIZE(res),
41 pdata, sizeof(*pdata), DMA_BIT_MASK(32));
42}
diff --git a/arch/arm/mach-imx/devices/platform-mxc-ehci.c b/arch/arm/mach-imx/devices/platform-mxc-ehci.c
index 5d4bbbfde641..296353662ff0 100644
--- a/arch/arm/mach-imx/devices/platform-mxc-ehci.c
+++ b/arch/arm/mach-imx/devices/platform-mxc-ehci.c
@@ -50,15 +50,6 @@ const struct imx_mxc_ehci_data imx35_mxc_ehci_hs_data __initconst =
50 imx_mxc_ehci_data_entry_single(MX35, 1, HS); 50 imx_mxc_ehci_data_entry_single(MX35, 1, HS);
51#endif /* ifdef CONFIG_SOC_IMX35 */ 51#endif /* ifdef CONFIG_SOC_IMX35 */
52 52
53#ifdef CONFIG_SOC_IMX51
54const struct imx_mxc_ehci_data imx51_mxc_ehci_otg_data __initconst =
55 imx_mxc_ehci_data_entry_single(MX51, 0, OTG);
56const struct imx_mxc_ehci_data imx51_mxc_ehci_hs_data[] __initconst = {
57 imx_mxc_ehci_data_entry_single(MX51, 1, HS1),
58 imx_mxc_ehci_data_entry_single(MX51, 2, HS2),
59};
60#endif /* ifdef CONFIG_SOC_IMX51 */
61
62struct platform_device *__init imx_add_mxc_ehci( 53struct platform_device *__init imx_add_mxc_ehci(
63 const struct imx_mxc_ehci_data *data, 54 const struct imx_mxc_ehci_data *data,
64 const struct mxc_usbh_platform_data *pdata) 55 const struct mxc_usbh_platform_data *pdata)
diff --git a/arch/arm/mach-imx/devices/platform-mxc_nand.c b/arch/arm/mach-imx/devices/platform-mxc_nand.c
index 7af1c53e42b5..fa618a34f462 100644
--- a/arch/arm/mach-imx/devices/platform-mxc_nand.c
+++ b/arch/arm/mach-imx/devices/platform-mxc_nand.c
@@ -54,11 +54,6 @@ const struct imx_mxc_nand_data imx35_mxc_nand_data __initconst =
54 imx_mxc_nand_data_entry_single(MX35, "imx25-nand", SZ_8K); 54 imx_mxc_nand_data_entry_single(MX35, "imx25-nand", SZ_8K);
55#endif 55#endif
56 56
57#ifdef CONFIG_SOC_IMX51
58const struct imx_mxc_nand_data imx51_mxc_nand_data __initconst =
59 imx_mxc_nandv3_data_entry_single(MX51, "imx51-nand", SZ_16K);
60#endif
61
62struct platform_device *__init imx_add_mxc_nand( 57struct platform_device *__init imx_add_mxc_nand(
63 const struct imx_mxc_nand_data *data, 58 const struct imx_mxc_nand_data *data,
64 const struct mxc_nand_platform_data *pdata) 59 const struct mxc_nand_platform_data *pdata)
diff --git a/arch/arm/mach-imx/devices/platform-mxc_rnga.c b/arch/arm/mach-imx/devices/platform-mxc_rnga.c
index c58404badb59..851fbc8af7a9 100644
--- a/arch/arm/mach-imx/devices/platform-mxc_rnga.c
+++ b/arch/arm/mach-imx/devices/platform-mxc_rnga.c
@@ -48,9 +48,6 @@ static int __init imxXX_add_mxc_rnga(void)
48#endif /* if defined(CONFIG_SOC_IMX31) */ 48#endif /* if defined(CONFIG_SOC_IMX31) */
49 ret = ERR_PTR(-ENODEV); 49 ret = ERR_PTR(-ENODEV);
50 50
51 if (IS_ERR(ret)) 51 return PTR_ERR_OR_ZERO(ret);
52 return PTR_ERR(ret);
53
54 return 0;
55} 52}
56arch_initcall(imxXX_add_mxc_rnga); 53arch_initcall(imxXX_add_mxc_rnga);
diff --git a/arch/arm/mach-imx/devices/platform-pata_imx.c b/arch/arm/mach-imx/devices/platform-pata_imx.c
index e4ec11c8ce55..1c7f895a69d2 100644
--- a/arch/arm/mach-imx/devices/platform-pata_imx.c
+++ b/arch/arm/mach-imx/devices/platform-pata_imx.c
@@ -28,16 +28,6 @@ const struct imx_pata_imx_data imx35_pata_imx_data __initconst =
28 imx_pata_imx_data_entry_single(MX35, SZ_16K); 28 imx_pata_imx_data_entry_single(MX35, SZ_16K);
29#endif /* ifdef CONFIG_SOC_IMX35 */ 29#endif /* ifdef CONFIG_SOC_IMX35 */
30 30
31#ifdef CONFIG_SOC_IMX51
32const struct imx_pata_imx_data imx51_pata_imx_data __initconst =
33 imx_pata_imx_data_entry_single(MX51, SZ_16K);
34#endif /* ifdef CONFIG_SOC_IMX51 */
35
36#ifdef CONFIG_SOC_IMX53
37const struct imx_pata_imx_data imx53_pata_imx_data __initconst =
38 imx_pata_imx_data_entry_single(MX53, SZ_16K);
39#endif /* ifdef CONFIG_SOC_IMX53 */
40
41struct platform_device *__init imx_add_pata_imx( 31struct platform_device *__init imx_add_pata_imx(
42 const struct imx_pata_imx_data *data) 32 const struct imx_pata_imx_data *data)
43{ 33{
diff --git a/arch/arm/mach-imx/devices/platform-sdhci-esdhc-imx.c b/arch/arm/mach-imx/devices/platform-sdhci-esdhc-imx.c
index e66a4e316311..fb8d4a2ad48c 100644
--- a/arch/arm/mach-imx/devices/platform-sdhci-esdhc-imx.c
+++ b/arch/arm/mach-imx/devices/platform-sdhci-esdhc-imx.c
@@ -43,30 +43,6 @@ imx35_sdhci_esdhc_imx_data[] __initconst = {
43}; 43};
44#endif /* ifdef CONFIG_SOC_IMX35 */ 44#endif /* ifdef CONFIG_SOC_IMX35 */
45 45
46#ifdef CONFIG_SOC_IMX51
47const struct imx_sdhci_esdhc_imx_data
48imx51_sdhci_esdhc_imx_data[] __initconst = {
49#define imx51_sdhci_esdhc_imx_data_entry(_id, _hwid) \
50 imx_sdhci_esdhc_imx_data_entry(MX51, "sdhci-esdhc-imx51", _id, _hwid)
51 imx51_sdhci_esdhc_imx_data_entry(0, 1),
52 imx51_sdhci_esdhc_imx_data_entry(1, 2),
53 imx51_sdhci_esdhc_imx_data_entry(2, 3),
54 imx51_sdhci_esdhc_imx_data_entry(3, 4),
55};
56#endif /* ifdef CONFIG_SOC_IMX51 */
57
58#ifdef CONFIG_SOC_IMX53
59const struct imx_sdhci_esdhc_imx_data
60imx53_sdhci_esdhc_imx_data[] __initconst = {
61#define imx53_sdhci_esdhc_imx_data_entry(_id, _hwid) \
62 imx_sdhci_esdhc_imx_data_entry(MX53, "sdhci-esdhc-imx53", _id, _hwid)
63 imx53_sdhci_esdhc_imx_data_entry(0, 1),
64 imx53_sdhci_esdhc_imx_data_entry(1, 2),
65 imx53_sdhci_esdhc_imx_data_entry(2, 3),
66 imx53_sdhci_esdhc_imx_data_entry(3, 4),
67};
68#endif /* ifdef CONFIG_SOC_IMX53 */
69
70static const struct esdhc_platform_data default_esdhc_pdata __initconst = { 46static const struct esdhc_platform_data default_esdhc_pdata __initconst = {
71 .wp_type = ESDHC_WP_NONE, 47 .wp_type = ESDHC_WP_NONE,
72 .cd_type = ESDHC_CD_NONE, 48 .cd_type = ESDHC_CD_NONE,
diff --git a/arch/arm/mach-imx/devices/platform-spi_imx.c b/arch/arm/mach-imx/devices/platform-spi_imx.c
index 8880bcb11e05..aca825d74c48 100644
--- a/arch/arm/mach-imx/devices/platform-spi_imx.c
+++ b/arch/arm/mach-imx/devices/platform-spi_imx.c
@@ -79,33 +79,6 @@ const struct imx_spi_imx_data imx35_cspi_data[] __initconst = {
79}; 79};
80#endif /* ifdef CONFIG_SOC_IMX35 */ 80#endif /* ifdef CONFIG_SOC_IMX35 */
81 81
82#ifdef CONFIG_SOC_IMX51
83/* i.mx51 has the i.mx35 type cspi */
84const struct imx_spi_imx_data imx51_cspi_data __initconst =
85 imx_spi_imx_data_entry_single(MX51, CSPI, "imx35-cspi", 2, , SZ_4K);
86
87const struct imx_spi_imx_data imx51_ecspi_data[] __initconst = {
88#define imx51_ecspi_data_entry(_id, _hwid) \
89 imx_spi_imx_data_entry(MX51, ECSPI, "imx51-ecspi", _id, _hwid, SZ_4K)
90 imx51_ecspi_data_entry(0, 1),
91 imx51_ecspi_data_entry(1, 2),
92};
93#endif /* ifdef CONFIG_SOC_IMX51 */
94
95#ifdef CONFIG_SOC_IMX53
96/* i.mx53 has the i.mx35 type cspi */
97const struct imx_spi_imx_data imx53_cspi_data __initconst =
98 imx_spi_imx_data_entry_single(MX53, CSPI, "imx35-cspi", 2, , SZ_4K);
99
100/* i.mx53 has the i.mx51 type ecspi */
101const struct imx_spi_imx_data imx53_ecspi_data[] __initconst = {
102#define imx53_ecspi_data_entry(_id, _hwid) \
103 imx_spi_imx_data_entry(MX53, ECSPI, "imx51-ecspi", _id, _hwid, SZ_4K)
104 imx53_ecspi_data_entry(0, 1),
105 imx53_ecspi_data_entry(1, 2),
106};
107#endif /* ifdef CONFIG_SOC_IMX53 */
108
109struct platform_device *__init imx_add_spi_imx( 82struct platform_device *__init imx_add_spi_imx(
110 const struct imx_spi_imx_data *data, 83 const struct imx_spi_imx_data *data,
111 const struct spi_imx_master *pdata) 84 const struct spi_imx_master *pdata)
diff --git a/arch/arm/mach-imx/ehci-imx25.c b/arch/arm/mach-imx/ehci-imx25.c
index 134c190e3003..42a5a3d14c5f 100644
--- a/arch/arm/mach-imx/ehci-imx25.c
+++ b/arch/arm/mach-imx/ehci-imx25.c
@@ -17,6 +17,7 @@
17#include <linux/io.h> 17#include <linux/io.h>
18#include <linux/platform_data/usb-ehci-mxc.h> 18#include <linux/platform_data/usb-ehci-mxc.h>
19 19
20#include "ehci.h"
20#include "hardware.h" 21#include "hardware.h"
21 22
22#define USBCTRL_OTGBASE_OFFSET 0x600 23#define USBCTRL_OTGBASE_OFFSET 0x600
diff --git a/arch/arm/mach-imx/ehci-imx27.c b/arch/arm/mach-imx/ehci-imx27.c
index 448d9115539d..c56974346c16 100644
--- a/arch/arm/mach-imx/ehci-imx27.c
+++ b/arch/arm/mach-imx/ehci-imx27.c
@@ -17,6 +17,7 @@
17#include <linux/io.h> 17#include <linux/io.h>
18#include <linux/platform_data/usb-ehci-mxc.h> 18#include <linux/platform_data/usb-ehci-mxc.h>
19 19
20#include "ehci.h"
20#include "hardware.h" 21#include "hardware.h"
21 22
22#define USBCTRL_OTGBASE_OFFSET 0x600 23#define USBCTRL_OTGBASE_OFFSET 0x600
diff --git a/arch/arm/mach-imx/ehci-imx31.c b/arch/arm/mach-imx/ehci-imx31.c
index 05de4e1e39d7..bede21d9b981 100644
--- a/arch/arm/mach-imx/ehci-imx31.c
+++ b/arch/arm/mach-imx/ehci-imx31.c
@@ -17,6 +17,7 @@
17#include <linux/io.h> 17#include <linux/io.h>
18#include <linux/platform_data/usb-ehci-mxc.h> 18#include <linux/platform_data/usb-ehci-mxc.h>
19 19
20#include "ehci.h"
20#include "hardware.h" 21#include "hardware.h"
21 22
22#define USBCTRL_OTGBASE_OFFSET 0x600 23#define USBCTRL_OTGBASE_OFFSET 0x600
diff --git a/arch/arm/mach-imx/ehci-imx35.c b/arch/arm/mach-imx/ehci-imx35.c
index 554e7cccff53..f424a543755c 100644
--- a/arch/arm/mach-imx/ehci-imx35.c
+++ b/arch/arm/mach-imx/ehci-imx35.c
@@ -17,6 +17,7 @@
17#include <linux/io.h> 17#include <linux/io.h>
18#include <linux/platform_data/usb-ehci-mxc.h> 18#include <linux/platform_data/usb-ehci-mxc.h>
19 19
20#include "ehci.h"
20#include "hardware.h" 21#include "hardware.h"
21 22
22#define USBCTRL_OTGBASE_OFFSET 0x600 23#define USBCTRL_OTGBASE_OFFSET 0x600
diff --git a/arch/arm/mach-imx/ehci-imx5.c b/arch/arm/mach-imx/ehci-imx5.c
deleted file mode 100644
index e49710b10c68..000000000000
--- a/arch/arm/mach-imx/ehci-imx5.c
+++ /dev/null
@@ -1,171 +0,0 @@
1/*
2 * Copyright (c) 2009 Daniel Mack <daniel@caiaq.de>
3 * Copyright (C) 2010 Freescale Semiconductor, Inc.
4 *
5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License as published by the
7 * Free Software Foundation; either version 2 of the License, or (at your
8 * option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
12 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
13 * for more details.
14 */
15
16#include <linux/platform_device.h>
17#include <linux/io.h>
18#include <linux/platform_data/usb-ehci-mxc.h>
19
20#include "hardware.h"
21
22#define MXC_OTG_OFFSET 0
23#define MXC_H1_OFFSET 0x200
24#define MXC_H2_OFFSET 0x400
25
26/* USB_CTRL */
27#define MXC_OTG_UCTRL_OWIE_BIT (1 << 27) /* OTG wakeup intr enable */
28#define MXC_OTG_UCTRL_OPM_BIT (1 << 24) /* OTG power mask */
29#define MXC_H1_UCTRL_H1UIE_BIT (1 << 12) /* Host1 ULPI interrupt enable */
30#define MXC_H1_UCTRL_H1WIE_BIT (1 << 11) /* HOST1 wakeup intr enable */
31#define MXC_H1_UCTRL_H1PM_BIT (1 << 8) /* HOST1 power mask */
32
33/* USB_PHY_CTRL_FUNC */
34#define MXC_OTG_PHYCTRL_OC_POL_BIT (1 << 9) /* OTG Polarity of Overcurrent */
35#define MXC_OTG_PHYCTRL_OC_DIS_BIT (1 << 8) /* OTG Disable Overcurrent Event */
36#define MXC_H1_OC_POL_BIT (1 << 6) /* UH1 Polarity of Overcurrent */
37#define MXC_H1_OC_DIS_BIT (1 << 5) /* UH1 Disable Overcurrent Event */
38#define MXC_OTG_PHYCTRL_PWR_POL_BIT (1 << 3) /* OTG Power Pin Polarity */
39
40/* USBH2CTRL */
41#define MXC_H2_UCTRL_H2UIE_BIT (1 << 8)
42#define MXC_H2_UCTRL_H2WIE_BIT (1 << 7)
43#define MXC_H2_UCTRL_H2PM_BIT (1 << 4)
44
45#define MXC_USBCMD_OFFSET 0x140
46
47/* USBCMD */
48#define MXC_UCMD_ITC_NO_THRESHOLD_MASK (~(0xff << 16)) /* Interrupt Threshold Control */
49
50int mx51_initialize_usb_hw(int port, unsigned int flags)
51{
52 unsigned int v;
53 void __iomem *usb_base;
54 void __iomem *usbotg_base;
55 void __iomem *usbother_base;
56 int ret = 0;
57
58 usb_base = ioremap(MX51_USB_OTG_BASE_ADDR, SZ_4K);
59 if (!usb_base) {
60 printk(KERN_ERR "%s(): ioremap failed\n", __func__);
61 return -ENOMEM;
62 }
63
64 switch (port) {
65 case 0: /* OTG port */
66 usbotg_base = usb_base + MXC_OTG_OFFSET;
67 break;
68 case 1: /* Host 1 port */
69 usbotg_base = usb_base + MXC_H1_OFFSET;
70 break;
71 case 2: /* Host 2 port */
72 usbotg_base = usb_base + MXC_H2_OFFSET;
73 break;
74 default:
75 printk(KERN_ERR"%s no such port %d\n", __func__, port);
76 ret = -ENOENT;
77 goto error;
78 }
79 usbother_base = usb_base + MX5_USBOTHER_REGS_OFFSET;
80
81 switch (port) {
82 case 0: /*OTG port */
83 if (flags & MXC_EHCI_INTERNAL_PHY) {
84 v = __raw_readl(usbother_base + MXC_USB_PHY_CTR_FUNC_OFFSET);
85
86 if (flags & MXC_EHCI_OC_PIN_ACTIVE_LOW)
87 v |= MXC_OTG_PHYCTRL_OC_POL_BIT;
88 else
89 v &= ~MXC_OTG_PHYCTRL_OC_POL_BIT;
90 if (flags & MXC_EHCI_POWER_PINS_ENABLED) {
91 /* OC/USBPWR is used */
92 v &= ~MXC_OTG_PHYCTRL_OC_DIS_BIT;
93 } else {
94 /* OC/USBPWR is not used */
95 v |= MXC_OTG_PHYCTRL_OC_DIS_BIT;
96 }
97 if (flags & MXC_EHCI_PWR_PIN_ACTIVE_HIGH)
98 v |= MXC_OTG_PHYCTRL_PWR_POL_BIT;
99 else
100 v &= ~MXC_OTG_PHYCTRL_PWR_POL_BIT;
101 __raw_writel(v, usbother_base + MXC_USB_PHY_CTR_FUNC_OFFSET);
102
103 v = __raw_readl(usbother_base + MXC_USBCTRL_OFFSET);
104 if (flags & MXC_EHCI_WAKEUP_ENABLED)
105 v |= MXC_OTG_UCTRL_OWIE_BIT;/* OTG wakeup enable */
106 else
107 v &= ~MXC_OTG_UCTRL_OWIE_BIT;/* OTG wakeup disable */
108 if (flags & MXC_EHCI_POWER_PINS_ENABLED)
109 v &= ~MXC_OTG_UCTRL_OPM_BIT;
110 else
111 v |= MXC_OTG_UCTRL_OPM_BIT;
112 __raw_writel(v, usbother_base + MXC_USBCTRL_OFFSET);
113 }
114 break;
115 case 1: /* Host 1 */
116 /*Host ULPI */
117 v = __raw_readl(usbother_base + MXC_USBCTRL_OFFSET);
118 if (flags & MXC_EHCI_WAKEUP_ENABLED) {
119 /* HOST1 wakeup/ULPI intr enable */
120 v |= (MXC_H1_UCTRL_H1WIE_BIT | MXC_H1_UCTRL_H1UIE_BIT);
121 } else {
122 /* HOST1 wakeup/ULPI intr disable */
123 v &= ~(MXC_H1_UCTRL_H1WIE_BIT | MXC_H1_UCTRL_H1UIE_BIT);
124 }
125
126 if (flags & MXC_EHCI_POWER_PINS_ENABLED)
127 v &= ~MXC_H1_UCTRL_H1PM_BIT; /* HOST1 power mask unused*/
128 else
129 v |= MXC_H1_UCTRL_H1PM_BIT; /* HOST1 power mask used*/
130 __raw_writel(v, usbother_base + MXC_USBCTRL_OFFSET);
131
132 v = __raw_readl(usbother_base + MXC_USB_PHY_CTR_FUNC_OFFSET);
133 if (flags & MXC_EHCI_OC_PIN_ACTIVE_LOW)
134 v |= MXC_H1_OC_POL_BIT;
135 else
136 v &= ~MXC_H1_OC_POL_BIT;
137 if (flags & MXC_EHCI_POWER_PINS_ENABLED)
138 v &= ~MXC_H1_OC_DIS_BIT; /* OC is used */
139 else
140 v |= MXC_H1_OC_DIS_BIT; /* OC is not used */
141 __raw_writel(v, usbother_base + MXC_USB_PHY_CTR_FUNC_OFFSET);
142
143 v = __raw_readl(usbotg_base + MXC_USBCMD_OFFSET);
144 if (flags & MXC_EHCI_ITC_NO_THRESHOLD)
145 /* Interrupt Threshold Control:Immediate (no threshold) */
146 v &= MXC_UCMD_ITC_NO_THRESHOLD_MASK;
147 __raw_writel(v, usbotg_base + MXC_USBCMD_OFFSET);
148 break;
149 case 2: /* Host 2 ULPI */
150 v = __raw_readl(usbother_base + MXC_USBH2CTRL_OFFSET);
151 if (flags & MXC_EHCI_WAKEUP_ENABLED) {
152 /* HOST1 wakeup/ULPI intr enable */
153 v |= (MXC_H2_UCTRL_H2WIE_BIT | MXC_H2_UCTRL_H2UIE_BIT);
154 } else {
155 /* HOST1 wakeup/ULPI intr disable */
156 v &= ~(MXC_H2_UCTRL_H2WIE_BIT | MXC_H2_UCTRL_H2UIE_BIT);
157 }
158
159 if (flags & MXC_EHCI_POWER_PINS_ENABLED)
160 v &= ~MXC_H2_UCTRL_H2PM_BIT; /* HOST2 power mask unused*/
161 else
162 v |= MXC_H2_UCTRL_H2PM_BIT; /* HOST2 power mask used*/
163 __raw_writel(v, usbother_base + MXC_USBH2CTRL_OFFSET);
164 break;
165 }
166
167error:
168 iounmap(usb_base);
169 return ret;
170}
171
diff --git a/arch/arm/mach-imx/ehci.h b/arch/arm/mach-imx/ehci.h
new file mode 100644
index 000000000000..0e060023db8b
--- /dev/null
+++ b/arch/arm/mach-imx/ehci.h
@@ -0,0 +1,43 @@
1#ifndef __MACH_IMX_EHCI_H
2#define __MACH_IMX_EHCI_H
3
4/* values for portsc field */
5#define MXC_EHCI_PHY_LOW_POWER_SUSPEND (1 << 23)
6#define MXC_EHCI_FORCE_FS (1 << 24)
7#define MXC_EHCI_UTMI_8BIT (0 << 28)
8#define MXC_EHCI_UTMI_16BIT (1 << 28)
9#define MXC_EHCI_SERIAL (1 << 29)
10#define MXC_EHCI_MODE_UTMI (0 << 30)
11#define MXC_EHCI_MODE_PHILIPS (1 << 30)
12#define MXC_EHCI_MODE_ULPI (2 << 30)
13#define MXC_EHCI_MODE_SERIAL (3 << 30)
14
15/* values for flags field */
16#define MXC_EHCI_INTERFACE_DIFF_UNI (0 << 0)
17#define MXC_EHCI_INTERFACE_DIFF_BI (1 << 0)
18#define MXC_EHCI_INTERFACE_SINGLE_UNI (2 << 0)
19#define MXC_EHCI_INTERFACE_SINGLE_BI (3 << 0)
20#define MXC_EHCI_INTERFACE_MASK (0xf)
21
22#define MXC_EHCI_POWER_PINS_ENABLED (1 << 5)
23#define MXC_EHCI_PWR_PIN_ACTIVE_HIGH (1 << 6)
24#define MXC_EHCI_OC_PIN_ACTIVE_LOW (1 << 7)
25#define MXC_EHCI_TTL_ENABLED (1 << 8)
26
27#define MXC_EHCI_INTERNAL_PHY (1 << 9)
28#define MXC_EHCI_IPPUE_DOWN (1 << 10)
29#define MXC_EHCI_IPPUE_UP (1 << 11)
30#define MXC_EHCI_WAKEUP_ENABLED (1 << 12)
31#define MXC_EHCI_ITC_NO_THRESHOLD (1 << 13)
32
33#define MXC_USBCTRL_OFFSET 0
34#define MXC_USB_PHY_CTR_FUNC_OFFSET 0x8
35#define MXC_USB_PHY_CTR_FUNC2_OFFSET 0xc
36#define MXC_USBH2CTRL_OFFSET 0x14
37
38int mx25_initialize_usb_hw(int port, unsigned int flags);
39int mx31_initialize_usb_hw(int port, unsigned int flags);
40int mx35_initialize_usb_hw(int port, unsigned int flags);
41int mx27_initialize_usb_hw(int port, unsigned int flags);
42
43#endif /* __MACH_IMX_EHCI_H */
diff --git a/arch/arm/mach-imx/gpc.c b/arch/arm/mach-imx/gpc.c
index 586e0171a652..82ea74e68482 100644
--- a/arch/arm/mach-imx/gpc.c
+++ b/arch/arm/mach-imx/gpc.c
@@ -27,13 +27,14 @@ static void __iomem *gpc_base;
27static u32 gpc_wake_irqs[IMR_NUM]; 27static u32 gpc_wake_irqs[IMR_NUM];
28static u32 gpc_saved_imrs[IMR_NUM]; 28static u32 gpc_saved_imrs[IMR_NUM];
29 29
30void imx_gpc_pre_suspend(void) 30void imx_gpc_pre_suspend(bool arm_power_off)
31{ 31{
32 void __iomem *reg_imr1 = gpc_base + GPC_IMR1; 32 void __iomem *reg_imr1 = gpc_base + GPC_IMR1;
33 int i; 33 int i;
34 34
35 /* Tell GPC to power off ARM core when suspend */ 35 /* Tell GPC to power off ARM core when suspend */
36 writel_relaxed(0x1, gpc_base + GPC_PGC_CPU_PDN); 36 if (arm_power_off)
37 writel_relaxed(0x1, gpc_base + GPC_PGC_CPU_PDN);
37 38
38 for (i = 0; i < IMR_NUM; i++) { 39 for (i = 0; i < IMR_NUM; i++) {
39 gpc_saved_imrs[i] = readl_relaxed(reg_imr1 + i * 4); 40 gpc_saved_imrs[i] = readl_relaxed(reg_imr1 + i * 4);
diff --git a/arch/arm/mach-imx/hardware.h b/arch/arm/mach-imx/hardware.h
index abf43bb47eca..66b2b564c463 100644
--- a/arch/arm/mach-imx/hardware.h
+++ b/arch/arm/mach-imx/hardware.h
@@ -105,8 +105,6 @@
105 105
106#include "mxc.h" 106#include "mxc.h"
107 107
108#include "mx51.h"
109#include "mx53.h"
110#include "mx3x.h" 108#include "mx3x.h"
111#include "mx31.h" 109#include "mx31.h"
112#include "mx35.h" 110#include "mx35.h"
diff --git a/arch/arm/mach-imx/imx25-dt.c b/arch/arm/mach-imx/imx25-dt.c
index 42a65e067443..cf8032bae277 100644
--- a/arch/arm/mach-imx/imx25-dt.c
+++ b/arch/arm/mach-imx/imx25-dt.c
@@ -29,16 +29,10 @@ static const char * const imx25_dt_board_compat[] __initconst = {
29 NULL 29 NULL
30}; 30};
31 31
32static void __init imx25_timer_init(void)
33{
34 mx25_clocks_init_dt();
35}
36
37DT_MACHINE_START(IMX25_DT, "Freescale i.MX25 (Device Tree Support)") 32DT_MACHINE_START(IMX25_DT, "Freescale i.MX25 (Device Tree Support)")
38 .map_io = mx25_map_io, 33 .map_io = mx25_map_io,
39 .init_early = imx25_init_early, 34 .init_early = imx25_init_early,
40 .init_irq = mx25_init_irq, 35 .init_irq = mx25_init_irq,
41 .init_time = imx25_timer_init,
42 .init_machine = imx25_dt_init, 36 .init_machine = imx25_dt_init,
43 .dt_compat = imx25_dt_board_compat, 37 .dt_compat = imx25_dt_board_compat,
44 .restart = mxc_restart, 38 .restart = mxc_restart,
diff --git a/arch/arm/mach-imx/imx27-dt.c b/arch/arm/mach-imx/imx27-dt.c
index 17bd4058133d..080e66c6a1d0 100644
--- a/arch/arm/mach-imx/imx27-dt.c
+++ b/arch/arm/mach-imx/imx27-dt.c
@@ -34,16 +34,10 @@ static const char * const imx27_dt_board_compat[] __initconst = {
34 NULL 34 NULL
35}; 35};
36 36
37static void __init imx27_timer_init(void)
38{
39 mx27_clocks_init_dt();
40}
41
42DT_MACHINE_START(IMX27_DT, "Freescale i.MX27 (Device Tree Support)") 37DT_MACHINE_START(IMX27_DT, "Freescale i.MX27 (Device Tree Support)")
43 .map_io = mx27_map_io, 38 .map_io = mx27_map_io,
44 .init_early = imx27_init_early, 39 .init_early = imx27_init_early,
45 .init_irq = mx27_init_irq, 40 .init_irq = mx27_init_irq,
46 .init_time = imx27_timer_init,
47 .init_machine = imx27_dt_init, 41 .init_machine = imx27_dt_init,
48 .dt_compat = imx27_dt_board_compat, 42 .dt_compat = imx27_dt_board_compat,
49 .restart = mxc_restart, 43 .restart = mxc_restart,
diff --git a/arch/arm/mach-imx/imx31-dt.c b/arch/arm/mach-imx/imx31-dt.c
index 581f4d6c9b8a..418dbc82adc4 100644
--- a/arch/arm/mach-imx/imx31-dt.c
+++ b/arch/arm/mach-imx/imx31-dt.c
@@ -25,7 +25,7 @@ static void __init imx31_dt_init(void)
25 of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); 25 of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
26} 26}
27 27
28static const char *imx31_dt_board_compat[] __initconst = { 28static const char * const imx31_dt_board_compat[] __initconst = {
29 "fsl,imx31", 29 "fsl,imx31",
30 NULL 30 NULL
31}; 31};
diff --git a/arch/arm/mach-imx/imx35-dt.c b/arch/arm/mach-imx/imx35-dt.c
index a62854c59240..584fbe105579 100644
--- a/arch/arm/mach-imx/imx35-dt.c
+++ b/arch/arm/mach-imx/imx35-dt.c
@@ -34,7 +34,7 @@ static void __init imx35_irq_init(void)
34 mx35_init_irq(); 34 mx35_init_irq();
35} 35}
36 36
37static const char *imx35_dt_board_compat[] __initconst = { 37static const char * const imx35_dt_board_compat[] __initconst = {
38 "fsl,imx35", 38 "fsl,imx35",
39 NULL 39 NULL
40}; 40};
diff --git a/arch/arm/mach-imx/iomux-mx51.h b/arch/arm/mach-imx/iomux-mx51.h
deleted file mode 100644
index 75bbcc4aa2d2..000000000000
--- a/arch/arm/mach-imx/iomux-mx51.h
+++ /dev/null
@@ -1,827 +0,0 @@
1/*
2 * Copyright (C) 2009-2010 Amit Kucheria <amit.kucheria@canonical.com>
3 * Copyright (C) 2010 Freescale Semiconductor, Inc.
4 *
5 * The code contained herein is licensed under the GNU General Public
6 * License. You may obtain a copy of the GNU General Public License
7 * Version 2 or later at the following locations:
8 *
9 * http://www.opensource.org/licenses/gpl-license.html
10 * http://www.gnu.org/copyleft/gpl.html
11 */
12
13#ifndef __MACH_IOMUX_MX51_H__
14#define __MACH_IOMUX_MX51_H__
15
16#include "iomux-v3.h"
17#define __NA_ 0x000
18
19
20/* Pad control groupings */
21#define MX51_UART_PAD_CTRL (PAD_CTL_PKE | PAD_CTL_PUE | PAD_CTL_DSE_HIGH | \
22 PAD_CTL_HYS | PAD_CTL_SRE_FAST)
23#define MX51_I2C_PAD_CTRL (PAD_CTL_SRE_FAST | PAD_CTL_ODE | \
24 PAD_CTL_DSE_HIGH | PAD_CTL_PUS_100K_UP | \
25 PAD_CTL_HYS)
26#define MX51_ESDHC_PAD_CTRL (PAD_CTL_SRE_FAST | PAD_CTL_ODE | \
27 PAD_CTL_DSE_HIGH | PAD_CTL_PUS_100K_UP | \
28 PAD_CTL_HYS)
29#define MX51_USBH1_PAD_CTRL (PAD_CTL_PKE | PAD_CTL_SRE_FAST | \
30 PAD_CTL_DSE_HIGH | PAD_CTL_PUS_100K_UP | \
31 PAD_CTL_HYS | PAD_CTL_PUE)
32#define MX51_ECSPI_PAD_CTRL (PAD_CTL_PKE | PAD_CTL_HYS | \
33 PAD_CTL_DSE_HIGH | PAD_CTL_SRE_FAST)
34#define MX51_SDHCI_PAD_CTRL (PAD_CTL_PKE | PAD_CTL_DSE_HIGH | \
35 PAD_CTL_PUS_47K_UP | PAD_CTL_PUE | \
36 PAD_CTL_SRE_FAST | PAD_CTL_DVS)
37#define MX51_GPIO_PAD_CTRL (PAD_CTL_DSE_HIGH | PAD_CTL_PKE | PAD_CTL_SRE_FAST)
38
39#define MX51_PAD_CTRL_2 (PAD_CTL_PKE | PAD_CTL_HYS)
40#define MX51_PAD_CTRL_3 (PAD_CTL_PKE | PAD_CTL_PUS_100K_UP)
41#define MX51_PAD_CTRL_4 (PAD_CTL_PKE | PAD_CTL_DVS | PAD_CTL_HYS)
42#define MX51_PAD_CTRL_5 (PAD_CTL_DVS | PAD_CTL_DSE_HIGH)
43
44/*
45 * The naming convention for the pad modes is MX51_PAD_<padname>__<padmode>
46 * If <padname> or <padmode> refers to a GPIO, it is named GPIO<unit>_<num>
47 * See also iomux-v3.h
48 */
49
50/* Raw pin modes without pad control */
51/* PAD MUX ALT INPSE PATH PADCTRL */
52
53/* The same pins as above but with the default pad control values applied */
54#define MX51_PAD_EIM_D16__AUD4_RXFS IOMUX_PAD(0x3f0, 0x05c, 5, __NA_, 0, NO_PAD_CTRL)
55#define MX51_PAD_EIM_D16__AUD5_TXD IOMUX_PAD(0x3f0, 0x05c, 7, 0x8d8, 0, NO_PAD_CTRL)
56#define MX51_PAD_EIM_D16__EIM_D16 IOMUX_PAD(0x3f0, 0x05c, 0, __NA_, 0, NO_PAD_CTRL)
57#define MX51_PAD_EIM_D16__GPIO2_0 IOMUX_PAD(0x3f0, 0x05c, 1, __NA_, 0, MX51_GPIO_PAD_CTRL)
58#define MX51_PAD_EIM_D16__I2C1_SDA IOMUX_PAD(0x3f0, 0x05c, 0x14, 0x9b4, 0, MX51_I2C_PAD_CTRL)
59#define MX51_PAD_EIM_D16__UART2_CTS IOMUX_PAD(0x3f0, 0x05c, 3, __NA_, 0, MX51_UART_PAD_CTRL)
60#define MX51_PAD_EIM_D16__USBH2_DATA0 IOMUX_PAD(0x3f0, 0x05c, 2, __NA_, 0, NO_PAD_CTRL)
61#define MX51_PAD_EIM_D17__AUD5_RXD IOMUX_PAD(0x3f4, 0x060, 7, 0x8d4, 0, NO_PAD_CTRL)
62#define MX51_PAD_EIM_D17__EIM_D17 IOMUX_PAD(0x3f4, 0x060, 0, __NA_, 0, NO_PAD_CTRL)
63#define MX51_PAD_EIM_D17__GPIO2_1 IOMUX_PAD(0x3f4, 0x060, 1, __NA_, 0, MX51_GPIO_PAD_CTRL)
64#define MX51_PAD_EIM_D17__UART2_RXD IOMUX_PAD(0x3f4, 0x060, 3, 0x9ec, 0, MX51_UART_PAD_CTRL)
65#define MX51_PAD_EIM_D17__UART3_CTS IOMUX_PAD(0x3f4, 0x060, 4, __NA_, 0, MX51_UART_PAD_CTRL)
66#define MX51_PAD_EIM_D17__USBH2_DATA1 IOMUX_PAD(0x3f4, 0x060, 2, __NA_, 0, NO_PAD_CTRL)
67#define MX51_PAD_EIM_D18__AUD5_TXC IOMUX_PAD(0x3f8, 0x064, 7, 0x8e4, 0, NO_PAD_CTRL)
68#define MX51_PAD_EIM_D18__EIM_D18 IOMUX_PAD(0x3f8, 0x064, 0, __NA_, 0, NO_PAD_CTRL)
69#define MX51_PAD_EIM_D18__GPIO2_2 IOMUX_PAD(0x3f8, 0x064, 1, __NA_, 0, MX51_GPIO_PAD_CTRL)
70#define MX51_PAD_EIM_D18__UART2_TXD IOMUX_PAD(0x3f8, 0x064, 3, __NA_, 0, MX51_UART_PAD_CTRL)
71#define MX51_PAD_EIM_D18__UART3_RTS IOMUX_PAD(0x3f8, 0x064, 4, 0x9f0, 1, MX51_UART_PAD_CTRL)
72#define MX51_PAD_EIM_D18__USBH2_DATA2 IOMUX_PAD(0x3f8, 0x064, 2, __NA_, 0, NO_PAD_CTRL)
73#define MX51_PAD_EIM_D19__AUD4_RXC IOMUX_PAD(0x3fc, 0x068, 5, __NA_, 0, NO_PAD_CTRL)
74#define MX51_PAD_EIM_D19__AUD5_TXFS IOMUX_PAD(0x3fc, 0x068, 7, 0x8e8, 0, NO_PAD_CTRL)
75#define MX51_PAD_EIM_D19__EIM_D19 IOMUX_PAD(0x3fc, 0x068, 0, __NA_, 0, NO_PAD_CTRL)
76#define MX51_PAD_EIM_D19__GPIO2_3 IOMUX_PAD(0x3fc, 0x068, 1, __NA_, 0, MX51_GPIO_PAD_CTRL)
77#define MX51_PAD_EIM_D19__I2C1_SCL IOMUX_PAD(0x3fc, 0x068, 0x14, 0x9b0, 0, MX51_I2C_PAD_CTRL)
78#define MX51_PAD_EIM_D19__UART2_RTS IOMUX_PAD(0x3fc, 0x068, 3, 0x9e8, 1, MX51_UART_PAD_CTRL)
79#define MX51_PAD_EIM_D19__USBH2_DATA3 IOMUX_PAD(0x3fc, 0x068, 2, __NA_, 0, NO_PAD_CTRL)
80#define MX51_PAD_EIM_D20__AUD4_TXD IOMUX_PAD(0x400, 0x06c, 5, 0x8c8, 0, NO_PAD_CTRL)
81#define MX51_PAD_EIM_D20__EIM_D20 IOMUX_PAD(0x400, 0x06c, 0, __NA_, 0, NO_PAD_CTRL)
82#define MX51_PAD_EIM_D20__GPIO2_4 IOMUX_PAD(0x400, 0x06c, 1, __NA_, 0, MX51_GPIO_PAD_CTRL)
83#define MX51_PAD_EIM_D20__SRTC_ALARM_DEB IOMUX_PAD(0x400, 0x06c, 4, __NA_, 0, NO_PAD_CTRL)
84#define MX51_PAD_EIM_D20__USBH2_DATA4 IOMUX_PAD(0x400, 0x06c, 2, __NA_, 0, NO_PAD_CTRL)
85#define MX51_PAD_EIM_D21__AUD4_RXD IOMUX_PAD(0x404, 0x070, 5, 0x8c4, 0, NO_PAD_CTRL)
86#define MX51_PAD_EIM_D21__EIM_D21 IOMUX_PAD(0x404, 0x070, 0, __NA_, 0, NO_PAD_CTRL)
87#define MX51_PAD_EIM_D21__GPIO2_5 IOMUX_PAD(0x404, 0x070, 1, __NA_, 0, MX51_GPIO_PAD_CTRL)
88#define MX51_PAD_EIM_D21__SRTC_ALARM_DEB IOMUX_PAD(0x404, 0x070, 3, __NA_, 0, NO_PAD_CTRL)
89#define MX51_PAD_EIM_D21__USBH2_DATA5 IOMUX_PAD(0x404, 0x070, 2, __NA_, 0, NO_PAD_CTRL)
90#define MX51_PAD_EIM_D22__AUD4_TXC IOMUX_PAD(0x408, 0x074, 5, 0x8cc, 0, NO_PAD_CTRL)
91#define MX51_PAD_EIM_D22__EIM_D22 IOMUX_PAD(0x408, 0x074, 0, __NA_, 0, NO_PAD_CTRL)
92#define MX51_PAD_EIM_D22__GPIO2_6 IOMUX_PAD(0x408, 0x074, 1, __NA_, 0, MX51_GPIO_PAD_CTRL)
93#define MX51_PAD_EIM_D22__USBH2_DATA6 IOMUX_PAD(0x408, 0x074, 2, __NA_, 0, NO_PAD_CTRL)
94#define MX51_PAD_EIM_D23__AUD4_TXFS IOMUX_PAD(0x40c, 0x078, 5, 0x8d0, 0, NO_PAD_CTRL)
95#define MX51_PAD_EIM_D23__EIM_D23 IOMUX_PAD(0x40c, 0x078, 0, __NA_, 0, NO_PAD_CTRL)
96#define MX51_PAD_EIM_D23__GPIO2_7 IOMUX_PAD(0x40c, 0x078, 1, __NA_, 0, MX51_GPIO_PAD_CTRL)
97#define MX51_PAD_EIM_D23__SPDIF_OUT1 IOMUX_PAD(0x40c, 0x078, 4, __NA_, 0, NO_PAD_CTRL)
98#define MX51_PAD_EIM_D23__USBH2_DATA7 IOMUX_PAD(0x40c, 0x078, 2, __NA_, 0, NO_PAD_CTRL)
99#define MX51_PAD_EIM_D24__AUD6_RXFS IOMUX_PAD(0x410, 0x07c, 5, 0x8f8, 0, NO_PAD_CTRL)
100#define MX51_PAD_EIM_D24__EIM_D24 IOMUX_PAD(0x410, 0x07c, 0, __NA_, 0, NO_PAD_CTRL)
101#define MX51_PAD_EIM_D24__GPIO2_8 IOMUX_PAD(0x410, 0x07c, 1, __NA_, 0, MX51_GPIO_PAD_CTRL)
102#define MX51_PAD_EIM_D24__I2C2_SDA IOMUX_PAD(0x410, 0x07c, 0x14, 0x9bc, 0, MX51_I2C_PAD_CTRL)
103#define MX51_PAD_EIM_D24__UART3_CTS IOMUX_PAD(0x410, 0x07c, 3, __NA_, 0, MX51_UART_PAD_CTRL)
104#define MX51_PAD_EIM_D24__USBOTG_DATA0 IOMUX_PAD(0x410, 0x07c, 2, __NA_, 0, NO_PAD_CTRL)
105#define MX51_PAD_EIM_D25__EIM_D25 IOMUX_PAD(0x414, 0x080, 0, __NA_, 0, NO_PAD_CTRL)
106#define MX51_PAD_EIM_D25__KEY_COL6 IOMUX_PAD(0x414, 0x080, 1, 0x9c8, 0, NO_PAD_CTRL)
107#define MX51_PAD_EIM_D25__UART2_CTS IOMUX_PAD(0x414, 0x080, 4, __NA_, 0, MX51_UART_PAD_CTRL)
108#define MX51_PAD_EIM_D25__UART3_RXD IOMUX_PAD(0x414, 0x080, 3, 0x9f4, 0, MX51_UART_PAD_CTRL)
109#define MX51_PAD_EIM_D25__USBOTG_DATA1 IOMUX_PAD(0x414, 0x080, 2, __NA_, 0, NO_PAD_CTRL)
110#define MX51_PAD_EIM_D25__GPT_CMPOUT1 IOMUX_PAD(0x414, 0x080, 5, __NA_, 0, NO_PAD_CTRL)
111#define MX51_PAD_EIM_D26__EIM_D26 IOMUX_PAD(0x418, 0x084, 0, __NA_, 0, NO_PAD_CTRL)
112#define MX51_PAD_EIM_D26__KEY_COL7 IOMUX_PAD(0x418, 0x084, 1, 0x9cc, 0, NO_PAD_CTRL)
113#define MX51_PAD_EIM_D26__UART2_RTS IOMUX_PAD(0x418, 0x084, 4, 0x9e8, 3, MX51_UART_PAD_CTRL)
114#define MX51_PAD_EIM_D26__UART3_TXD IOMUX_PAD(0x418, 0x084, 3, __NA_, 0, MX51_UART_PAD_CTRL)
115#define MX51_PAD_EIM_D26__USBOTG_DATA2 IOMUX_PAD(0x418, 0x084, 2, __NA_, 0, NO_PAD_CTRL)
116#define MX51_PAD_EIM_D26__GPT_CMPOUT2 IOMUX_PAD(0x418, 0x084, 5, __NA_, 0, NO_PAD_CTRL)
117#define MX51_PAD_EIM_D27__AUD6_RXC IOMUX_PAD(0x41c, 0x088, 5, 0x8f4, 0, NO_PAD_CTRL)
118#define MX51_PAD_EIM_D27__EIM_D27 IOMUX_PAD(0x41c, 0x088, 0, __NA_, 0, NO_PAD_CTRL)
119#define MX51_PAD_EIM_D27__GPIO2_9 IOMUX_PAD(0x41c, 0x088, 1, __NA_, 0, MX51_GPIO_PAD_CTRL)
120#define MX51_PAD_EIM_D27__I2C2_SCL IOMUX_PAD(0x41c, 0x088, 0x14, 0x9b8, 0, MX51_I2C_PAD_CTRL)
121#define MX51_PAD_EIM_D27__UART3_RTS IOMUX_PAD(0x41c, 0x088, 3, 0x9f0, 3, MX51_UART_PAD_CTRL)
122#define MX51_PAD_EIM_D27__USBOTG_DATA3 IOMUX_PAD(0x41c, 0x088, 2, __NA_, 0, NO_PAD_CTRL)
123#define MX51_PAD_EIM_D28__AUD6_TXD IOMUX_PAD(0x420, 0x08c, 5, 0x8f0, 0, NO_PAD_CTRL)
124#define MX51_PAD_EIM_D28__EIM_D28 IOMUX_PAD(0x420, 0x08c, 0, __NA_, 0, NO_PAD_CTRL)
125#define MX51_PAD_EIM_D28__KEY_ROW4 IOMUX_PAD(0x420, 0x08c, 1, 0x9d0, 0, NO_PAD_CTRL)
126#define MX51_PAD_EIM_D28__USBOTG_DATA4 IOMUX_PAD(0x420, 0x08c, 2, __NA_, 0, NO_PAD_CTRL)
127#define MX51_PAD_EIM_D29__AUD6_RXD IOMUX_PAD(0x424, 0x090, 5, 0x8ec, 0, NO_PAD_CTRL)
128#define MX51_PAD_EIM_D29__EIM_D29 IOMUX_PAD(0x424, 0x090, 0, __NA_, 0, NO_PAD_CTRL)
129#define MX51_PAD_EIM_D29__KEY_ROW5 IOMUX_PAD(0x424, 0x090, 1, 0x9d4, 0, NO_PAD_CTRL)
130#define MX51_PAD_EIM_D29__USBOTG_DATA5 IOMUX_PAD(0x424, 0x090, 2, __NA_, 0, NO_PAD_CTRL)
131#define MX51_PAD_EIM_D30__AUD6_TXC IOMUX_PAD(0x428, 0x094, 5, 0x8fc, 0, NO_PAD_CTRL)
132#define MX51_PAD_EIM_D30__EIM_D30 IOMUX_PAD(0x428, 0x094, 0, __NA_, 0, NO_PAD_CTRL)
133#define MX51_PAD_EIM_D30__KEY_ROW6 IOMUX_PAD(0x428, 0x094, 1, 0x9d8, 0, NO_PAD_CTRL)
134#define MX51_PAD_EIM_D30__USBOTG_DATA6 IOMUX_PAD(0x428, 0x094, 2, __NA_, 0, NO_PAD_CTRL)
135#define MX51_PAD_EIM_D31__AUD6_TXFS IOMUX_PAD(0x42c, 0x098, 5, 0x900, 0, NO_PAD_CTRL)
136#define MX51_PAD_EIM_D31__EIM_D31 IOMUX_PAD(0x42c, 0x098, 0, __NA_, 0, NO_PAD_CTRL)
137#define MX51_PAD_EIM_D31__KEY_ROW7 IOMUX_PAD(0x42c, 0x098, 1, 0x9dc, 0, NO_PAD_CTRL)
138#define MX51_PAD_EIM_D31__USBOTG_DATA7 IOMUX_PAD(0x42c, 0x098, 2, __NA_, 0, NO_PAD_CTRL)
139#define MX51_PAD_EIM_A16__EIM_A16 IOMUX_PAD(0x430, 0x09c, 0, __NA_, 0, NO_PAD_CTRL)
140#define MX51_PAD_EIM_A16__GPIO2_10 IOMUX_PAD(0x430, 0x09c, 1, __NA_, 0, MX51_GPIO_PAD_CTRL)
141#define MX51_PAD_EIM_A16__OSC_FREQ_SEL0 IOMUX_PAD(0x430, 0x09c, 7, __NA_, 0, NO_PAD_CTRL)
142#define MX51_PAD_EIM_A17__EIM_A17 IOMUX_PAD(0x434, 0x0a0, 0, __NA_, 0, NO_PAD_CTRL)
143#define MX51_PAD_EIM_A17__GPIO2_11 IOMUX_PAD(0x434, 0x0a0, 1, __NA_, 0, MX51_GPIO_PAD_CTRL)
144#define MX51_PAD_EIM_A17__OSC_FREQ_SEL1 IOMUX_PAD(0x434, 0x0a0, 7, __NA_, 0, NO_PAD_CTRL)
145#define MX51_PAD_EIM_A18__BOOT_LPB0 IOMUX_PAD(0x438, 0x0a4, 7, __NA_, 0, NO_PAD_CTRL)
146#define MX51_PAD_EIM_A18__EIM_A18 IOMUX_PAD(0x438, 0x0a4, 0, __NA_, 0, NO_PAD_CTRL)
147#define MX51_PAD_EIM_A18__GPIO2_12 IOMUX_PAD(0x438, 0x0a4, 1, __NA_, 0, MX51_GPIO_PAD_CTRL)
148#define MX51_PAD_EIM_A19__BOOT_LPB1 IOMUX_PAD(0x43c, 0x0a8, 7, __NA_, 0, NO_PAD_CTRL)
149#define MX51_PAD_EIM_A19__EIM_A19 IOMUX_PAD(0x43c, 0x0a8, 0, __NA_, 0, NO_PAD_CTRL)
150#define MX51_PAD_EIM_A19__GPIO2_13 IOMUX_PAD(0x43c, 0x0a8, 1, __NA_, 0, MX51_GPIO_PAD_CTRL)
151#define MX51_PAD_EIM_A20__BOOT_UART_SRC0 IOMUX_PAD(0x440, 0x0ac, 7, __NA_, 0, NO_PAD_CTRL)
152#define MX51_PAD_EIM_A20__EIM_A20 IOMUX_PAD(0x440, 0x0ac, 0, __NA_, 0, NO_PAD_CTRL)
153#define MX51_PAD_EIM_A20__GPIO2_14 IOMUX_PAD(0x440, 0x0ac, 1, __NA_, 0, MX51_GPIO_PAD_CTRL)
154#define MX51_PAD_EIM_A21__BOOT_UART_SRC1 IOMUX_PAD(0x444, 0x0b0, 7, __NA_, 0, NO_PAD_CTRL)
155#define MX51_PAD_EIM_A21__EIM_A21 IOMUX_PAD(0x444, 0x0b0, 0, __NA_, 0, NO_PAD_CTRL)
156#define MX51_PAD_EIM_A21__GPIO2_15 IOMUX_PAD(0x444, 0x0b0, 1, __NA_, 0, MX51_GPIO_PAD_CTRL)
157#define MX51_PAD_EIM_A22__EIM_A22 IOMUX_PAD(0x448, 0x0b4, 0, __NA_, 0, NO_PAD_CTRL)
158#define MX51_PAD_EIM_A22__GPIO2_16 IOMUX_PAD(0x448, 0x0b4, 1, __NA_, 0, MX51_GPIO_PAD_CTRL)
159#define MX51_PAD_EIM_A23__BOOT_HPN_EN IOMUX_PAD(0x44c, 0x0b8, 7, __NA_, 0, NO_PAD_CTRL)
160#define MX51_PAD_EIM_A23__EIM_A23 IOMUX_PAD(0x44c, 0x0b8, 0, __NA_, 0, NO_PAD_CTRL)
161#define MX51_PAD_EIM_A23__GPIO2_17 IOMUX_PAD(0x44c, 0x0b8, 1, __NA_, 0, MX51_GPIO_PAD_CTRL)
162#define MX51_PAD_EIM_A24__EIM_A24 IOMUX_PAD(0x450, 0x0bc, 0, __NA_, 0, NO_PAD_CTRL)
163#define MX51_PAD_EIM_A24__GPIO2_18 IOMUX_PAD(0x450, 0x0bc, 1, __NA_, 0, MX51_GPIO_PAD_CTRL)
164#define MX51_PAD_EIM_A24__USBH2_CLK IOMUX_PAD(0x450, 0x0bc, 2, __NA_, 0, NO_PAD_CTRL)
165#define MX51_PAD_EIM_A25__DISP1_PIN4 IOMUX_PAD(0x454, 0x0c0, 6, __NA_, 0, NO_PAD_CTRL)
166#define MX51_PAD_EIM_A25__EIM_A25 IOMUX_PAD(0x454, 0x0c0, 0, __NA_, 0, NO_PAD_CTRL)
167#define MX51_PAD_EIM_A25__GPIO2_19 IOMUX_PAD(0x454, 0x0c0, 1, __NA_, 0, MX51_GPIO_PAD_CTRL)
168#define MX51_PAD_EIM_A25__USBH2_DIR IOMUX_PAD(0x454, 0x0c0, 2, __NA_, 0, NO_PAD_CTRL)
169#define MX51_PAD_EIM_A26__CSI1_DATA_EN IOMUX_PAD(0x458, 0x0c4, 5, 0x9a0, 0, NO_PAD_CTRL)
170#define MX51_PAD_EIM_A26__DISP2_EXT_CLK IOMUX_PAD(0x458, 0x0c4, 6, 0x908, 0, NO_PAD_CTRL)
171#define MX51_PAD_EIM_A26__EIM_A26 IOMUX_PAD(0x458, 0x0c4, 0, __NA_, 0, NO_PAD_CTRL)
172#define MX51_PAD_EIM_A26__GPIO2_20 IOMUX_PAD(0x458, 0x0c4, 1, __NA_, 0, MX51_GPIO_PAD_CTRL)
173#define MX51_PAD_EIM_A26__USBH2_STP IOMUX_PAD(0x458, 0x0c4, 2, __NA_, 0, NO_PAD_CTRL)
174#define MX51_PAD_EIM_A27__CSI2_DATA_EN IOMUX_PAD(0x45c, 0x0c8, 5, 0x99c, 0, NO_PAD_CTRL)
175#define MX51_PAD_EIM_A27__DISP1_PIN1 IOMUX_PAD(0x45c, 0x0c8, 6, 0x9a4, 0, NO_PAD_CTRL)
176#define MX51_PAD_EIM_A27__EIM_A27 IOMUX_PAD(0x45c, 0x0c8, 0, __NA_, 0, NO_PAD_CTRL)
177#define MX51_PAD_EIM_A27__GPIO2_21 IOMUX_PAD(0x45c, 0x0c8, 1, __NA_, 0, MX51_GPIO_PAD_CTRL)
178#define MX51_PAD_EIM_A27__USBH2_NXT IOMUX_PAD(0x45c, 0x0c8, 2, __NA_, 0, NO_PAD_CTRL)
179#define MX51_PAD_EIM_EB0__EIM_EB0 IOMUX_PAD(0x460, 0x0cc, 0, __NA_, 0, NO_PAD_CTRL)
180#define MX51_PAD_EIM_EB1__EIM_EB1 IOMUX_PAD(0x464, 0x0d0, 0, __NA_, 0, NO_PAD_CTRL)
181#define MX51_PAD_EIM_EB2__AUD5_RXFS IOMUX_PAD(0x468, 0x0d4, 6, 0x8e0, 0, NO_PAD_CTRL)
182#define MX51_PAD_EIM_EB2__CSI1_D2 IOMUX_PAD(0x468, 0x0d4, 5, __NA_, 0, NO_PAD_CTRL)
183#define MX51_PAD_EIM_EB2__EIM_EB2 IOMUX_PAD(0x468, 0x0d4, 0, __NA_, 0, NO_PAD_CTRL)
184#define MX51_PAD_EIM_EB2__FEC_MDIO (IOMUX_PAD(0x468, 0x0d4, 3, 0x954, 0, 0) | \
185 MUX_PAD_CTRL(PAD_CTL_PUS_22K_UP | PAD_CTL_PKE | PAD_CTL_SRE_FAST | \
186 PAD_CTL_DSE_HIGH | PAD_CTL_PUE | PAD_CTL_HYS))
187#define MX51_PAD_EIM_EB2__GPIO2_22 IOMUX_PAD(0x468, 0x0d4, 1, __NA_, 0, MX51_GPIO_PAD_CTRL)
188#define MX51_PAD_EIM_EB2__GPT_CMPOUT1 IOMUX_PAD(0x468, 0x0d4, 7, __NA_, 0, NO_PAD_CTRL)
189#define MX51_PAD_EIM_EB3__AUD5_RXC IOMUX_PAD(0x46c, 0x0d8, 6, 0x8dc, 0, NO_PAD_CTRL)
190#define MX51_PAD_EIM_EB3__CSI1_D3 IOMUX_PAD(0x46c, 0x0d8, 5, __NA_, 0, NO_PAD_CTRL)
191#define MX51_PAD_EIM_EB3__EIM_EB3 IOMUX_PAD(0x46c, 0x0d8, 0, __NA_, 0, NO_PAD_CTRL)
192#define MX51_PAD_EIM_EB3__FEC_RDATA1 IOMUX_PAD(0x46c, 0x0d8, 3, 0x95c, 0, NO_PAD_CTRL)
193#define MX51_PAD_EIM_EB3__GPIO2_23 IOMUX_PAD(0x46c, 0x0d8, 1, __NA_, 0, MX51_GPIO_PAD_CTRL)
194#define MX51_PAD_EIM_EB3__GPT_CMPOUT2 IOMUX_PAD(0x46c, 0x0d8, 7, __NA_, 0, NO_PAD_CTRL)
195#define MX51_PAD_EIM_OE__EIM_OE IOMUX_PAD(0x470, 0x0dc, 0, __NA_, 0, NO_PAD_CTRL)
196#define MX51_PAD_EIM_OE__GPIO2_24 IOMUX_PAD(0x470, 0x0dc, 1, __NA_, 0, MX51_GPIO_PAD_CTRL)
197#define MX51_PAD_EIM_CS0__EIM_CS0 IOMUX_PAD(0x474, 0x0e0, 0, __NA_, 0, NO_PAD_CTRL)
198#define MX51_PAD_EIM_CS0__GPIO2_25 IOMUX_PAD(0x474, 0x0e0, 1, __NA_, 0, MX51_GPIO_PAD_CTRL)
199#define MX51_PAD_EIM_CS1__EIM_CS1 IOMUX_PAD(0x478, 0x0e4, 0, __NA_, 0, NO_PAD_CTRL)
200#define MX51_PAD_EIM_CS1__GPIO2_26 IOMUX_PAD(0x478, 0x0e4, 1, __NA_, 0, MX51_GPIO_PAD_CTRL)
201#define MX51_PAD_EIM_CS2__AUD5_TXD IOMUX_PAD(0x47c, 0x0e8, 6, 0x8d8, 1, NO_PAD_CTRL)
202#define MX51_PAD_EIM_CS2__CSI1_D4 IOMUX_PAD(0x47c, 0x0e8, 5, __NA_, 0, NO_PAD_CTRL)
203#define MX51_PAD_EIM_CS2__EIM_CS2 IOMUX_PAD(0x47c, 0x0e8, 0, __NA_, 0, NO_PAD_CTRL)
204#define MX51_PAD_EIM_CS2__FEC_RDATA2 IOMUX_PAD(0x47c, 0x0e8, 3, 0x960, 0, NO_PAD_CTRL)
205#define MX51_PAD_EIM_CS2__GPIO2_27 IOMUX_PAD(0x47c, 0x0e8, 1, __NA_, 0, MX51_GPIO_PAD_CTRL)
206#define MX51_PAD_EIM_CS2__USBOTG_STP IOMUX_PAD(0x47c, 0x0e8, 2, __NA_, 0, NO_PAD_CTRL)
207#define MX51_PAD_EIM_CS3__AUD5_RXD IOMUX_PAD(0x480, 0x0ec, 6, 0x8d4, 1, NO_PAD_CTRL)
208#define MX51_PAD_EIM_CS3__CSI1_D5 IOMUX_PAD(0x480, 0x0ec, 5, __NA_, 0, NO_PAD_CTRL)
209#define MX51_PAD_EIM_CS3__EIM_CS3 IOMUX_PAD(0x480, 0x0ec, 0, __NA_, 0, NO_PAD_CTRL)
210#define MX51_PAD_EIM_CS3__FEC_RDATA3 IOMUX_PAD(0x480, 0x0ec, 3, 0x964, 0, NO_PAD_CTRL)
211#define MX51_PAD_EIM_CS3__GPIO2_28 IOMUX_PAD(0x480, 0x0ec, 1, __NA_, 0, MX51_GPIO_PAD_CTRL)
212#define MX51_PAD_EIM_CS3__USBOTG_NXT IOMUX_PAD(0x480, 0x0ec, 2, __NA_, 0, NO_PAD_CTRL)
213#define MX51_PAD_EIM_CS4__AUD5_TXC IOMUX_PAD(0x484, 0x0f0, 6, 0x8e4, 1, NO_PAD_CTRL)
214#define MX51_PAD_EIM_CS4__CSI1_D6 IOMUX_PAD(0x484, 0x0f0, 5, __NA_, 0, NO_PAD_CTRL)
215#define MX51_PAD_EIM_CS4__EIM_CS4 IOMUX_PAD(0x484, 0x0f0, 0, __NA_, 0, NO_PAD_CTRL)
216#define MX51_PAD_EIM_CS4__FEC_RX_ER IOMUX_PAD(0x484, 0x0f0, 3, 0x970, 0, MX51_PAD_CTRL_2)
217#define MX51_PAD_EIM_CS4__GPIO2_29 IOMUX_PAD(0x484, 0x0f0, 1, __NA_, 0, MX51_GPIO_PAD_CTRL)
218#define MX51_PAD_EIM_CS4__USBOTG_CLK IOMUX_PAD(0x484, 0x0f0, 2, __NA_, 0, NO_PAD_CTRL)
219#define MX51_PAD_EIM_CS5__AUD5_TXFS IOMUX_PAD(0x488, 0x0f4, 6, 0x8e8, 1, NO_PAD_CTRL)
220#define MX51_PAD_EIM_CS5__CSI1_D7 IOMUX_PAD(0x488, 0x0f4, 5, __NA_, 0, NO_PAD_CTRL)
221#define MX51_PAD_EIM_CS5__DISP1_EXT_CLK IOMUX_PAD(0x488, 0x0f4, 4, 0x904, 0, NO_PAD_CTRL)
222#define MX51_PAD_EIM_CS5__EIM_CS5 IOMUX_PAD(0x488, 0x0f4, 0, __NA_, 0, NO_PAD_CTRL)
223#define MX51_PAD_EIM_CS5__FEC_CRS IOMUX_PAD(0x488, 0x0f4, 3, 0x950, 0, MX51_PAD_CTRL_2)
224#define MX51_PAD_EIM_CS5__GPIO2_30 IOMUX_PAD(0x488, 0x0f4, 1, __NA_, 0, MX51_GPIO_PAD_CTRL)
225#define MX51_PAD_EIM_CS5__USBOTG_DIR IOMUX_PAD(0x488, 0x0f4, 2, __NA_, 0, NO_PAD_CTRL)
226#define MX51_PAD_EIM_DTACK__EIM_DTACK IOMUX_PAD(0x48c, 0x0f8, 0, __NA_, 0, NO_PAD_CTRL)
227#define MX51_PAD_EIM_DTACK__GPIO2_31 IOMUX_PAD(0x48c, 0x0f8, 1, __NA_, 0, MX51_GPIO_PAD_CTRL)
228#define MX51_PAD_EIM_LBA__EIM_LBA IOMUX_PAD(0x494, 0x0fc, 0, __NA_, 0, NO_PAD_CTRL)
229#define MX51_PAD_EIM_LBA__GPIO3_1 IOMUX_PAD(0x494, 0x0fc, 1, 0x978, 0, MX51_GPIO_PAD_CTRL)
230#define MX51_PAD_EIM_CRE__EIM_CRE IOMUX_PAD(0x4a0, 0x100, 0, __NA_, 0, NO_PAD_CTRL)
231#define MX51_PAD_EIM_CRE__GPIO3_2 IOMUX_PAD(0x4a0, 0x100, 1, 0x97c, 0, MX51_GPIO_PAD_CTRL)
232#define MX51_PAD_DRAM_CS1__DRAM_CS1 IOMUX_PAD(0x4d0, 0x104, 0, __NA_, 0, NO_PAD_CTRL)
233#define MX51_PAD_DRAM_CS1__CCM_CLKO IOMUX_PAD(0x4d0, 0x104, 1, __NA_, 0, NO_PAD_CTRL)
234#define MX51_PAD_NANDF_WE_B__GPIO3_3 IOMUX_PAD(0x4e4, 0x108, 3, 0x980, 0, MX51_GPIO_PAD_CTRL)
235#define MX51_PAD_NANDF_WE_B__NANDF_WE_B IOMUX_PAD(0x4e4, 0x108, 0, __NA_, 0, NO_PAD_CTRL)
236#define MX51_PAD_NANDF_WE_B__PATA_DIOW IOMUX_PAD(0x4e4, 0x108, 1, __NA_, 0, NO_PAD_CTRL)
237#define MX51_PAD_NANDF_WE_B__SD3_DATA0 IOMUX_PAD(0x4e4, 0x108, 2, 0x93c, 0, MX51_SDHCI_PAD_CTRL)
238#define MX51_PAD_NANDF_RE_B__GPIO3_4 IOMUX_PAD(0x4e8, 0x10c, 3, 0x984, 0, MX51_GPIO_PAD_CTRL)
239#define MX51_PAD_NANDF_RE_B__NANDF_RE_B IOMUX_PAD(0x4e8, 0x10c, 0, __NA_, 0, NO_PAD_CTRL)
240#define MX51_PAD_NANDF_RE_B__PATA_DIOR IOMUX_PAD(0x4e8, 0x10c, 1, __NA_, 0, NO_PAD_CTRL)
241#define MX51_PAD_NANDF_RE_B__SD3_DATA1 IOMUX_PAD(0x4e8, 0x10c, 2, 0x940, 0, MX51_SDHCI_PAD_CTRL)
242#define MX51_PAD_NANDF_ALE__GPIO3_5 IOMUX_PAD(0x4ec, 0x110, 3, 0x988, 0, MX51_GPIO_PAD_CTRL)
243#define MX51_PAD_NANDF_ALE__NANDF_ALE IOMUX_PAD(0x4ec, 0x110, 0, __NA_, 0, NO_PAD_CTRL)
244#define MX51_PAD_NANDF_ALE__PATA_BUFFER_EN IOMUX_PAD(0x4ec, 0x110, 1, __NA_, 0, NO_PAD_CTRL)
245#define MX51_PAD_NANDF_CLE__GPIO3_6 IOMUX_PAD(0x4f0, 0x114, 3, 0x98c, 0, MX51_GPIO_PAD_CTRL)
246#define MX51_PAD_NANDF_CLE__NANDF_CLE IOMUX_PAD(0x4f0, 0x114, 0, __NA_, 0, NO_PAD_CTRL)
247#define MX51_PAD_NANDF_CLE__PATA_RESET_B IOMUX_PAD(0x4f0, 0x114, 1, __NA_, 0, NO_PAD_CTRL)
248#define MX51_PAD_NANDF_WP_B__GPIO3_7 IOMUX_PAD(0x4f4, 0x118, 3, 0x990, 0, MX51_GPIO_PAD_CTRL)
249#define MX51_PAD_NANDF_WP_B__NANDF_WP_B IOMUX_PAD(0x4f4, 0x118, 0, __NA_, 0, NO_PAD_CTRL)
250#define MX51_PAD_NANDF_WP_B__PATA_DMACK IOMUX_PAD(0x4f4, 0x118, 1, __NA_, 0, NO_PAD_CTRL)
251#define MX51_PAD_NANDF_WP_B__SD3_DATA2 IOMUX_PAD(0x4f4, 0x118, 2, 0x944, 0, MX51_SDHCI_PAD_CTRL)
252#define MX51_PAD_NANDF_RB0__ECSPI2_SS1 IOMUX_PAD(0x4f8, 0x11c, 5, 0x930, 0, MX51_ECSPI_PAD_CTRL)
253#define MX51_PAD_NANDF_RB0__GPIO3_8 IOMUX_PAD(0x4f8, 0x11c, 3, 0x994, 0, MX51_GPIO_PAD_CTRL)
254#define MX51_PAD_NANDF_RB0__NANDF_RB0 IOMUX_PAD(0x4f8, 0x11c, 0, __NA_, 0, NO_PAD_CTRL)
255#define MX51_PAD_NANDF_RB0__PATA_DMARQ IOMUX_PAD(0x4f8, 0x11c, 1, __NA_, 0, NO_PAD_CTRL)
256#define MX51_PAD_NANDF_RB0__SD3_DATA3 IOMUX_PAD(0x4f8, 0x11c, 2, 0x948, 0, MX51_SDHCI_PAD_CTRL)
257#define MX51_PAD_NANDF_RB1__CSPI_MOSI IOMUX_PAD(0x4fc, 0x120, 6, 0x91c, 0, MX51_ECSPI_PAD_CTRL)
258#define MX51_PAD_NANDF_RB1__ECSPI2_RDY IOMUX_PAD(0x4fc, 0x120, 2, __NA_, 0, MX51_ECSPI_PAD_CTRL)
259#define MX51_PAD_NANDF_RB1__GPIO3_9 IOMUX_PAD(0x4fc, 0x120, 3, __NA_, 0, MX51_GPIO_PAD_CTRL)
260#define MX51_PAD_NANDF_RB1__NANDF_RB1 IOMUX_PAD(0x4fc, 0x120, 0, __NA_, 0, NO_PAD_CTRL)
261#define MX51_PAD_NANDF_RB1__PATA_IORDY IOMUX_PAD(0x4fc, 0x120, 1, __NA_, 0, NO_PAD_CTRL)
262#define MX51_PAD_NANDF_RB1__GPT_CMPOUT2 IOMUX_PAD(0x4fc, 0x120, 4, __NA_, 0, NO_PAD_CTRL)
263#define MX51_PAD_NANDF_RB1__SD4_CMD IOMUX_PAD(0x4fc, 0x120, 0x15, __NA_, 0, MX51_SDHCI_PAD_CTRL)
264#define MX51_PAD_NANDF_RB2__DISP2_WAIT IOMUX_PAD(0x500, 0x124, 5, 0x9a8, 0, NO_PAD_CTRL)
265#define MX51_PAD_NANDF_RB2__ECSPI2_SCLK IOMUX_PAD(0x500, 0x124, 2, __NA_, 0, MX51_ECSPI_PAD_CTRL)
266#define MX51_PAD_NANDF_RB2__FEC_COL IOMUX_PAD(0x500, 0x124, 1, 0x94c, 0, MX51_PAD_CTRL_2)
267#define MX51_PAD_NANDF_RB2__GPIO3_10 IOMUX_PAD(0x500, 0x124, 3, __NA_, 0, MX51_GPIO_PAD_CTRL)
268#define MX51_PAD_NANDF_RB2__NANDF_RB2 IOMUX_PAD(0x500, 0x124, 0, __NA_, 0, NO_PAD_CTRL)
269#define MX51_PAD_NANDF_RB2__GPT_CMPOUT3 IOMUX_PAD(0x500, 0x124, 4, __NA_, 0, NO_PAD_CTRL)
270#define MX51_PAD_NANDF_RB2__USBH3_H3_DP IOMUX_PAD(0x500, 0x124, 0x17, __NA_, 0, NO_PAD_CTRL)
271#define MX51_PAD_NANDF_RB2__USBH3_NXT IOMUX_PAD(0x500, 0x124, 6, 0xa20, 0, NO_PAD_CTRL)
272#define MX51_PAD_NANDF_RB3__DISP1_WAIT IOMUX_PAD(0x504, 0x128, 5, __NA_, 0, NO_PAD_CTRL)
273#define MX51_PAD_NANDF_RB3__ECSPI2_MISO IOMUX_PAD(0x504, 0x128, 2, __NA_, 0, MX51_ECSPI_PAD_CTRL)
274#define MX51_PAD_NANDF_RB3__FEC_RX_CLK IOMUX_PAD(0x504, 0x128, 1, 0x968, 0, MX51_PAD_CTRL_2)
275#define MX51_PAD_NANDF_RB3__GPIO3_11 IOMUX_PAD(0x504, 0x128, 3, __NA_, 0, MX51_GPIO_PAD_CTRL)
276#define MX51_PAD_NANDF_RB3__NANDF_RB3 IOMUX_PAD(0x504, 0x128, 0, __NA_, 0, NO_PAD_CTRL)
277#define MX51_PAD_NANDF_RB3__USBH3_CLK IOMUX_PAD(0x504, 0x128, 6, 0x9f8, 0, NO_PAD_CTRL)
278#define MX51_PAD_NANDF_RB3__USBH3_H3_DM IOMUX_PAD(0x504, 0x128, 0x17, __NA_, 0, NO_PAD_CTRL)
279#define MX51_PAD_GPIO_NAND__GPIO_NAND IOMUX_PAD(0x514, 0x12c, 0, 0x998, 0, MX51_GPIO_PAD_CTRL)
280#define MX51_PAD_GPIO_NAND__PATA_INTRQ IOMUX_PAD(0x514, 0x12c, 1, __NA_, 0, NO_PAD_CTRL)
281#define MX51_PAD_NANDF_CS0__GPIO3_16 IOMUX_PAD(0x518, 0x130, 3, __NA_, 0, MX51_GPIO_PAD_CTRL)
282#define MX51_PAD_NANDF_CS0__NANDF_CS0 IOMUX_PAD(0x518, 0x130, 0, __NA_, 0, NO_PAD_CTRL)
283#define MX51_PAD_NANDF_CS1__GPIO3_17 IOMUX_PAD(0x51c, 0x134, 3, __NA_, 0, MX51_GPIO_PAD_CTRL)
284#define MX51_PAD_NANDF_CS1__NANDF_CS1 IOMUX_PAD(0x51c, 0x134, 0, __NA_, 0, NO_PAD_CTRL)
285#define MX51_PAD_NANDF_CS2__CSPI_SCLK IOMUX_PAD(0x520, 0x138, 6, 0x914, 0, MX51_ECSPI_PAD_CTRL)
286#define MX51_PAD_NANDF_CS2__FEC_TX_ER IOMUX_PAD(0x520, 0x138, 2, __NA_, 0, MX51_PAD_CTRL_5)
287#define MX51_PAD_NANDF_CS2__GPIO3_18 IOMUX_PAD(0x520, 0x138, 3, __NA_, 0, MX51_GPIO_PAD_CTRL)
288#define MX51_PAD_NANDF_CS2__NANDF_CS2 IOMUX_PAD(0x520, 0x138, 0, __NA_, 0, NO_PAD_CTRL)
289#define MX51_PAD_NANDF_CS2__PATA_CS_0 IOMUX_PAD(0x520, 0x138, 1, __NA_, 0, NO_PAD_CTRL)
290#define MX51_PAD_NANDF_CS2__SD4_CLK IOMUX_PAD(0x520, 0x138, 5, __NA_, 0, MX51_SDHCI_PAD_CTRL | PAD_CTL_HYS)
291#define MX51_PAD_NANDF_CS2__USBH3_H1_DP IOMUX_PAD(0x520, 0x138, 0x17, __NA_, 0, NO_PAD_CTRL)
292#define MX51_PAD_NANDF_CS3__FEC_MDC IOMUX_PAD(0x524, 0x13c, 2, __NA_, 0, MX51_PAD_CTRL_5)
293#define MX51_PAD_NANDF_CS3__GPIO3_19 IOMUX_PAD(0x524, 0x13c, 3, __NA_, 0, MX51_GPIO_PAD_CTRL)
294#define MX51_PAD_NANDF_CS3__NANDF_CS3 IOMUX_PAD(0x524, 0x13c, 0, __NA_, 0, NO_PAD_CTRL)
295#define MX51_PAD_NANDF_CS3__PATA_CS_1 IOMUX_PAD(0x524, 0x13c, 1, __NA_, 0, NO_PAD_CTRL)
296#define MX51_PAD_NANDF_CS3__SD4_DAT0 IOMUX_PAD(0x524, 0x13c, 5, __NA_, 0, MX51_SDHCI_PAD_CTRL)
297#define MX51_PAD_NANDF_CS3__USBH3_H1_DM IOMUX_PAD(0x524, 0x13c, 0x17, __NA_, 0, NO_PAD_CTRL)
298#define MX51_PAD_NANDF_CS4__FEC_TDATA1 IOMUX_PAD(0x528, 0x140, 2, __NA_, 0, MX51_PAD_CTRL_5)
299#define MX51_PAD_NANDF_CS4__GPIO3_20 IOMUX_PAD(0x528, 0x140, 3, __NA_, 0, MX51_GPIO_PAD_CTRL)
300#define MX51_PAD_NANDF_CS4__NANDF_CS4 IOMUX_PAD(0x528, 0x140, 0, __NA_, 0, NO_PAD_CTRL)
301#define MX51_PAD_NANDF_CS4__PATA_DA_0 IOMUX_PAD(0x528, 0x140, 1, __NA_, 0, NO_PAD_CTRL)
302#define MX51_PAD_NANDF_CS4__SD4_DAT1 IOMUX_PAD(0x528, 0x140, 5, __NA_, 0, MX51_SDHCI_PAD_CTRL)
303#define MX51_PAD_NANDF_CS4__USBH3_STP IOMUX_PAD(0x528, 0x140, 7, 0xa24, 0, NO_PAD_CTRL)
304#define MX51_PAD_NANDF_CS5__FEC_TDATA2 IOMUX_PAD(0x52c, 0x144, 2, __NA_, 0, MX51_PAD_CTRL_5)
305#define MX51_PAD_NANDF_CS5__GPIO3_21 IOMUX_PAD(0x52c, 0x144, 3, __NA_, 0, MX51_GPIO_PAD_CTRL)
306#define MX51_PAD_NANDF_CS5__NANDF_CS5 IOMUX_PAD(0x52c, 0x144, 0, __NA_, 0, NO_PAD_CTRL)
307#define MX51_PAD_NANDF_CS5__PATA_DA_1 IOMUX_PAD(0x52c, 0x144, 1, __NA_, 0, NO_PAD_CTRL)
308#define MX51_PAD_NANDF_CS5__SD4_DAT2 IOMUX_PAD(0x52c, 0x144, 5, __NA_, 0, MX51_SDHCI_PAD_CTRL)
309#define MX51_PAD_NANDF_CS5__USBH3_DIR IOMUX_PAD(0x52c, 0x144, 7, 0xa1c, 0, NO_PAD_CTRL)
310#define MX51_PAD_NANDF_CS6__CSPI_SS3 IOMUX_PAD(0x530, 0x148, 7, 0x928, 0, MX51_ECSPI_PAD_CTRL)
311#define MX51_PAD_NANDF_CS6__FEC_TDATA3 IOMUX_PAD(0x530, 0x148, 2, __NA_, 0, MX51_PAD_CTRL_5)
312#define MX51_PAD_NANDF_CS6__GPIO3_22 IOMUX_PAD(0x530, 0x148, 3, __NA_, 0, MX51_GPIO_PAD_CTRL)
313#define MX51_PAD_NANDF_CS6__NANDF_CS6 IOMUX_PAD(0x530, 0x148, 0, __NA_, 0, NO_PAD_CTRL)
314#define MX51_PAD_NANDF_CS6__PATA_DA_2 IOMUX_PAD(0x530, 0x148, 1, __NA_, 0, NO_PAD_CTRL)
315#define MX51_PAD_NANDF_CS6__SD4_DAT3 IOMUX_PAD(0x530, 0x148, 5, __NA_, 0, MX51_SDHCI_PAD_CTRL)
316#define MX51_PAD_NANDF_CS7__FEC_TX_EN IOMUX_PAD(0x534, 0x14c, 1, __NA_, 0, MX51_PAD_CTRL_5)
317#define MX51_PAD_NANDF_CS7__GPIO3_23 IOMUX_PAD(0x534, 0x14c, 3, __NA_, 0, MX51_GPIO_PAD_CTRL)
318#define MX51_PAD_NANDF_CS7__NANDF_CS7 IOMUX_PAD(0x534, 0x14c, 0, __NA_, 0, NO_PAD_CTRL)
319#define MX51_PAD_NANDF_CS7__SD3_CLK IOMUX_PAD(0x534, 0x14c, 5, __NA_, 0, MX51_SDHCI_PAD_CTRL | PAD_CTL_HYS)
320#define MX51_PAD_NANDF_RDY_INT__ECSPI2_SS0 IOMUX_PAD(0x538, 0x150, 2, __NA_, 0, MX51_ECSPI_PAD_CTRL)
321#define MX51_PAD_NANDF_RDY_INT__FEC_TX_CLK IOMUX_PAD(0x538, 0x150, 1, 0x974, 0, MX51_PAD_CTRL_4)
322#define MX51_PAD_NANDF_RDY_INT__GPIO3_24 IOMUX_PAD(0x538, 0x150, 3, __NA_, 0, MX51_GPIO_PAD_CTRL)
323#define MX51_PAD_NANDF_RDY_INT__NANDF_RDY_INT IOMUX_PAD(0x538, 0x150, 0, 0x938, 0, NO_PAD_CTRL)
324#define MX51_PAD_NANDF_RDY_INT__SD3_CMD IOMUX_PAD(0x538, 0x150, 0x15, __NA_, 0, MX51_SDHCI_PAD_CTRL)
325#define MX51_PAD_NANDF_D15__ECSPI2_MOSI IOMUX_PAD(0x53c, 0x154, 2, __NA_, 0, MX51_ECSPI_PAD_CTRL)
326#define MX51_PAD_NANDF_D15__GPIO3_25 IOMUX_PAD(0x53c, 0x154, 3, __NA_, 0, MX51_GPIO_PAD_CTRL)
327#define MX51_PAD_NANDF_D15__NANDF_D15 IOMUX_PAD(0x53c, 0x154, 0, __NA_, 0, NO_PAD_CTRL)
328#define MX51_PAD_NANDF_D15__PATA_DATA15 IOMUX_PAD(0x53c, 0x154, 1, __NA_, 0, NO_PAD_CTRL)
329#define MX51_PAD_NANDF_D15__SD3_DAT7 IOMUX_PAD(0x53c, 0x154, 5, __NA_, 0, NO_PAD_CTRL)
330#define MX51_PAD_NANDF_D14__ECSPI2_SS3 IOMUX_PAD(0x540, 0x158, 2, 0x934, 0, MX51_ECSPI_PAD_CTRL)
331#define MX51_PAD_NANDF_D14__GPIO3_26 IOMUX_PAD(0x540, 0x158, 3, __NA_, 0, MX51_GPIO_PAD_CTRL)
332#define MX51_PAD_NANDF_D14__NANDF_D14 IOMUX_PAD(0x540, 0x158, 0, __NA_, 0, NO_PAD_CTRL)
333#define MX51_PAD_NANDF_D14__PATA_DATA14 IOMUX_PAD(0x540, 0x158, 1, __NA_, 0, NO_PAD_CTRL)
334#define MX51_PAD_NANDF_D14__SD3_DAT6 IOMUX_PAD(0x540, 0x158, 5, __NA_, 0, NO_PAD_CTRL)
335#define MX51_PAD_NANDF_D13__ECSPI2_SS2 IOMUX_PAD(0x544, 0x15c, 2, __NA_, 0, MX51_ECSPI_PAD_CTRL)
336#define MX51_PAD_NANDF_D13__GPIO3_27 IOMUX_PAD(0x544, 0x15c, 3, __NA_, 0, MX51_GPIO_PAD_CTRL)
337#define MX51_PAD_NANDF_D13__NANDF_D13 IOMUX_PAD(0x544, 0x15c, 0, __NA_, 0, NO_PAD_CTRL)
338#define MX51_PAD_NANDF_D13__PATA_DATA13 IOMUX_PAD(0x544, 0x15c, 1, __NA_, 0, NO_PAD_CTRL)
339#define MX51_PAD_NANDF_D13__SD3_DAT5 IOMUX_PAD(0x544, 0x15c, 5, __NA_, 0, NO_PAD_CTRL)
340#define MX51_PAD_NANDF_D12__ECSPI2_SS1 IOMUX_PAD(0x548, 0x160, 2, 0x930, 1, MX51_ECSPI_PAD_CTRL)
341#define MX51_PAD_NANDF_D12__GPIO3_28 IOMUX_PAD(0x548, 0x160, 3, __NA_, 0, MX51_GPIO_PAD_CTRL)
342#define MX51_PAD_NANDF_D12__NANDF_D12 IOMUX_PAD(0x548, 0x160, 0, __NA_, 0, NO_PAD_CTRL)
343#define MX51_PAD_NANDF_D12__PATA_DATA12 IOMUX_PAD(0x548, 0x160, 1, __NA_, 0, NO_PAD_CTRL)
344#define MX51_PAD_NANDF_D12__SD3_DAT4 IOMUX_PAD(0x548, 0x160, 5, __NA_, 0, NO_PAD_CTRL)
345#define MX51_PAD_NANDF_D11__FEC_RX_DV IOMUX_PAD(0x54c, 0x164, 2, 0x96c, 0, NO_PAD_CTRL)
346#define MX51_PAD_NANDF_D11__GPIO3_29 IOMUX_PAD(0x54c, 0x164, 3, __NA_, 0, MX51_GPIO_PAD_CTRL)
347#define MX51_PAD_NANDF_D11__NANDF_D11 IOMUX_PAD(0x54c, 0x164, 0, __NA_, 0, NO_PAD_CTRL)
348#define MX51_PAD_NANDF_D11__PATA_DATA11 IOMUX_PAD(0x54c, 0x164, 1, __NA_, 0, NO_PAD_CTRL)
349#define MX51_PAD_NANDF_D11__SD3_DATA3 IOMUX_PAD(0x54c, 0x164, 5, 0x948, 1, NO_PAD_CTRL)
350#define MX51_PAD_NANDF_D10__GPIO3_30 IOMUX_PAD(0x550, 0x168, 3, __NA_, 0, MX51_GPIO_PAD_CTRL)
351#define MX51_PAD_NANDF_D10__NANDF_D10 IOMUX_PAD(0x550, 0x168, 0, __NA_, 0, NO_PAD_CTRL)
352#define MX51_PAD_NANDF_D10__PATA_DATA10 IOMUX_PAD(0x550, 0x168, 1, __NA_, 0, NO_PAD_CTRL)
353#define MX51_PAD_NANDF_D10__SD3_DATA2 IOMUX_PAD(0x550, 0x168, 5, 0x944, 1, NO_PAD_CTRL)
354#define MX51_PAD_NANDF_D9__FEC_RDATA0 IOMUX_PAD(0x554, 0x16c, 0x12, 0x958, 0, MX51_PAD_CTRL_4)
355#define MX51_PAD_NANDF_D9__GPIO3_31 IOMUX_PAD(0x554, 0x16c, 3, __NA_, 0, MX51_GPIO_PAD_CTRL)
356#define MX51_PAD_NANDF_D9__NANDF_D9 IOMUX_PAD(0x554, 0x16c, 0, __NA_, 0, NO_PAD_CTRL)
357#define MX51_PAD_NANDF_D9__PATA_DATA9 IOMUX_PAD(0x554, 0x16c, 1, __NA_, 0, NO_PAD_CTRL)
358#define MX51_PAD_NANDF_D9__SD3_DATA1 IOMUX_PAD(0x554, 0x16c, 5, 0x940, 1, NO_PAD_CTRL)
359#define MX51_PAD_NANDF_D8__FEC_TDATA0 IOMUX_PAD(0x558, 0x170, 2, __NA_, 0, MX51_PAD_CTRL_5)
360#define MX51_PAD_NANDF_D8__GPIO4_0 IOMUX_PAD(0x558, 0x170, 3, __NA_, 0, MX51_GPIO_PAD_CTRL)
361#define MX51_PAD_NANDF_D8__NANDF_D8 IOMUX_PAD(0x558, 0x170, 0, __NA_, 0, NO_PAD_CTRL)
362#define MX51_PAD_NANDF_D8__PATA_DATA8 IOMUX_PAD(0x558, 0x170, 1, __NA_, 0, NO_PAD_CTRL)
363#define MX51_PAD_NANDF_D8__SD3_DATA0 IOMUX_PAD(0x558, 0x170, 5, 0x93c, 1, NO_PAD_CTRL)
364#define MX51_PAD_NANDF_D7__GPIO4_1 IOMUX_PAD(0x55c, 0x174, 3, __NA_, 0, MX51_GPIO_PAD_CTRL)
365#define MX51_PAD_NANDF_D7__NANDF_D7 IOMUX_PAD(0x55c, 0x174, 0, __NA_, 0, NO_PAD_CTRL)
366#define MX51_PAD_NANDF_D7__PATA_DATA7 IOMUX_PAD(0x55c, 0x174, 1, __NA_, 0, NO_PAD_CTRL)
367#define MX51_PAD_NANDF_D7__USBH3_DATA0 IOMUX_PAD(0x55c, 0x174, 5, 0x9fc, 0, NO_PAD_CTRL)
368#define MX51_PAD_NANDF_D6__GPIO4_2 IOMUX_PAD(0x560, 0x178, 3, __NA_, 0, MX51_GPIO_PAD_CTRL)
369#define MX51_PAD_NANDF_D6__NANDF_D6 IOMUX_PAD(0x560, 0x178, 0, __NA_, 0, NO_PAD_CTRL)
370#define MX51_PAD_NANDF_D6__PATA_DATA6 IOMUX_PAD(0x560, 0x178, 1, __NA_, 0, NO_PAD_CTRL)
371#define MX51_PAD_NANDF_D6__SD4_LCTL IOMUX_PAD(0x560, 0x178, 2, __NA_, 0, NO_PAD_CTRL)
372#define MX51_PAD_NANDF_D6__USBH3_DATA1 IOMUX_PAD(0x560, 0x178, 5, 0xa00, 0, NO_PAD_CTRL)
373#define MX51_PAD_NANDF_D5__GPIO4_3 IOMUX_PAD(0x564, 0x17c, 3, __NA_, 0, MX51_GPIO_PAD_CTRL)
374#define MX51_PAD_NANDF_D5__NANDF_D5 IOMUX_PAD(0x564, 0x17c, 0, __NA_, 0, NO_PAD_CTRL)
375#define MX51_PAD_NANDF_D5__PATA_DATA5 IOMUX_PAD(0x564, 0x17c, 1, __NA_, 0, NO_PAD_CTRL)
376#define MX51_PAD_NANDF_D5__SD4_WP IOMUX_PAD(0x564, 0x17c, 2, __NA_, 0, NO_PAD_CTRL)
377#define MX51_PAD_NANDF_D5__USBH3_DATA2 IOMUX_PAD(0x564, 0x17c, 5, 0xa04, 0, NO_PAD_CTRL)
378#define MX51_PAD_NANDF_D4__GPIO4_4 IOMUX_PAD(0x568, 0x180, 3, __NA_, 0, MX51_GPIO_PAD_CTRL)
379#define MX51_PAD_NANDF_D4__NANDF_D4 IOMUX_PAD(0x568, 0x180, 0, __NA_, 0, NO_PAD_CTRL)
380#define MX51_PAD_NANDF_D4__PATA_DATA4 IOMUX_PAD(0x568, 0x180, 1, __NA_, 0, NO_PAD_CTRL)
381#define MX51_PAD_NANDF_D4__SD4_CD IOMUX_PAD(0x568, 0x180, 2, __NA_, 0, NO_PAD_CTRL)
382#define MX51_PAD_NANDF_D4__USBH3_DATA3 IOMUX_PAD(0x568, 0x180, 5, 0xa08, 0, NO_PAD_CTRL)
383#define MX51_PAD_NANDF_D3__GPIO4_5 IOMUX_PAD(0x56c, 0x184, 3, __NA_, 0, MX51_GPIO_PAD_CTRL)
384#define MX51_PAD_NANDF_D3__NANDF_D3 IOMUX_PAD(0x56c, 0x184, 0, __NA_, 0, NO_PAD_CTRL)
385#define MX51_PAD_NANDF_D3__PATA_DATA3 IOMUX_PAD(0x56c, 0x184, 1, __NA_, 0, NO_PAD_CTRL)
386#define MX51_PAD_NANDF_D3__SD4_DAT4 IOMUX_PAD(0x56c, 0x184, 2, __NA_, 0, NO_PAD_CTRL)
387#define MX51_PAD_NANDF_D3__USBH3_DATA4 IOMUX_PAD(0x56c, 0x184, 5, 0xa0c, 0, NO_PAD_CTRL)
388#define MX51_PAD_NANDF_D2__GPIO4_6 IOMUX_PAD(0x570, 0x188, 3, __NA_, 0, MX51_GPIO_PAD_CTRL)
389#define MX51_PAD_NANDF_D2__NANDF_D2 IOMUX_PAD(0x570, 0x188, 0, __NA_, 0, NO_PAD_CTRL)
390#define MX51_PAD_NANDF_D2__PATA_DATA2 IOMUX_PAD(0x570, 0x188, 1, __NA_, 0, NO_PAD_CTRL)
391#define MX51_PAD_NANDF_D2__SD4_DAT5 IOMUX_PAD(0x570, 0x188, 2, __NA_, 0, NO_PAD_CTRL)
392#define MX51_PAD_NANDF_D2__USBH3_DATA5 IOMUX_PAD(0x570, 0x188, 5, 0xa10, 0, NO_PAD_CTRL)
393#define MX51_PAD_NANDF_D1__GPIO4_7 IOMUX_PAD(0x574, 0x18c, 3, __NA_, 0, MX51_GPIO_PAD_CTRL)
394#define MX51_PAD_NANDF_D1__NANDF_D1 IOMUX_PAD(0x574, 0x18c, 0, __NA_, 0, NO_PAD_CTRL)
395#define MX51_PAD_NANDF_D1__PATA_DATA1 IOMUX_PAD(0x574, 0x18c, 1, __NA_, 0, NO_PAD_CTRL)
396#define MX51_PAD_NANDF_D1__SD4_DAT6 IOMUX_PAD(0x574, 0x18c, 2, __NA_, 0, NO_PAD_CTRL)
397#define MX51_PAD_NANDF_D1__USBH3_DATA6 IOMUX_PAD(0x574, 0x18c, 5, 0xa14, 0, NO_PAD_CTRL)
398#define MX51_PAD_NANDF_D0__GPIO4_8 IOMUX_PAD(0x578, 0x190, 3, __NA_, 0, MX51_GPIO_PAD_CTRL)
399#define MX51_PAD_NANDF_D0__NANDF_D0 IOMUX_PAD(0x578, 0x190, 0, __NA_, 0, NO_PAD_CTRL)
400#define MX51_PAD_NANDF_D0__PATA_DATA0 IOMUX_PAD(0x578, 0x190, 1, __NA_, 0, NO_PAD_CTRL)
401#define MX51_PAD_NANDF_D0__SD4_DAT7 IOMUX_PAD(0x578, 0x190, 2, __NA_, 0, NO_PAD_CTRL)
402#define MX51_PAD_NANDF_D0__USBH3_DATA7 IOMUX_PAD(0x578, 0x190, 5, 0xa18, 0, NO_PAD_CTRL)
403#define MX51_PAD_CSI1_D8__CSI1_D8 IOMUX_PAD(0x57c, 0x194, 0, __NA_, 0, NO_PAD_CTRL)
404#define MX51_PAD_CSI1_D8__GPIO3_12 IOMUX_PAD(0x57c, 0x194, 3, 0x998, 1, MX51_GPIO_PAD_CTRL)
405#define MX51_PAD_CSI1_D9__CSI1_D9 IOMUX_PAD(0x580, 0x198, 0, __NA_, 0, NO_PAD_CTRL)
406#define MX51_PAD_CSI1_D9__GPIO3_13 IOMUX_PAD(0x580, 0x198, 3, __NA_, 0, MX51_GPIO_PAD_CTRL)
407#define MX51_PAD_CSI1_D10__CSI1_D10 IOMUX_PAD(0x584, 0x19c, 0, __NA_, 0, NO_PAD_CTRL)
408#define MX51_PAD_CSI1_D11__CSI1_D11 IOMUX_PAD(0x588, 0x1a0, 0, __NA_, 0, NO_PAD_CTRL)
409#define MX51_PAD_CSI1_D12__CSI1_D12 IOMUX_PAD(0x58c, 0x1a4, 0, __NA_, 0, NO_PAD_CTRL)
410#define MX51_PAD_CSI1_D13__CSI1_D13 IOMUX_PAD(0x590, 0x1a8, 0, __NA_, 0, NO_PAD_CTRL)
411#define MX51_PAD_CSI1_D14__CSI1_D14 IOMUX_PAD(0x594, 0x1ac, 0, __NA_, 0, NO_PAD_CTRL)
412#define MX51_PAD_CSI1_D15__CSI1_D15 IOMUX_PAD(0x598, 0x1b0, 0, __NA_, 0, NO_PAD_CTRL)
413#define MX51_PAD_CSI1_D16__CSI1_D16 IOMUX_PAD(0x59c, 0x1b4, 0, __NA_, 0, NO_PAD_CTRL)
414#define MX51_PAD_CSI1_D17__CSI1_D17 IOMUX_PAD(0x5a0, 0x1b8, 0, __NA_, 0, NO_PAD_CTRL)
415#define MX51_PAD_CSI1_D18__CSI1_D18 IOMUX_PAD(0x5a4, 0x1bc, 0, __NA_, 0, NO_PAD_CTRL)
416#define MX51_PAD_CSI1_D19__CSI1_D19 IOMUX_PAD(0x5a8, 0x1c0, 0, __NA_, 0, NO_PAD_CTRL)
417#define MX51_PAD_CSI1_VSYNC__CSI1_VSYNC IOMUX_PAD(0x5ac, 0x1c4, 0, __NA_, 0, NO_PAD_CTRL)
418#define MX51_PAD_CSI1_VSYNC__GPIO3_14 IOMUX_PAD(0x5ac, 0x1c4, 3, __NA_, 0, MX51_GPIO_PAD_CTRL)
419#define MX51_PAD_CSI1_HSYNC__CSI1_HSYNC IOMUX_PAD(0x5b0, 0x1c8, 0, __NA_, 0, NO_PAD_CTRL)
420#define MX51_PAD_CSI1_HSYNC__GPIO3_15 IOMUX_PAD(0x5b0, 0x1c8, 3, __NA_, 0, MX51_GPIO_PAD_CTRL)
421#define MX51_PAD_CSI1_PIXCLK__CSI1_PIXCLK IOMUX_PAD(0x5b4, __NA_, 0, 0x000, 0, NO_PAD_CTRL)
422#define MX51_PAD_CSI1_MCLK__CSI1_MCLK IOMUX_PAD(0x5b8, __NA_, 0, 0x000, 0, NO_PAD_CTRL)
423#define MX51_PAD_CSI2_D12__CSI2_D12 IOMUX_PAD(0x5bc, 0x1cc, 0, __NA_, 0, NO_PAD_CTRL)
424#define MX51_PAD_CSI2_D12__GPIO4_9 IOMUX_PAD(0x5bc, 0x1cc, 3, __NA_, 0, MX51_GPIO_PAD_CTRL)
425#define MX51_PAD_CSI2_D13__CSI2_D13 IOMUX_PAD(0x5c0, 0x1d0, 0, __NA_, 0, NO_PAD_CTRL)
426#define MX51_PAD_CSI2_D13__GPIO4_10 IOMUX_PAD(0x5c0, 0x1d0, 3, __NA_, 0, MX51_GPIO_PAD_CTRL)
427#define MX51_PAD_CSI2_D14__CSI2_D14 IOMUX_PAD(0x5c4, 0x1d4, 0, __NA_, 0, NO_PAD_CTRL)
428#define MX51_PAD_CSI2_D15__CSI2_D15 IOMUX_PAD(0x5c8, 0x1d8, 0, __NA_, 0, NO_PAD_CTRL)
429#define MX51_PAD_CSI2_D16__CSI2_D16 IOMUX_PAD(0x5cc, 0x1dc, 0, __NA_, 0, NO_PAD_CTRL)
430#define MX51_PAD_CSI2_D17__CSI2_D17 IOMUX_PAD(0x5d0, 0x1e0, 0, __NA_, 0, NO_PAD_CTRL)
431#define MX51_PAD_CSI2_D18__CSI2_D18 IOMUX_PAD(0x5d4, 0x1e4, 0, __NA_, 0, NO_PAD_CTRL)
432#define MX51_PAD_CSI2_D18__GPIO4_11 IOMUX_PAD(0x5d4, 0x1e4, 3, __NA_, 0, MX51_GPIO_PAD_CTRL)
433#define MX51_PAD_CSI2_D19__CSI2_D19 IOMUX_PAD(0x5d8, 0x1e8, 0, __NA_, 0, NO_PAD_CTRL)
434#define MX51_PAD_CSI2_D19__GPIO4_12 IOMUX_PAD(0x5d8, 0x1e8, 3, __NA_, 0, MX51_GPIO_PAD_CTRL)
435#define MX51_PAD_CSI2_VSYNC__CSI2_VSYNC IOMUX_PAD(0x5dc, 0x1ec, 0, __NA_, 0, NO_PAD_CTRL)
436#define MX51_PAD_CSI2_VSYNC__GPIO4_13 IOMUX_PAD(0x5dc, 0x1ec, 3, __NA_, 0, MX51_GPIO_PAD_CTRL)
437#define MX51_PAD_CSI2_HSYNC__CSI2_HSYNC IOMUX_PAD(0x5e0, 0x1f0, 0, __NA_, 0, NO_PAD_CTRL)
438#define MX51_PAD_CSI2_HSYNC__GPIO4_14 IOMUX_PAD(0x5e0, 0x1f0, 3, __NA_, 0, MX51_GPIO_PAD_CTRL)
439#define MX51_PAD_CSI2_PIXCLK__CSI2_PIXCLK IOMUX_PAD(0x5e4, 0x1f4, 0, __NA_, 0, NO_PAD_CTRL)
440#define MX51_PAD_CSI2_PIXCLK__GPIO4_15 IOMUX_PAD(0x5e4, 0x1f4, 3, __NA_, 0, MX51_GPIO_PAD_CTRL)
441#define MX51_PAD_I2C1_CLK__GPIO4_16 IOMUX_PAD(0x5e8, 0x1f8, 3, __NA_, 0, MX51_GPIO_PAD_CTRL)
442#define MX51_PAD_I2C1_CLK__I2C1_CLK IOMUX_PAD(0x5e8, 0x1f8, 0x10, __NA_, 0, MX51_I2C_PAD_CTRL)
443#define MX51_PAD_I2C1_DAT__GPIO4_17 IOMUX_PAD(0x5ec, 0x1fc, 3, __NA_, 0, MX51_GPIO_PAD_CTRL)
444#define MX51_PAD_I2C1_DAT__I2C1_DAT IOMUX_PAD(0x5ec, 0x1fc, 0x10, __NA_, 0, MX51_I2C_PAD_CTRL)
445#define MX51_PAD_AUD3_BB_TXD__AUD3_TXD IOMUX_PAD(0x5f0, 0x200, 0, __NA_, 0, NO_PAD_CTRL)
446#define MX51_PAD_AUD3_BB_TXD__GPIO4_18 IOMUX_PAD(0x5f0, 0x200, 3, __NA_, 0, MX51_GPIO_PAD_CTRL)
447#define MX51_PAD_AUD3_BB_RXD__AUD3_RXD IOMUX_PAD(0x5f4, 0x204, 0, __NA_, 0, NO_PAD_CTRL)
448#define MX51_PAD_AUD3_BB_RXD__GPIO4_19 IOMUX_PAD(0x5f4, 0x204, 3, __NA_, 0, MX51_GPIO_PAD_CTRL)
449#define MX51_PAD_AUD3_BB_RXD__UART3_RXD IOMUX_PAD(0x5f4, 0x204, 1, 0x9f4, 2, MX51_UART_PAD_CTRL)
450#define MX51_PAD_AUD3_BB_CK__AUD3_TXC IOMUX_PAD(0x5f8, 0x208, 0, __NA_, 0, NO_PAD_CTRL)
451#define MX51_PAD_AUD3_BB_CK__GPIO4_20 IOMUX_PAD(0x5f8, 0x208, 3, __NA_, 0, MX51_GPIO_PAD_CTRL)
452#define MX51_PAD_AUD3_BB_FS__AUD3_TXFS IOMUX_PAD(0x5fc, 0x20c, 0, __NA_, 0, NO_PAD_CTRL)
453#define MX51_PAD_AUD3_BB_FS__GPIO4_21 IOMUX_PAD(0x5fc, 0x20c, 3, __NA_, 0, MX51_GPIO_PAD_CTRL)
454#define MX51_PAD_AUD3_BB_FS__UART3_TXD IOMUX_PAD(0x5fc, 0x20c, 1, __NA_, 0, MX51_UART_PAD_CTRL)
455#define MX51_PAD_CSPI1_MOSI__ECSPI1_MOSI IOMUX_PAD(0x600, 0x210, 0, __NA_, 0, MX51_ECSPI_PAD_CTRL)
456#define MX51_PAD_CSPI1_MOSI__GPIO4_22 IOMUX_PAD(0x600, 0x210, 3, __NA_, 0, MX51_GPIO_PAD_CTRL)
457#define MX51_PAD_CSPI1_MOSI__I2C1_SDA IOMUX_PAD(0x600, 0x210, 0x11, 0x9b4, 1, MX51_I2C_PAD_CTRL)
458#define MX51_PAD_CSPI1_MISO__AUD4_RXD IOMUX_PAD(0x604, 0x214, 1, 0x8c4, 1, NO_PAD_CTRL)
459#define MX51_PAD_CSPI1_MISO__ECSPI1_MISO IOMUX_PAD(0x604, 0x214, 0, __NA_, 0, MX51_ECSPI_PAD_CTRL)
460#define MX51_PAD_CSPI1_MISO__GPIO4_23 IOMUX_PAD(0x604, 0x214, 3, __NA_, 0, MX51_GPIO_PAD_CTRL)
461#define MX51_PAD_CSPI1_SS0__AUD4_TXC IOMUX_PAD(0x608, 0x218, 1, 0x8cc, 1, NO_PAD_CTRL)
462#define MX51_PAD_CSPI1_SS0__ECSPI1_SS0 IOMUX_PAD(0x608, 0x218, 0, __NA_, 0, MX51_ECSPI_PAD_CTRL)
463#define MX51_PAD_CSPI1_SS0__GPIO4_24 IOMUX_PAD(0x608, 0x218, 3, __NA_, 0, MX51_GPIO_PAD_CTRL)
464#define MX51_PAD_CSPI1_SS1__AUD4_TXD IOMUX_PAD(0x60c, 0x21c, 1, 0x8c8, 1, NO_PAD_CTRL)
465#define MX51_PAD_CSPI1_SS1__ECSPI1_SS1 IOMUX_PAD(0x60c, 0x21c, 0, __NA_, 0, MX51_ECSPI_PAD_CTRL)
466#define MX51_PAD_CSPI1_SS1__GPIO4_25 IOMUX_PAD(0x60c, 0x21c, 3, __NA_, 0, MX51_GPIO_PAD_CTRL)
467#define MX51_PAD_CSPI1_RDY__AUD4_TXFS IOMUX_PAD(0x610, 0x220, 1, 0x8d0, 1, NO_PAD_CTRL)
468#define MX51_PAD_CSPI1_RDY__ECSPI1_RDY IOMUX_PAD(0x610, 0x220, 0, __NA_, 0, MX51_ECSPI_PAD_CTRL)
469#define MX51_PAD_CSPI1_RDY__GPIO4_26 IOMUX_PAD(0x610, 0x220, 3, __NA_, 0, MX51_GPIO_PAD_CTRL)
470#define MX51_PAD_CSPI1_SCLK__ECSPI1_SCLK IOMUX_PAD(0x614, 0x224, 0, __NA_, 0, MX51_ECSPI_PAD_CTRL)
471#define MX51_PAD_CSPI1_SCLK__GPIO4_27 IOMUX_PAD(0x614, 0x224, 3, __NA_, 0, MX51_GPIO_PAD_CTRL)
472#define MX51_PAD_CSPI1_SCLK__I2C1_SCL IOMUX_PAD(0x614, 0x224, 0x11, 0x9b0, 1, MX51_I2C_PAD_CTRL)
473#define MX51_PAD_UART1_RXD__GPIO4_28 IOMUX_PAD(0x618, 0x228, 3, __NA_, 0, MX51_GPIO_PAD_CTRL)
474#define MX51_PAD_UART1_RXD__UART1_RXD IOMUX_PAD(0x618, 0x228, 0, 0x9e4, 0, MX51_UART_PAD_CTRL)
475#define MX51_PAD_UART1_TXD__GPIO4_29 IOMUX_PAD(0x61c, 0x22c, 3, __NA_, 0, MX51_GPIO_PAD_CTRL)
476#define MX51_PAD_UART1_TXD__PWM2_PWMO IOMUX_PAD(0x61c, 0x22c, 1, __NA_, 0, NO_PAD_CTRL)
477#define MX51_PAD_UART1_TXD__UART1_TXD IOMUX_PAD(0x61c, 0x22c, 0, __NA_, 0, MX51_UART_PAD_CTRL)
478#define MX51_PAD_UART1_RTS__GPIO4_30 IOMUX_PAD(0x620, 0x230, 3, __NA_, 0, MX51_GPIO_PAD_CTRL)
479#define MX51_PAD_UART1_RTS__UART1_RTS IOMUX_PAD(0x620, 0x230, 0, 0x9e0, 0, MX51_UART_PAD_CTRL)
480#define MX51_PAD_UART1_CTS__GPIO4_31 IOMUX_PAD(0x624, 0x234, 3, __NA_, 0, MX51_GPIO_PAD_CTRL)
481#define MX51_PAD_UART1_CTS__UART1_CTS IOMUX_PAD(0x624, 0x234, 0, __NA_, 0, MX51_UART_PAD_CTRL)
482#define MX51_PAD_UART2_RXD__FIRI_TXD IOMUX_PAD(0x628, 0x238, 1, __NA_, 0, NO_PAD_CTRL)
483#define MX51_PAD_UART2_RXD__GPIO1_20 IOMUX_PAD(0x628, 0x238, 3, __NA_, 0, MX51_GPIO_PAD_CTRL)
484#define MX51_PAD_UART2_RXD__UART2_RXD IOMUX_PAD(0x628, 0x238, 0, 0x9ec, 2, MX51_UART_PAD_CTRL)
485#define MX51_PAD_UART2_TXD__FIRI_RXD IOMUX_PAD(0x62c, 0x23c, 1, __NA_, 0, NO_PAD_CTRL)
486#define MX51_PAD_UART2_TXD__GPIO1_21 IOMUX_PAD(0x62c, 0x23c, 3, __NA_, 0, MX51_GPIO_PAD_CTRL)
487#define MX51_PAD_UART2_TXD__UART2_TXD IOMUX_PAD(0x62c, 0x23c, 0, __NA_, 0, MX51_UART_PAD_CTRL)
488#define MX51_PAD_UART3_RXD__CSI1_D0 IOMUX_PAD(0x630, 0x240, 2, __NA_, 0, NO_PAD_CTRL)
489#define MX51_PAD_UART3_RXD__GPIO1_22 IOMUX_PAD(0x630, 0x240, 3, __NA_, 0, MX51_GPIO_PAD_CTRL)
490#define MX51_PAD_UART3_RXD__UART1_DTR IOMUX_PAD(0x630, 0x240, 0, __NA_, 0, NO_PAD_CTRL)
491#define MX51_PAD_UART3_RXD__UART3_RXD IOMUX_PAD(0x630, 0x240, 1, 0x9f4, 4, MX51_UART_PAD_CTRL)
492#define MX51_PAD_UART3_TXD__CSI1_D1 IOMUX_PAD(0x634, 0x244, 2, __NA_, 0, NO_PAD_CTRL)
493#define MX51_PAD_UART3_TXD__GPIO1_23 IOMUX_PAD(0x634, 0x244, 3, __NA_, 0, MX51_GPIO_PAD_CTRL)
494#define MX51_PAD_UART3_TXD__UART1_DSR IOMUX_PAD(0x634, 0x244, 0, __NA_, 0, MX51_UART_PAD_CTRL)
495#define MX51_PAD_UART3_TXD__UART3_TXD IOMUX_PAD(0x634, 0x244, 1, __NA_, 0, MX51_UART_PAD_CTRL)
496#define MX51_PAD_OWIRE_LINE__GPIO1_24 IOMUX_PAD(0x638, 0x248, 3, __NA_, 0, MX51_GPIO_PAD_CTRL)
497#define MX51_PAD_OWIRE_LINE__OWIRE_LINE IOMUX_PAD(0x638, 0x248, 0, __NA_, 0, NO_PAD_CTRL)
498#define MX51_PAD_OWIRE_LINE__SPDIF_OUT IOMUX_PAD(0x638, 0x248, 6, __NA_, 0, NO_PAD_CTRL)
499#define MX51_PAD_KEY_ROW0__KEY_ROW0 IOMUX_PAD(0x63c, 0x24c, 0, __NA_, 0, NO_PAD_CTRL)
500#define MX51_PAD_KEY_ROW1__KEY_ROW1 IOMUX_PAD(0x640, 0x250, 0, __NA_, 0, NO_PAD_CTRL)
501#define MX51_PAD_KEY_ROW2__KEY_ROW2 IOMUX_PAD(0x644, 0x254, 0, __NA_, 0, NO_PAD_CTRL)
502#define MX51_PAD_KEY_ROW3__KEY_ROW3 IOMUX_PAD(0x648, 0x258, 0, __NA_, 0, NO_PAD_CTRL)
503#define MX51_PAD_KEY_COL0__KEY_COL0 IOMUX_PAD(0x64c, 0x25c, 0, __NA_, 0, NO_PAD_CTRL)
504#define MX51_PAD_KEY_COL0__PLL1_BYP IOMUX_PAD(0x64c, 0x25c, 7, 0x90c, 0, NO_PAD_CTRL)
505#define MX51_PAD_KEY_COL1__KEY_COL1 IOMUX_PAD(0x650, 0x260, 0, __NA_, 0, NO_PAD_CTRL)
506#define MX51_PAD_KEY_COL1__PLL2_BYP IOMUX_PAD(0x650, 0x260, 7, 0x910, 0, NO_PAD_CTRL)
507#define MX51_PAD_KEY_COL2__KEY_COL2 IOMUX_PAD(0x654, 0x264, 0, __NA_, 0, NO_PAD_CTRL)
508#define MX51_PAD_KEY_COL2__PLL3_BYP IOMUX_PAD(0x654, 0x264, 7, __NA_, 0, NO_PAD_CTRL)
509#define MX51_PAD_KEY_COL3__KEY_COL3 IOMUX_PAD(0x658, 0x268, 0, __NA_, 0, NO_PAD_CTRL)
510#define MX51_PAD_KEY_COL4__I2C2_SCL IOMUX_PAD(0x65c, 0x26c, 0x13, 0x9b8, 1, MX51_I2C_PAD_CTRL)
511#define MX51_PAD_KEY_COL4__KEY_COL4 IOMUX_PAD(0x65c, 0x26c, 0, __NA_, 0, NO_PAD_CTRL)
512#define MX51_PAD_KEY_COL4__SPDIF_OUT1 IOMUX_PAD(0x65c, 0x26c, 6, __NA_, 0, NO_PAD_CTRL)
513#define MX51_PAD_KEY_COL4__UART1_RI IOMUX_PAD(0x65c, 0x26c, 1, __NA_, 0, MX51_UART_PAD_CTRL)
514#define MX51_PAD_KEY_COL4__UART3_RTS IOMUX_PAD(0x65c, 0x26c, 2, 0x9f0, 4, MX51_UART_PAD_CTRL)
515#define MX51_PAD_KEY_COL5__I2C2_SDA IOMUX_PAD(0x660, 0x270, 0x13, 0x9bc, 1, MX51_I2C_PAD_CTRL)
516#define MX51_PAD_KEY_COL5__KEY_COL5 IOMUX_PAD(0x660, 0x270, 0, __NA_, 0, NO_PAD_CTRL)
517#define MX51_PAD_KEY_COL5__UART1_DCD IOMUX_PAD(0x660, 0x270, 1, __NA_, 0, MX51_UART_PAD_CTRL)
518#define MX51_PAD_KEY_COL5__UART3_CTS IOMUX_PAD(0x660, 0x270, 2, __NA_, 0, MX51_UART_PAD_CTRL)
519#define MX51_PAD_USBH1_CLK__CSPI_SCLK IOMUX_PAD(0x678, 0x278, 1, 0x914, 1, MX51_ECSPI_PAD_CTRL)
520#define MX51_PAD_USBH1_CLK__GPIO1_25 IOMUX_PAD(0x678, 0x278, 2, __NA_, 0, MX51_GPIO_PAD_CTRL)
521#define MX51_PAD_USBH1_CLK__I2C2_SCL IOMUX_PAD(0x678, 0x278, 0x15, 0x9b8, 2, MX51_I2C_PAD_CTRL)
522#define MX51_PAD_USBH1_CLK__USBH1_CLK IOMUX_PAD(0x678, 0x278, 0, __NA_, 0, MX51_USBH1_PAD_CTRL)
523#define MX51_PAD_USBH1_DIR__CSPI_MOSI IOMUX_PAD(0x67c, 0x27c, 1, 0x91c, 1, MX51_ECSPI_PAD_CTRL)
524#define MX51_PAD_USBH1_DIR__GPIO1_26 IOMUX_PAD(0x67c, 0x27c, 2, __NA_, 0, MX51_GPIO_PAD_CTRL)
525#define MX51_PAD_USBH1_DIR__I2C2_SDA IOMUX_PAD(0x67c, 0x27c, 0x15, 0x9bc, 2, MX51_I2C_PAD_CTRL)
526#define MX51_PAD_USBH1_DIR__USBH1_DIR IOMUX_PAD(0x67c, 0x27c, 0, __NA_, 0, MX51_USBH1_PAD_CTRL)
527#define MX51_PAD_USBH1_STP__CSPI_RDY IOMUX_PAD(0x680, 0x280, 1, __NA_, 0, MX51_ECSPI_PAD_CTRL)
528#define MX51_PAD_USBH1_STP__GPIO1_27 IOMUX_PAD(0x680, 0x280, 2, __NA_, 0, MX51_GPIO_PAD_CTRL)
529#define MX51_PAD_USBH1_STP__UART3_RXD IOMUX_PAD(0x680, 0x280, 5, 0x9f4, 6, MX51_UART_PAD_CTRL)
530#define MX51_PAD_USBH1_STP__USBH1_STP IOMUX_PAD(0x680, 0x280, 0, __NA_, 0, MX51_USBH1_PAD_CTRL)
531#define MX51_PAD_USBH1_NXT__CSPI_MISO IOMUX_PAD(0x684, 0x284, 1, 0x918, 0, MX51_ECSPI_PAD_CTRL)
532#define MX51_PAD_USBH1_NXT__GPIO1_28 IOMUX_PAD(0x684, 0x284, 2, __NA_, 0, MX51_GPIO_PAD_CTRL)
533#define MX51_PAD_USBH1_NXT__UART3_TXD IOMUX_PAD(0x684, 0x284, 5, __NA_, 0, MX51_UART_PAD_CTRL)
534#define MX51_PAD_USBH1_NXT__USBH1_NXT IOMUX_PAD(0x684, 0x284, 0, __NA_, 0, MX51_USBH1_PAD_CTRL)
535#define MX51_PAD_USBH1_DATA0__GPIO1_11 IOMUX_PAD(0x688, 0x288, 2, __NA_, 0, MX51_GPIO_PAD_CTRL)
536#define MX51_PAD_USBH1_DATA0__UART2_CTS IOMUX_PAD(0x688, 0x288, 1, __NA_, 0, MX51_UART_PAD_CTRL)
537#define MX51_PAD_USBH1_DATA0__USBH1_DATA0 IOMUX_PAD(0x688, 0x288, 0, __NA_, 0, MX51_USBH1_PAD_CTRL)
538#define MX51_PAD_USBH1_DATA1__GPIO1_12 IOMUX_PAD(0x68c, 0x28c, 2, __NA_, 0, MX51_GPIO_PAD_CTRL)
539#define MX51_PAD_USBH1_DATA1__UART2_RXD IOMUX_PAD(0x68c, 0x28c, 1, 0x9ec, 4, MX51_UART_PAD_CTRL)
540#define MX51_PAD_USBH1_DATA1__USBH1_DATA1 IOMUX_PAD(0x68c, 0x28c, 0, __NA_, 0, MX51_USBH1_PAD_CTRL)
541#define MX51_PAD_USBH1_DATA2__GPIO1_13 IOMUX_PAD(0x690, 0x290, 2, __NA_, 0, MX51_GPIO_PAD_CTRL)
542#define MX51_PAD_USBH1_DATA2__UART2_TXD IOMUX_PAD(0x690, 0x290, 1, __NA_, 0, MX51_UART_PAD_CTRL)
543#define MX51_PAD_USBH1_DATA2__USBH1_DATA2 IOMUX_PAD(0x690, 0x290, 0, __NA_, 0, MX51_USBH1_PAD_CTRL)
544#define MX51_PAD_USBH1_DATA3__GPIO1_14 IOMUX_PAD(0x694, 0x294, 2, __NA_, 0, MX51_GPIO_PAD_CTRL)
545#define MX51_PAD_USBH1_DATA3__UART2_RTS IOMUX_PAD(0x694, 0x294, 1, 0x9e8, 5, MX51_UART_PAD_CTRL)
546#define MX51_PAD_USBH1_DATA3__USBH1_DATA3 IOMUX_PAD(0x694, 0x294, 0, __NA_, 0, MX51_USBH1_PAD_CTRL)
547#define MX51_PAD_USBH1_DATA4__CSPI_SS0 IOMUX_PAD(0x698, 0x298, 1, __NA_, 0, MX51_ECSPI_PAD_CTRL)
548#define MX51_PAD_USBH1_DATA4__GPIO1_15 IOMUX_PAD(0x698, 0x298, 2, __NA_, 0, MX51_GPIO_PAD_CTRL)
549#define MX51_PAD_USBH1_DATA4__USBH1_DATA4 IOMUX_PAD(0x698, 0x298, 0, __NA_, 0, MX51_USBH1_PAD_CTRL)
550#define MX51_PAD_USBH1_DATA5__CSPI_SS1 IOMUX_PAD(0x69c, 0x29c, 1, 0x920, 0, MX51_ECSPI_PAD_CTRL)
551#define MX51_PAD_USBH1_DATA5__GPIO1_16 IOMUX_PAD(0x69c, 0x29c, 2, __NA_, 0, MX51_GPIO_PAD_CTRL)
552#define MX51_PAD_USBH1_DATA5__USBH1_DATA5 IOMUX_PAD(0x69c, 0x29c, 0, __NA_, 0, MX51_USBH1_PAD_CTRL)
553#define MX51_PAD_USBH1_DATA6__CSPI_SS3 IOMUX_PAD(0x6a0, 0x2a0, 1, 0x928, 1, MX51_ECSPI_PAD_CTRL)
554#define MX51_PAD_USBH1_DATA6__GPIO1_17 IOMUX_PAD(0x6a0, 0x2a0, 2, __NA_, 0, MX51_GPIO_PAD_CTRL)
555#define MX51_PAD_USBH1_DATA6__USBH1_DATA6 IOMUX_PAD(0x6a0, 0x2a0, 0, __NA_, 0, MX51_USBH1_PAD_CTRL)
556#define MX51_PAD_USBH1_DATA7__ECSPI1_SS3 IOMUX_PAD(0x6a4, 0x2a4, 1, __NA_, 0, MX51_ECSPI_PAD_CTRL)
557#define MX51_PAD_USBH1_DATA7__ECSPI2_SS3 IOMUX_PAD(0x6a4, 0x2a4, 5, 0x934, 1, MX51_ECSPI_PAD_CTRL)
558#define MX51_PAD_USBH1_DATA7__GPIO1_18 IOMUX_PAD(0x6a4, 0x2a4, 2, __NA_, 0, MX51_GPIO_PAD_CTRL)
559#define MX51_PAD_USBH1_DATA7__USBH1_DATA7 IOMUX_PAD(0x6a4, 0x2a4, 0, __NA_, 0, MX51_USBH1_PAD_CTRL)
560#define MX51_PAD_DI1_PIN11__DI1_PIN11 IOMUX_PAD(0x6a8, 0x2a8, 0, __NA_, 0, NO_PAD_CTRL)
561#define MX51_PAD_DI1_PIN11__ECSPI1_SS2 IOMUX_PAD(0x6a8, 0x2a8, 7, __NA_, 0, MX51_ECSPI_PAD_CTRL)
562#define MX51_PAD_DI1_PIN11__GPIO3_0 IOMUX_PAD(0x6a8, 0x2a8, 4, __NA_, 0, MX51_GPIO_PAD_CTRL)
563#define MX51_PAD_DI1_PIN12__DI1_PIN12 IOMUX_PAD(0x6ac, 0x2ac, 0, __NA_, 0, NO_PAD_CTRL)
564#define MX51_PAD_DI1_PIN12__GPIO3_1 IOMUX_PAD(0x6ac, 0x2ac, 4, 0x978, 1, MX51_GPIO_PAD_CTRL)
565#define MX51_PAD_DI1_PIN13__DI1_PIN13 IOMUX_PAD(0x6b0, 0x2b0, 0, __NA_, 0, NO_PAD_CTRL)
566#define MX51_PAD_DI1_PIN13__GPIO3_2 IOMUX_PAD(0x6b0, 0x2b0, 4, 0x97c, 1, MX51_GPIO_PAD_CTRL)
567#define MX51_PAD_DI1_D0_CS__DI1_D0_CS IOMUX_PAD(0x6b4, 0x2b4, 0, __NA_, 0, NO_PAD_CTRL)
568#define MX51_PAD_DI1_D0_CS__GPIO3_3 IOMUX_PAD(0x6b4, 0x2b4, 4, 0x980, 1, MX51_GPIO_PAD_CTRL)
569#define MX51_PAD_DI1_D1_CS__DI1_D1_CS IOMUX_PAD(0x6b8, 0x2b8, 0, __NA_, 0, NO_PAD_CTRL)
570#define MX51_PAD_DI1_D1_CS__DISP1_PIN14 IOMUX_PAD(0x6b8, 0x2b8, 2, __NA_, 0, NO_PAD_CTRL)
571#define MX51_PAD_DI1_D1_CS__DISP1_PIN5 IOMUX_PAD(0x6b8, 0x2b8, 3, __NA_, 0, NO_PAD_CTRL)
572#define MX51_PAD_DI1_D1_CS__GPIO3_4 IOMUX_PAD(0x6b8, 0x2b8, 4, 0x984, 1, MX51_GPIO_PAD_CTRL)
573#define MX51_PAD_DISPB2_SER_DIN__DISP1_PIN1 IOMUX_PAD(0x6bc, 0x2bc, 2, 0x9a4, 1, NO_PAD_CTRL)
574#define MX51_PAD_DISPB2_SER_DIN__DISPB2_SER_DIN IOMUX_PAD(0x6bc, 0x2bc, 0, 0x9c4, 0, NO_PAD_CTRL)
575#define MX51_PAD_DISPB2_SER_DIN__GPIO3_5 IOMUX_PAD(0x6bc, 0x2bc, 4, 0x988, 1, MX51_GPIO_PAD_CTRL)
576#define MX51_PAD_DISPB2_SER_DIO__DISP1_PIN6 IOMUX_PAD(0x6c0, 0x2c0, 3, __NA_, 0, NO_PAD_CTRL)
577#define MX51_PAD_DISPB2_SER_DIO__DISPB2_SER_DIO IOMUX_PAD(0x6c0, 0x2c0, 0, 0x9c4, 1, NO_PAD_CTRL)
578#define MX51_PAD_DISPB2_SER_DIO__GPIO3_6 IOMUX_PAD(0x6c0, 0x2c0, 4, 0x98c, 1, MX51_GPIO_PAD_CTRL)
579#define MX51_PAD_DISPB2_SER_CLK__DISP1_PIN17 IOMUX_PAD(0x6c4, 0x2c4, 2, __NA_, 0, NO_PAD_CTRL)
580#define MX51_PAD_DISPB2_SER_CLK__DISP1_PIN7 IOMUX_PAD(0x6c4, 0x2c4, 3, __NA_, 0, NO_PAD_CTRL)
581#define MX51_PAD_DISPB2_SER_CLK__DISPB2_SER_CLK IOMUX_PAD(0x6c4, 0x2c4, 0, __NA_, 0, NO_PAD_CTRL)
582#define MX51_PAD_DISPB2_SER_CLK__GPIO3_7 IOMUX_PAD(0x6c4, 0x2c4, 4, 0x990, 1, MX51_GPIO_PAD_CTRL)
583#define MX51_PAD_DISPB2_SER_RS__DISP1_EXT_CLK IOMUX_PAD(0x6c8, 0x2c8, 2, __NA_, 0, NO_PAD_CTRL)
584#define MX51_PAD_DISPB2_SER_RS__DISP1_PIN16 IOMUX_PAD(0x6c8, 0x2c8, 2, __NA_, 0, NO_PAD_CTRL)
585#define MX51_PAD_DISPB2_SER_RS__DISP1_PIN8 IOMUX_PAD(0x6c8, 0x2c8, 3, __NA_, 0, NO_PAD_CTRL)
586#define MX51_PAD_DISPB2_SER_RS__DISPB2_SER_RS IOMUX_PAD(0x6c8, 0x2c8, 0, __NA_, 0, NO_PAD_CTRL)
587#define MX51_PAD_DISPB2_SER_RS__DISPB2_SER_RS IOMUX_PAD(0x6c8, 0x2c8, 0, __NA_, 0, NO_PAD_CTRL)
588#define MX51_PAD_DISPB2_SER_RS__GPIO3_8 IOMUX_PAD(0x6c8, 0x2c8, 4, 0x994, 1, MX51_GPIO_PAD_CTRL)
589#define MX51_PAD_DISP1_DAT0__DISP1_DAT0 IOMUX_PAD(0x6cc, 0x2cc, 0, __NA_, 0, NO_PAD_CTRL)
590#define MX51_PAD_DISP1_DAT1__DISP1_DAT1 IOMUX_PAD(0x6d0, 0x2d0, 0, __NA_, 0, NO_PAD_CTRL)
591#define MX51_PAD_DISP1_DAT2__DISP1_DAT2 IOMUX_PAD(0x6d4, 0x2d4, 0, __NA_, 0, NO_PAD_CTRL)
592#define MX51_PAD_DISP1_DAT3__DISP1_DAT3 IOMUX_PAD(0x6d8, 0x2d8, 0, __NA_, 0, NO_PAD_CTRL)
593#define MX51_PAD_DISP1_DAT4__DISP1_DAT4 IOMUX_PAD(0x6dc, 0x2dc, 0, __NA_, 0, NO_PAD_CTRL)
594#define MX51_PAD_DISP1_DAT5__DISP1_DAT5 IOMUX_PAD(0x6e0, 0x2e0, 0, __NA_, 0, NO_PAD_CTRL)
595#define MX51_PAD_DISP1_DAT6__BOOT_USB_SRC IOMUX_PAD(0x6e4, 0x2e4, 7, __NA_, 0, NO_PAD_CTRL)
596#define MX51_PAD_DISP1_DAT6__DISP1_DAT6 IOMUX_PAD(0x6e4, 0x2e4, 0, __NA_, 0, NO_PAD_CTRL)
597#define MX51_PAD_DISP1_DAT7__BOOT_EEPROM_CFG IOMUX_PAD(0x6e8, 0x2e8, 7, __NA_, 0, NO_PAD_CTRL)
598#define MX51_PAD_DISP1_DAT7__DISP1_DAT7 IOMUX_PAD(0x6e8, 0x2e8, 0, __NA_, 0, NO_PAD_CTRL)
599#define MX51_PAD_DISP1_DAT8__BOOT_SRC0 IOMUX_PAD(0x6ec, 0x2ec, 7, __NA_, 0, NO_PAD_CTRL)
600#define MX51_PAD_DISP1_DAT8__DISP1_DAT8 IOMUX_PAD(0x6ec, 0x2ec, 0, __NA_, 0, NO_PAD_CTRL)
601#define MX51_PAD_DISP1_DAT9__BOOT_SRC1 IOMUX_PAD(0x6f0, 0x2f0, 7, __NA_, 0, NO_PAD_CTRL)
602#define MX51_PAD_DISP1_DAT9__DISP1_DAT9 IOMUX_PAD(0x6f0, 0x2f0, 0, __NA_, 0, NO_PAD_CTRL)
603#define MX51_PAD_DISP1_DAT10__BOOT_SPARE_SIZE IOMUX_PAD(0x6f4, 0x2f4, 7, __NA_, 0, NO_PAD_CTRL)
604#define MX51_PAD_DISP1_DAT10__DISP1_DAT10 IOMUX_PAD(0x6f4, 0x2f4, 0, __NA_, 0, NO_PAD_CTRL)
605#define MX51_PAD_DISP1_DAT11__BOOT_LPB_FREQ2 IOMUX_PAD(0x6f8, 0x2f8, 7, __NA_, 0, NO_PAD_CTRL)
606#define MX51_PAD_DISP1_DAT11__DISP1_DAT11 IOMUX_PAD(0x6f8, 0x2f8, 0, __NA_, 0, NO_PAD_CTRL)
607#define MX51_PAD_DISP1_DAT12__BOOT_MLC_SEL IOMUX_PAD(0x6fc, 0x2fc, 7, __NA_, 0, NO_PAD_CTRL)
608#define MX51_PAD_DISP1_DAT12__DISP1_DAT12 IOMUX_PAD(0x6fc, 0x2fc, 0, __NA_, 0, NO_PAD_CTRL)
609#define MX51_PAD_DISP1_DAT13__BOOT_MEM_CTL0 IOMUX_PAD(0x700, 0x300, 7, __NA_, 0, NO_PAD_CTRL)
610#define MX51_PAD_DISP1_DAT13__DISP1_DAT13 IOMUX_PAD(0x700, 0x300, 0, __NA_, 0, NO_PAD_CTRL)
611#define MX51_PAD_DISP1_DAT14__BOOT_MEM_CTL1 IOMUX_PAD(0x704, 0x304, 7, __NA_, 0, NO_PAD_CTRL)
612#define MX51_PAD_DISP1_DAT14__DISP1_DAT14 IOMUX_PAD(0x704, 0x304, 0, __NA_, 0, NO_PAD_CTRL)
613#define MX51_PAD_DISP1_DAT15__BOOT_BUS_WIDTH IOMUX_PAD(0x708, 0x308, 7, __NA_, 0, NO_PAD_CTRL)
614#define MX51_PAD_DISP1_DAT15__DISP1_DAT15 IOMUX_PAD(0x708, 0x308, 0, __NA_, 0, NO_PAD_CTRL)
615#define MX51_PAD_DISP1_DAT16__BOOT_PAGE_SIZE0 IOMUX_PAD(0x70c, 0x30c, 7, __NA_, 0, NO_PAD_CTRL)
616#define MX51_PAD_DISP1_DAT16__DISP1_DAT16 IOMUX_PAD(0x70c, 0x30c, 0, __NA_, 0, NO_PAD_CTRL)
617#define MX51_PAD_DISP1_DAT17__BOOT_PAGE_SIZE1 IOMUX_PAD(0x710, 0x310, 7, __NA_, 0, NO_PAD_CTRL)
618#define MX51_PAD_DISP1_DAT17__DISP1_DAT17 IOMUX_PAD(0x710, 0x310, 0, __NA_, 0, NO_PAD_CTRL)
619#define MX51_PAD_DISP1_DAT18__BOOT_WEIM_MUXED0 IOMUX_PAD(0x714, 0x314, 7, __NA_, 0, NO_PAD_CTRL)
620#define MX51_PAD_DISP1_DAT18__DISP1_DAT18 IOMUX_PAD(0x714, 0x314, 0, __NA_, 0, NO_PAD_CTRL)
621#define MX51_PAD_DISP1_DAT18__DISP2_PIN11 IOMUX_PAD(0x714, 0x314, 5, __NA_, 0, NO_PAD_CTRL)
622#define MX51_PAD_DISP1_DAT18__DISP2_PIN5 IOMUX_PAD(0x714, 0x314, 4, __NA_, 0, NO_PAD_CTRL)
623#define MX51_PAD_DISP1_DAT19__BOOT_WEIM_MUXED1 IOMUX_PAD(0x718, 0x318, 7, __NA_, 0, NO_PAD_CTRL)
624#define MX51_PAD_DISP1_DAT19__DISP1_DAT19 IOMUX_PAD(0x718, 0x318, 0, __NA_, 0, NO_PAD_CTRL)
625#define MX51_PAD_DISP1_DAT19__DISP2_PIN12 IOMUX_PAD(0x718, 0x318, 5, __NA_, 0, NO_PAD_CTRL)
626#define MX51_PAD_DISP1_DAT19__DISP2_PIN6 IOMUX_PAD(0x718, 0x318, 4, __NA_, 0, NO_PAD_CTRL)
627#define MX51_PAD_DISP1_DAT20__BOOT_MEM_TYPE0 IOMUX_PAD(0x71c, 0x31c, 7, __NA_, 0, NO_PAD_CTRL)
628#define MX51_PAD_DISP1_DAT20__DISP1_DAT20 IOMUX_PAD(0x71c, 0x31c, 0, __NA_, 0, NO_PAD_CTRL)
629#define MX51_PAD_DISP1_DAT20__DISP2_PIN13 IOMUX_PAD(0x71c, 0x31c, 5, __NA_, 0, NO_PAD_CTRL)
630#define MX51_PAD_DISP1_DAT20__DISP2_PIN7 IOMUX_PAD(0x71c, 0x31c, 4, __NA_, 0, NO_PAD_CTRL)
631#define MX51_PAD_DISP1_DAT21__BOOT_MEM_TYPE1 IOMUX_PAD(0x720, 0x320, 7, __NA_, 0, NO_PAD_CTRL)
632#define MX51_PAD_DISP1_DAT21__DISP1_DAT21 IOMUX_PAD(0x720, 0x320, 0, __NA_, 0, NO_PAD_CTRL)
633#define MX51_PAD_DISP1_DAT21__DISP2_PIN14 IOMUX_PAD(0x720, 0x320, 5, __NA_, 0, NO_PAD_CTRL)
634#define MX51_PAD_DISP1_DAT21__DISP2_PIN8 IOMUX_PAD(0x720, 0x320, 4, __NA_, 0, NO_PAD_CTRL)
635#define MX51_PAD_DISP1_DAT22__BOOT_LPB_FREQ0 IOMUX_PAD(0x724, 0x324, 7, __NA_, 0, NO_PAD_CTRL)
636#define MX51_PAD_DISP1_DAT22__DISP1_DAT22 IOMUX_PAD(0x724, 0x324, 0, __NA_, 0, NO_PAD_CTRL)
637#define MX51_PAD_DISP1_DAT22__DISP2_D0_CS IOMUX_PAD(0x724, 0x324, 6, __NA_, 0, NO_PAD_CTRL)
638#define MX51_PAD_DISP1_DAT22__DISP2_DAT16 IOMUX_PAD(0x724, 0x324, 5, __NA_, 0, NO_PAD_CTRL)
639#define MX51_PAD_DISP1_DAT23__BOOT_LPB_FREQ1 IOMUX_PAD(0x728, 0x328, 7, __NA_, 0, NO_PAD_CTRL)
640#define MX51_PAD_DISP1_DAT23__DISP1_DAT23 IOMUX_PAD(0x728, 0x328, 0, __NA_, 0, NO_PAD_CTRL)
641#define MX51_PAD_DISP1_DAT23__DISP2_D1_CS IOMUX_PAD(0x728, 0x328, 6, __NA_, 0, NO_PAD_CTRL)
642#define MX51_PAD_DISP1_DAT23__DISP2_DAT17 IOMUX_PAD(0x728, 0x328, 5, __NA_, 0, NO_PAD_CTRL)
643#define MX51_PAD_DISP1_DAT23__DISP2_SER_CS IOMUX_PAD(0x728, 0x328, 4, __NA_, 0, NO_PAD_CTRL)
644#define MX51_PAD_DI1_PIN3__DI1_PIN3 IOMUX_PAD(0x72c, 0x32c, 0, __NA_, 0, NO_PAD_CTRL)
645#define MX51_PAD_DI1_DISP_CLK__DI1_DISP_CLK IOMUX_PAD(0x730, __NA_, 0, __NA_, 0, NO_PAD_CTRL)
646#define MX51_PAD_DI1_PIN2__DI1_PIN2 IOMUX_PAD(0x734, 0x330, 0, __NA_, 0, NO_PAD_CTRL)
647#define MX51_PAD_DI1_PIN15__DI1_PIN15 IOMUX_PAD(0x738, __NA_, 0, __NA_, 0, NO_PAD_CTRL)
648#define MX51_PAD_DI_GP2__DISP1_SER_CLK IOMUX_PAD(0x740, 0x338, 0, __NA_, 0, NO_PAD_CTRL)
649#define MX51_PAD_DI_GP2__DISP2_WAIT IOMUX_PAD(0x740, 0x338, 2, 0x9a8, 1, NO_PAD_CTRL)
650#define MX51_PAD_DI_GP3__CSI1_DATA_EN IOMUX_PAD(0x744, 0x33c, 3, 0x9a0, 1, NO_PAD_CTRL)
651#define MX51_PAD_DI_GP3__DISP1_SER_DIO IOMUX_PAD(0x744, 0x33c, 0, 0x9c0, 0, NO_PAD_CTRL)
652#define MX51_PAD_DI_GP3__FEC_TX_ER IOMUX_PAD(0x744, 0x33c, 2, __NA_, 0, MX51_PAD_CTRL_5)
653#define MX51_PAD_DI2_PIN4__CSI2_DATA_EN IOMUX_PAD(0x748, 0x340, 3, 0x99c, 1, NO_PAD_CTRL)
654#define MX51_PAD_DI2_PIN4__DI2_PIN4 IOMUX_PAD(0x748, 0x340, 0, __NA_, 0, NO_PAD_CTRL)
655#define MX51_PAD_DI2_PIN4__FEC_CRS IOMUX_PAD(0x748, 0x340, 2, 0x950, 1, NO_PAD_CTRL)
656#define MX51_PAD_DI2_PIN2__DI2_PIN2 IOMUX_PAD(0x74c, 0x344, 0, __NA_, 0, NO_PAD_CTRL)
657#define MX51_PAD_DI2_PIN2__FEC_MDC IOMUX_PAD(0x74c, 0x344, 2, __NA_, 0, MX51_PAD_CTRL_5)
658#define MX51_PAD_DI2_PIN3__DI2_PIN3 IOMUX_PAD(0x750, 0x348, 0, __NA_, 0, NO_PAD_CTRL)
659#define MX51_PAD_DI2_PIN3__FEC_MDIO IOMUX_PAD(0x750, 0x348, 2, 0x954, 1, NO_PAD_CTRL)
660#define MX51_PAD_DI2_DISP_CLK__DI2_DISP_CLK IOMUX_PAD(0x754, 0x34c, 0, __NA_, 0, NO_PAD_CTRL)
661#define MX51_PAD_DI2_DISP_CLK__FEC_RDATA1 IOMUX_PAD(0x754, 0x34c, 2, 0x95c, 1, NO_PAD_CTRL)
662#define MX51_PAD_DI_GP4__DI2_PIN15 IOMUX_PAD(0x758, 0x350, 4, __NA_, 0, NO_PAD_CTRL)
663#define MX51_PAD_DI_GP4__DISP1_SER_DIN IOMUX_PAD(0x758, 0x350, 0, 0x9c0, 1, NO_PAD_CTRL)
664#define MX51_PAD_DI_GP4__DISP2_PIN1 IOMUX_PAD(0x758, 0x350, 3, __NA_, 0, NO_PAD_CTRL)
665#define MX51_PAD_DI_GP4__FEC_RDATA2 IOMUX_PAD(0x758, 0x350, 2, 0x960, 1, NO_PAD_CTRL)
666#define MX51_PAD_DISP2_DAT0__DISP2_DAT0 IOMUX_PAD(0x75c, 0x354, 0, __NA_, 0, NO_PAD_CTRL)
667#define MX51_PAD_DISP2_DAT0__FEC_RDATA3 IOMUX_PAD(0x75c, 0x354, 2, 0x964, 1, NO_PAD_CTRL)
668#define MX51_PAD_DISP2_DAT0__KEY_COL6 IOMUX_PAD(0x75c, 0x354, 4, 0x9c8, 1, NO_PAD_CTRL)
669#define MX51_PAD_DISP2_DAT0__UART3_RXD IOMUX_PAD(0x75c, 0x354, 5, 0x9f4, 8, MX51_UART_PAD_CTRL)
670#define MX51_PAD_DISP2_DAT0__USBH3_CLK IOMUX_PAD(0x75c, 0x354, 3, 0x9f8, 1, MX51_UART_PAD_CTRL)
671#define MX51_PAD_DISP2_DAT1__DISP2_DAT1 IOMUX_PAD(0x760, 0x358, 0, __NA_, 0, NO_PAD_CTRL)
672#define MX51_PAD_DISP2_DAT1__FEC_RX_ER IOMUX_PAD(0x760, 0x358, 2, 0x970, 1, NO_PAD_CTRL)
673#define MX51_PAD_DISP2_DAT1__KEY_COL7 IOMUX_PAD(0x760, 0x358, 4, 0x9cc, 1, NO_PAD_CTRL)
674#define MX51_PAD_DISP2_DAT1__UART3_TXD IOMUX_PAD(0x760, 0x358, 5, __NA_, 0, MX51_UART_PAD_CTRL)
675#define MX51_PAD_DISP2_DAT1__USBH3_DIR IOMUX_PAD(0x760, 0x358, 3, 0xa1c, 1, NO_PAD_CTRL)
676#define MX51_PAD_DISP2_DAT2__DISP2_DAT2 IOMUX_PAD(0x764, 0x35c, 0, __NA_, 0, NO_PAD_CTRL)
677#define MX51_PAD_DISP2_DAT3__DISP2_DAT3 IOMUX_PAD(0x768, 0x360, 0, __NA_, 0, NO_PAD_CTRL)
678#define MX51_PAD_DISP2_DAT4__DISP2_DAT4 IOMUX_PAD(0x76c, 0x364, 0, __NA_, 0, NO_PAD_CTRL)
679#define MX51_PAD_DISP2_DAT5__DISP2_DAT5 IOMUX_PAD(0x770, 0x368, 0, __NA_, 0, NO_PAD_CTRL)
680#define MX51_PAD_DISP2_DAT6__DISP2_DAT6 IOMUX_PAD(0x774, 0x36c, 0, __NA_, 0, NO_PAD_CTRL)
681#define MX51_PAD_DISP2_DAT6__FEC_TDATA1 IOMUX_PAD(0x774, 0x36c, 2, __NA_, 0, MX51_PAD_CTRL_5)
682#define MX51_PAD_DISP2_DAT6__GPIO1_19 IOMUX_PAD(0x774, 0x36c, 5, __NA_, 0, MX51_GPIO_PAD_CTRL)
683#define MX51_PAD_DISP2_DAT6__KEY_ROW4 IOMUX_PAD(0x774, 0x36c, 4, 0x9d0, 1, NO_PAD_CTRL)
684#define MX51_PAD_DISP2_DAT6__USBH3_STP IOMUX_PAD(0x774, 0x36c, 3, 0xa24, 1, NO_PAD_CTRL)
685#define MX51_PAD_DISP2_DAT7__DISP2_DAT7 IOMUX_PAD(0x778, 0x370, 0, __NA_, 0, NO_PAD_CTRL)
686#define MX51_PAD_DISP2_DAT7__FEC_TDATA2 IOMUX_PAD(0x778, 0x370, 2, __NA_, 0, MX51_PAD_CTRL_5)
687#define MX51_PAD_DISP2_DAT7__GPIO1_29 IOMUX_PAD(0x778, 0x370, 5, __NA_, 0, MX51_GPIO_PAD_CTRL)
688#define MX51_PAD_DISP2_DAT7__KEY_ROW5 IOMUX_PAD(0x778, 0x370, 4, 0x9d4, 1, NO_PAD_CTRL)
689#define MX51_PAD_DISP2_DAT7__USBH3_NXT IOMUX_PAD(0x778, 0x370, 3, 0xa20, 1, NO_PAD_CTRL)
690#define MX51_PAD_DISP2_DAT8__DISP2_DAT8 IOMUX_PAD(0x77c, 0x374, 0, __NA_, 0, NO_PAD_CTRL)
691#define MX51_PAD_DISP2_DAT8__FEC_TDATA3 IOMUX_PAD(0x77c, 0x374, 2, __NA_, 0, MX51_PAD_CTRL_5)
692#define MX51_PAD_DISP2_DAT8__GPIO1_30 IOMUX_PAD(0x77c, 0x374, 5, __NA_, 0, MX51_GPIO_PAD_CTRL)
693#define MX51_PAD_DISP2_DAT8__KEY_ROW6 IOMUX_PAD(0x77c, 0x374, 4, 0x9d8, 1, NO_PAD_CTRL)
694#define MX51_PAD_DISP2_DAT8__USBH3_DATA0 IOMUX_PAD(0x77c, 0x374, 3, 0x9fc, 1, NO_PAD_CTRL)
695#define MX51_PAD_DISP2_DAT9__AUD6_RXC IOMUX_PAD(0x780, 0x378, 4, 0x8f4, 1, NO_PAD_CTRL)
696#define MX51_PAD_DISP2_DAT9__DISP2_DAT9 IOMUX_PAD(0x780, 0x378, 0, __NA_, 0, NO_PAD_CTRL)
697#define MX51_PAD_DISP2_DAT9__FEC_TX_EN IOMUX_PAD(0x780, 0x378, 2, __NA_, 0, MX51_PAD_CTRL_5)
698#define MX51_PAD_DISP2_DAT9__GPIO1_31 IOMUX_PAD(0x780, 0x378, 5, __NA_, 0, MX51_GPIO_PAD_CTRL)
699#define MX51_PAD_DISP2_DAT9__USBH3_DATA1 IOMUX_PAD(0x780, 0x378, 3, 0xa00, 1, NO_PAD_CTRL)
700#define MX51_PAD_DISP2_DAT10__DISP2_DAT10 IOMUX_PAD(0x784, 0x37c, 0, __NA_, 0, NO_PAD_CTRL)
701#define MX51_PAD_DISP2_DAT10__DISP2_SER_CS IOMUX_PAD(0x784, 0x37c, 5, __NA_, 0, NO_PAD_CTRL)
702#define MX51_PAD_DISP2_DAT10__FEC_COL IOMUX_PAD(0x784, 0x37c, 2, 0x94c, 1, NO_PAD_CTRL)
703#define MX51_PAD_DISP2_DAT10__KEY_ROW7 IOMUX_PAD(0x784, 0x37c, 4, 0x9dc, 1, NO_PAD_CTRL)
704#define MX51_PAD_DISP2_DAT10__USBH3_DATA2 IOMUX_PAD(0x784, 0x37c, 3, 0xa04, 1, NO_PAD_CTRL)
705#define MX51_PAD_DISP2_DAT11__AUD6_TXD IOMUX_PAD(0x788, 0x380, 4, 0x8f0, 1, NO_PAD_CTRL)
706#define MX51_PAD_DISP2_DAT11__DISP2_DAT11 IOMUX_PAD(0x788, 0x380, 0, __NA_, 0, NO_PAD_CTRL)
707#define MX51_PAD_DISP2_DAT11__FEC_RX_CLK IOMUX_PAD(0x788, 0x380, 2, 0x968, 1, NO_PAD_CTRL)
708#define MX51_PAD_DISP2_DAT11__GPIO1_10 IOMUX_PAD(0x788, 0x380, 7, __NA_, 0, MX51_GPIO_PAD_CTRL)
709#define MX51_PAD_DISP2_DAT11__USBH3_DATA3 IOMUX_PAD(0x788, 0x380, 3, 0xa08, 1, NO_PAD_CTRL)
710#define MX51_PAD_DISP2_DAT12__AUD6_RXD IOMUX_PAD(0x78c, 0x384, 4, 0x8ec, 1, NO_PAD_CTRL)
711#define MX51_PAD_DISP2_DAT12__DISP2_DAT12 IOMUX_PAD(0x78c, 0x384, 0, __NA_, 0, NO_PAD_CTRL)
712#define MX51_PAD_DISP2_DAT12__FEC_RX_DV IOMUX_PAD(0x78c, 0x384, 2, 0x96c, 1, NO_PAD_CTRL)
713#define MX51_PAD_DISP2_DAT12__USBH3_DATA4 IOMUX_PAD(0x78c, 0x384, 3, 0xa0c, 1, NO_PAD_CTRL)
714#define MX51_PAD_DISP2_DAT13__AUD6_TXC IOMUX_PAD(0x790, 0x388, 4, 0x8fc, 1, NO_PAD_CTRL)
715#define MX51_PAD_DISP2_DAT13__DISP2_DAT13 IOMUX_PAD(0x790, 0x388, 0, __NA_, 0, NO_PAD_CTRL)
716#define MX51_PAD_DISP2_DAT13__FEC_TX_CLK IOMUX_PAD(0x790, 0x388, 2, 0x974, 1, MX51_PAD_CTRL_4)
717#define MX51_PAD_DISP2_DAT13__USBH3_DATA5 IOMUX_PAD(0x790, 0x388, 3, 0xa10, 1, NO_PAD_CTRL)
718#define MX51_PAD_DISP2_DAT14__AUD6_TXFS IOMUX_PAD(0x794, 0x38c, 4, 0x900, 1, NO_PAD_CTRL)
719#define MX51_PAD_DISP2_DAT14__DISP2_DAT14 IOMUX_PAD(0x794, 0x38c, 0, __NA_, 0, NO_PAD_CTRL)
720#define MX51_PAD_DISP2_DAT14__FEC_RDATA0 IOMUX_PAD(0x794, 0x38c, 2, 0x958, 1, MX51_PAD_CTRL_4)
721#define MX51_PAD_DISP2_DAT14__USBH3_DATA6 IOMUX_PAD(0x794, 0x38c, 3, 0xa14, 1, NO_PAD_CTRL)
722#define MX51_PAD_DISP2_DAT15__AUD6_RXFS IOMUX_PAD(0x798, 0x390, 4, 0x8f8, 1, NO_PAD_CTRL)
723#define MX51_PAD_DISP2_DAT15__DISP1_SER_CS IOMUX_PAD(0x798, 0x390, 5, __NA_, 0, NO_PAD_CTRL)
724#define MX51_PAD_DISP2_DAT15__DISP2_DAT15 IOMUX_PAD(0x798, 0x390, 0, __NA_, 0, NO_PAD_CTRL)
725#define MX51_PAD_DISP2_DAT15__FEC_TDATA0 IOMUX_PAD(0x798, 0x390, 2, __NA_, 0, MX51_PAD_CTRL_5)
726#define MX51_PAD_DISP2_DAT15__USBH3_DATA7 IOMUX_PAD(0x798, 0x390, 3, 0xa18, 1, NO_PAD_CTRL)
727#define MX51_PAD_SD1_CMD__AUD5_RXFS IOMUX_PAD(0x79c, 0x394, 1, 0x8e0, 1, NO_PAD_CTRL)
728#define MX51_PAD_SD1_CMD__CSPI_MOSI IOMUX_PAD(0x79c, 0x394, 2, 0x91c, 2, NO_PAD_CTRL)
729#define MX51_PAD_SD1_CMD__SD1_CMD IOMUX_PAD(0x79c, 0x394, 0x10, __NA_, 0, MX51_SDHCI_PAD_CTRL)
730#define MX51_PAD_SD1_CLK__AUD5_RXC IOMUX_PAD(0x7a0, 0x398, 1, 0x8dc, 1, NO_PAD_CTRL)
731#define MX51_PAD_SD1_CLK__CSPI_SCLK IOMUX_PAD(0x7a0, 0x398, 2, 0x914, 2, NO_PAD_CTRL)
732#define MX51_PAD_SD1_CLK__SD1_CLK IOMUX_PAD(0x7a0, 0x398, 0x10, __NA_, 0, MX51_SDHCI_PAD_CTRL | PAD_CTL_HYS)
733#define MX51_PAD_SD1_DATA0__AUD5_TXD IOMUX_PAD(0x7a4, 0x39c, 1, 0x8d8, 2, NO_PAD_CTRL)
734#define MX51_PAD_SD1_DATA0__CSPI_MISO IOMUX_PAD(0x7a4, 0x39c, 2, 0x918, 1, MX51_ECSPI_PAD_CTRL)
735#define MX51_PAD_SD1_DATA0__SD1_DATA0 IOMUX_PAD(0x7a4, 0x39c, 0x10, __NA_, 0, MX51_SDHCI_PAD_CTRL)
736#define MX51_PAD_EIM_DA0__EIM_DA0 IOMUX_PAD(__NA_, 0x01c, 0, 0x000, 0, NO_PAD_CTRL)
737#define MX51_PAD_EIM_DA1__EIM_DA1 IOMUX_PAD(__NA_, 0x020, 0, 0x000, 0, NO_PAD_CTRL)
738#define MX51_PAD_EIM_DA2__EIM_DA2 IOMUX_PAD(__NA_, 0x024, 0, 0x000, 0, NO_PAD_CTRL)
739#define MX51_PAD_EIM_DA3__EIM_DA3 IOMUX_PAD(__NA_, 0x028, 0, 0x000, 0, NO_PAD_CTRL)
740#define MX51_PAD_SD1_DATA1__AUD5_RXD IOMUX_PAD(0x7a8, 0x3a0, 1, 0x8d4, 2, NO_PAD_CTRL)
741#define MX51_PAD_SD1_DATA1__SD1_DATA1 IOMUX_PAD(0x7a8, 0x3a0, 0x10, __NA_, 0, MX51_SDHCI_PAD_CTRL)
742#define MX51_PAD_EIM_DA4__EIM_DA4 IOMUX_PAD(__NA_, 0x02c, 0, 0x000, 0, NO_PAD_CTRL)
743#define MX51_PAD_EIM_DA5__EIM_DA5 IOMUX_PAD(__NA_, 0x030, 0, 0x000, 0, NO_PAD_CTRL)
744#define MX51_PAD_EIM_DA6__EIM_DA6 IOMUX_PAD(__NA_, 0x034, 0, 0x000, 0, NO_PAD_CTRL)
745#define MX51_PAD_EIM_DA7__EIM_DA7 IOMUX_PAD(__NA_, 0x038, 0, 0x000, 0, NO_PAD_CTRL)
746#define MX51_PAD_SD1_DATA2__AUD5_TXC IOMUX_PAD(0x7ac, 0x3a4, 1, 0x8e4, 2, NO_PAD_CTRL)
747#define MX51_PAD_SD1_DATA2__SD1_DATA2 IOMUX_PAD(0x7ac, 0x3a4, 0x10, __NA_, 0, MX51_SDHCI_PAD_CTRL)
748#define MX51_PAD_EIM_DA10__EIM_DA10 IOMUX_PAD(__NA_, 0x044, 0, 0x000, 0, NO_PAD_CTRL)
749#define MX51_PAD_EIM_DA11__EIM_DA11 IOMUX_PAD(__NA_, 0x048, 0, 0x000, 0, NO_PAD_CTRL)
750#define MX51_PAD_EIM_DA8__EIM_DA8 IOMUX_PAD(__NA_, 0x03c, 0, 0x000, 0, NO_PAD_CTRL)
751#define MX51_PAD_EIM_DA9__EIM_DA9 IOMUX_PAD(__NA_, 0x040, 0, 0x000, 0, NO_PAD_CTRL)
752#define MX51_PAD_SD1_DATA3__AUD5_TXFS IOMUX_PAD(0x7b0, 0x3a8, 1, 0x8e8, 2, NO_PAD_CTRL)
753#define MX51_PAD_SD1_DATA3__CSPI_SS1 IOMUX_PAD(0x7b0, 0x3a8, 2, 0x920, 1, MX51_ECSPI_PAD_CTRL)
754#define MX51_PAD_SD1_DATA3__SD1_DATA3 IOMUX_PAD(0x7b0, 0x3a8, 0x10, __NA_, 0, MX51_SDHCI_PAD_CTRL)
755#define MX51_PAD_GPIO1_0__CSPI_SS2 IOMUX_PAD(0x7b4, 0x3ac, 2, 0x924, 0, MX51_ECSPI_PAD_CTRL)
756#define MX51_PAD_GPIO1_0__GPIO1_0 IOMUX_PAD(0x7b4, 0x3ac, 1, __NA_, 0, MX51_GPIO_PAD_CTRL)
757#define MX51_PAD_GPIO1_0__SD1_CD IOMUX_PAD(0x7b4, 0x3ac, 0, __NA_, 0, MX51_ESDHC_PAD_CTRL)
758#define MX51_PAD_GPIO1_1__CSPI_MISO IOMUX_PAD(0x7b8, 0x3b0, 2, 0x918, 2, MX51_ECSPI_PAD_CTRL)
759#define MX51_PAD_GPIO1_1__GPIO1_1 IOMUX_PAD(0x7b8, 0x3b0, 1, __NA_, 0, MX51_GPIO_PAD_CTRL)
760#define MX51_PAD_GPIO1_1__SD1_WP IOMUX_PAD(0x7b8, 0x3b0, 0, __NA_, 0, MX51_ESDHC_PAD_CTRL)
761#define MX51_PAD_EIM_DA12__EIM_DA12 IOMUX_PAD(__NA_, 0x04c, 0, 0x000, 0, NO_PAD_CTRL)
762#define MX51_PAD_EIM_DA13__EIM_DA13 IOMUX_PAD(__NA_, 0x050, 0, 0x000, 0, NO_PAD_CTRL)
763#define MX51_PAD_EIM_DA14__EIM_DA14 IOMUX_PAD(__NA_, 0x054, 0, 0x000, 0, NO_PAD_CTRL)
764#define MX51_PAD_EIM_DA15__EIM_DA15 IOMUX_PAD(__NA_, 0x058, 0, 0x000, 0, NO_PAD_CTRL)
765#define MX51_PAD_SD2_CMD__CSPI_MOSI IOMUX_PAD(0x7bc, 0x3b4, 2, 0x91c, 3, MX51_ECSPI_PAD_CTRL)
766#define MX51_PAD_SD2_CMD__I2C1_SCL IOMUX_PAD(0x7bc, 0x3b4, 0x11, 0x9b0, 2, MX51_I2C_PAD_CTRL)
767#define MX51_PAD_SD2_CMD__SD2_CMD IOMUX_PAD(0x7bc, 0x3b4, 0x10, __NA_, 0, MX51_SDHCI_PAD_CTRL)
768#define MX51_PAD_SD2_CLK__CSPI_SCLK IOMUX_PAD(0x7c0, 0x3b8, 2, 0x914, 3, MX51_ECSPI_PAD_CTRL)
769#define MX51_PAD_SD2_CLK__I2C1_SDA IOMUX_PAD(0x7c0, 0x3b8, 0x11, 0x9b4, 2, MX51_I2C_PAD_CTRL)
770#define MX51_PAD_SD2_CLK__SD2_CLK IOMUX_PAD(0x7c0, 0x3b8, 0x10, __NA_, 0, MX51_SDHCI_PAD_CTRL | PAD_CTL_HYS)
771#define MX51_PAD_SD2_DATA0__CSPI_MISO IOMUX_PAD(0x7c4, 0x3bc, 2, 0x918, 3, MX51_ECSPI_PAD_CTRL)
772#define MX51_PAD_SD2_DATA0__SD1_DAT4 IOMUX_PAD(0x7c4, 0x3bc, 1, __NA_, 0, NO_PAD_CTRL)
773#define MX51_PAD_SD2_DATA0__SD2_DATA0 IOMUX_PAD(0x7c4, 0x3bc, 0x10, __NA_, 0, MX51_SDHCI_PAD_CTRL)
774#define MX51_PAD_SD2_DATA1__SD1_DAT5 IOMUX_PAD(0x7c8, 0x3c0, 1, __NA_, 0, NO_PAD_CTRL)
775#define MX51_PAD_SD2_DATA1__SD2_DATA1 IOMUX_PAD(0x7c8, 0x3c0, 0x10, __NA_, 0, MX51_SDHCI_PAD_CTRL)
776#define MX51_PAD_SD2_DATA1__USBH3_H2_DP IOMUX_PAD(0x7c8, 0x3c0, 0x12, __NA_, 0, NO_PAD_CTRL)
777#define MX51_PAD_SD2_DATA2__SD1_DAT6 IOMUX_PAD(0x7cc, 0x3c4, 1, __NA_, 0, NO_PAD_CTRL)
778#define MX51_PAD_SD2_DATA2__SD2_DATA2 IOMUX_PAD(0x7cc, 0x3c4, 0x10, __NA_, 0, MX51_SDHCI_PAD_CTRL)
779#define MX51_PAD_SD2_DATA2__USBH3_H2_DM IOMUX_PAD(0x7cc, 0x3c4, 0x12, __NA_, 0, NO_PAD_CTRL)
780#define MX51_PAD_SD2_DATA3__CSPI_SS2 IOMUX_PAD(0x7d0, 0x3c8, 2, 0x924, 1, MX51_ECSPI_PAD_CTRL)
781#define MX51_PAD_SD2_DATA3__SD1_DAT7 IOMUX_PAD(0x7d0, 0x3c8, 1, __NA_, 0, NO_PAD_CTRL)
782#define MX51_PAD_SD2_DATA3__SD2_DATA3 IOMUX_PAD(0x7d0, 0x3c8, 0x10, __NA_, 0, MX51_SDHCI_PAD_CTRL)
783#define MX51_PAD_GPIO1_2__CCM_OUT_2 IOMUX_PAD(0x7d4, 0x3cc, 5, __NA_, 0, NO_PAD_CTRL)
784#define MX51_PAD_GPIO1_2__GPIO1_2 IOMUX_PAD(0x7d4, 0x3cc, 0, __NA_, 0, MX51_GPIO_PAD_CTRL)
785#define MX51_PAD_GPIO1_2__I2C2_SCL IOMUX_PAD(0x7d4, 0x3cc, 0x12, 0x9b8, 3, MX51_I2C_PAD_CTRL)
786#define MX51_PAD_GPIO1_2__PLL1_BYP IOMUX_PAD(0x7d4, 0x3cc, 7, 0x90c, 1, NO_PAD_CTRL)
787#define MX51_PAD_GPIO1_2__PWM1_PWMO IOMUX_PAD(0x7d4, 0x3cc, 1, __NA_, 0, NO_PAD_CTRL)
788#define MX51_PAD_GPIO1_3__GPIO1_3 IOMUX_PAD(0x7d8, 0x3d0, 0, __NA_, 0, MX51_GPIO_PAD_CTRL)
789#define MX51_PAD_GPIO1_3__I2C2_SDA IOMUX_PAD(0x7d8, 0x3d0, 0x12, 0x9bc, 3, MX51_I2C_PAD_CTRL)
790#define MX51_PAD_GPIO1_3__CCM_CLKO2 IOMUX_PAD(0x7d8, 0x3d0, 5, __NA_, 0, NO_PAD_CTRL)
791#define MX51_PAD_GPIO1_3__GPT_CLKIN IOMUX_PAD(0x7d8, 0x3d0, 6, __NA_, 0, NO_PAD_CTRL)
792#define MX51_PAD_GPIO1_3__PLL2_BYP IOMUX_PAD(0x7d8, 0x3d0, 7, 0x910, 1, NO_PAD_CTRL)
793#define MX51_PAD_GPIO1_3__PWM2_PWMO IOMUX_PAD(0x7d8, 0x3d0, 1, __NA_, 0, NO_PAD_CTRL)
794#define MX51_PAD_PMIC_INT_REQ__PMIC_INT_REQ IOMUX_PAD(0x7fc, 0x3d4, 0, __NA_, 0, NO_PAD_CTRL)
795#define MX51_PAD_PMIC_INT_REQ__PMIC_PMU_IRQ_B IOMUX_PAD(0x7fc, 0x3d4, 1, __NA_, 0, NO_PAD_CTRL)
796#define MX51_PAD_GPIO1_4__DISP2_EXT_CLK IOMUX_PAD(0x804, 0x3d8, 4, 0x908, 1, NO_PAD_CTRL)
797#define MX51_PAD_GPIO1_4__EIM_RDY IOMUX_PAD(0x804, 0x3d8, 3, 0x938, 1, NO_PAD_CTRL)
798#define MX51_PAD_GPIO1_4__GPIO1_4 IOMUX_PAD(0x804, 0x3d8, 0, __NA_, 0, MX51_GPIO_PAD_CTRL)
799#define MX51_PAD_GPIO1_4__WDOG1_WDOG_B IOMUX_PAD(0x804, 0x3d8, 2, __NA_, 0, NO_PAD_CTRL)
800#define MX51_PAD_GPIO1_4__GPT_CAPIN1 IOMUX_PAD(0x804, 0x3d8, 6, __NA_, 0, NO_PAD_CTRL)
801#define MX51_PAD_GPIO1_5__CSI2_MCLK IOMUX_PAD(0x808, 0x3dc, 6, __NA_, 0, NO_PAD_CTRL)
802#define MX51_PAD_GPIO1_5__DISP2_PIN16 IOMUX_PAD(0x808, 0x3dc, 3, __NA_, 0, NO_PAD_CTRL)
803#define MX51_PAD_GPIO1_5__GPIO1_5 IOMUX_PAD(0x808, 0x3dc, 0, __NA_, 0, MX51_GPIO_PAD_CTRL)
804#define MX51_PAD_GPIO1_5__WDOG2_WDOG_B IOMUX_PAD(0x808, 0x3dc, 2, __NA_, 0, NO_PAD_CTRL)
805#define MX51_PAD_GPIO1_5__CCM_CLKO IOMUX_PAD(0x808, 0x3dc, 5, __NA_, 0, NO_PAD_CTRL)
806#define MX51_PAD_GPIO1_6__DISP2_PIN17 IOMUX_PAD(0x80c, 0x3e0, 4, __NA_, 0, NO_PAD_CTRL)
807#define MX51_PAD_GPIO1_6__GPIO1_6 IOMUX_PAD(0x80c, 0x3e0, 0, __NA_, 0, MX51_GPIO_PAD_CTRL)
808#define MX51_PAD_GPIO1_6__REF_EN_B IOMUX_PAD(0x80c, 0x3e0, 3, __NA_, 0, NO_PAD_CTRL)
809#define MX51_PAD_GPIO1_6__GPT_CAPIN2 IOMUX_PAD(0x80c, 0x3e0, 6, __NA_, 0, NO_PAD_CTRL)
810#define MX51_PAD_GPIO1_7__CCM_OUT_0 IOMUX_PAD(0x810, 0x3e4, 3, __NA_, 0, NO_PAD_CTRL)
811#define MX51_PAD_GPIO1_7__GPIO1_7 IOMUX_PAD(0x810, 0x3e4, 0, __NA_, 0, MX51_GPIO_PAD_CTRL)
812#define MX51_PAD_GPIO1_7__SD2_WP IOMUX_PAD(0x810, 0x3e4, 6, __NA_, 0, MX51_ESDHC_PAD_CTRL)
813#define MX51_PAD_GPIO1_7__SPDIF_OUT1 IOMUX_PAD(0x810, 0x3e4, 2, __NA_, 0, NO_PAD_CTRL)
814#define MX51_PAD_GPIO1_8__CSI2_DATA_EN IOMUX_PAD(0x814, 0x3e8, 2, 0x99c, 2, NO_PAD_CTRL)
815#define MX51_PAD_GPIO1_8__GPIO1_8 IOMUX_PAD(0x814, 0x3e8, 0, __NA_, 0, MX51_GPIO_PAD_CTRL)
816#define MX51_PAD_GPIO1_8__SD2_CD IOMUX_PAD(0x814, 0x3e8, 6, __NA_, 0, MX51_ESDHC_PAD_CTRL)
817#define MX51_PAD_GPIO1_8__USBH3_PWR IOMUX_PAD(0x814, 0x3e8, 1, __NA_, 0, NO_PAD_CTRL)
818#define MX51_PAD_GPIO1_8__CCM_CLKO2 IOMUX_PAD(0x814, 0x3e8, 4, __NA_, 0, NO_PAD_CTRL)
819#define MX51_PAD_GPIO1_9__CCM_OUT_1 IOMUX_PAD(0x818, 0x3ec, 3, __NA_, 0, NO_PAD_CTRL)
820#define MX51_PAD_GPIO1_9__DISP2_D1_CS IOMUX_PAD(0x818, 0x3ec, 2, __NA_, 0, NO_PAD_CTRL)
821#define MX51_PAD_GPIO1_9__DISP2_SER_CS IOMUX_PAD(0x818, 0x3ec, 7, __NA_, 0, NO_PAD_CTRL)
822#define MX51_PAD_GPIO1_9__GPIO1_9 IOMUX_PAD(0x818, 0x3ec, 0, __NA_, 0, MX51_GPIO_PAD_CTRL)
823#define MX51_PAD_GPIO1_9__SD2_LCTL IOMUX_PAD(0x818, 0x3ec, 6, __NA_, 0, NO_PAD_CTRL)
824#define MX51_PAD_GPIO1_9__USBH3_OC IOMUX_PAD(0x818, 0x3ec, 1, __NA_, 0, NO_PAD_CTRL)
825#define MX51_PAD_GPIO1_9__CCM_CLKO IOMUX_PAD(0x818, 0x3ec, 4, __NA_, 0, NO_PAD_CTRL)
826
827#endif /* __MACH_IOMUX_MX51_H__ */
diff --git a/arch/arm/mach-imx/mach-armadillo5x0.c b/arch/arm/mach-imx/mach-armadillo5x0.c
index 39406b7e3228..a7e9bd26a552 100644
--- a/arch/arm/mach-imx/mach-armadillo5x0.c
+++ b/arch/arm/mach-imx/mach-armadillo5x0.c
@@ -50,6 +50,7 @@
50#include "common.h" 50#include "common.h"
51#include "devices-imx31.h" 51#include "devices-imx31.h"
52#include "crmregs-imx3.h" 52#include "crmregs-imx3.h"
53#include "ehci.h"
53#include "hardware.h" 54#include "hardware.h"
54#include "iomux-mx3.h" 55#include "iomux-mx3.h"
55#include "ulpi.h" 56#include "ulpi.h"
diff --git a/arch/arm/mach-imx/mach-cpuimx27.c b/arch/arm/mach-imx/mach-cpuimx27.c
index 75b7b6aa2720..e6d4b9929571 100644
--- a/arch/arm/mach-imx/mach-cpuimx27.c
+++ b/arch/arm/mach-imx/mach-cpuimx27.c
@@ -36,6 +36,7 @@
36 36
37#include "common.h" 37#include "common.h"
38#include "devices-imx27.h" 38#include "devices-imx27.h"
39#include "ehci.h"
39#include "eukrea-baseboards.h" 40#include "eukrea-baseboards.h"
40#include "hardware.h" 41#include "hardware.h"
41#include "iomux-mx27.h" 42#include "iomux-mx27.h"
diff --git a/arch/arm/mach-imx/mach-cpuimx35.c b/arch/arm/mach-imx/mach-cpuimx35.c
index 1ffa27169045..62a6e02f4763 100644
--- a/arch/arm/mach-imx/mach-cpuimx35.c
+++ b/arch/arm/mach-imx/mach-cpuimx35.c
@@ -39,6 +39,7 @@
39 39
40#include "common.h" 40#include "common.h"
41#include "devices-imx35.h" 41#include "devices-imx35.h"
42#include "ehci.h"
42#include "eukrea-baseboards.h" 43#include "eukrea-baseboards.h"
43#include "hardware.h" 44#include "hardware.h"
44#include "iomux-mx35.h" 45#include "iomux-mx35.h"
diff --git a/arch/arm/mach-imx/mach-eukrea_cpuimx25.c b/arch/arm/mach-imx/mach-eukrea_cpuimx25.c
index e978dda1434c..b2ee6e009fe4 100644
--- a/arch/arm/mach-imx/mach-eukrea_cpuimx25.c
+++ b/arch/arm/mach-imx/mach-eukrea_cpuimx25.c
@@ -35,6 +35,7 @@
35 35
36#include "common.h" 36#include "common.h"
37#include "devices-imx25.h" 37#include "devices-imx25.h"
38#include "ehci.h"
38#include "eukrea-baseboards.h" 39#include "eukrea-baseboards.h"
39#include "hardware.h" 40#include "hardware.h"
40#include "iomux-mx25.h" 41#include "iomux-mx25.h"
diff --git a/arch/arm/mach-imx/mach-imx27_visstrim_m10.c b/arch/arm/mach-imx/mach-imx27_visstrim_m10.c
index b61bd8ed5568..ede2bdbb5dd5 100644
--- a/arch/arm/mach-imx/mach-imx27_visstrim_m10.c
+++ b/arch/arm/mach-imx/mach-imx27_visstrim_m10.c
@@ -43,6 +43,7 @@
43 43
44#include "common.h" 44#include "common.h"
45#include "devices-imx27.h" 45#include "devices-imx27.h"
46#include "ehci.h"
46#include "hardware.h" 47#include "hardware.h"
47#include "iomux-mx27.h" 48#include "iomux-mx27.h"
48 49
diff --git a/arch/arm/mach-imx/mach-imx27ipcam.c b/arch/arm/mach-imx/mach-imx27ipcam.c
deleted file mode 100644
index bb3ca0429680..000000000000
--- a/arch/arm/mach-imx/mach-imx27ipcam.c
+++ /dev/null
@@ -1,77 +0,0 @@
1/*
2 * Copyright (C) 2011 Freescale Semiconductor, Inc. All Rights Reserved.
3 *
4 * Author: Fabio Estevam <fabio.estevam@freescale.com>
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 */
16
17#include <asm/mach-types.h>
18#include <asm/mach/arch.h>
19#include <asm/mach/time.h>
20
21#include "hardware.h"
22#include "common.h"
23#include "devices-imx27.h"
24#include "iomux-mx27.h"
25
26static const int mx27ipcam_pins[] __initconst = {
27 /* UART1 */
28 PE12_PF_UART1_TXD,
29 PE13_PF_UART1_RXD,
30 /* FEC */
31 PD0_AIN_FEC_TXD0,
32 PD1_AIN_FEC_TXD1,
33 PD2_AIN_FEC_TXD2,
34 PD3_AIN_FEC_TXD3,
35 PD4_AOUT_FEC_RX_ER,
36 PD5_AOUT_FEC_RXD1,
37 PD6_AOUT_FEC_RXD2,
38 PD7_AOUT_FEC_RXD3,
39 PD8_AF_FEC_MDIO,
40 PD9_AIN_FEC_MDC,
41 PD10_AOUT_FEC_CRS,
42 PD11_AOUT_FEC_TX_CLK,
43 PD12_AOUT_FEC_RXD0,
44 PD13_AOUT_FEC_RX_DV,
45 PD14_AOUT_FEC_RX_CLK,
46 PD15_AOUT_FEC_COL,
47 PD16_AIN_FEC_TX_ER,
48 PF23_AIN_FEC_TX_EN,
49};
50
51static void __init mx27ipcam_init(void)
52{
53 imx27_soc_init();
54
55 mxc_gpio_setup_multiple_pins(mx27ipcam_pins, ARRAY_SIZE(mx27ipcam_pins),
56 "mx27ipcam");
57
58 imx27_add_imx_uart0(NULL);
59 imx27_add_fec(NULL);
60 imx27_add_imx2_wdt();
61}
62
63static void __init mx27ipcam_timer_init(void)
64{
65 mx27_clocks_init(25000000);
66}
67
68MACHINE_START(IMX27IPCAM, "Freescale IMX27IPCAM")
69 /* maintainer: Freescale Semiconductor, Inc. */
70 .atag_offset = 0x100,
71 .map_io = mx27_map_io,
72 .init_early = imx27_init_early,
73 .init_irq = mx27_init_irq,
74 .init_time = mx27ipcam_timer_init,
75 .init_machine = mx27ipcam_init,
76 .restart = mxc_restart,
77MACHINE_END
diff --git a/arch/arm/mach-imx/mach-imx27lite.c b/arch/arm/mach-imx/mach-imx27lite.c
deleted file mode 100644
index 9992089d3ad1..000000000000
--- a/arch/arm/mach-imx/mach-imx27lite.c
+++ /dev/null
@@ -1,83 +0,0 @@
1/*
2 * Copyright 2007 Robert Schwebel <r.schwebel@pengutronix.de>, Pengutronix
3 * Copyright (C) 2008 Juergen Beisert (kernel@pengutronix.de)
4 * Copyright 2009 Daniel Schaeffer (daniel.schaeffer@timesys.com)
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 */
16
17#include <linux/platform_device.h>
18#include <linux/gpio.h>
19#include <asm/mach-types.h>
20#include <asm/mach/arch.h>
21#include <asm/mach/time.h>
22#include <asm/mach/map.h>
23
24#include "common.h"
25#include "devices-imx27.h"
26#include "hardware.h"
27#include "iomux-mx27.h"
28
29static const int mx27lite_pins[] __initconst = {
30 /* UART1 */
31 PE12_PF_UART1_TXD,
32 PE13_PF_UART1_RXD,
33 PE14_PF_UART1_CTS,
34 PE15_PF_UART1_RTS,
35 /* FEC */
36 PD0_AIN_FEC_TXD0,
37 PD1_AIN_FEC_TXD1,
38 PD2_AIN_FEC_TXD2,
39 PD3_AIN_FEC_TXD3,
40 PD4_AOUT_FEC_RX_ER,
41 PD5_AOUT_FEC_RXD1,
42 PD6_AOUT_FEC_RXD2,
43 PD7_AOUT_FEC_RXD3,
44 PD8_AF_FEC_MDIO,
45 PD9_AIN_FEC_MDC,
46 PD10_AOUT_FEC_CRS,
47 PD11_AOUT_FEC_TX_CLK,
48 PD12_AOUT_FEC_RXD0,
49 PD13_AOUT_FEC_RX_DV,
50 PD14_AOUT_FEC_RX_CLK,
51 PD15_AOUT_FEC_COL,
52 PD16_AIN_FEC_TX_ER,
53 PF23_AIN_FEC_TX_EN,
54};
55
56static const struct imxuart_platform_data uart_pdata __initconst = {
57 .flags = IMXUART_HAVE_RTSCTS,
58};
59
60static void __init mx27lite_init(void)
61{
62 imx27_soc_init();
63
64 mxc_gpio_setup_multiple_pins(mx27lite_pins, ARRAY_SIZE(mx27lite_pins),
65 "imx27lite");
66 imx27_add_imx_uart0(&uart_pdata);
67 imx27_add_fec(NULL);
68}
69
70static void __init mx27lite_timer_init(void)
71{
72 mx27_clocks_init(26000000);
73}
74
75MACHINE_START(IMX27LITE, "LogicPD i.MX27LITE")
76 .atag_offset = 0x100,
77 .map_io = mx27_map_io,
78 .init_early = imx27_init_early,
79 .init_irq = mx27_init_irq,
80 .init_time = mx27lite_timer_init,
81 .init_machine = mx27lite_init,
82 .restart = mxc_restart,
83MACHINE_END
diff --git a/arch/arm/mach-imx/mach-imx50.c b/arch/arm/mach-imx/mach-imx50.c
index b899c0b59afd..b1e56a94a382 100644
--- a/arch/arm/mach-imx/mach-imx50.c
+++ b/arch/arm/mach-imx/mach-imx50.c
@@ -23,14 +23,13 @@ static void __init imx50_dt_init(void)
23 of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); 23 of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
24} 24}
25 25
26static const char *imx50_dt_board_compat[] __initconst = { 26static const char * const imx50_dt_board_compat[] __initconst = {
27 "fsl,imx50", 27 "fsl,imx50",
28 NULL 28 NULL
29}; 29};
30 30
31DT_MACHINE_START(IMX50_DT, "Freescale i.MX50 (Device Tree Support)") 31DT_MACHINE_START(IMX50_DT, "Freescale i.MX50 (Device Tree Support)")
32 .map_io = mx53_map_io, 32 .init_irq = tzic_init_irq,
33 .init_irq = mx53_init_irq,
34 .init_machine = imx50_dt_init, 33 .init_machine = imx50_dt_init,
35 .dt_compat = imx50_dt_board_compat, 34 .dt_compat = imx50_dt_board_compat,
36 .restart = mxc_restart, 35 .restart = mxc_restart,
diff --git a/arch/arm/mach-imx/imx51-dt.c b/arch/arm/mach-imx/mach-imx51.c
index b8cd968faa52..c77deb3f0893 100644
--- a/arch/arm/mach-imx/imx51-dt.c
+++ b/arch/arm/mach-imx/mach-imx51.c
@@ -10,6 +10,7 @@
10 * http://www.gnu.org/copyleft/gpl.html 10 * http://www.gnu.org/copyleft/gpl.html
11 */ 11 */
12 12
13#include <linux/io.h>
13#include <linux/irq.h> 14#include <linux/irq.h>
14#include <linux/of_irq.h> 15#include <linux/of_irq.h>
15#include <linux/of_platform.h> 16#include <linux/of_platform.h>
@@ -17,27 +18,63 @@
17#include <asm/mach/time.h> 18#include <asm/mach/time.h>
18 19
19#include "common.h" 20#include "common.h"
20#include "mx51.h" 21#include "hardware.h"
22
23static void __init imx51_init_early(void)
24{
25 mxc_set_cpu_type(MXC_CPU_MX51);
26}
27
28/*
29 * The MIPI HSC unit has been removed from the i.MX51 Reference Manual by
30 * the Freescale marketing division. However this did not remove the
31 * hardware from the chip which still needs to be configured for proper
32 * IPU support.
33 */
34#define MX51_MIPI_HSC_BASE 0x83fdc000
35static void __init imx51_ipu_mipi_setup(void)
36{
37 void __iomem *hsc_addr;
38
39 hsc_addr = ioremap(MX51_MIPI_HSC_BASE, SZ_16K);
40 WARN_ON(!hsc_addr);
41
42 /* setup MIPI module to legacy mode */
43 __raw_writel(0xf00, hsc_addr);
44
45 /* CSI mode: reserved; DI control mode: legacy (from Freescale BSP) */
46 __raw_writel(__raw_readl(hsc_addr + 0x800) | 0x30ff,
47 hsc_addr + 0x800);
48
49 iounmap(hsc_addr);
50}
21 51
22static void __init imx51_dt_init(void) 52static void __init imx51_dt_init(void)
23{ 53{
24 struct platform_device_info devinfo = { .name = "cpufreq-cpu0", }; 54 struct platform_device_info devinfo = { .name = "cpufreq-cpu0", };
25 55
26 mxc_arch_reset_init_dt(); 56 mxc_arch_reset_init_dt();
57 imx51_ipu_mipi_setup();
58 imx_src_init();
27 59
28 of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); 60 of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
29 platform_device_register_full(&devinfo); 61 platform_device_register_full(&devinfo);
30} 62}
31 63
32static const char *imx51_dt_board_compat[] __initconst = { 64static void __init imx51_init_late(void)
65{
66 mx51_neon_fixup();
67 imx51_pm_init();
68}
69
70static const char * const imx51_dt_board_compat[] __initconst = {
33 "fsl,imx51", 71 "fsl,imx51",
34 NULL 72 NULL
35}; 73};
36 74
37DT_MACHINE_START(IMX51_DT, "Freescale i.MX51 (Device Tree Support)") 75DT_MACHINE_START(IMX51_DT, "Freescale i.MX51 (Device Tree Support)")
38 .map_io = mx51_map_io,
39 .init_early = imx51_init_early, 76 .init_early = imx51_init_early,
40 .init_irq = mx51_init_irq, 77 .init_irq = tzic_init_irq,
41 .init_machine = imx51_dt_init, 78 .init_machine = imx51_dt_init,
42 .init_late = imx51_init_late, 79 .init_late = imx51_init_late,
43 .dt_compat = imx51_dt_board_compat, 80 .dt_compat = imx51_dt_board_compat,
diff --git a/arch/arm/mach-imx/mach-imx53.c b/arch/arm/mach-imx/mach-imx53.c
index 2bad387956c0..03dd6ea13acc 100644
--- a/arch/arm/mach-imx/mach-imx53.c
+++ b/arch/arm/mach-imx/mach-imx53.c
@@ -22,24 +22,35 @@
22 22
23#include "common.h" 23#include "common.h"
24#include "hardware.h" 24#include "hardware.h"
25#include "mx53.h" 25
26static void __init imx53_init_early(void)
27{
28 mxc_set_cpu_type(MXC_CPU_MX53);
29}
26 30
27static void __init imx53_dt_init(void) 31static void __init imx53_dt_init(void)
28{ 32{
29 mxc_arch_reset_init_dt(); 33 mxc_arch_reset_init_dt();
34 imx_src_init();
30 35
31 of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); 36 of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
37
38 imx_aips_allow_unprivileged_access("fsl,imx53-aipstz");
39}
40
41static void __init imx53_init_late(void)
42{
43 imx53_pm_init();
32} 44}
33 45
34static const char *imx53_dt_board_compat[] __initconst = { 46static const char * const imx53_dt_board_compat[] __initconst = {
35 "fsl,imx53", 47 "fsl,imx53",
36 NULL 48 NULL
37}; 49};
38 50
39DT_MACHINE_START(IMX53_DT, "Freescale i.MX53 (Device Tree Support)") 51DT_MACHINE_START(IMX53_DT, "Freescale i.MX53 (Device Tree Support)")
40 .map_io = mx53_map_io,
41 .init_early = imx53_init_early, 52 .init_early = imx53_init_early,
42 .init_irq = mx53_init_irq, 53 .init_irq = tzic_init_irq,
43 .init_machine = imx53_dt_init, 54 .init_machine = imx53_dt_init,
44 .init_late = imx53_init_late, 55 .init_late = imx53_init_late,
45 .dt_compat = imx53_dt_board_compat, 56 .dt_compat = imx53_dt_board_compat,
diff --git a/arch/arm/mach-imx/mach-imx6q.c b/arch/arm/mach-imx/mach-imx6q.c
index e60456d85c9d..d51c6e99a2e9 100644
--- a/arch/arm/mach-imx/mach-imx6q.c
+++ b/arch/arm/mach-imx/mach-imx6q.c
@@ -320,7 +320,7 @@ static void __init imx6q_opp_check_speed_grading(struct device *cpu_dev)
320 val >>= OCOTP_CFG3_SPEED_SHIFT; 320 val >>= OCOTP_CFG3_SPEED_SHIFT;
321 val &= 0x3; 321 val &= 0x3;
322 322
323 if (val != OCOTP_CFG3_SPEED_1P2GHZ) 323 if ((val != OCOTP_CFG3_SPEED_1P2GHZ) && cpu_is_imx6q())
324 if (dev_pm_opp_disable(cpu_dev, 1200000000)) 324 if (dev_pm_opp_disable(cpu_dev, 1200000000))
325 pr_warn("failed to disable 1.2 GHz OPP\n"); 325 pr_warn("failed to disable 1.2 GHz OPP\n");
326 if (val < OCOTP_CFG3_SPEED_996MHZ) 326 if (val < OCOTP_CFG3_SPEED_996MHZ)
@@ -396,7 +396,7 @@ static void __init imx6q_init_irq(void)
396 irqchip_init(); 396 irqchip_init();
397} 397}
398 398
399static const char *imx6q_dt_compat[] __initconst = { 399static const char * const imx6q_dt_compat[] __initconst = {
400 "fsl,imx6dl", 400 "fsl,imx6dl",
401 "fsl,imx6q", 401 "fsl,imx6q",
402 NULL, 402 NULL,
diff --git a/arch/arm/mach-imx/mach-imx6sl.c b/arch/arm/mach-imx/mach-imx6sl.c
index ad323385115c..ed263a21d928 100644
--- a/arch/arm/mach-imx/mach-imx6sl.c
+++ b/arch/arm/mach-imx/mach-imx6sl.c
@@ -70,7 +70,7 @@ static void __init imx6sl_init_irq(void)
70 irqchip_init(); 70 irqchip_init();
71} 71}
72 72
73static const char *imx6sl_dt_compat[] __initconst = { 73static const char * const imx6sl_dt_compat[] __initconst = {
74 "fsl,imx6sl", 74 "fsl,imx6sl",
75 NULL, 75 NULL,
76}; 76};
diff --git a/arch/arm/mach-imx/mach-imx6sx.c b/arch/arm/mach-imx/mach-imx6sx.c
index 02fccf6033ac..673a734165ba 100644
--- a/arch/arm/mach-imx/mach-imx6sx.c
+++ b/arch/arm/mach-imx/mach-imx6sx.c
@@ -12,6 +12,7 @@
12#include <asm/mach/map.h> 12#include <asm/mach/map.h>
13 13
14#include "common.h" 14#include "common.h"
15#include "cpuidle.h"
15 16
16static void __init imx6sx_init_machine(void) 17static void __init imx6sx_init_machine(void)
17{ 18{
@@ -26,6 +27,7 @@ static void __init imx6sx_init_machine(void)
26 of_platform_populate(NULL, of_default_bus_match_table, NULL, parent); 27 of_platform_populate(NULL, of_default_bus_match_table, NULL, parent);
27 28
28 imx_anatop_init(); 29 imx_anatop_init();
30 imx6sx_pm_init();
29} 31}
30 32
31static void __init imx6sx_init_irq(void) 33static void __init imx6sx_init_irq(void)
@@ -37,7 +39,12 @@ static void __init imx6sx_init_irq(void)
37 irqchip_init(); 39 irqchip_init();
38} 40}
39 41
40static const char *imx6sx_dt_compat[] __initconst = { 42static void __init imx6sx_init_late(void)
43{
44 imx6q_cpuidle_init();
45}
46
47static const char * const imx6sx_dt_compat[] __initconst = {
41 "fsl,imx6sx", 48 "fsl,imx6sx",
42 NULL, 49 NULL,
43}; 50};
@@ -47,5 +54,6 @@ DT_MACHINE_START(IMX6SX, "Freescale i.MX6 SoloX (Device Tree)")
47 .init_irq = imx6sx_init_irq, 54 .init_irq = imx6sx_init_irq,
48 .init_machine = imx6sx_init_machine, 55 .init_machine = imx6sx_init_machine,
49 .dt_compat = imx6sx_dt_compat, 56 .dt_compat = imx6sx_dt_compat,
57 .init_late = imx6sx_init_late,
50 .restart = mxc_restart, 58 .restart = mxc_restart,
51MACHINE_END 59MACHINE_END
diff --git a/arch/arm/mach-imx/mach-mx25_3ds.c b/arch/arm/mach-imx/mach-mx25_3ds.c
index ea1fa199c148..0d01e367b062 100644
--- a/arch/arm/mach-imx/mach-mx25_3ds.c
+++ b/arch/arm/mach-imx/mach-mx25_3ds.c
@@ -39,6 +39,7 @@
39 39
40#include "common.h" 40#include "common.h"
41#include "devices-imx25.h" 41#include "devices-imx25.h"
42#include "ehci.h"
42#include "hardware.h" 43#include "hardware.h"
43#include "iomux-mx25.h" 44#include "iomux-mx25.h"
44#include "mx25.h" 45#include "mx25.h"
diff --git a/arch/arm/mach-imx/mach-mx27_3ds.c b/arch/arm/mach-imx/mach-mx27_3ds.c
index 435a5428a678..9ef4640f3660 100644
--- a/arch/arm/mach-imx/mach-mx27_3ds.c
+++ b/arch/arm/mach-imx/mach-mx27_3ds.c
@@ -40,6 +40,7 @@
40#include "3ds_debugboard.h" 40#include "3ds_debugboard.h"
41#include "common.h" 41#include "common.h"
42#include "devices-imx27.h" 42#include "devices-imx27.h"
43#include "ehci.h"
43#include "hardware.h" 44#include "hardware.h"
44#include "iomux-mx27.h" 45#include "iomux-mx27.h"
45#include "ulpi.h" 46#include "ulpi.h"
diff --git a/arch/arm/mach-imx/mach-mx31_3ds.c b/arch/arm/mach-imx/mach-mx31_3ds.c
index 4217871a9653..453f41a2c5a9 100644
--- a/arch/arm/mach-imx/mach-mx31_3ds.c
+++ b/arch/arm/mach-imx/mach-mx31_3ds.c
@@ -40,6 +40,7 @@
40#include "3ds_debugboard.h" 40#include "3ds_debugboard.h"
41#include "common.h" 41#include "common.h"
42#include "devices-imx31.h" 42#include "devices-imx31.h"
43#include "ehci.h"
43#include "hardware.h" 44#include "hardware.h"
44#include "iomux-mx3.h" 45#include "iomux-mx3.h"
45#include "ulpi.h" 46#include "ulpi.h"
diff --git a/arch/arm/mach-imx/mach-mx31lilly.c b/arch/arm/mach-imx/mach-mx31lilly.c
index eee042fa2768..e9549a3c0223 100644
--- a/arch/arm/mach-imx/mach-mx31lilly.c
+++ b/arch/arm/mach-imx/mach-mx31lilly.c
@@ -45,6 +45,7 @@
45#include "board-mx31lilly.h" 45#include "board-mx31lilly.h"
46#include "common.h" 46#include "common.h"
47#include "devices-imx31.h" 47#include "devices-imx31.h"
48#include "ehci.h"
48#include "hardware.h" 49#include "hardware.h"
49#include "iomux-mx3.h" 50#include "iomux-mx3.h"
50#include "ulpi.h" 51#include "ulpi.h"
diff --git a/arch/arm/mach-imx/mach-mx31lite.c b/arch/arm/mach-imx/mach-mx31lite.c
index fa15d0b6118d..57eac6f45fab 100644
--- a/arch/arm/mach-imx/mach-mx31lite.c
+++ b/arch/arm/mach-imx/mach-mx31lite.c
@@ -42,6 +42,7 @@
42#include "board-mx31lite.h" 42#include "board-mx31lite.h"
43#include "common.h" 43#include "common.h"
44#include "devices-imx31.h" 44#include "devices-imx31.h"
45#include "ehci.h"
45#include "hardware.h" 46#include "hardware.h"
46#include "iomux-mx3.h" 47#include "iomux-mx3.h"
47#include "ulpi.h" 48#include "ulpi.h"
diff --git a/arch/arm/mach-imx/mach-mx31moboard.c b/arch/arm/mach-imx/mach-mx31moboard.c
index 08730f238449..bb6f8a52a6b8 100644
--- a/arch/arm/mach-imx/mach-mx31moboard.c
+++ b/arch/arm/mach-imx/mach-mx31moboard.c
@@ -47,6 +47,7 @@
47#include "board-mx31moboard.h" 47#include "board-mx31moboard.h"
48#include "common.h" 48#include "common.h"
49#include "devices-imx31.h" 49#include "devices-imx31.h"
50#include "ehci.h"
50#include "hardware.h" 51#include "hardware.h"
51#include "iomux-mx3.h" 52#include "iomux-mx3.h"
52#include "ulpi.h" 53#include "ulpi.h"
@@ -434,10 +435,8 @@ static int __init moboard_usbh2_init(void)
434 return -ENODEV; 435 return -ENODEV;
435 436
436 pdev = imx31_add_mxc_ehci_hs(2, &usbh2_pdata); 437 pdev = imx31_add_mxc_ehci_hs(2, &usbh2_pdata);
437 if (IS_ERR(pdev))
438 return PTR_ERR(pdev);
439 438
440 return 0; 439 return PTR_ERR_OR_ZERO(pdev);
441} 440}
442 441
443static const struct gpio_led mx31moboard_leds[] __initconst = { 442static const struct gpio_led mx31moboard_leds[] __initconst = {
diff --git a/arch/arm/mach-imx/mach-mx35_3ds.c b/arch/arm/mach-imx/mach-mx35_3ds.c
index 4e8b184d773b..72cd77d21f63 100644
--- a/arch/arm/mach-imx/mach-mx35_3ds.c
+++ b/arch/arm/mach-imx/mach-mx35_3ds.c
@@ -50,6 +50,7 @@
50#include "3ds_debugboard.h" 50#include "3ds_debugboard.h"
51#include "common.h" 51#include "common.h"
52#include "devices-imx35.h" 52#include "devices-imx35.h"
53#include "ehci.h"
53#include "hardware.h" 54#include "hardware.h"
54#include "iomux-mx35.h" 55#include "iomux-mx35.h"
55 56
diff --git a/arch/arm/mach-imx/mach-pca100.c b/arch/arm/mach-imx/mach-pca100.c
index 12212378c672..2d1c50bd8bdf 100644
--- a/arch/arm/mach-imx/mach-pca100.c
+++ b/arch/arm/mach-imx/mach-pca100.c
@@ -36,6 +36,7 @@
36 36
37#include "common.h" 37#include "common.h"
38#include "devices-imx27.h" 38#include "devices-imx27.h"
39#include "ehci.h"
39#include "hardware.h" 40#include "hardware.h"
40#include "iomux-mx27.h" 41#include "iomux-mx27.h"
41#include "ulpi.h" 42#include "ulpi.h"
diff --git a/arch/arm/mach-imx/mach-pcm037.c b/arch/arm/mach-imx/mach-pcm037.c
index 81b8affb9448..8eb1570f7851 100644
--- a/arch/arm/mach-imx/mach-pcm037.c
+++ b/arch/arm/mach-imx/mach-pcm037.c
@@ -45,6 +45,7 @@
45 45
46#include "common.h" 46#include "common.h"
47#include "devices-imx31.h" 47#include "devices-imx31.h"
48#include "ehci.h"
48#include "hardware.h" 49#include "hardware.h"
49#include "iomux-mx3.h" 50#include "iomux-mx3.h"
50#include "pcm037.h" 51#include "pcm037.h"
diff --git a/arch/arm/mach-imx/mach-pcm038.c b/arch/arm/mach-imx/mach-pcm038.c
index 6c56fb5553c7..ee862ad6b6fc 100644
--- a/arch/arm/mach-imx/mach-pcm038.c
+++ b/arch/arm/mach-imx/mach-pcm038.c
@@ -36,6 +36,7 @@
36#include "board-pcm038.h" 36#include "board-pcm038.h"
37#include "common.h" 37#include "common.h"
38#include "devices-imx27.h" 38#include "devices-imx27.h"
39#include "ehci.h"
39#include "hardware.h" 40#include "hardware.h"
40#include "iomux-mx27.h" 41#include "iomux-mx27.h"
41#include "ulpi.h" 42#include "ulpi.h"
diff --git a/arch/arm/mach-imx/mach-pcm043.c b/arch/arm/mach-imx/mach-pcm043.c
index c62b5d261345..b623bcaca76c 100644
--- a/arch/arm/mach-imx/mach-pcm043.c
+++ b/arch/arm/mach-imx/mach-pcm043.c
@@ -35,6 +35,7 @@
35 35
36#include "common.h" 36#include "common.h"
37#include "devices-imx35.h" 37#include "devices-imx35.h"
38#include "ehci.h"
38#include "hardware.h" 39#include "hardware.h"
39#include "iomux-mx35.h" 40#include "iomux-mx35.h"
40#include "ulpi.h" 41#include "ulpi.h"
diff --git a/arch/arm/mach-imx/mach-vf610.c b/arch/arm/mach-imx/mach-vf610.c
index c44602758120..ee7e57b752a7 100644
--- a/arch/arm/mach-imx/mach-vf610.c
+++ b/arch/arm/mach-imx/mach-vf610.c
@@ -20,7 +20,7 @@ static void __init vf610_init_machine(void)
20 of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); 20 of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
21} 21}
22 22
23static const char *vf610_dt_compat[] __initconst = { 23static const char * const vf610_dt_compat[] __initconst = {
24 "fsl,vf610", 24 "fsl,vf610",
25 NULL, 25 NULL,
26}; 26};
diff --git a/arch/arm/mach-imx/mach-vpr200.c b/arch/arm/mach-imx/mach-vpr200.c
index 872b3c6ba408..97836e94451c 100644
--- a/arch/arm/mach-imx/mach-vpr200.c
+++ b/arch/arm/mach-imx/mach-vpr200.c
@@ -34,6 +34,7 @@
34 34
35#include "common.h" 35#include "common.h"
36#include "devices-imx35.h" 36#include "devices-imx35.h"
37#include "ehci.h"
37#include "hardware.h" 38#include "hardware.h"
38#include "iomux-mx35.h" 39#include "iomux-mx35.h"
39 40
diff --git a/arch/arm/mach-imx/mm-imx5.c b/arch/arm/mach-imx/mm-imx5.c
deleted file mode 100644
index 4c112021aa4e..000000000000
--- a/arch/arm/mach-imx/mm-imx5.c
+++ /dev/null
@@ -1,155 +0,0 @@
1/*
2 * Copyright 2008-2010 Freescale Semiconductor, Inc. All Rights Reserved.
3 *
4 * The code contained herein is licensed under the GNU General Public
5 * License. You may obtain a copy of the GNU General Public License
6 * Version 2 or later at the following locations:
7 *
8 * http://www.opensource.org/licenses/gpl-license.html
9 * http://www.gnu.org/copyleft/gpl.html
10 *
11 * Create static mapping between physical to virtual memory.
12 */
13
14#include <linux/mm.h>
15#include <linux/init.h>
16#include <linux/clk.h>
17#include <linux/pinctrl/machine.h>
18#include <linux/of_address.h>
19
20#include <asm/mach/map.h>
21
22#include "common.h"
23#include "devices/devices-common.h"
24#include "hardware.h"
25#include "iomux-v3.h"
26
27/*
28 * Define the MX51 memory map.
29 */
30static struct map_desc mx51_io_desc[] __initdata = {
31 imx_map_entry(MX51, TZIC, MT_DEVICE),
32 imx_map_entry(MX51, IRAM, MT_DEVICE),
33 imx_map_entry(MX51, AIPS1, MT_DEVICE),
34 imx_map_entry(MX51, SPBA0, MT_DEVICE),
35 imx_map_entry(MX51, AIPS2, MT_DEVICE),
36};
37
38/*
39 * Define the MX53 memory map.
40 */
41static struct map_desc mx53_io_desc[] __initdata = {
42 imx_map_entry(MX53, TZIC, MT_DEVICE),
43 imx_map_entry(MX53, AIPS1, MT_DEVICE),
44 imx_map_entry(MX53, SPBA0, MT_DEVICE),
45 imx_map_entry(MX53, AIPS2, MT_DEVICE),
46};
47
48/*
49 * This function initializes the memory map. It is called during the
50 * system startup to create static physical to virtual memory mappings
51 * for the IO modules.
52 */
53void __init mx51_map_io(void)
54{
55 iotable_init(mx51_io_desc, ARRAY_SIZE(mx51_io_desc));
56}
57
58void __init mx53_map_io(void)
59{
60 iotable_init(mx53_io_desc, ARRAY_SIZE(mx53_io_desc));
61}
62
63/*
64 * The MIPI HSC unit has been removed from the i.MX51 Reference Manual by
65 * the Freescale marketing division. However this did not remove the
66 * hardware from the chip which still needs to be configured for proper
67 * IPU support.
68 */
69static void __init imx51_ipu_mipi_setup(void)
70{
71 void __iomem *hsc_addr;
72 hsc_addr = MX51_IO_ADDRESS(MX51_MIPI_HSC_BASE_ADDR);
73
74 /* setup MIPI module to legacy mode */
75 __raw_writel(0xf00, hsc_addr);
76
77 /* CSI mode: reserved; DI control mode: legacy (from Freescale BSP) */
78 __raw_writel(__raw_readl(hsc_addr + 0x800) | 0x30ff,
79 hsc_addr + 0x800);
80}
81
82void __init imx51_init_early(void)
83{
84 imx51_ipu_mipi_setup();
85 mxc_set_cpu_type(MXC_CPU_MX51);
86 mxc_iomux_v3_init(MX51_IO_ADDRESS(MX51_IOMUXC_BASE_ADDR));
87 imx_src_init();
88}
89
90void __init imx53_init_early(void)
91{
92 mxc_set_cpu_type(MXC_CPU_MX53);
93 imx_src_init();
94}
95
96void __init mx51_init_irq(void)
97{
98 tzic_init_irq(MX51_IO_ADDRESS(MX51_TZIC_BASE_ADDR));
99}
100
101void __init mx53_init_irq(void)
102{
103 struct device_node *np;
104 void __iomem *base;
105
106 np = of_find_compatible_node(NULL, NULL, "fsl,imx53-tzic");
107 base = of_iomap(np, 0);
108 WARN_ON(!base);
109
110 tzic_init_irq(base);
111}
112
113static struct sdma_platform_data imx51_sdma_pdata __initdata = {
114 .fw_name = "sdma-imx51.bin",
115};
116
117static const struct resource imx51_audmux_res[] __initconst = {
118 DEFINE_RES_MEM(MX51_AUDMUX_BASE_ADDR, SZ_16K),
119};
120
121void __init imx51_soc_init(void)
122{
123 mxc_arch_reset_init(MX51_IO_ADDRESS(MX51_WDOG1_BASE_ADDR));
124 mxc_device_init();
125
126 /* i.mx51 has the i.mx35 type gpio */
127 mxc_register_gpio("imx35-gpio", 0, MX51_GPIO1_BASE_ADDR, SZ_16K, MX51_INT_GPIO1_LOW, MX51_INT_GPIO1_HIGH);
128 mxc_register_gpio("imx35-gpio", 1, MX51_GPIO2_BASE_ADDR, SZ_16K, MX51_INT_GPIO2_LOW, MX51_INT_GPIO2_HIGH);
129 mxc_register_gpio("imx35-gpio", 2, MX51_GPIO3_BASE_ADDR, SZ_16K, MX51_INT_GPIO3_LOW, MX51_INT_GPIO3_HIGH);
130 mxc_register_gpio("imx35-gpio", 3, MX51_GPIO4_BASE_ADDR, SZ_16K, MX51_INT_GPIO4_LOW, MX51_INT_GPIO4_HIGH);
131
132 pinctrl_provide_dummies();
133
134 /* i.mx51 has the i.mx35 type sdma */
135 imx_add_imx_sdma("imx35-sdma", MX51_SDMA_BASE_ADDR, MX51_INT_SDMA, &imx51_sdma_pdata);
136
137 /* Setup AIPS registers */
138 imx_set_aips(MX51_IO_ADDRESS(MX51_AIPS1_BASE_ADDR));
139 imx_set_aips(MX51_IO_ADDRESS(MX51_AIPS2_BASE_ADDR));
140
141 /* i.mx51 has the i.mx31 type audmux */
142 platform_device_register_simple("imx31-audmux", 0, imx51_audmux_res,
143 ARRAY_SIZE(imx51_audmux_res));
144}
145
146void __init imx51_init_late(void)
147{
148 mx51_neon_fixup();
149 imx5_pm_init();
150}
151
152void __init imx53_init_late(void)
153{
154 imx5_pm_init();
155}
diff --git a/arch/arm/mach-imx/mx1-camera-fiq-ksym.c b/arch/arm/mach-imx/mx1-camera-fiq-ksym.c
deleted file mode 100644
index fb38436ca67f..000000000000
--- a/arch/arm/mach-imx/mx1-camera-fiq-ksym.c
+++ /dev/null
@@ -1,18 +0,0 @@
1/*
2 * Exported ksyms of ARCH_MX1
3 *
4 * Copyright (C) 2008, Darius Augulis <augulis.darius@gmail.com>
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation.
9 */
10
11#include <linux/platform_device.h>
12#include <linux/module.h>
13
14#include <linux/platform_data/camera-mx1.h>
15
16/* IMX camera FIQ handler */
17EXPORT_SYMBOL(mx1_camera_sof_fiq_start);
18EXPORT_SYMBOL(mx1_camera_sof_fiq_end);
diff --git a/arch/arm/mach-imx/mx1-camera-fiq.S b/arch/arm/mach-imx/mx1-camera-fiq.S
deleted file mode 100644
index 9c69aa65bf17..000000000000
--- a/arch/arm/mach-imx/mx1-camera-fiq.S
+++ /dev/null
@@ -1,35 +0,0 @@
1/*
2 * Copyright (C) 2008 Paulius Zaleckas <paulius.zaleckas@teltonika.lt>
3 *
4 * Based on linux/arch/arm/lib/floppydma.S
5 * Copyright (C) 1995, 1996 Russell King
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License version 2 as
9 * published by the Free Software Foundation.
10 */
11#include <linux/linkage.h>
12#include <asm/assembler.h>
13
14 .text
15 .global mx1_camera_sof_fiq_end
16 .global mx1_camera_sof_fiq_start
17mx1_camera_sof_fiq_start:
18 @ enable dma
19 ldr r12, [r9]
20 orr r12, r12, #0x00000001
21 str r12, [r9]
22 @ unmask DMA interrupt
23 ldr r12, [r8]
24 bic r12, r12, r13
25 str r12, [r8]
26 @ disable SOF interrupt
27 ldr r12, [r10]
28 bic r12, r12, #0x00010000
29 str r12, [r10]
30 @ clear SOF flag
31 mov r12, #0x00010000
32 str r12, [r11]
33 @ return from FIQ
34 subs pc, lr, #4
35mx1_camera_sof_fiq_end:
diff --git a/arch/arm/mach-imx/mx31moboard-devboard.c b/arch/arm/mach-imx/mx31moboard-devboard.c
index 52d5b1574721..1e91a0918e83 100644
--- a/arch/arm/mach-imx/mx31moboard-devboard.c
+++ b/arch/arm/mach-imx/mx31moboard-devboard.c
@@ -24,6 +24,7 @@
24 24
25#include "common.h" 25#include "common.h"
26#include "devices-imx31.h" 26#include "devices-imx31.h"
27#include "ehci.h"
27#include "hardware.h" 28#include "hardware.h"
28#include "iomux-mx3.h" 29#include "iomux-mx3.h"
29#include "ulpi.h" 30#include "ulpi.h"
@@ -213,10 +214,8 @@ static int __init devboard_usbh1_init(void)
213 usbh1_pdata.otg = phy; 214 usbh1_pdata.otg = phy;
214 215
215 pdev = imx31_add_mxc_ehci_hs(1, &usbh1_pdata); 216 pdev = imx31_add_mxc_ehci_hs(1, &usbh1_pdata);
216 if (IS_ERR(pdev))
217 return PTR_ERR(pdev);
218 217
219 return 0; 218 return PTR_ERR_OR_ZERO(pdev);
220} 219}
221 220
222 221
diff --git a/arch/arm/mach-imx/mx31moboard-marxbot.c b/arch/arm/mach-imx/mx31moboard-marxbot.c
index a4f43e90f3c1..2e895a82a6eb 100644
--- a/arch/arm/mach-imx/mx31moboard-marxbot.c
+++ b/arch/arm/mach-imx/mx31moboard-marxbot.c
@@ -28,6 +28,7 @@
28 28
29#include "common.h" 29#include "common.h"
30#include "devices-imx31.h" 30#include "devices-imx31.h"
31#include "ehci.h"
31#include "hardware.h" 32#include "hardware.h"
32#include "iomux-mx3.h" 33#include "iomux-mx3.h"
33#include "ulpi.h" 34#include "ulpi.h"
@@ -327,10 +328,8 @@ static int __init marxbot_usbh1_init(void)
327 usbh1_pdata.otg = phy; 328 usbh1_pdata.otg = phy;
328 329
329 pdev = imx31_add_mxc_ehci_hs(1, &usbh1_pdata); 330 pdev = imx31_add_mxc_ehci_hs(1, &usbh1_pdata);
330 if (IS_ERR(pdev))
331 return PTR_ERR(pdev);
332 331
333 return 0; 332 return PTR_ERR_OR_ZERO(pdev);
334} 333}
335 334
336static const struct fsl_usb2_platform_data usb_pdata __initconst = { 335static const struct fsl_usb2_platform_data usb_pdata __initconst = {
diff --git a/arch/arm/mach-imx/mx31moboard-smartbot.c b/arch/arm/mach-imx/mx31moboard-smartbot.c
index 04ae45dbfaa7..89fc35a64448 100644
--- a/arch/arm/mach-imx/mx31moboard-smartbot.c
+++ b/arch/arm/mach-imx/mx31moboard-smartbot.c
@@ -28,6 +28,7 @@
28#include "board-mx31moboard.h" 28#include "board-mx31moboard.h"
29#include "common.h" 29#include "common.h"
30#include "devices-imx31.h" 30#include "devices-imx31.h"
31#include "ehci.h"
31#include "hardware.h" 32#include "hardware.h"
32#include "iomux-mx3.h" 33#include "iomux-mx3.h"
33#include "ulpi.h" 34#include "ulpi.h"
@@ -141,10 +142,8 @@ static int __init smartbot_otg_host_init(void)
141 return -ENODEV; 142 return -ENODEV;
142 143
143 pdev = imx31_add_mxc_ehci_otg(&otg_host_pdata); 144 pdev = imx31_add_mxc_ehci_otg(&otg_host_pdata);
144 if (IS_ERR(pdev))
145 return PTR_ERR(pdev);
146 145
147 return 0; 146 return PTR_ERR_OR_ZERO(pdev);
148} 147}
149#else 148#else
150static inline int smartbot_otg_host_init(void) { return 0; } 149static inline int smartbot_otg_host_init(void) { return 0; }
diff --git a/arch/arm/mach-imx/mx51.h b/arch/arm/mach-imx/mx51.h
deleted file mode 100644
index af844f76261a..000000000000
--- a/arch/arm/mach-imx/mx51.h
+++ /dev/null
@@ -1,346 +0,0 @@
1#ifndef __MACH_MX51_H__
2#define __MACH_MX51_H__
3
4/*
5 * IROM
6 */
7#define MX51_IROM_BASE_ADDR 0x0
8#define MX51_IROM_SIZE SZ_64K
9
10/*
11 * IRAM
12 */
13#define MX51_IRAM_BASE_ADDR 0x1ffe0000 /* internal ram */
14#define MX51_IRAM_PARTITIONS 16
15#define MX51_IRAM_SIZE (MX51_IRAM_PARTITIONS * SZ_8K) /* 128KB */
16
17#define MX51_GPU_BASE_ADDR 0x20000000
18#define MX51_GPU_CTRL_BASE_ADDR 0x30000000
19#define MX51_IPU_CTRL_BASE_ADDR 0x40000000
20
21/*
22 * SPBA global module enabled #0
23 */
24#define MX51_SPBA0_BASE_ADDR 0x70000000
25#define MX51_SPBA0_SIZE SZ_1M
26
27#define MX51_ESDHC1_BASE_ADDR (MX51_SPBA0_BASE_ADDR + 0x04000)
28#define MX51_ESDHC2_BASE_ADDR (MX51_SPBA0_BASE_ADDR + 0x08000)
29#define MX51_UART3_BASE_ADDR (MX51_SPBA0_BASE_ADDR + 0x0c000)
30#define MX51_ECSPI1_BASE_ADDR (MX51_SPBA0_BASE_ADDR + 0x10000)
31#define MX51_SSI2_BASE_ADDR (MX51_SPBA0_BASE_ADDR + 0x14000)
32#define MX51_ESDHC3_BASE_ADDR (MX51_SPBA0_BASE_ADDR + 0x20000)
33#define MX51_ESDHC4_BASE_ADDR (MX51_SPBA0_BASE_ADDR + 0x24000)
34#define MX51_SPDIF_BASE_ADDR (MX51_SPBA0_BASE_ADDR + 0x28000)
35#define MX51_ATA_DMA_BASE_ADDR (MX51_SPBA0_BASE_ADDR + 0x30000)
36#define MX51_SLIM_DMA_BASE_ADDR (MX51_SPBA0_BASE_ADDR + 0x34000)
37#define MX51_HSI2C_DMA_BASE_ADDR (MX51_SPBA0_BASE_ADDR + 0x38000)
38#define MX51_SPBA_CTRL_BASE_ADDR (MX51_SPBA0_BASE_ADDR + 0x3c000)
39
40/*
41 * AIPS 1
42 */
43#define MX51_AIPS1_BASE_ADDR 0x73f00000
44#define MX51_AIPS1_SIZE SZ_1M
45
46#define MX51_USB_BASE_ADDR (MX51_AIPS1_BASE_ADDR + 0x80000)
47#define MX51_USB_OTG_BASE_ADDR (MX51_USB_BASE_ADDR + 0x0000)
48#define MX51_USB_HS1_BASE_ADDR (MX51_USB_BASE_ADDR + 0x0200)
49#define MX51_USB_HS2_BASE_ADDR (MX51_USB_BASE_ADDR + 0x0400)
50#define MX51_GPIO1_BASE_ADDR (MX51_AIPS1_BASE_ADDR + 0x84000)
51#define MX51_GPIO2_BASE_ADDR (MX51_AIPS1_BASE_ADDR + 0x88000)
52#define MX51_GPIO3_BASE_ADDR (MX51_AIPS1_BASE_ADDR + 0x8c000)
53#define MX51_GPIO4_BASE_ADDR (MX51_AIPS1_BASE_ADDR + 0x90000)
54#define MX51_KPP_BASE_ADDR (MX51_AIPS1_BASE_ADDR + 0x94000)
55#define MX51_WDOG1_BASE_ADDR (MX51_AIPS1_BASE_ADDR + 0x98000)
56#define MX51_WDOG2_BASE_ADDR (MX51_AIPS1_BASE_ADDR + 0x9c000)
57#define MX51_GPT1_BASE_ADDR (MX51_AIPS1_BASE_ADDR + 0xa0000)
58#define MX51_SRTC_BASE_ADDR (MX51_AIPS1_BASE_ADDR + 0xa4000)
59#define MX51_IOMUXC_BASE_ADDR (MX51_AIPS1_BASE_ADDR + 0xa8000)
60#define MX51_EPIT1_BASE_ADDR (MX51_AIPS1_BASE_ADDR + 0xac000)
61#define MX51_EPIT2_BASE_ADDR (MX51_AIPS1_BASE_ADDR + 0xb0000)
62#define MX51_PWM1_BASE_ADDR (MX51_AIPS1_BASE_ADDR + 0xb4000)
63#define MX51_PWM2_BASE_ADDR (MX51_AIPS1_BASE_ADDR + 0xb8000)
64#define MX51_UART1_BASE_ADDR (MX51_AIPS1_BASE_ADDR + 0xbc000)
65#define MX51_UART2_BASE_ADDR (MX51_AIPS1_BASE_ADDR + 0xc0000)
66#define MX51_SRC_BASE_ADDR (MX51_AIPS1_BASE_ADDR + 0xd0000)
67#define MX51_CCM_BASE_ADDR (MX51_AIPS1_BASE_ADDR + 0xd4000)
68#define MX51_GPC_BASE_ADDR (MX51_AIPS1_BASE_ADDR + 0xd8000)
69
70/*
71 * AIPS 2
72 */
73#define MX51_AIPS2_BASE_ADDR 0x83f00000
74#define MX51_AIPS2_SIZE SZ_1M
75
76#define MX51_PLL1_BASE_ADDR (MX51_AIPS2_BASE_ADDR + 0x80000)
77#define MX51_PLL2_BASE_ADDR (MX51_AIPS2_BASE_ADDR + 0x84000)
78#define MX51_PLL3_BASE_ADDR (MX51_AIPS2_BASE_ADDR + 0x88000)
79#define MX51_AHBMAX_BASE_ADDR (MX51_AIPS2_BASE_ADDR + 0x94000)
80#define MX51_IIM_BASE_ADDR (MX51_AIPS2_BASE_ADDR + 0x98000)
81#define MX51_CSU_BASE_ADDR (MX51_AIPS2_BASE_ADDR + 0x9c000)
82#define MX51_ARM_BASE_ADDR (MX51_AIPS2_BASE_ADDR + 0xa0000)
83#define MX51_OWIRE_BASE_ADDR (MX51_AIPS2_BASE_ADDR + 0xa4000)
84#define MX51_FIRI_BASE_ADDR (MX51_AIPS2_BASE_ADDR + 0xa8000)
85#define MX51_ECSPI2_BASE_ADDR (MX51_AIPS2_BASE_ADDR + 0xac000)
86#define MX51_SDMA_BASE_ADDR (MX51_AIPS2_BASE_ADDR + 0xb0000)
87#define MX51_SCC_BASE_ADDR (MX51_AIPS2_BASE_ADDR + 0xb4000)
88#define MX51_ROMCP_BASE_ADDR (MX51_AIPS2_BASE_ADDR + 0xb8000)
89#define MX51_RTIC_BASE_ADDR (MX51_AIPS2_BASE_ADDR + 0xbc000)
90#define MX51_CSPI_BASE_ADDR (MX51_AIPS2_BASE_ADDR + 0xc0000)
91#define MX51_I2C2_BASE_ADDR (MX51_AIPS2_BASE_ADDR + 0xc4000)
92#define MX51_I2C1_BASE_ADDR (MX51_AIPS2_BASE_ADDR + 0xc8000)
93#define MX51_SSI1_BASE_ADDR (MX51_AIPS2_BASE_ADDR + 0xcc000)
94#define MX51_AUDMUX_BASE_ADDR (MX51_AIPS2_BASE_ADDR + 0xd0000)
95#define MX51_M4IF_BASE_ADDR (MX51_AIPS2_BASE_ADDR + 0xd8000)
96#define MX51_ESDCTL_BASE_ADDR (MX51_AIPS2_BASE_ADDR + 0xd9000)
97#define MX51_WEIM_BASE_ADDR (MX51_AIPS2_BASE_ADDR + 0xda000)
98#define MX51_NFC_BASE_ADDR (MX51_AIPS2_BASE_ADDR + 0xdb000)
99#define MX51_EMI_BASE_ADDR (MX51_AIPS2_BASE_ADDR + 0xdbf00)
100#define MX51_MIPI_HSC_BASE_ADDR (MX51_AIPS2_BASE_ADDR + 0xdc000)
101#define MX51_ATA_BASE_ADDR (MX51_AIPS2_BASE_ADDR + 0xe0000)
102#define MX51_SIM_BASE_ADDR (MX51_AIPS2_BASE_ADDR + 0xe4000)
103#define MX51_SSI3_BASE_ADDR (MX51_AIPS2_BASE_ADDR + 0xe8000)
104#define MX51_FEC_BASE_ADDR (MX51_AIPS2_BASE_ADDR + 0xec000)
105#define MX51_TVE_BASE_ADDR (MX51_AIPS2_BASE_ADDR + 0xf0000)
106#define MX51_VPU_BASE_ADDR (MX51_AIPS2_BASE_ADDR + 0xf4000)
107#define MX51_SAHARA_BASE_ADDR (MX51_AIPS2_BASE_ADDR + 0xf8000)
108
109#define MX51_CSD0_BASE_ADDR 0x90000000
110#define MX51_CSD1_BASE_ADDR 0xa0000000
111#define MX51_CS0_BASE_ADDR 0xb0000000
112#define MX51_CS1_BASE_ADDR 0xb8000000
113#define MX51_CS2_BASE_ADDR 0xc0000000
114#define MX51_CS3_BASE_ADDR 0xc8000000
115#define MX51_CS4_BASE_ADDR 0xcc000000
116#define MX51_CS5_BASE_ADDR 0xce000000
117
118/*
119 * NFC
120 */
121#define MX51_NFC_AXI_BASE_ADDR 0xcfff0000 /* NAND flash AXI */
122#define MX51_NFC_AXI_SIZE SZ_64K
123
124#define MX51_GPU2D_BASE_ADDR 0xd0000000
125#define MX51_TZIC_BASE_ADDR 0xe0000000
126#define MX51_TZIC_SIZE SZ_16K
127
128#define MX51_IO_P2V(x) IMX_IO_P2V(x)
129#define MX51_IO_ADDRESS(x) IOMEM(MX51_IO_P2V(x))
130
131/*
132 * defines for SPBA modules
133 */
134#define MX51_SPBA_SDHC1 0x04
135#define MX51_SPBA_SDHC2 0x08
136#define MX51_SPBA_UART3 0x0c
137#define MX51_SPBA_CSPI1 0x10
138#define MX51_SPBA_SSI2 0x14
139#define MX51_SPBA_SDHC3 0x20
140#define MX51_SPBA_SDHC4 0x24
141#define MX51_SPBA_SPDIF 0x28
142#define MX51_SPBA_ATA 0x30
143#define MX51_SPBA_SLIM 0x34
144#define MX51_SPBA_HSI2C 0x38
145#define MX51_SPBA_CTRL 0x3c
146
147/*
148 * Defines for modules using static and dynamic DMA channels
149 */
150#define MX51_MXC_DMA_CHANNEL_IRAM 30
151#define MX51_MXC_DMA_CHANNEL_SPDIF_TX MXC_DMA_DYNAMIC_CHANNEL
152#define MX51_MXC_DMA_CHANNEL_UART1_RX MXC_DMA_DYNAMIC_CHANNEL
153#define MX51_MXC_DMA_CHANNEL_UART1_TX MXC_DMA_DYNAMIC_CHANNEL
154#define MX51_MXC_DMA_CHANNEL_UART2_RX MXC_DMA_DYNAMIC_CHANNEL
155#define MX51_MXC_DMA_CHANNEL_UART2_TX MXC_DMA_DYNAMIC_CHANNEL
156#define MX51_MXC_DMA_CHANNEL_UART3_RX MXC_DMA_DYNAMIC_CHANNEL
157#define MX51_MXC_DMA_CHANNEL_UART3_TX MXC_DMA_DYNAMIC_CHANNEL
158#define MX51_MXC_DMA_CHANNEL_MMC1 MXC_DMA_DYNAMIC_CHANNEL
159#define MX51_MXC_DMA_CHANNEL_MMC2 MXC_DMA_DYNAMIC_CHANNEL
160#define MX51_MXC_DMA_CHANNEL_SSI1_RX MXC_DMA_DYNAMIC_CHANNEL
161#define MX51_MXC_DMA_CHANNEL_SSI1_TX MXC_DMA_DYNAMIC_CHANNEL
162#define MX51_MXC_DMA_CHANNEL_SSI2_RX MXC_DMA_DYNAMIC_CHANNEL
163#ifdef CONFIG_SDMA_IRAM
164#define MX51_MXC_DMA_CHANNEL_SSI2_TX (MX51_MXC_DMA_CHANNEL_IRAM + 1)
165#else /*CONFIG_SDMA_IRAM */
166#define MX51_MXC_DMA_CHANNEL_SSI2_TX MXC_DMA_DYNAMIC_CHANNEL
167#endif /*CONFIG_SDMA_IRAM */
168#define MX51_MXC_DMA_CHANNEL_CSPI1_RX MXC_DMA_DYNAMIC_CHANNEL
169#define MX51_MXC_DMA_CHANNEL_CSPI1_TX MXC_DMA_DYNAMIC_CHANNEL
170#define MX51_MXC_DMA_CHANNEL_CSPI2_RX MXC_DMA_DYNAMIC_CHANNEL
171#define MX51_MXC_DMA_CHANNEL_CSPI2_TX MXC_DMA_DYNAMIC_CHANNEL
172#define MX51_MXC_DMA_CHANNEL_CSPI3_RX MXC_DMA_DYNAMIC_CHANNEL
173#define MX51_MXC_DMA_CHANNEL_CSPI3_TX MXC_DMA_DYNAMIC_CHANNEL
174#define MX51_MXC_DMA_CHANNEL_ATA_RX MXC_DMA_DYNAMIC_CHANNEL
175#define MX51_MXC_DMA_CHANNEL_ATA_TX MXC_DMA_DYNAMIC_CHANNEL
176#define MX51_MXC_DMA_CHANNEL_MEMORY MXC_DMA_DYNAMIC_CHANNEL
177
178#define MX51_IS_MEM_DEVICE_NONSHARED(x) 0
179
180/*
181 * DMA request assignments
182 */
183#define MX51_DMA_REQ_VPU 0
184#define MX51_DMA_REQ_GPC 1
185#define MX51_DMA_REQ_ATA_RX 2
186#define MX51_DMA_REQ_ATA_TX 3
187#define MX51_DMA_REQ_ATA_TX_END 4
188#define MX51_DMA_REQ_SLIM_B 5
189#define MX51_DMA_REQ_CSPI1_RX 6
190#define MX51_DMA_REQ_CSPI1_TX 7
191#define MX51_DMA_REQ_CSPI2_RX 8
192#define MX51_DMA_REQ_CSPI2_TX 9
193#define MX51_DMA_REQ_HS_I2C_TX 10
194#define MX51_DMA_REQ_HS_I2C_RX 11
195#define MX51_DMA_REQ_FIRI_RX 12
196#define MX51_DMA_REQ_FIRI_TX 13
197#define MX51_DMA_REQ_EXTREQ1 14
198#define MX51_DMA_REQ_GPU 15
199#define MX51_DMA_REQ_UART2_RX 16
200#define MX51_DMA_REQ_UART2_TX 17
201#define MX51_DMA_REQ_UART1_RX 18
202#define MX51_DMA_REQ_UART1_TX 19
203#define MX51_DMA_REQ_SDHC1 20
204#define MX51_DMA_REQ_SDHC2 21
205#define MX51_DMA_REQ_SSI2_RX1 22
206#define MX51_DMA_REQ_SSI2_TX1 23
207#define MX51_DMA_REQ_SSI2_RX0 24
208#define MX51_DMA_REQ_SSI2_TX0 25
209#define MX51_DMA_REQ_SSI1_RX1 26
210#define MX51_DMA_REQ_SSI1_TX1 27
211#define MX51_DMA_REQ_SSI1_RX0 28
212#define MX51_DMA_REQ_SSI1_TX0 29
213#define MX51_DMA_REQ_EMI_RD 30
214#define MX51_DMA_REQ_CTI2_0 31
215#define MX51_DMA_REQ_EMI_WR 32
216#define MX51_DMA_REQ_CTI2_1 33
217#define MX51_DMA_REQ_EPIT2 34
218#define MX51_DMA_REQ_SSI3_RX1 35
219#define MX51_DMA_REQ_IPU 36
220#define MX51_DMA_REQ_SSI3_TX1 37
221#define MX51_DMA_REQ_CSPI_RX 38
222#define MX51_DMA_REQ_CSPI_TX 39
223#define MX51_DMA_REQ_SDHC3 40
224#define MX51_DMA_REQ_SDHC4 41
225#define MX51_DMA_REQ_SLIM_B_TX 42
226#define MX51_DMA_REQ_UART3_RX 43
227#define MX51_DMA_REQ_UART3_TX 44
228#define MX51_DMA_REQ_SPDIF 45
229#define MX51_DMA_REQ_SSI3_RX0 46
230#define MX51_DMA_REQ_SSI3_TX0 47
231
232/*
233 * Interrupt numbers
234 */
235#include <asm/irq.h>
236#define MX51_INT_BASE (NR_IRQS_LEGACY + 0)
237#define MX51_INT_RESV0 (NR_IRQS_LEGACY + 0)
238#define MX51_INT_ESDHC1 (NR_IRQS_LEGACY + 1)
239#define MX51_INT_ESDHC2 (NR_IRQS_LEGACY + 2)
240#define MX51_INT_ESDHC3 (NR_IRQS_LEGACY + 3)
241#define MX51_INT_ESDHC4 (NR_IRQS_LEGACY + 4)
242#define MX51_INT_RESV5 (NR_IRQS_LEGACY + 5)
243#define MX51_INT_SDMA (NR_IRQS_LEGACY + 6)
244#define MX51_INT_IOMUX (NR_IRQS_LEGACY + 7)
245#define MX51_INT_NFC (NR_IRQS_LEGACY + 8)
246#define MX51_INT_VPU (NR_IRQS_LEGACY + 9)
247#define MX51_INT_IPU_ERR (NR_IRQS_LEGACY + 10)
248#define MX51_INT_IPU_SYN (NR_IRQS_LEGACY + 11)
249#define MX51_INT_GPU (NR_IRQS_LEGACY + 12)
250#define MX51_INT_RESV13 (NR_IRQS_LEGACY + 13)
251#define MX51_INT_USB_HS1 (NR_IRQS_LEGACY + 14)
252#define MX51_INT_EMI (NR_IRQS_LEGACY + 15)
253#define MX51_INT_USB_HS2 (NR_IRQS_LEGACY + 16)
254#define MX51_INT_USB_HS3 (NR_IRQS_LEGACY + 17)
255#define MX51_INT_USB_OTG (NR_IRQS_LEGACY + 18)
256#define MX51_INT_SAHARA_H0 (NR_IRQS_LEGACY + 19)
257#define MX51_INT_SAHARA_H1 (NR_IRQS_LEGACY + 20)
258#define MX51_INT_SCC_SMN (NR_IRQS_LEGACY + 21)
259#define MX51_INT_SCC_STZ (NR_IRQS_LEGACY + 22)
260#define MX51_INT_SCC_SCM (NR_IRQS_LEGACY + 23)
261#define MX51_INT_SRTC_NTZ (NR_IRQS_LEGACY + 24)
262#define MX51_INT_SRTC_TZ (NR_IRQS_LEGACY + 25)
263#define MX51_INT_RTIC (NR_IRQS_LEGACY + 26)
264#define MX51_INT_CSU (NR_IRQS_LEGACY + 27)
265#define MX51_INT_SLIM_B (NR_IRQS_LEGACY + 28)
266#define MX51_INT_SSI1 (NR_IRQS_LEGACY + 29)
267#define MX51_INT_SSI2 (NR_IRQS_LEGACY + 30)
268#define MX51_INT_UART1 (NR_IRQS_LEGACY + 31)
269#define MX51_INT_UART2 (NR_IRQS_LEGACY + 32)
270#define MX51_INT_UART3 (NR_IRQS_LEGACY + 33)
271#define MX51_INT_RESV34 (NR_IRQS_LEGACY + 34)
272#define MX51_INT_RESV35 (NR_IRQS_LEGACY + 35)
273#define MX51_INT_ECSPI1 (NR_IRQS_LEGACY + 36)
274#define MX51_INT_ECSPI2 (NR_IRQS_LEGACY + 37)
275#define MX51_INT_CSPI (NR_IRQS_LEGACY + 38)
276#define MX51_INT_GPT (NR_IRQS_LEGACY + 39)
277#define MX51_INT_EPIT1 (NR_IRQS_LEGACY + 40)
278#define MX51_INT_EPIT2 (NR_IRQS_LEGACY + 41)
279#define MX51_INT_GPIO1_INT7 (NR_IRQS_LEGACY + 42)
280#define MX51_INT_GPIO1_INT6 (NR_IRQS_LEGACY + 43)
281#define MX51_INT_GPIO1_INT5 (NR_IRQS_LEGACY + 44)
282#define MX51_INT_GPIO1_INT4 (NR_IRQS_LEGACY + 45)
283#define MX51_INT_GPIO1_INT3 (NR_IRQS_LEGACY + 46)
284#define MX51_INT_GPIO1_INT2 (NR_IRQS_LEGACY + 47)
285#define MX51_INT_GPIO1_INT1 (NR_IRQS_LEGACY + 48)
286#define MX51_INT_GPIO1_INT0 (NR_IRQS_LEGACY + 49)
287#define MX51_INT_GPIO1_LOW (NR_IRQS_LEGACY + 50)
288#define MX51_INT_GPIO1_HIGH (NR_IRQS_LEGACY + 51)
289#define MX51_INT_GPIO2_LOW (NR_IRQS_LEGACY + 52)
290#define MX51_INT_GPIO2_HIGH (NR_IRQS_LEGACY + 53)
291#define MX51_INT_GPIO3_LOW (NR_IRQS_LEGACY + 54)
292#define MX51_INT_GPIO3_HIGH (NR_IRQS_LEGACY + 55)
293#define MX51_INT_GPIO4_LOW (NR_IRQS_LEGACY + 56)
294#define MX51_INT_GPIO4_HIGH (NR_IRQS_LEGACY + 57)
295#define MX51_INT_WDOG1 (NR_IRQS_LEGACY + 58)
296#define MX51_INT_WDOG2 (NR_IRQS_LEGACY + 59)
297#define MX51_INT_KPP (NR_IRQS_LEGACY + 60)
298#define MX51_INT_PWM1 (NR_IRQS_LEGACY + 61)
299#define MX51_INT_I2C1 (NR_IRQS_LEGACY + 62)
300#define MX51_INT_I2C2 (NR_IRQS_LEGACY + 63)
301#define MX51_INT_HS_I2C (NR_IRQS_LEGACY + 64)
302#define MX51_INT_RESV65 (NR_IRQS_LEGACY + 65)
303#define MX51_INT_RESV66 (NR_IRQS_LEGACY + 66)
304#define MX51_INT_SIM_IPB (NR_IRQS_LEGACY + 67)
305#define MX51_INT_SIM_DAT (NR_IRQS_LEGACY + 68)
306#define MX51_INT_IIM (NR_IRQS_LEGACY + 69)
307#define MX51_INT_ATA (NR_IRQS_LEGACY + 70)
308#define MX51_INT_CCM1 (NR_IRQS_LEGACY + 71)
309#define MX51_INT_CCM2 (NR_IRQS_LEGACY + 72)
310#define MX51_INT_GPC1 (NR_IRQS_LEGACY + 73)
311#define MX51_INT_GPC2 (NR_IRQS_LEGACY + 74)
312#define MX51_INT_SRC (NR_IRQS_LEGACY + 75)
313#define MX51_INT_NM (NR_IRQS_LEGACY + 76)
314#define MX51_INT_PMU (NR_IRQS_LEGACY + 77)
315#define MX51_INT_CTI_IRQ (NR_IRQS_LEGACY + 78)
316#define MX51_INT_CTI1_TG0 (NR_IRQS_LEGACY + 79)
317#define MX51_INT_CTI1_TG1 (NR_IRQS_LEGACY + 80)
318#define MX51_INT_MCG_ERR (NR_IRQS_LEGACY + 81)
319#define MX51_INT_MCG_TMR (NR_IRQS_LEGACY + 82)
320#define MX51_INT_MCG_FUNC (NR_IRQS_LEGACY + 83)
321#define MX51_INT_GPU2_IRQ (NR_IRQS_LEGACY + 84)
322#define MX51_INT_GPU2_BUSY (NR_IRQS_LEGACY + 85)
323#define MX51_INT_RESV86 (NR_IRQS_LEGACY + 86)
324#define MX51_INT_FEC (NR_IRQS_LEGACY + 87)
325#define MX51_INT_OWIRE (NR_IRQS_LEGACY + 88)
326#define MX51_INT_CTI1_TG2 (NR_IRQS_LEGACY + 89)
327#define MX51_INT_SJC (NR_IRQS_LEGACY + 90)
328#define MX51_INT_SPDIF (NR_IRQS_LEGACY + 91)
329#define MX51_INT_TVE (NR_IRQS_LEGACY + 92)
330#define MX51_INT_FIRI (NR_IRQS_LEGACY + 93)
331#define MX51_INT_PWM2 (NR_IRQS_LEGACY + 94)
332#define MX51_INT_SLIM_EXP (NR_IRQS_LEGACY + 95)
333#define MX51_INT_SSI3 (NR_IRQS_LEGACY + 96)
334#define MX51_INT_EMI_BOOT (NR_IRQS_LEGACY + 97)
335#define MX51_INT_CTI1_TG3 (NR_IRQS_LEGACY + 98)
336#define MX51_INT_SMC_RX (NR_IRQS_LEGACY + 99)
337#define MX51_INT_VPU_IDLE (NR_IRQS_LEGACY + 100)
338#define MX51_INT_EMI_NFC (NR_IRQS_LEGACY + 101)
339#define MX51_INT_GPU_IDLE (NR_IRQS_LEGACY + 102)
340
341#if !defined(__ASSEMBLY__) && !defined(__MXC_BOOT_UNCOMPRESS)
342extern int mx51_revision(void);
343extern void mx51_display_revision(void);
344#endif
345
346#endif /* ifndef __MACH_MX51_H__ */
diff --git a/arch/arm/mach-imx/mx53.h b/arch/arm/mach-imx/mx53.h
deleted file mode 100644
index f829d1c22501..000000000000
--- a/arch/arm/mach-imx/mx53.h
+++ /dev/null
@@ -1,342 +0,0 @@
1#ifndef __MACH_MX53_H__
2#define __MACH_MX53_H__
3
4/*
5 * IROM
6 */
7#define MX53_IROM_BASE_ADDR 0x0
8#define MX53_IROM_SIZE SZ_64K
9
10/* TZIC */
11#define MX53_TZIC_BASE_ADDR 0x0FFFC000
12#define MX53_TZIC_SIZE SZ_16K
13
14/*
15 * AHCI SATA
16 */
17#define MX53_SATA_BASE_ADDR 0x10000000
18
19/*
20 * NFC
21 */
22#define MX53_NFC_AXI_BASE_ADDR 0xF7FF0000 /* NAND flash AXI */
23#define MX53_NFC_AXI_SIZE SZ_64K
24
25/*
26 * IRAM
27 */
28#define MX53_IRAM_BASE_ADDR 0xF8000000 /* internal ram */
29#define MX53_IRAM_PARTITIONS 16
30#define MX53_IRAM_SIZE (MX53_IRAM_PARTITIONS * SZ_8K) /* 128KB */
31
32/*
33 * Graphics Memory of GPU
34 */
35#define MX53_IPU_CTRL_BASE_ADDR 0x18000000
36#define MX53_GPU2D_BASE_ADDR 0x20000000
37#define MX53_GPU_BASE_ADDR 0x30000000
38#define MX53_GPU_GMEM_BASE_ADDR 0xF8020000
39
40#define MX53_DEBUG_BASE_ADDR 0x40000000
41#define MX53_DEBUG_SIZE SZ_1M
42#define MX53_ETB_BASE_ADDR (MX53_DEBUG_BASE_ADDR + 0x00001000)
43#define MX53_ETM_BASE_ADDR (MX53_DEBUG_BASE_ADDR + 0x00002000)
44#define MX53_TPIU_BASE_ADDR (MX53_DEBUG_BASE_ADDR + 0x00003000)
45#define MX53_CTI0_BASE_ADDR (MX53_DEBUG_BASE_ADDR + 0x00004000)
46#define MX53_CTI1_BASE_ADDR (MX53_DEBUG_BASE_ADDR + 0x00005000)
47#define MX53_CTI2_BASE_ADDR (MX53_DEBUG_BASE_ADDR + 0x00006000)
48#define MX53_CTI3_BASE_ADDR (MX53_DEBUG_BASE_ADDR + 0x00007000)
49#define MX53_CORTEX_DBG_BASE_ADDR (MX53_DEBUG_BASE_ADDR + 0x00008000)
50
51/*
52 * SPBA global module enabled #0
53 */
54#define MX53_SPBA0_BASE_ADDR 0x50000000
55#define MX53_SPBA0_SIZE SZ_1M
56
57#define MX53_ESDHC1_BASE_ADDR (MX53_SPBA0_BASE_ADDR + 0x00004000)
58#define MX53_ESDHC2_BASE_ADDR (MX53_SPBA0_BASE_ADDR + 0x00008000)
59#define MX53_UART3_BASE_ADDR (MX53_SPBA0_BASE_ADDR + 0x0000C000)
60#define MX53_ECSPI1_BASE_ADDR (MX53_SPBA0_BASE_ADDR + 0x00010000)
61#define MX53_SSI2_BASE_ADDR (MX53_SPBA0_BASE_ADDR + 0x00014000)
62#define MX53_ESDHC3_BASE_ADDR (MX53_SPBA0_BASE_ADDR + 0x00020000)
63#define MX53_ESDHC4_BASE_ADDR (MX53_SPBA0_BASE_ADDR + 0x00024000)
64#define MX53_SPDIF_BASE_ADDR (MX53_SPBA0_BASE_ADDR + 0x00028000)
65#define MX53_ASRC_BASE_ADDR (MX53_SPBA0_BASE_ADDR + 0x0002C000)
66#define MX53_ATA_DMA_BASE_ADDR (MX53_SPBA0_BASE_ADDR + 0x00030000)
67#define MX53_SLIM_DMA_BASE_ADDR (MX53_SPBA0_BASE_ADDR + 0x00034000)
68#define MX53_HSI2C_DMA_BASE_ADDR (MX53_SPBA0_BASE_ADDR + 0x00038000)
69#define MX53_SPBA_CTRL_BASE_ADDR (MX53_SPBA0_BASE_ADDR + 0x0003C000)
70
71/*
72 * AIPS 1
73 */
74#define MX53_AIPS1_BASE_ADDR 0x53F00000
75#define MX53_AIPS1_SIZE SZ_1M
76
77#define MX53_OTG_BASE_ADDR (MX53_AIPS1_BASE_ADDR + 0x00080000)
78#define MX53_GPIO1_BASE_ADDR (MX53_AIPS1_BASE_ADDR + 0x00084000)
79#define MX53_GPIO2_BASE_ADDR (MX53_AIPS1_BASE_ADDR + 0x00088000)
80#define MX53_GPIO3_BASE_ADDR (MX53_AIPS1_BASE_ADDR + 0x0008C000)
81#define MX53_GPIO4_BASE_ADDR (MX53_AIPS1_BASE_ADDR + 0x00090000)
82#define MX53_KPP_BASE_ADDR (MX53_AIPS1_BASE_ADDR + 0x00094000)
83#define MX53_WDOG1_BASE_ADDR (MX53_AIPS1_BASE_ADDR + 0x00098000)
84#define MX53_WDOG2_BASE_ADDR (MX53_AIPS1_BASE_ADDR + 0x0009C000)
85#define MX53_GPT1_BASE_ADDR (MX53_AIPS1_BASE_ADDR + 0x000A0000)
86#define MX53_SRTC_BASE_ADDR (MX53_AIPS1_BASE_ADDR + 0x000A4000)
87#define MX53_IOMUXC_BASE_ADDR (MX53_AIPS1_BASE_ADDR + 0x000A8000)
88#define MX53_EPIT1_BASE_ADDR (MX53_AIPS1_BASE_ADDR + 0x000AC000)
89#define MX53_EPIT2_BASE_ADDR (MX53_AIPS1_BASE_ADDR + 0x000B0000)
90#define MX53_PWM1_BASE_ADDR (MX53_AIPS1_BASE_ADDR + 0x000B4000)
91#define MX53_PWM2_BASE_ADDR (MX53_AIPS1_BASE_ADDR + 0x000B8000)
92#define MX53_UART1_BASE_ADDR (MX53_AIPS1_BASE_ADDR + 0x000BC000)
93#define MX53_UART2_BASE_ADDR (MX53_AIPS1_BASE_ADDR + 0x000C0000)
94#define MX53_SRC_BASE_ADDR (MX53_AIPS1_BASE_ADDR + 0x000D0000)
95#define MX53_CCM_BASE_ADDR (MX53_AIPS1_BASE_ADDR + 0x000D4000)
96#define MX53_GPC_BASE_ADDR (MX53_AIPS1_BASE_ADDR + 0x000D8000)
97#define MX53_GPIO5_BASE_ADDR (MX53_AIPS1_BASE_ADDR + 0x000DC000)
98#define MX53_GPIO6_BASE_ADDR (MX53_AIPS1_BASE_ADDR + 0x000E0000)
99#define MX53_GPIO7_BASE_ADDR (MX53_AIPS1_BASE_ADDR + 0x000E4000)
100#define MX53_ATA_BASE_ADDR (MX53_AIPS1_BASE_ADDR + 0x000E8000)
101#define MX53_I2C3_BASE_ADDR (MX53_AIPS1_BASE_ADDR + 0x000EC000)
102#define MX53_UART4_BASE_ADDR (MX53_AIPS1_BASE_ADDR + 0x000F0000)
103
104/*
105 * AIPS 2
106 */
107#define MX53_AIPS2_BASE_ADDR 0x63F00000
108#define MX53_AIPS2_SIZE SZ_1M
109
110#define MX53_PLL1_BASE_ADDR (MX53_AIPS2_BASE_ADDR + 0x00080000)
111#define MX53_PLL2_BASE_ADDR (MX53_AIPS2_BASE_ADDR + 0x00084000)
112#define MX53_PLL3_BASE_ADDR (MX53_AIPS2_BASE_ADDR + 0x00088000)
113#define MX53_PLL4_BASE_ADDR (MX53_AIPS2_BASE_ADDR + 0x0008C000)
114#define MX53_UART5_BASE_ADDR (MX53_AIPS2_BASE_ADDR + 0x00090000)
115#define MX53_AHBMAX_BASE_ADDR (MX53_AIPS2_BASE_ADDR + 0x00094000)
116#define MX53_IIM_BASE_ADDR (MX53_AIPS2_BASE_ADDR + 0x00098000)
117#define MX53_CSU_BASE_ADDR (MX53_AIPS2_BASE_ADDR + 0x0009C000)
118#define MX53_ARM_BASE_ADDR (MX53_AIPS2_BASE_ADDR + 0x000A0000)
119#define MX53_OWIRE_BASE_ADDR (MX53_AIPS2_BASE_ADDR + 0x000A4000)
120#define MX53_FIRI_BASE_ADDR (MX53_AIPS2_BASE_ADDR + 0x000A8000)
121#define MX53_ECSPI2_BASE_ADDR (MX53_AIPS2_BASE_ADDR + 0x000AC000)
122#define MX53_SDMA_BASE_ADDR (MX53_AIPS2_BASE_ADDR + 0x000B0000)
123#define MX53_SCC_BASE_ADDR (MX53_AIPS2_BASE_ADDR + 0x000B4000)
124#define MX53_ROMCP_BASE_ADDR (MX53_AIPS2_BASE_ADDR + 0x000B8000)
125#define MX53_RTIC_BASE_ADDR (MX53_AIPS2_BASE_ADDR + 0x000BC000)
126#define MX53_CSPI_BASE_ADDR (MX53_AIPS2_BASE_ADDR + 0x000C0000)
127#define MX53_I2C2_BASE_ADDR (MX53_AIPS2_BASE_ADDR + 0x000C4000)
128#define MX53_I2C1_BASE_ADDR (MX53_AIPS2_BASE_ADDR + 0x000C8000)
129#define MX53_SSI1_BASE_ADDR (MX53_AIPS2_BASE_ADDR + 0x000CC000)
130#define MX53_AUDMUX_BASE_ADDR (MX53_AIPS2_BASE_ADDR + 0x000D0000)
131#define MX53_RTC_BASE_ADDR (MX53_AIPS2_BASE_ADDR + 0x000D4000)
132#define MX53_M4IF_BASE_ADDR (MX53_AIPS2_BASE_ADDR + 0x000D8000)
133#define MX53_ESDCTL_BASE_ADDR (MX53_AIPS2_BASE_ADDR + 0x000D9000)
134#define MX53_WEIM_BASE_ADDR (MX53_AIPS2_BASE_ADDR + 0x000DA000)
135#define MX53_NFC_BASE_ADDR (MX53_AIPS2_BASE_ADDR + 0x000DB000)
136#define MX53_EMI_BASE_ADDR (MX53_AIPS2_BASE_ADDR + 0x000DBF00)
137#define MX53_MIPI_HSC_BASE_ADDR (MX53_AIPS2_BASE_ADDR + 0x000DC000)
138#define MX53_MLB_BASE_ADDR (MX53_AIPS2_BASE_ADDR + 0x000E4000)
139#define MX53_SSI3_BASE_ADDR (MX53_AIPS2_BASE_ADDR + 0x000E8000)
140#define MX53_FEC_BASE_ADDR (MX53_AIPS2_BASE_ADDR + 0x000EC000)
141#define MX53_TVE_BASE_ADDR (MX53_AIPS2_BASE_ADDR + 0x000F0000)
142#define MX53_VPU_BASE_ADDR (MX53_AIPS2_BASE_ADDR + 0x000F4000)
143#define MX53_SAHARA_BASE_ADDR (MX53_AIPS2_BASE_ADDR + 0x000F8000)
144#define MX53_PTP_BASE_ADDR (MX53_AIPS2_BASE_ADDR + 0x000FC000)
145
146/*
147 * Memory regions and CS
148 */
149#define MX53_CSD0_BASE_ADDR 0x70000000
150#define MX53_CSD1_BASE_ADDR 0xB0000000
151#define MX53_CS0_BASE_ADDR 0xF0000000
152#define MX53_CS1_32MB_BASE_ADDR 0xF2000000
153#define MX53_CS1_64MB_BASE_ADDR 0xF4000000
154#define MX53_CS2_64MB_BASE_ADDR 0xF4000000
155#define MX53_CS2_96MB_BASE_ADDR 0xF6000000
156#define MX53_CS3_BASE_ADDR 0xF6000000
157
158#define MX53_IO_P2V(x) IMX_IO_P2V(x)
159#define MX53_IO_ADDRESS(x) IOMEM(MX53_IO_P2V(x))
160
161/*
162 * defines for SPBA modules
163 */
164#define MX53_SPBA_SDHC1 0x04
165#define MX53_SPBA_SDHC2 0x08
166#define MX53_SPBA_UART3 0x0C
167#define MX53_SPBA_CSPI1 0x10
168#define MX53_SPBA_SSI2 0x14
169#define MX53_SPBA_SDHC3 0x20
170#define MX53_SPBA_SDHC4 0x24
171#define MX53_SPBA_SPDIF 0x28
172#define MX53_SPBA_ATA 0x30
173#define MX53_SPBA_SLIM 0x34
174#define MX53_SPBA_HSI2C 0x38
175#define MX53_SPBA_CTRL 0x3C
176
177/*
178 * DMA request assignments
179 */
180#define MX53_DMA_REQ_SSI3_TX0 47
181#define MX53_DMA_REQ_SSI3_RX0 46
182#define MX53_DMA_REQ_SSI3_TX1 45
183#define MX53_DMA_REQ_SSI3_RX1 44
184#define MX53_DMA_REQ_UART3_TX 43
185#define MX53_DMA_REQ_UART3_RX 42
186#define MX53_DMA_REQ_ESAI_TX 41
187#define MX53_DMA_REQ_ESAI_RX 40
188#define MX53_DMA_REQ_CSPI_TX 39
189#define MX53_DMA_REQ_CSPI_RX 38
190#define MX53_DMA_REQ_ASRC_DMA6 37
191#define MX53_DMA_REQ_ASRC_DMA5 36
192#define MX53_DMA_REQ_ASRC_DMA4 35
193#define MX53_DMA_REQ_ASRC_DMA3 34
194#define MX53_DMA_REQ_ASRC_DMA2 33
195#define MX53_DMA_REQ_ASRC_DMA1 32
196#define MX53_DMA_REQ_EMI_WR 31
197#define MX53_DMA_REQ_EMI_RD 30
198#define MX53_DMA_REQ_SSI1_TX0 29
199#define MX53_DMA_REQ_SSI1_RX0 28
200#define MX53_DMA_REQ_SSI1_TX1 27
201#define MX53_DMA_REQ_SSI1_RX1 26
202#define MX53_DMA_REQ_SSI2_TX0 25
203#define MX53_DMA_REQ_SSI2_RX0 24
204#define MX53_DMA_REQ_SSI2_TX1 23
205#define MX53_DMA_REQ_SSI2_RX1 22
206#define MX53_DMA_REQ_I2C2_SDHC2 21
207#define MX53_DMA_REQ_I2C1_SDHC1 20
208#define MX53_DMA_REQ_UART1_TX 19
209#define MX53_DMA_REQ_UART1_RX 18
210#define MX53_DMA_REQ_UART5_TX 17
211#define MX53_DMA_REQ_UART5_RX 16
212#define MX53_DMA_REQ_SPDIF_TX 15
213#define MX53_DMA_REQ_SPDIF_RX 14
214#define MX53_DMA_REQ_UART2_FIRI_TX 13
215#define MX53_DMA_REQ_UART2_FIRI_RX 12
216#define MX53_DMA_REQ_SDHC4 11
217#define MX53_DMA_REQ_I2C3_SDHC3 10
218#define MX53_DMA_REQ_CSPI2_TX 9
219#define MX53_DMA_REQ_CSPI2_RX 8
220#define MX53_DMA_REQ_CSPI1_TX 7
221#define MX53_DMA_REQ_CSPI1_RX 6
222#define MX53_DMA_REQ_IPU 5
223#define MX53_DMA_REQ_ATA_TX_END 4
224#define MX53_DMA_REQ_ATA_UART4_TX 3
225#define MX53_DMA_REQ_ATA_UART4_RX 2
226#define MX53_DMA_REQ_GPC 1
227#define MX53_DMA_REQ_VPU 0
228
229/*
230 * Interrupt numbers
231 */
232#include <asm/irq.h>
233#define MX53_INT_RESV0 (NR_IRQS_LEGACY + 0)
234#define MX53_INT_ESDHC1 (NR_IRQS_LEGACY + 1)
235#define MX53_INT_ESDHC2 (NR_IRQS_LEGACY + 2)
236#define MX53_INT_ESDHC3 (NR_IRQS_LEGACY + 3)
237#define MX53_INT_ESDHC4 (NR_IRQS_LEGACY + 4)
238#define MX53_INT_DAP (NR_IRQS_LEGACY + 5)
239#define MX53_INT_SDMA (NR_IRQS_LEGACY + 6)
240#define MX53_INT_IOMUX (NR_IRQS_LEGACY + 7)
241#define MX53_INT_NFC (NR_IRQS_LEGACY + 8)
242#define MX53_INT_VPU (NR_IRQS_LEGACY + 9)
243#define MX53_INT_IPU_ERR (NR_IRQS_LEGACY + 10)
244#define MX53_INT_IPU_SYN (NR_IRQS_LEGACY + 11)
245#define MX53_INT_GPU (NR_IRQS_LEGACY + 12)
246#define MX53_INT_UART4 (NR_IRQS_LEGACY + 13)
247#define MX53_INT_USB_H1 (NR_IRQS_LEGACY + 14)
248#define MX53_INT_EMI (NR_IRQS_LEGACY + 15)
249#define MX53_INT_USB_H2 (NR_IRQS_LEGACY + 16)
250#define MX53_INT_USB_H3 (NR_IRQS_LEGACY + 17)
251#define MX53_INT_USB_OTG (NR_IRQS_LEGACY + 18)
252#define MX53_INT_SAHARA_H0 (NR_IRQS_LEGACY + 19)
253#define MX53_INT_SAHARA_H1 (NR_IRQS_LEGACY + 20)
254#define MX53_INT_SCC_SMN (NR_IRQS_LEGACY + 21)
255#define MX53_INT_SCC_STZ (NR_IRQS_LEGACY + 22)
256#define MX53_INT_SCC_SCM (NR_IRQS_LEGACY + 23)
257#define MX53_INT_SRTC_NTZ (NR_IRQS_LEGACY + 24)
258#define MX53_INT_SRTC_TZ (NR_IRQS_LEGACY + 25)
259#define MX53_INT_RTIC (NR_IRQS_LEGACY + 26)
260#define MX53_INT_CSU (NR_IRQS_LEGACY + 27)
261#define MX53_INT_SATA (NR_IRQS_LEGACY + 28)
262#define MX53_INT_SSI1 (NR_IRQS_LEGACY + 29)
263#define MX53_INT_SSI2 (NR_IRQS_LEGACY + 30)
264#define MX53_INT_UART1 (NR_IRQS_LEGACY + 31)
265#define MX53_INT_UART2 (NR_IRQS_LEGACY + 32)
266#define MX53_INT_UART3 (NR_IRQS_LEGACY + 33)
267#define MX53_INT_RTC (NR_IRQS_LEGACY + 34)
268#define MX53_INT_PTP (NR_IRQS_LEGACY + 35)
269#define MX53_INT_ECSPI1 (NR_IRQS_LEGACY + 36)
270#define MX53_INT_ECSPI2 (NR_IRQS_LEGACY + 37)
271#define MX53_INT_CSPI (NR_IRQS_LEGACY + 38)
272#define MX53_INT_GPT (NR_IRQS_LEGACY + 39)
273#define MX53_INT_EPIT1 (NR_IRQS_LEGACY + 40)
274#define MX53_INT_EPIT2 (NR_IRQS_LEGACY + 41)
275#define MX53_INT_GPIO1_INT7 (NR_IRQS_LEGACY + 42)
276#define MX53_INT_GPIO1_INT6 (NR_IRQS_LEGACY + 43)
277#define MX53_INT_GPIO1_INT5 (NR_IRQS_LEGACY + 44)
278#define MX53_INT_GPIO1_INT4 (NR_IRQS_LEGACY + 45)
279#define MX53_INT_GPIO1_INT3 (NR_IRQS_LEGACY + 46)
280#define MX53_INT_GPIO1_INT2 (NR_IRQS_LEGACY + 47)
281#define MX53_INT_GPIO1_INT1 (NR_IRQS_LEGACY + 48)
282#define MX53_INT_GPIO1_INT0 (NR_IRQS_LEGACY + 49)
283#define MX53_INT_GPIO1_LOW (NR_IRQS_LEGACY + 50)
284#define MX53_INT_GPIO1_HIGH (NR_IRQS_LEGACY + 51)
285#define MX53_INT_GPIO2_LOW (NR_IRQS_LEGACY + 52)
286#define MX53_INT_GPIO2_HIGH (NR_IRQS_LEGACY + 53)
287#define MX53_INT_GPIO3_LOW (NR_IRQS_LEGACY + 54)
288#define MX53_INT_GPIO3_HIGH (NR_IRQS_LEGACY + 55)
289#define MX53_INT_GPIO4_LOW (NR_IRQS_LEGACY + 56)
290#define MX53_INT_GPIO4_HIGH (NR_IRQS_LEGACY + 57)
291#define MX53_INT_WDOG1 (NR_IRQS_LEGACY + 58)
292#define MX53_INT_WDOG2 (NR_IRQS_LEGACY + 59)
293#define MX53_INT_KPP (NR_IRQS_LEGACY + 60)
294#define MX53_INT_PWM1 (NR_IRQS_LEGACY + 61)
295#define MX53_INT_I2C1 (NR_IRQS_LEGACY + 62)
296#define MX53_INT_I2C2 (NR_IRQS_LEGACY + 63)
297#define MX53_INT_I2C3 (NR_IRQS_LEGACY + 64)
298#define MX53_INT_MLB (NR_IRQS_LEGACY + 65)
299#define MX53_INT_ASRC (NR_IRQS_LEGACY + 66)
300#define MX53_INT_SPDIF (NR_IRQS_LEGACY + 67)
301#define MX53_INT_SIM_DAT (NR_IRQS_LEGACY + 68)
302#define MX53_INT_IIM (NR_IRQS_LEGACY + 69)
303#define MX53_INT_ATA (NR_IRQS_LEGACY + 70)
304#define MX53_INT_CCM1 (NR_IRQS_LEGACY + 71)
305#define MX53_INT_CCM2 (NR_IRQS_LEGACY + 72)
306#define MX53_INT_GPC1 (NR_IRQS_LEGACY + 73)
307#define MX53_INT_GPC2 (NR_IRQS_LEGACY + 74)
308#define MX53_INT_SRC (NR_IRQS_LEGACY + 75)
309#define MX53_INT_NM (NR_IRQS_LEGACY + 76)
310#define MX53_INT_PMU (NR_IRQS_LEGACY + 77)
311#define MX53_INT_CTI_IRQ (NR_IRQS_LEGACY + 78)
312#define MX53_INT_CTI1_TG0 (NR_IRQS_LEGACY + 79)
313#define MX53_INT_CTI1_TG1 (NR_IRQS_LEGACY + 80)
314#define MX53_INT_ESAI (NR_IRQS_LEGACY + 81)
315#define MX53_INT_CAN1 (NR_IRQS_LEGACY + 82)
316#define MX53_INT_CAN2 (NR_IRQS_LEGACY + 83)
317#define MX53_INT_GPU2_IRQ (NR_IRQS_LEGACY + 84)
318#define MX53_INT_GPU2_BUSY (NR_IRQS_LEGACY + 85)
319#define MX53_INT_UART5 (NR_IRQS_LEGACY + 86)
320#define MX53_INT_FEC (NR_IRQS_LEGACY + 87)
321#define MX53_INT_OWIRE (NR_IRQS_LEGACY + 88)
322#define MX53_INT_CTI1_TG2 (NR_IRQS_LEGACY + 89)
323#define MX53_INT_SJC (NR_IRQS_LEGACY + 90)
324#define MX53_INT_TVE (NR_IRQS_LEGACY + 92)
325#define MX53_INT_FIRI (NR_IRQS_LEGACY + 93)
326#define MX53_INT_PWM2 (NR_IRQS_LEGACY + 94)
327#define MX53_INT_SLIM_EXP (NR_IRQS_LEGACY + 95)
328#define MX53_INT_SSI3 (NR_IRQS_LEGACY + 96)
329#define MX53_INT_EMI_BOOT (NR_IRQS_LEGACY + 97)
330#define MX53_INT_CTI1_TG3 (NR_IRQS_LEGACY + 98)
331#define MX53_INT_SMC_RX (NR_IRQS_LEGACY + 99)
332#define MX53_INT_VPU_IDLE (NR_IRQS_LEGACY + 100)
333#define MX53_INT_EMI_NFC (NR_IRQS_LEGACY + 101)
334#define MX53_INT_GPU_IDLE (NR_IRQS_LEGACY + 102)
335#define MX53_INT_GPIO5_LOW (NR_IRQS_LEGACY + 103)
336#define MX53_INT_GPIO5_HIGH (NR_IRQS_LEGACY + 104)
337#define MX53_INT_GPIO6_LOW (NR_IRQS_LEGACY + 105)
338#define MX53_INT_GPIO6_HIGH (NR_IRQS_LEGACY + 106)
339#define MX53_INT_GPIO7_LOW (NR_IRQS_LEGACY + 107)
340#define MX53_INT_GPIO7_HIGH (NR_IRQS_LEGACY + 108)
341
342#endif /* ifndef __MACH_MX53_H__ */
diff --git a/arch/arm/mach-imx/mxc.h b/arch/arm/mach-imx/mxc.h
index 75d6a37e1ae4..a39b69ef4301 100644
--- a/arch/arm/mach-imx/mxc.h
+++ b/arch/arm/mach-imx/mxc.h
@@ -154,10 +154,17 @@ extern unsigned int __mxc_cpu_type;
154#endif 154#endif
155 155
156#ifndef __ASSEMBLY__ 156#ifndef __ASSEMBLY__
157#ifdef CONFIG_SOC_IMX6SL
157static inline bool cpu_is_imx6sl(void) 158static inline bool cpu_is_imx6sl(void)
158{ 159{
159 return __mxc_cpu_type == MXC_CPU_IMX6SL; 160 return __mxc_cpu_type == MXC_CPU_IMX6SL;
160} 161}
162#else
163static inline bool cpu_is_imx6sl(void)
164{
165 return false;
166}
167#endif
161 168
162static inline bool cpu_is_imx6dl(void) 169static inline bool cpu_is_imx6dl(void)
163{ 170{
diff --git a/arch/arm/mach-imx/pm-imx5.c b/arch/arm/mach-imx/pm-imx5.c
index 58aeaf5baaf6..f1f80ab73e69 100644
--- a/arch/arm/mach-imx/pm-imx5.c
+++ b/arch/arm/mach-imx/pm-imx5.c
@@ -19,9 +19,26 @@
19 19
20#include "common.h" 20#include "common.h"
21#include "cpuidle.h" 21#include "cpuidle.h"
22#include "crm-regs-imx5.h"
23#include "hardware.h" 22#include "hardware.h"
24 23
24#define MXC_CCM_CLPCR 0x54
25#define MXC_CCM_CLPCR_LPM_OFFSET 0
26#define MXC_CCM_CLPCR_LPM_MASK 0x3
27#define MXC_CCM_CLPCR_STBY_COUNT_OFFSET 9
28#define MXC_CCM_CLPCR_VSTBY (0x1 << 8)
29#define MXC_CCM_CLPCR_SBYOS (0x1 << 6)
30
31#define MXC_CORTEXA8_PLAT_LPC 0xc
32#define MXC_CORTEXA8_PLAT_LPC_DSM (1 << 0)
33#define MXC_CORTEXA8_PLAT_LPC_DBG_DSM (1 << 1)
34
35#define MXC_SRPG_NEON_SRPGCR 0x280
36#define MXC_SRPG_ARM_SRPGCR 0x2a0
37#define MXC_SRPG_EMPGC0_SRPGCR 0x2c0
38#define MXC_SRPG_EMPGC1_SRPGCR 0x2d0
39
40#define MXC_SRPGCR_PCR 1
41
25/* 42/*
26 * The WAIT_UNCLOCKED_POWER_OFF state only requires <= 500ns to exit. 43 * The WAIT_UNCLOCKED_POWER_OFF state only requires <= 500ns to exit.
27 * This is also the lowest power state possible without affecting 44 * This is also the lowest power state possible without affecting
@@ -32,6 +49,30 @@
32 */ 49 */
33#define IMX5_DEFAULT_CPU_IDLE_STATE WAIT_UNCLOCKED_POWER_OFF 50#define IMX5_DEFAULT_CPU_IDLE_STATE WAIT_UNCLOCKED_POWER_OFF
34 51
52struct imx5_pm_data {
53 phys_addr_t cortex_addr;
54 phys_addr_t gpc_addr;
55};
56
57static const struct imx5_pm_data imx51_pm_data __initconst = {
58 .cortex_addr = 0x83fa0000,
59 .gpc_addr = 0x73fd8000,
60};
61
62static const struct imx5_pm_data imx53_pm_data __initconst = {
63 .cortex_addr = 0x63fa0000,
64 .gpc_addr = 0x53fd8000,
65};
66
67static void __iomem *ccm_base;
68static void __iomem *cortex_base;
69static void __iomem *gpc_base;
70
71void __init imx5_pm_set_ccm_base(void __iomem *base)
72{
73 ccm_base = base;
74}
75
35/* 76/*
36 * set cpu low power mode before WFI instruction. This function is called 77 * set cpu low power mode before WFI instruction. This function is called
37 * mx5 because it can be used for mx51, and mx53. 78 * mx5 because it can be used for mx51, and mx53.
@@ -43,12 +84,16 @@ static void mx5_cpu_lp_set(enum mxc_cpu_pwr_mode mode)
43 int stop_mode = 0; 84 int stop_mode = 0;
44 85
45 /* always allow platform to issue a deep sleep mode request */ 86 /* always allow platform to issue a deep sleep mode request */
46 plat_lpc = __raw_readl(MXC_CORTEXA8_PLAT_LPC) & 87 plat_lpc = __raw_readl(cortex_base + MXC_CORTEXA8_PLAT_LPC) &
47 ~(MXC_CORTEXA8_PLAT_LPC_DSM); 88 ~(MXC_CORTEXA8_PLAT_LPC_DSM);
48 ccm_clpcr = __raw_readl(MXC_CCM_CLPCR) & ~(MXC_CCM_CLPCR_LPM_MASK); 89 ccm_clpcr = __raw_readl(ccm_base + MXC_CCM_CLPCR) &
49 arm_srpgcr = __raw_readl(MXC_SRPG_ARM_SRPGCR) & ~(MXC_SRPGCR_PCR); 90 ~(MXC_CCM_CLPCR_LPM_MASK);
50 empgc0 = __raw_readl(MXC_SRPG_EMPGC0_SRPGCR) & ~(MXC_SRPGCR_PCR); 91 arm_srpgcr = __raw_readl(gpc_base + MXC_SRPG_ARM_SRPGCR) &
51 empgc1 = __raw_readl(MXC_SRPG_EMPGC1_SRPGCR) & ~(MXC_SRPGCR_PCR); 92 ~(MXC_SRPGCR_PCR);
93 empgc0 = __raw_readl(gpc_base + MXC_SRPG_EMPGC0_SRPGCR) &
94 ~(MXC_SRPGCR_PCR);
95 empgc1 = __raw_readl(gpc_base + MXC_SRPG_EMPGC1_SRPGCR) &
96 ~(MXC_SRPGCR_PCR);
52 97
53 switch (mode) { 98 switch (mode) {
54 case WAIT_CLOCKED: 99 case WAIT_CLOCKED:
@@ -82,17 +127,17 @@ static void mx5_cpu_lp_set(enum mxc_cpu_pwr_mode mode)
82 return; 127 return;
83 } 128 }
84 129
85 __raw_writel(plat_lpc, MXC_CORTEXA8_PLAT_LPC); 130 __raw_writel(plat_lpc, cortex_base + MXC_CORTEXA8_PLAT_LPC);
86 __raw_writel(ccm_clpcr, MXC_CCM_CLPCR); 131 __raw_writel(ccm_clpcr, ccm_base + MXC_CCM_CLPCR);
87 __raw_writel(arm_srpgcr, MXC_SRPG_ARM_SRPGCR); 132 __raw_writel(arm_srpgcr, gpc_base + MXC_SRPG_ARM_SRPGCR);
88 __raw_writel(arm_srpgcr, MXC_SRPG_NEON_SRPGCR); 133 __raw_writel(arm_srpgcr, gpc_base + MXC_SRPG_NEON_SRPGCR);
89 134
90 if (stop_mode) { 135 if (stop_mode) {
91 empgc0 |= MXC_SRPGCR_PCR; 136 empgc0 |= MXC_SRPGCR_PCR;
92 empgc1 |= MXC_SRPGCR_PCR; 137 empgc1 |= MXC_SRPGCR_PCR;
93 138
94 __raw_writel(empgc0, MXC_SRPG_EMPGC0_SRPGCR); 139 __raw_writel(empgc0, gpc_base + MXC_SRPG_EMPGC0_SRPGCR);
95 __raw_writel(empgc1, MXC_SRPG_EMPGC1_SRPGCR); 140 __raw_writel(empgc1, gpc_base + MXC_SRPG_EMPGC1_SRPGCR);
96 } 141 }
97} 142}
98 143
@@ -114,8 +159,8 @@ static int mx5_suspend_enter(suspend_state_t state)
114 flush_cache_all(); 159 flush_cache_all();
115 160
116 /*clear the EMPGC0/1 bits */ 161 /*clear the EMPGC0/1 bits */
117 __raw_writel(0, MXC_SRPG_EMPGC0_SRPGCR); 162 __raw_writel(0, gpc_base + MXC_SRPG_EMPGC0_SRPGCR);
118 __raw_writel(0, MXC_SRPG_EMPGC1_SRPGCR); 163 __raw_writel(0, gpc_base + MXC_SRPG_EMPGC1_SRPGCR);
119 } 164 }
120 cpu_do_idle(); 165 cpu_do_idle();
121 166
@@ -149,7 +194,7 @@ static void imx5_pm_idle(void)
149 imx5_cpu_do_idle(); 194 imx5_cpu_do_idle();
150} 195}
151 196
152static int __init imx5_pm_common_init(void) 197static int __init imx5_pm_common_init(const struct imx5_pm_data *data)
153{ 198{
154 int ret; 199 int ret;
155 struct clk *gpc_dvfs_clk = clk_get(NULL, "gpc_dvfs"); 200 struct clk *gpc_dvfs_clk = clk_get(NULL, "gpc_dvfs");
@@ -163,15 +208,28 @@ static int __init imx5_pm_common_init(void)
163 208
164 arm_pm_idle = imx5_pm_idle; 209 arm_pm_idle = imx5_pm_idle;
165 210
211 cortex_base = ioremap(data->cortex_addr, SZ_16K);
212 gpc_base = ioremap(data->gpc_addr, SZ_16K);
213 WARN_ON(!ccm_base || !cortex_base || !gpc_base);
214
166 /* Set the registers to the default cpu idle state. */ 215 /* Set the registers to the default cpu idle state. */
167 mx5_cpu_lp_set(IMX5_DEFAULT_CPU_IDLE_STATE); 216 mx5_cpu_lp_set(IMX5_DEFAULT_CPU_IDLE_STATE);
168 217
169 return imx5_cpuidle_init(); 218 ret = imx5_cpuidle_init();
219 if (ret)
220 pr_warn("%s: cpuidle init failed %d\n", __func__, ret);
221
222 suspend_set_ops(&mx5_suspend_ops);
223
224 return 0;
225}
226
227void __init imx51_pm_init(void)
228{
229 imx5_pm_common_init(&imx51_pm_data);
170} 230}
171 231
172void __init imx5_pm_init(void) 232void __init imx53_pm_init(void)
173{ 233{
174 int ret = imx5_pm_common_init(); 234 imx5_pm_common_init(&imx53_pm_data);
175 if (!ret)
176 suspend_set_ops(&mx5_suspend_ops);
177} 235}
diff --git a/arch/arm/mach-imx/pm-imx6.c b/arch/arm/mach-imx/pm-imx6.c
index 9392a8f4ef24..5c3af8f993d0 100644
--- a/arch/arm/mach-imx/pm-imx6.c
+++ b/arch/arm/mach-imx/pm-imx6.c
@@ -129,6 +129,14 @@ static const u32 imx6sl_mmdc_io_offset[] __initconst = {
129 0x330, 0x334, 0x320, /* SDCKE0, SDCKE1, RESET */ 129 0x330, 0x334, 0x320, /* SDCKE0, SDCKE1, RESET */
130}; 130};
131 131
132static const u32 imx6sx_mmdc_io_offset[] __initconst = {
133 0x2ec, 0x2f0, 0x2f4, 0x2f8, /* DQM0 ~ DQM3 */
134 0x60c, 0x610, 0x61c, 0x620, /* GPR_B0DS ~ GPR_B3DS */
135 0x300, 0x2fc, 0x32c, 0x5f4, /* CAS, RAS, SDCLK_0, GPR_ADDS */
136 0x310, 0x314, 0x5f8, 0x608, /* SODT0, SODT1, MODE_CTL, MODE */
137 0x330, 0x334, 0x338, 0x33c, /* SDQS0 ~ SDQS3 */
138};
139
132static const struct imx6_pm_socdata imx6q_pm_data __initconst = { 140static const struct imx6_pm_socdata imx6q_pm_data __initconst = {
133 .cpu_type = MXC_CPU_IMX6Q, 141 .cpu_type = MXC_CPU_IMX6Q,
134 .mmdc_compat = "fsl,imx6q-mmdc", 142 .mmdc_compat = "fsl,imx6q-mmdc",
@@ -159,6 +167,16 @@ static const struct imx6_pm_socdata imx6sl_pm_data __initconst = {
159 .mmdc_io_offset = imx6sl_mmdc_io_offset, 167 .mmdc_io_offset = imx6sl_mmdc_io_offset,
160}; 168};
161 169
170static const struct imx6_pm_socdata imx6sx_pm_data __initconst = {
171 .cpu_type = MXC_CPU_IMX6SX,
172 .mmdc_compat = "fsl,imx6sx-mmdc",
173 .src_compat = "fsl,imx6sx-src",
174 .iomuxc_compat = "fsl,imx6sx-iomuxc",
175 .gpc_compat = "fsl,imx6sx-gpc",
176 .mmdc_io_num = ARRAY_SIZE(imx6sx_mmdc_io_offset),
177 .mmdc_io_offset = imx6sx_mmdc_io_offset,
178};
179
162/* 180/*
163 * This structure is for passing necessary data for low level ocram 181 * This structure is for passing necessary data for low level ocram
164 * suspend code(arch/arm/mach-imx/suspend-imx6.S), if this struct 182 * suspend code(arch/arm/mach-imx/suspend-imx6.S), if this struct
@@ -181,11 +199,13 @@ struct imx6_cpu_pm_info {
181 u32 mmdc_io_val[MX6_MAX_MMDC_IO_NUM][2]; /* To save offset and value */ 199 u32 mmdc_io_val[MX6_MAX_MMDC_IO_NUM][2]; /* To save offset and value */
182} __aligned(8); 200} __aligned(8);
183 201
184void imx6q_set_int_mem_clk_lpm(void) 202void imx6q_set_int_mem_clk_lpm(bool enable)
185{ 203{
186 u32 val = readl_relaxed(ccm_base + CGPR); 204 u32 val = readl_relaxed(ccm_base + CGPR);
187 205
188 val |= BM_CGPR_INT_MEM_CLK_LPM; 206 val &= ~BM_CGPR_INT_MEM_CLK_LPM;
207 if (enable)
208 val |= BM_CGPR_INT_MEM_CLK_LPM;
189 writel_relaxed(val, ccm_base + CGPR); 209 writel_relaxed(val, ccm_base + CGPR);
190} 210}
191 211
@@ -254,6 +274,14 @@ int imx6q_set_lpm(enum mxc_cpu_pwr_mode mode)
254 break; 274 break;
255 case STOP_POWER_ON: 275 case STOP_POWER_ON:
256 val |= 0x2 << BP_CLPCR_LPM; 276 val |= 0x2 << BP_CLPCR_LPM;
277 val &= ~BM_CLPCR_VSTBY;
278 val &= ~BM_CLPCR_SBYOS;
279 if (cpu_is_imx6sl())
280 val |= BM_CLPCR_BYPASS_PMIC_READY;
281 if (cpu_is_imx6sl() || cpu_is_imx6sx())
282 val |= BM_CLPCR_BYP_MMDC_CH0_LPM_HS;
283 else
284 val |= BM_CLPCR_BYP_MMDC_CH1_LPM_HS;
257 break; 285 break;
258 case WAIT_UNCLOCKED_POWER_OFF: 286 case WAIT_UNCLOCKED_POWER_OFF:
259 val |= 0x1 << BP_CLPCR_LPM; 287 val |= 0x1 << BP_CLPCR_LPM;
@@ -265,12 +293,12 @@ int imx6q_set_lpm(enum mxc_cpu_pwr_mode mode)
265 val |= 0x3 << BP_CLPCR_STBY_COUNT; 293 val |= 0x3 << BP_CLPCR_STBY_COUNT;
266 val |= BM_CLPCR_VSTBY; 294 val |= BM_CLPCR_VSTBY;
267 val |= BM_CLPCR_SBYOS; 295 val |= BM_CLPCR_SBYOS;
268 if (cpu_is_imx6sl()) { 296 if (cpu_is_imx6sl())
269 val |= BM_CLPCR_BYPASS_PMIC_READY; 297 val |= BM_CLPCR_BYPASS_PMIC_READY;
298 if (cpu_is_imx6sl() || cpu_is_imx6sx())
270 val |= BM_CLPCR_BYP_MMDC_CH0_LPM_HS; 299 val |= BM_CLPCR_BYP_MMDC_CH0_LPM_HS;
271 } else { 300 else
272 val |= BM_CLPCR_BYP_MMDC_CH1_LPM_HS; 301 val |= BM_CLPCR_BYP_MMDC_CH1_LPM_HS;
273 }
274 break; 302 break;
275 default: 303 default:
276 return -EINVAL; 304 return -EINVAL;
@@ -314,8 +342,22 @@ static int imx6q_suspend_finish(unsigned long val)
314static int imx6q_pm_enter(suspend_state_t state) 342static int imx6q_pm_enter(suspend_state_t state)
315{ 343{
316 switch (state) { 344 switch (state) {
345 case PM_SUSPEND_STANDBY:
346 imx6q_set_lpm(STOP_POWER_ON);
347 imx6q_set_int_mem_clk_lpm(true);
348 imx_gpc_pre_suspend(false);
349 if (cpu_is_imx6sl())
350 imx6sl_set_wait_clk(true);
351 /* Zzz ... */
352 cpu_do_idle();
353 if (cpu_is_imx6sl())
354 imx6sl_set_wait_clk(false);
355 imx_gpc_post_resume();
356 imx6q_set_lpm(WAIT_CLOCKED);
357 break;
317 case PM_SUSPEND_MEM: 358 case PM_SUSPEND_MEM:
318 imx6q_set_lpm(STOP_POWER_OFF); 359 imx6q_set_lpm(STOP_POWER_OFF);
360 imx6q_set_int_mem_clk_lpm(false);
319 imx6q_enable_wb(true); 361 imx6q_enable_wb(true);
320 /* 362 /*
321 * For suspend into ocram, asm code already take care of 363 * For suspend into ocram, asm code already take care of
@@ -323,7 +365,7 @@ static int imx6q_pm_enter(suspend_state_t state)
323 */ 365 */
324 if (!imx6_suspend_in_ocram_fn) 366 if (!imx6_suspend_in_ocram_fn)
325 imx6q_enable_rbc(true); 367 imx6q_enable_rbc(true);
326 imx_gpc_pre_suspend(); 368 imx_gpc_pre_suspend(true);
327 imx_anatop_pre_suspend(); 369 imx_anatop_pre_suspend();
328 imx_set_cpu_jump(0, v7_cpu_resume); 370 imx_set_cpu_jump(0, v7_cpu_resume);
329 /* Zzz ... */ 371 /* Zzz ... */
@@ -334,6 +376,7 @@ static int imx6q_pm_enter(suspend_state_t state)
334 imx_gpc_post_resume(); 376 imx_gpc_post_resume();
335 imx6q_enable_rbc(false); 377 imx6q_enable_rbc(false);
336 imx6q_enable_wb(false); 378 imx6q_enable_wb(false);
379 imx6q_set_int_mem_clk_lpm(true);
337 imx6q_set_lpm(WAIT_CLOCKED); 380 imx6q_set_lpm(WAIT_CLOCKED);
338 break; 381 break;
339 default: 382 default:
@@ -343,9 +386,14 @@ static int imx6q_pm_enter(suspend_state_t state)
343 return 0; 386 return 0;
344} 387}
345 388
389static int imx6q_pm_valid(suspend_state_t state)
390{
391 return (state == PM_SUSPEND_STANDBY || state == PM_SUSPEND_MEM);
392}
393
346static const struct platform_suspend_ops imx6q_pm_ops = { 394static const struct platform_suspend_ops imx6q_pm_ops = {
347 .enter = imx6q_pm_enter, 395 .enter = imx6q_pm_enter,
348 .valid = suspend_valid_only_mem, 396 .valid = imx6q_pm_valid,
349}; 397};
350 398
351void __init imx6q_pm_set_ccm_base(void __iomem *base) 399void __init imx6q_pm_set_ccm_base(void __iomem *base)
@@ -549,3 +597,8 @@ void __init imx6sl_pm_init(void)
549{ 597{
550 imx6_pm_common_init(&imx6sl_pm_data); 598 imx6_pm_common_init(&imx6sl_pm_data);
551} 599}
600
601void __init imx6sx_pm_init(void)
602{
603 imx6_pm_common_init(&imx6sx_pm_data);
604}
diff --git a/arch/arm/mach-imx/system.c b/arch/arm/mach-imx/system.c
index 3b0733edb68c..d14c33fd6b03 100644
--- a/arch/arm/mach-imx/system.c
+++ b/arch/arm/mach-imx/system.c
@@ -42,7 +42,10 @@ void mxc_restart(enum reboot_mode mode, const char *cmd)
42{ 42{
43 unsigned int wcr_enable; 43 unsigned int wcr_enable;
44 44
45 if (wdog_clk) 45 if (!wdog_base)
46 goto reset_fallback;
47
48 if (!IS_ERR(wdog_clk))
46 clk_enable(wdog_clk); 49 clk_enable(wdog_clk);
47 50
48 if (cpu_is_mx1()) 51 if (cpu_is_mx1())
@@ -70,6 +73,7 @@ void mxc_restart(enum reboot_mode mode, const char *cmd)
70 /* delay to allow the serial port to show the message */ 73 /* delay to allow the serial port to show the message */
71 mdelay(50); 74 mdelay(50);
72 75
76reset_fallback:
73 /* we'll take a jump through zero as a poor second */ 77 /* we'll take a jump through zero as a poor second */
74 soft_restart(0); 78 soft_restart(0);
75} 79}
@@ -79,13 +83,10 @@ void __init mxc_arch_reset_init(void __iomem *base)
79 wdog_base = base; 83 wdog_base = base;
80 84
81 wdog_clk = clk_get_sys("imx2-wdt.0", NULL); 85 wdog_clk = clk_get_sys("imx2-wdt.0", NULL);
82 if (IS_ERR(wdog_clk)) { 86 if (IS_ERR(wdog_clk))
83 pr_warn("%s: failed to get wdog clock\n", __func__); 87 pr_warn("%s: failed to get wdog clock\n", __func__);
84 wdog_clk = NULL; 88 else
85 return; 89 clk_prepare(wdog_clk);
86 }
87
88 clk_prepare(wdog_clk);
89} 90}
90 91
91void __init mxc_arch_reset_init_dt(void) 92void __init mxc_arch_reset_init_dt(void)
@@ -97,13 +98,10 @@ void __init mxc_arch_reset_init_dt(void)
97 WARN_ON(!wdog_base); 98 WARN_ON(!wdog_base);
98 99
99 wdog_clk = of_clk_get(np, 0); 100 wdog_clk = of_clk_get(np, 0);
100 if (IS_ERR(wdog_clk)) { 101 if (IS_ERR(wdog_clk))
101 pr_warn("%s: failed to get wdog clock\n", __func__); 102 pr_warn("%s: failed to get wdog clock\n", __func__);
102 wdog_clk = NULL; 103 else
103 return; 104 clk_prepare(wdog_clk);
104 }
105
106 clk_prepare(wdog_clk);
107} 105}
108 106
109#ifdef CONFIG_CACHE_L2X0 107#ifdef CONFIG_CACHE_L2X0
diff --git a/arch/arm/mach-imx/time.c b/arch/arm/mach-imx/time.c
index bed081e58262..bf92e5a351c0 100644
--- a/arch/arm/mach-imx/time.c
+++ b/arch/arm/mach-imx/time.c
@@ -290,25 +290,20 @@ static int __init mxc_clockevent_init(struct clk *timer_clk)
290 return 0; 290 return 0;
291} 291}
292 292
293void __init mxc_timer_init(void __iomem *base, int irq) 293static void __init _mxc_timer_init(int irq,
294 struct clk *clk_per, struct clk *clk_ipg)
294{ 295{
295 uint32_t tctl_val; 296 uint32_t tctl_val;
296 struct clk *timer_clk;
297 struct clk *timer_ipg_clk;
298 297
299 timer_clk = clk_get_sys("imx-gpt.0", "per"); 298 if (IS_ERR(clk_per)) {
300 if (IS_ERR(timer_clk)) {
301 pr_err("i.MX timer: unable to get clk\n"); 299 pr_err("i.MX timer: unable to get clk\n");
302 return; 300 return;
303 } 301 }
304 302
305 timer_ipg_clk = clk_get_sys("imx-gpt.0", "ipg"); 303 if (!IS_ERR(clk_ipg))
306 if (!IS_ERR(timer_ipg_clk)) 304 clk_prepare_enable(clk_ipg);
307 clk_prepare_enable(timer_ipg_clk);
308
309 clk_prepare_enable(timer_clk);
310 305
311 timer_base = base; 306 clk_prepare_enable(clk_per);
312 307
313 /* 308 /*
314 * Initialise to a known state (all timers off, and timing reset) 309 * Initialise to a known state (all timers off, and timing reset)
@@ -325,21 +320,45 @@ void __init mxc_timer_init(void __iomem *base, int irq)
325 __raw_writel(tctl_val, timer_base + MXC_TCTL); 320 __raw_writel(tctl_val, timer_base + MXC_TCTL);
326 321
327 /* init and register the timer to the framework */ 322 /* init and register the timer to the framework */
328 mxc_clocksource_init(timer_clk); 323 mxc_clocksource_init(clk_per);
329 mxc_clockevent_init(timer_clk); 324 mxc_clockevent_init(clk_per);
330 325
331 /* Make irqs happen */ 326 /* Make irqs happen */
332 setup_irq(irq, &mxc_timer_irq); 327 setup_irq(irq, &mxc_timer_irq);
333} 328}
334 329
335void __init mxc_timer_init_dt(struct device_node *np) 330void __init mxc_timer_init(void __iomem *base, int irq)
336{ 331{
337 void __iomem *base; 332 struct clk *clk_per = clk_get_sys("imx-gpt.0", "per");
333 struct clk *clk_ipg = clk_get_sys("imx-gpt.0", "ipg");
334
335 timer_base = base;
336
337 _mxc_timer_init(irq, clk_per, clk_ipg);
338}
339
340static void __init mxc_timer_init_dt(struct device_node *np)
341{
342 struct clk *clk_per, *clk_ipg;
338 int irq; 343 int irq;
339 344
340 base = of_iomap(np, 0); 345 if (timer_base)
341 WARN_ON(!base); 346 return;
347
348 timer_base = of_iomap(np, 0);
349 WARN_ON(!timer_base);
342 irq = irq_of_parse_and_map(np, 0); 350 irq = irq_of_parse_and_map(np, 0);
343 351
344 mxc_timer_init(base, irq); 352 clk_per = of_clk_get_by_name(np, "per");
353 clk_ipg = of_clk_get_by_name(np, "ipg");
354
355 _mxc_timer_init(irq, clk_per, clk_ipg);
345} 356}
357CLOCKSOURCE_OF_DECLARE(mx1_timer, "fsl,imx1-gpt", mxc_timer_init_dt);
358CLOCKSOURCE_OF_DECLARE(mx25_timer, "fsl,imx25-gpt", mxc_timer_init_dt);
359CLOCKSOURCE_OF_DECLARE(mx50_timer, "fsl,imx50-gpt", mxc_timer_init_dt);
360CLOCKSOURCE_OF_DECLARE(mx51_timer, "fsl,imx51-gpt", mxc_timer_init_dt);
361CLOCKSOURCE_OF_DECLARE(mx53_timer, "fsl,imx53-gpt", mxc_timer_init_dt);
362CLOCKSOURCE_OF_DECLARE(mx6q_timer, "fsl,imx6q-gpt", mxc_timer_init_dt);
363CLOCKSOURCE_OF_DECLARE(mx6sl_timer, "fsl,imx6sl-gpt", mxc_timer_init_dt);
364CLOCKSOURCE_OF_DECLARE(mx6sx_timer, "fsl,imx6sx-gpt", mxc_timer_init_dt);
diff --git a/arch/arm/mach-imx/tzic.c b/arch/arm/mach-imx/tzic.c
index 7828af4b2022..1d4f384ca773 100644
--- a/arch/arm/mach-imx/tzic.c
+++ b/arch/arm/mach-imx/tzic.c
@@ -17,6 +17,7 @@
17#include <linux/io.h> 17#include <linux/io.h>
18#include <linux/irqdomain.h> 18#include <linux/irqdomain.h>
19#include <linux/of.h> 19#include <linux/of.h>
20#include <linux/of_address.h>
20 21
21#include <asm/mach/irq.h> 22#include <asm/mach/irq.h>
22#include <asm/exception.h> 23#include <asm/exception.h>
@@ -153,13 +154,16 @@ static void __exception_irq_entry tzic_handle_irq(struct pt_regs *regs)
153 * interrupts. It registers the interrupt enable and disable functions 154 * interrupts. It registers the interrupt enable and disable functions
154 * to the kernel for each interrupt source. 155 * to the kernel for each interrupt source.
155 */ 156 */
156void __init tzic_init_irq(void __iomem *irqbase) 157void __init tzic_init_irq(void)
157{ 158{
158 struct device_node *np; 159 struct device_node *np;
159 int irq_base; 160 int irq_base;
160 int i; 161 int i;
161 162
162 tzic_base = irqbase; 163 np = of_find_compatible_node(NULL, NULL, "fsl,tzic");
164 tzic_base = of_iomap(np, 0);
165 WARN_ON(!tzic_base);
166
163 /* put the TZIC into the reset value with 167 /* put the TZIC into the reset value with
164 * all interrupts disabled 168 * all interrupts disabled
165 */ 169 */
@@ -181,7 +185,6 @@ void __init tzic_init_irq(void __iomem *irqbase)
181 irq_base = irq_alloc_descs(-1, 0, TZIC_NUM_IRQS, numa_node_id()); 185 irq_base = irq_alloc_descs(-1, 0, TZIC_NUM_IRQS, numa_node_id());
182 WARN_ON(irq_base < 0); 186 WARN_ON(irq_base < 0);
183 187
184 np = of_find_compatible_node(NULL, NULL, "fsl,tzic");
185 domain = irq_domain_add_legacy(np, TZIC_NUM_IRQS, irq_base, 0, 188 domain = irq_domain_add_legacy(np, TZIC_NUM_IRQS, irq_base, 0,
186 &irq_domain_simple_ops, NULL); 189 &irq_domain_simple_ops, NULL);
187 WARN_ON(!domain); 190 WARN_ON(!domain);
diff --git a/drivers/bus/imx-weim.c b/drivers/bus/imx-weim.c
index f8ee13c7bf7b..75c9681f8021 100644
--- a/drivers/bus/imx-weim.c
+++ b/drivers/bus/imx-weim.c
@@ -162,7 +162,9 @@ static int __init weim_parse_dt(struct platform_device *pdev,
162 } 162 }
163 } 163 }
164 164
165 ret = of_platform_populate(pdev->dev.of_node, NULL, NULL, &pdev->dev); 165 ret = of_platform_populate(pdev->dev.of_node,
166 of_default_bus_match_table,
167 NULL, &pdev->dev);
166 if (ret) 168 if (ret)
167 dev_err(&pdev->dev, "%s fail to create devices.\n", 169 dev_err(&pdev->dev, "%s fail to create devices.\n",
168 pdev->dev.of_node->full_name); 170 pdev->dev.of_node->full_name);
diff --git a/include/dt-bindings/clock/imx1-clock.h b/include/dt-bindings/clock/imx1-clock.h
new file mode 100644
index 000000000000..607bf01a31dd
--- /dev/null
+++ b/include/dt-bindings/clock/imx1-clock.h
@@ -0,0 +1,40 @@
1/*
2 * Copyright (C) 2014 Alexander Shiyan <shc_work@mail.ru>
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 as
6 * published by the Free Software Foundation.
7 *
8 */
9
10#ifndef __DT_BINDINGS_CLOCK_IMX1_H
11#define __DT_BINDINGS_CLOCK_IMX1_H
12
13#define IMX1_CLK_DUMMY 0
14#define IMX1_CLK_CLK32 1
15#define IMX1_CLK_CLK16M_EXT 2
16#define IMX1_CLK_CLK16M 3
17#define IMX1_CLK_CLK32_PREMULT 4
18#define IMX1_CLK_PREM 5
19#define IMX1_CLK_MPLL 6
20#define IMX1_CLK_MPLL_GATE 7
21#define IMX1_CLK_SPLL 8
22#define IMX1_CLK_SPLL_GATE 9
23#define IMX1_CLK_MCU 10
24#define IMX1_CLK_FCLK 11
25#define IMX1_CLK_HCLK 12
26#define IMX1_CLK_CLK48M 13
27#define IMX1_CLK_PER1 14
28#define IMX1_CLK_PER2 15
29#define IMX1_CLK_PER3 16
30#define IMX1_CLK_CLKO 17
31#define IMX1_CLK_UART3_GATE 18
32#define IMX1_CLK_SSI2_GATE 19
33#define IMX1_CLK_BROM_GATE 20
34#define IMX1_CLK_DMA_GATE 21
35#define IMX1_CLK_CSI_GATE 22
36#define IMX1_CLK_MMA_GATE 23
37#define IMX1_CLK_USBD_GATE 24
38#define IMX1_CLK_MAX 25
39
40#endif
diff --git a/include/dt-bindings/clock/imx21-clock.h b/include/dt-bindings/clock/imx21-clock.h
new file mode 100644
index 000000000000..b13596cf51b2
--- /dev/null
+++ b/include/dt-bindings/clock/imx21-clock.h
@@ -0,0 +1,80 @@
1/*
2 * Copyright (C) 2014 Alexander Shiyan <shc_work@mail.ru>
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 as
6 * published by the Free Software Foundation.
7 *
8 */
9
10#ifndef __DT_BINDINGS_CLOCK_IMX21_H
11#define __DT_BINDINGS_CLOCK_IMX21_H
12
13#define IMX21_CLK_DUMMY 0
14#define IMX21_CLK_CKIL 1
15#define IMX21_CLK_CKIH 2
16#define IMX21_CLK_FPM 3
17#define IMX21_CLK_CKIH_DIV1P5 4
18#define IMX21_CLK_MPLL_GATE 5
19#define IMX21_CLK_SPLL_GATE 6
20#define IMX21_CLK_FPM_GATE 7
21#define IMX21_CLK_CKIH_GATE 8
22#define IMX21_CLK_MPLL_OSC_SEL 9
23#define IMX21_CLK_IPG 10
24#define IMX21_CLK_HCLK 11
25#define IMX21_CLK_MPLL_SEL 12
26#define IMX21_CLK_SPLL_SEL 13
27#define IMX21_CLK_SSI1_SEL 14
28#define IMX21_CLK_SSI2_SEL 15
29#define IMX21_CLK_USB_DIV 16
30#define IMX21_CLK_FCLK 17
31#define IMX21_CLK_MPLL 18
32#define IMX21_CLK_SPLL 19
33#define IMX21_CLK_NFC_DIV 20
34#define IMX21_CLK_SSI1_DIV 21
35#define IMX21_CLK_SSI2_DIV 22
36#define IMX21_CLK_PER1 23
37#define IMX21_CLK_PER2 24
38#define IMX21_CLK_PER3 25
39#define IMX21_CLK_PER4 26
40#define IMX21_CLK_UART1_IPG_GATE 27
41#define IMX21_CLK_UART2_IPG_GATE 28
42#define IMX21_CLK_UART3_IPG_GATE 29
43#define IMX21_CLK_UART4_IPG_GATE 30
44#define IMX21_CLK_CSPI1_IPG_GATE 31
45#define IMX21_CLK_CSPI2_IPG_GATE 32
46#define IMX21_CLK_SSI1_GATE 33
47#define IMX21_CLK_SSI2_GATE 34
48#define IMX21_CLK_SDHC1_IPG_GATE 35
49#define IMX21_CLK_SDHC2_IPG_GATE 36
50#define IMX21_CLK_GPIO_GATE 37
51#define IMX21_CLK_I2C_GATE 38
52#define IMX21_CLK_DMA_GATE 39
53#define IMX21_CLK_USB_GATE 40
54#define IMX21_CLK_EMMA_GATE 41
55#define IMX21_CLK_SSI2_BAUD_GATE 42
56#define IMX21_CLK_SSI1_BAUD_GATE 43
57#define IMX21_CLK_LCDC_IPG_GATE 44
58#define IMX21_CLK_NFC_GATE 45
59#define IMX21_CLK_LCDC_HCLK_GATE 46
60#define IMX21_CLK_PER4_GATE 47
61#define IMX21_CLK_BMI_GATE 48
62#define IMX21_CLK_USB_HCLK_GATE 49
63#define IMX21_CLK_SLCDC_GATE 50
64#define IMX21_CLK_SLCDC_HCLK_GATE 51
65#define IMX21_CLK_EMMA_HCLK_GATE 52
66#define IMX21_CLK_BROM_GATE 53
67#define IMX21_CLK_DMA_HCLK_GATE 54
68#define IMX21_CLK_CSI_HCLK_GATE 55
69#define IMX21_CLK_CSPI3_IPG_GATE 56
70#define IMX21_CLK_WDOG_GATE 57
71#define IMX21_CLK_GPT1_IPG_GATE 58
72#define IMX21_CLK_GPT2_IPG_GATE 59
73#define IMX21_CLK_GPT3_IPG_GATE 60
74#define IMX21_CLK_PWM_IPG_GATE 61
75#define IMX21_CLK_RTC_GATE 62
76#define IMX21_CLK_KPP_GATE 63
77#define IMX21_CLK_OWIRE_GATE 64
78#define IMX21_CLK_MAX 65
79
80#endif
diff --git a/include/dt-bindings/clock/imx27-clock.h b/include/dt-bindings/clock/imx27-clock.h
new file mode 100644
index 000000000000..148b053e54ec
--- /dev/null
+++ b/include/dt-bindings/clock/imx27-clock.h
@@ -0,0 +1,108 @@
1/*
2 * Copyright (C) 2014 Alexander Shiyan <shc_work@mail.ru>
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 as
6 * published by the Free Software Foundation.
7 *
8 */
9
10#ifndef __DT_BINDINGS_CLOCK_IMX27_H
11#define __DT_BINDINGS_CLOCK_IMX27_H
12
13#define IMX27_CLK_DUMMY 0
14#define IMX27_CLK_CKIH 1
15#define IMX27_CLK_CKIL 2
16#define IMX27_CLK_MPLL 3
17#define IMX27_CLK_SPLL 4
18#define IMX27_CLK_MPLL_MAIN2 5
19#define IMX27_CLK_AHB 6
20#define IMX27_CLK_IPG 7
21#define IMX27_CLK_NFC_DIV 8
22#define IMX27_CLK_PER1_DIV 9
23#define IMX27_CLK_PER2_DIV 10
24#define IMX27_CLK_PER3_DIV 11
25#define IMX27_CLK_PER4_DIV 12
26#define IMX27_CLK_VPU_SEL 13
27#define IMX27_CLK_VPU_DIV 14
28#define IMX27_CLK_USB_DIV 15
29#define IMX27_CLK_CPU_SEL 16
30#define IMX27_CLK_CLKO_SEL 17
31#define IMX27_CLK_CPU_DIV 18
32#define IMX27_CLK_CLKO_DIV 19
33#define IMX27_CLK_SSI1_SEL 20
34#define IMX27_CLK_SSI2_SEL 21
35#define IMX27_CLK_SSI1_DIV 22
36#define IMX27_CLK_SSI2_DIV 23
37#define IMX27_CLK_CLKO_EN 24
38#define IMX27_CLK_SSI2_IPG_GATE 25
39#define IMX27_CLK_SSI1_IPG_GATE 26
40#define IMX27_CLK_SLCDC_IPG_GATE 27
41#define IMX27_CLK_SDHC3_IPG_GATE 28
42#define IMX27_CLK_SDHC2_IPG_GATE 29
43#define IMX27_CLK_SDHC1_IPG_GATE 30
44#define IMX27_CLK_SCC_IPG_GATE 31
45#define IMX27_CLK_SAHARA_IPG_GATE 32
46#define IMX27_CLK_RTC_IPG_GATE 33
47#define IMX27_CLK_PWM_IPG_GATE 34
48#define IMX27_CLK_OWIRE_IPG_GATE 35
49#define IMX27_CLK_LCDC_IPG_GATE 36
50#define IMX27_CLK_KPP_IPG_GATE 37
51#define IMX27_CLK_IIM_IPG_GATE 38
52#define IMX27_CLK_I2C2_IPG_GATE 39
53#define IMX27_CLK_I2C1_IPG_GATE 40
54#define IMX27_CLK_GPT6_IPG_GATE 41
55#define IMX27_CLK_GPT5_IPG_GATE 42
56#define IMX27_CLK_GPT4_IPG_GATE 43
57#define IMX27_CLK_GPT3_IPG_GATE 44
58#define IMX27_CLK_GPT2_IPG_GATE 45
59#define IMX27_CLK_GPT1_IPG_GATE 46
60#define IMX27_CLK_GPIO_IPG_GATE 47
61#define IMX27_CLK_FEC_IPG_GATE 48
62#define IMX27_CLK_EMMA_IPG_GATE 49
63#define IMX27_CLK_DMA_IPG_GATE 50
64#define IMX27_CLK_CSPI3_IPG_GATE 51
65#define IMX27_CLK_CSPI2_IPG_GATE 52
66#define IMX27_CLK_CSPI1_IPG_GATE 53
67#define IMX27_CLK_NFC_BAUD_GATE 54
68#define IMX27_CLK_SSI2_BAUD_GATE 55
69#define IMX27_CLK_SSI1_BAUD_GATE 56
70#define IMX27_CLK_VPU_BAUD_GATE 57
71#define IMX27_CLK_PER4_GATE 58
72#define IMX27_CLK_PER3_GATE 59
73#define IMX27_CLK_PER2_GATE 60
74#define IMX27_CLK_PER1_GATE 61
75#define IMX27_CLK_USB_AHB_GATE 62
76#define IMX27_CLK_SLCDC_AHB_GATE 63
77#define IMX27_CLK_SAHARA_AHB_GATE 64
78#define IMX27_CLK_LCDC_AHB_GATE 65
79#define IMX27_CLK_VPU_AHB_GATE 66
80#define IMX27_CLK_FEC_AHB_GATE 67
81#define IMX27_CLK_EMMA_AHB_GATE 68
82#define IMX27_CLK_EMI_AHB_GATE 69
83#define IMX27_CLK_DMA_AHB_GATE 70
84#define IMX27_CLK_CSI_AHB_GATE 71
85#define IMX27_CLK_BROM_AHB_GATE 72
86#define IMX27_CLK_ATA_AHB_GATE 73
87#define IMX27_CLK_WDOG_IPG_GATE 74
88#define IMX27_CLK_USB_IPG_GATE 75
89#define IMX27_CLK_UART6_IPG_GATE 76
90#define IMX27_CLK_UART5_IPG_GATE 77
91#define IMX27_CLK_UART4_IPG_GATE 78
92#define IMX27_CLK_UART3_IPG_GATE 79
93#define IMX27_CLK_UART2_IPG_GATE 80
94#define IMX27_CLK_UART1_IPG_GATE 81
95#define IMX27_CLK_CKIH_DIV1P5 82
96#define IMX27_CLK_FPM 83
97#define IMX27_CLK_MPLL_OSC_SEL 84
98#define IMX27_CLK_MPLL_SEL 85
99#define IMX27_CLK_SPLL_GATE 86
100#define IMX27_CLK_MSHC_DIV 87
101#define IMX27_CLK_RTIC_IPG_GATE 88
102#define IMX27_CLK_MSHC_IPG_GATE 89
103#define IMX27_CLK_RTIC_AHB_GATE 90
104#define IMX27_CLK_MSHC_BAUD_GATE 91
105#define IMX27_CLK_CKIH_GATE 92
106#define IMX27_CLK_MAX 93
107
108#endif
diff --git a/include/dt-bindings/clock/imx6qdl-clock.h b/include/dt-bindings/clock/imx6qdl-clock.h
new file mode 100644
index 000000000000..654151e24288
--- /dev/null
+++ b/include/dt-bindings/clock/imx6qdl-clock.h
@@ -0,0 +1,224 @@
1/*
2 * Copyright 2014 Freescale Semiconductor, Inc.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 as
6 * published by the Free Software Foundation.
7 */
8
9#ifndef __DT_BINDINGS_CLOCK_IMX6QDL_H
10#define __DT_BINDINGS_CLOCK_IMX6QDL_H
11
12#define IMX6QDL_CLK_DUMMY 0
13#define IMX6QDL_CLK_CKIL 1
14#define IMX6QDL_CLK_CKIH 2
15#define IMX6QDL_CLK_OSC 3
16#define IMX6QDL_CLK_PLL2_PFD0_352M 4
17#define IMX6QDL_CLK_PLL2_PFD1_594M 5
18#define IMX6QDL_CLK_PLL2_PFD2_396M 6
19#define IMX6QDL_CLK_PLL3_PFD0_720M 7
20#define IMX6QDL_CLK_PLL3_PFD1_540M 8
21#define IMX6QDL_CLK_PLL3_PFD2_508M 9
22#define IMX6QDL_CLK_PLL3_PFD3_454M 10
23#define IMX6QDL_CLK_PLL2_198M 11
24#define IMX6QDL_CLK_PLL3_120M 12
25#define IMX6QDL_CLK_PLL3_80M 13
26#define IMX6QDL_CLK_PLL3_60M 14
27#define IMX6QDL_CLK_TWD 15
28#define IMX6QDL_CLK_STEP 16
29#define IMX6QDL_CLK_PLL1_SW 17
30#define IMX6QDL_CLK_PERIPH_PRE 18
31#define IMX6QDL_CLK_PERIPH2_PRE 19
32#define IMX6QDL_CLK_PERIPH_CLK2_SEL 20
33#define IMX6QDL_CLK_PERIPH2_CLK2_SEL 21
34#define IMX6QDL_CLK_AXI_SEL 22
35#define IMX6QDL_CLK_ESAI_SEL 23
36#define IMX6QDL_CLK_ASRC_SEL 24
37#define IMX6QDL_CLK_SPDIF_SEL 25
38#define IMX6QDL_CLK_GPU2D_AXI 26
39#define IMX6QDL_CLK_GPU3D_AXI 27
40#define IMX6QDL_CLK_GPU2D_CORE_SEL 28
41#define IMX6QDL_CLK_GPU3D_CORE_SEL 29
42#define IMX6QDL_CLK_GPU3D_SHADER_SEL 30
43#define IMX6QDL_CLK_IPU1_SEL 31
44#define IMX6QDL_CLK_IPU2_SEL 32
45#define IMX6QDL_CLK_LDB_DI0_SEL 33
46#define IMX6QDL_CLK_LDB_DI1_SEL 34
47#define IMX6QDL_CLK_IPU1_DI0_PRE_SEL 35
48#define IMX6QDL_CLK_IPU1_DI1_PRE_SEL 36
49#define IMX6QDL_CLK_IPU2_DI0_PRE_SEL 37
50#define IMX6QDL_CLK_IPU2_DI1_PRE_SEL 38
51#define IMX6QDL_CLK_IPU1_DI0_SEL 39
52#define IMX6QDL_CLK_IPU1_DI1_SEL 40
53#define IMX6QDL_CLK_IPU2_DI0_SEL 41
54#define IMX6QDL_CLK_IPU2_DI1_SEL 42
55#define IMX6QDL_CLK_HSI_TX_SEL 43
56#define IMX6QDL_CLK_PCIE_AXI_SEL 44
57#define IMX6QDL_CLK_SSI1_SEL 45
58#define IMX6QDL_CLK_SSI2_SEL 46
59#define IMX6QDL_CLK_SSI3_SEL 47
60#define IMX6QDL_CLK_USDHC1_SEL 48
61#define IMX6QDL_CLK_USDHC2_SEL 49
62#define IMX6QDL_CLK_USDHC3_SEL 50
63#define IMX6QDL_CLK_USDHC4_SEL 51
64#define IMX6QDL_CLK_ENFC_SEL 52
65#define IMX6QDL_CLK_EMI_SEL 53
66#define IMX6QDL_CLK_EMI_SLOW_SEL 54
67#define IMX6QDL_CLK_VDO_AXI_SEL 55
68#define IMX6QDL_CLK_VPU_AXI_SEL 56
69#define IMX6QDL_CLK_CKO1_SEL 57
70#define IMX6QDL_CLK_PERIPH 58
71#define IMX6QDL_CLK_PERIPH2 59
72#define IMX6QDL_CLK_PERIPH_CLK2 60
73#define IMX6QDL_CLK_PERIPH2_CLK2 61
74#define IMX6QDL_CLK_IPG 62
75#define IMX6QDL_CLK_IPG_PER 63
76#define IMX6QDL_CLK_ESAI_PRED 64
77#define IMX6QDL_CLK_ESAI_PODF 65
78#define IMX6QDL_CLK_ASRC_PRED 66
79#define IMX6QDL_CLK_ASRC_PODF 67
80#define IMX6QDL_CLK_SPDIF_PRED 68
81#define IMX6QDL_CLK_SPDIF_PODF 69
82#define IMX6QDL_CLK_CAN_ROOT 70
83#define IMX6QDL_CLK_ECSPI_ROOT 71
84#define IMX6QDL_CLK_GPU2D_CORE_PODF 72
85#define IMX6QDL_CLK_GPU3D_CORE_PODF 73
86#define IMX6QDL_CLK_GPU3D_SHADER 74
87#define IMX6QDL_CLK_IPU1_PODF 75
88#define IMX6QDL_CLK_IPU2_PODF 76
89#define IMX6QDL_CLK_LDB_DI0_PODF 77
90#define IMX6QDL_CLK_LDB_DI1_PODF 78
91#define IMX6QDL_CLK_IPU1_DI0_PRE 79
92#define IMX6QDL_CLK_IPU1_DI1_PRE 80
93#define IMX6QDL_CLK_IPU2_DI0_PRE 81
94#define IMX6QDL_CLK_IPU2_DI1_PRE 82
95#define IMX6QDL_CLK_HSI_TX_PODF 83
96#define IMX6QDL_CLK_SSI1_PRED 84
97#define IMX6QDL_CLK_SSI1_PODF 85
98#define IMX6QDL_CLK_SSI2_PRED 86
99#define IMX6QDL_CLK_SSI2_PODF 87
100#define IMX6QDL_CLK_SSI3_PRED 88
101#define IMX6QDL_CLK_SSI3_PODF 89
102#define IMX6QDL_CLK_UART_SERIAL_PODF 90
103#define IMX6QDL_CLK_USDHC1_PODF 91
104#define IMX6QDL_CLK_USDHC2_PODF 92
105#define IMX6QDL_CLK_USDHC3_PODF 93
106#define IMX6QDL_CLK_USDHC4_PODF 94
107#define IMX6QDL_CLK_ENFC_PRED 95
108#define IMX6QDL_CLK_ENFC_PODF 96
109#define IMX6QDL_CLK_EMI_PODF 97
110#define IMX6QDL_CLK_EMI_SLOW_PODF 98
111#define IMX6QDL_CLK_VPU_AXI_PODF 99
112#define IMX6QDL_CLK_CKO1_PODF 100
113#define IMX6QDL_CLK_AXI 101
114#define IMX6QDL_CLK_MMDC_CH0_AXI_PODF 102
115#define IMX6QDL_CLK_MMDC_CH1_AXI_PODF 103
116#define IMX6QDL_CLK_ARM 104
117#define IMX6QDL_CLK_AHB 105
118#define IMX6QDL_CLK_APBH_DMA 106
119#define IMX6QDL_CLK_ASRC 107
120#define IMX6QDL_CLK_CAN1_IPG 108
121#define IMX6QDL_CLK_CAN1_SERIAL 109
122#define IMX6QDL_CLK_CAN2_IPG 110
123#define IMX6QDL_CLK_CAN2_SERIAL 111
124#define IMX6QDL_CLK_ECSPI1 112
125#define IMX6QDL_CLK_ECSPI2 113
126#define IMX6QDL_CLK_ECSPI3 114
127#define IMX6QDL_CLK_ECSPI4 115
128#define IMX6Q_CLK_ECSPI5 116
129#define IMX6DL_CLK_I2C4 116
130#define IMX6QDL_CLK_ENET 117
131#define IMX6QDL_CLK_ESAI 118
132#define IMX6QDL_CLK_GPT_IPG 119
133#define IMX6QDL_CLK_GPT_IPG_PER 120
134#define IMX6QDL_CLK_GPU2D_CORE 121
135#define IMX6QDL_CLK_GPU3D_CORE 122
136#define IMX6QDL_CLK_HDMI_IAHB 123
137#define IMX6QDL_CLK_HDMI_ISFR 124
138#define IMX6QDL_CLK_I2C1 125
139#define IMX6QDL_CLK_I2C2 126
140#define IMX6QDL_CLK_I2C3 127
141#define IMX6QDL_CLK_IIM 128
142#define IMX6QDL_CLK_ENFC 129
143#define IMX6QDL_CLK_IPU1 130
144#define IMX6QDL_CLK_IPU1_DI0 131
145#define IMX6QDL_CLK_IPU1_DI1 132
146#define IMX6QDL_CLK_IPU2 133
147#define IMX6QDL_CLK_IPU2_DI0 134
148#define IMX6QDL_CLK_LDB_DI0 135
149#define IMX6QDL_CLK_LDB_DI1 136
150#define IMX6QDL_CLK_IPU2_DI1 137
151#define IMX6QDL_CLK_HSI_TX 138
152#define IMX6QDL_CLK_MLB 139
153#define IMX6QDL_CLK_MMDC_CH0_AXI 140
154#define IMX6QDL_CLK_MMDC_CH1_AXI 141
155#define IMX6QDL_CLK_OCRAM 142
156#define IMX6QDL_CLK_OPENVG_AXI 143
157#define IMX6QDL_CLK_PCIE_AXI 144
158#define IMX6QDL_CLK_PWM1 145
159#define IMX6QDL_CLK_PWM2 146
160#define IMX6QDL_CLK_PWM3 147
161#define IMX6QDL_CLK_PWM4 148
162#define IMX6QDL_CLK_PER1_BCH 149
163#define IMX6QDL_CLK_GPMI_BCH_APB 150
164#define IMX6QDL_CLK_GPMI_BCH 151
165#define IMX6QDL_CLK_GPMI_IO 152
166#define IMX6QDL_CLK_GPMI_APB 153
167#define IMX6QDL_CLK_SATA 154
168#define IMX6QDL_CLK_SDMA 155
169#define IMX6QDL_CLK_SPBA 156
170#define IMX6QDL_CLK_SSI1 157
171#define IMX6QDL_CLK_SSI2 158
172#define IMX6QDL_CLK_SSI3 159
173#define IMX6QDL_CLK_UART_IPG 160
174#define IMX6QDL_CLK_UART_SERIAL 161
175#define IMX6QDL_CLK_USBOH3 162
176#define IMX6QDL_CLK_USDHC1 163
177#define IMX6QDL_CLK_USDHC2 164
178#define IMX6QDL_CLK_USDHC3 165
179#define IMX6QDL_CLK_USDHC4 166
180#define IMX6QDL_CLK_VDO_AXI 167
181#define IMX6QDL_CLK_VPU_AXI 168
182#define IMX6QDL_CLK_CKO1 169
183#define IMX6QDL_CLK_PLL1_SYS 170
184#define IMX6QDL_CLK_PLL2_BUS 171
185#define IMX6QDL_CLK_PLL3_USB_OTG 172
186#define IMX6QDL_CLK_PLL4_AUDIO 173
187#define IMX6QDL_CLK_PLL5_VIDEO 174
188#define IMX6QDL_CLK_PLL8_MLB 175
189#define IMX6QDL_CLK_PLL7_USB_HOST 176
190#define IMX6QDL_CLK_PLL6_ENET 177
191#define IMX6QDL_CLK_SSI1_IPG 178
192#define IMX6QDL_CLK_SSI2_IPG 179
193#define IMX6QDL_CLK_SSI3_IPG 180
194#define IMX6QDL_CLK_ROM 181
195#define IMX6QDL_CLK_USBPHY1 182
196#define IMX6QDL_CLK_USBPHY2 183
197#define IMX6QDL_CLK_LDB_DI0_DIV_3_5 184
198#define IMX6QDL_CLK_LDB_DI1_DIV_3_5 185
199#define IMX6QDL_CLK_SATA_REF 186
200#define IMX6QDL_CLK_SATA_REF_100M 187
201#define IMX6QDL_CLK_PCIE_REF 188
202#define IMX6QDL_CLK_PCIE_REF_125M 189
203#define IMX6QDL_CLK_ENET_REF 190
204#define IMX6QDL_CLK_USBPHY1_GATE 191
205#define IMX6QDL_CLK_USBPHY2_GATE 192
206#define IMX6QDL_CLK_PLL4_POST_DIV 193
207#define IMX6QDL_CLK_PLL5_POST_DIV 194
208#define IMX6QDL_CLK_PLL5_VIDEO_DIV 195
209#define IMX6QDL_CLK_EIM_SLOW 196
210#define IMX6QDL_CLK_SPDIF 197
211#define IMX6QDL_CLK_CKO2_SEL 198
212#define IMX6QDL_CLK_CKO2_PODF 199
213#define IMX6QDL_CLK_CKO2 200
214#define IMX6QDL_CLK_CKO 201
215#define IMX6QDL_CLK_VDOA 202
216#define IMX6QDL_CLK_PLL4_AUDIO_DIV 203
217#define IMX6QDL_CLK_LVDS1_SEL 204
218#define IMX6QDL_CLK_LVDS2_SEL 205
219#define IMX6QDL_CLK_LVDS1_GATE 206
220#define IMX6QDL_CLK_LVDS2_GATE 207
221#define IMX6QDL_CLK_ESAI_AHB 208
222#define IMX6QDL_CLK_END 209
223
224#endif /* __DT_BINDINGS_CLOCK_IMX6QDL_H */
diff --git a/include/dt-bindings/clock/vf610-clock.h b/include/dt-bindings/clock/vf610-clock.h
index a91602951d3d..00953d9484cb 100644
--- a/include/dt-bindings/clock/vf610-clock.h
+++ b/include/dt-bindings/clock/vf610-clock.h
@@ -164,6 +164,8 @@
164#define VF610_CLK_DMAMUX1 151 164#define VF610_CLK_DMAMUX1 151
165#define VF610_CLK_DMAMUX2 152 165#define VF610_CLK_DMAMUX2 152
166#define VF610_CLK_DMAMUX3 153 166#define VF610_CLK_DMAMUX3 153
167#define VF610_CLK_END 154 167#define VF610_CLK_FLEXCAN0_EN 154
168#define VF610_CLK_FLEXCAN1_EN 155
169#define VF610_CLK_END 156
168 170
169#endif /* __DT_BINDINGS_CLOCK_VF610_H */ 171#endif /* __DT_BINDINGS_CLOCK_VF610_H */
diff --git a/include/linux/platform_data/camera-mx1.h b/include/linux/platform_data/camera-mx1.h
deleted file mode 100644
index 4fd6c70314b4..000000000000
--- a/include/linux/platform_data/camera-mx1.h
+++ /dev/null
@@ -1,35 +0,0 @@
1/*
2 * mx1_camera.h - i.MX1/i.MXL camera driver header file
3 *
4 * Copyright (c) 2008, Paulius Zaleckas <paulius.zaleckas@teltonika.lt>
5 * Copyright (C) 2009, Darius Augulis <augulis.darius@gmail.com>
6 *
7 * Based on PXA camera.h file:
8 * Copyright (C) 2003, Intel Corporation
9 * Copyright (C) 2008, Guennadi Liakhovetski <kernel@pengutronix.de>
10 *
11 * This program is free software; you can redistribute it and/or modify
12 * it under the terms of the GNU General Public License version 2 as
13 * published by the Free Software Foundation.
14 */
15
16#ifndef __ASM_ARCH_CAMERA_H_
17#define __ASM_ARCH_CAMERA_H_
18
19#define MX1_CAMERA_DATA_HIGH 1
20#define MX1_CAMERA_PCLK_RISING 2
21#define MX1_CAMERA_VSYNC_HIGH 4
22
23extern unsigned char mx1_camera_sof_fiq_start, mx1_camera_sof_fiq_end;
24
25/**
26 * struct mx1_camera_pdata - i.MX1/i.MXL camera platform data
27 * @mclk_10khz: master clock frequency in 10kHz units
28 * @flags: MX1 camera platform flags
29 */
30struct mx1_camera_pdata {
31 unsigned long mclk_10khz;
32 unsigned long flags;
33};
34
35#endif /* __ASM_ARCH_CAMERA_H_ */
diff --git a/include/linux/platform_data/usb-ehci-mxc.h b/include/linux/platform_data/usb-ehci-mxc.h
index 7eb9d1329671..157e71f79f99 100644
--- a/include/linux/platform_data/usb-ehci-mxc.h
+++ b/include/linux/platform_data/usb-ehci-mxc.h
@@ -1,46 +1,6 @@
1#ifndef __INCLUDE_ASM_ARCH_MXC_EHCI_H 1#ifndef __INCLUDE_ASM_ARCH_MXC_EHCI_H
2#define __INCLUDE_ASM_ARCH_MXC_EHCI_H 2#define __INCLUDE_ASM_ARCH_MXC_EHCI_H
3 3
4/* values for portsc field */
5#define MXC_EHCI_PHY_LOW_POWER_SUSPEND (1 << 23)
6#define MXC_EHCI_FORCE_FS (1 << 24)
7#define MXC_EHCI_UTMI_8BIT (0 << 28)
8#define MXC_EHCI_UTMI_16BIT (1 << 28)
9#define MXC_EHCI_SERIAL (1 << 29)
10#define MXC_EHCI_MODE_UTMI (0 << 30)
11#define MXC_EHCI_MODE_PHILIPS (1 << 30)
12#define MXC_EHCI_MODE_ULPI (2 << 30)
13#define MXC_EHCI_MODE_SERIAL (3 << 30)
14
15/* values for flags field */
16#define MXC_EHCI_INTERFACE_DIFF_UNI (0 << 0)
17#define MXC_EHCI_INTERFACE_DIFF_BI (1 << 0)
18#define MXC_EHCI_INTERFACE_SINGLE_UNI (2 << 0)
19#define MXC_EHCI_INTERFACE_SINGLE_BI (3 << 0)
20#define MXC_EHCI_INTERFACE_MASK (0xf)
21
22#define MXC_EHCI_POWER_PINS_ENABLED (1 << 5)
23#define MXC_EHCI_PWR_PIN_ACTIVE_HIGH (1 << 6)
24#define MXC_EHCI_OC_PIN_ACTIVE_LOW (1 << 7)
25#define MXC_EHCI_TTL_ENABLED (1 << 8)
26
27#define MXC_EHCI_INTERNAL_PHY (1 << 9)
28#define MXC_EHCI_IPPUE_DOWN (1 << 10)
29#define MXC_EHCI_IPPUE_UP (1 << 11)
30#define MXC_EHCI_WAKEUP_ENABLED (1 << 12)
31#define MXC_EHCI_ITC_NO_THRESHOLD (1 << 13)
32
33#define MXC_USBCTRL_OFFSET 0
34#define MXC_USB_PHY_CTR_FUNC_OFFSET 0x8
35#define MXC_USB_PHY_CTR_FUNC2_OFFSET 0xc
36#define MXC_USBH2CTRL_OFFSET 0x14
37
38#define MX5_USBOTHER_REGS_OFFSET 0x800
39
40/* USB_PHY_CTRL_FUNC2*/
41#define MX5_USB_UTMI_PHYCTRL1_PLLDIV_MASK 0x3
42#define MX5_USB_UTMI_PHYCTRL1_PLLDIV_SHIFT 0
43
44struct mxc_usbh_platform_data { 4struct mxc_usbh_platform_data {
45 int (*init)(struct platform_device *pdev); 5 int (*init)(struct platform_device *pdev);
46 int (*exit)(struct platform_device *pdev); 6 int (*exit)(struct platform_device *pdev);
@@ -49,11 +9,5 @@ struct mxc_usbh_platform_data {
49 struct usb_phy *otg; 9 struct usb_phy *otg;
50}; 10};
51 11
52int mx51_initialize_usb_hw(int port, unsigned int flags);
53int mx25_initialize_usb_hw(int port, unsigned int flags);
54int mx31_initialize_usb_hw(int port, unsigned int flags);
55int mx35_initialize_usb_hw(int port, unsigned int flags);
56int mx27_initialize_usb_hw(int port, unsigned int flags);
57
58#endif /* __INCLUDE_ASM_ARCH_MXC_EHCI_H */ 12#endif /* __INCLUDE_ASM_ARCH_MXC_EHCI_H */
59 13
diff --git a/include/linux/platform_data/usb-imx_udc.h b/include/linux/platform_data/usb-imx_udc.h
deleted file mode 100644
index be273371f34a..000000000000
--- a/include/linux/platform_data/usb-imx_udc.h
+++ /dev/null
@@ -1,23 +0,0 @@
1/*
2 * Copyright (C) 2008 Darius Augulis <augulis.darius@gmail.com>
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 */
14
15#ifndef __ASM_ARCH_MXC_USB
16#define __ASM_ARCH_MXC_USB
17
18struct imxusb_platform_data {
19 int (*init)(struct device *);
20 void (*exit)(struct device *);
21};
22
23#endif /* __ASM_ARCH_MXC_USB */