]> git.kernelconcepts.de Git - karo-tx-uboot.git/commitdiff
Merge branch 'master' of git://git.denx.de/u-boot-arm
authorWolfgang Denk <wd@denx.de>
Sat, 10 Dec 2011 21:46:48 +0000 (22:46 +0100)
committerWolfgang Denk <wd@denx.de>
Sat, 10 Dec 2011 21:46:48 +0000 (22:46 +0100)
* 'master' of git://git.denx.de/u-boot-arm:
  M28: Cleanup memsize.o OOT build
  i.MX28: Move SPL to arch/arm/cpu/arm926ejs/mx28
  M28: Fix typo
  M28: Document that units has to be set to sectors on SD bootcard
  i.mx: i.mx6q: add the initial support for i.mx6q ARM2 board
  i.mx: mxc_gpio: add the i.mx6q support
  i.mx: add the initial support for freescale i.MX6Q processor
  i.mx: introduce the armv7/imx-common folder
  S5PC2XX: Rename S5pc2XX to exynos
  tegra2: Don't use board pointer before it is set up
  tegra2: Remove unneeded 'dynamic ram size' message
  tegra2: Remove unused low-level Tegra2 UART code
  tegra2: Remove unneeded config option
  tegra2: Remove unneeded boot code
  tegra2: Enable instruction cache
  arm: Move CP15 init out of cpu_init_crit()
  tegra2: Simplify tegra_start() boot path
  tegra2: Add arch_cpu_init() to fire up Cortex-A9
  tegra2: Use new GPIO APIs in gpio_config_uart()
  tegra2: Add support for Ventana
  tegra2: Modify MMC driver to handle power and cd GPIOs
  tegra2: Move board_mmc_init into board files

84 files changed:
MAINTAINERS
Makefile
arch/arm/cpu/arm926ejs/mx28/Makefile
arch/arm/cpu/arm926ejs/mx28/mx28_init.h [moved from board/denx/m28evk/m28_init.h with 100% similarity]
arch/arm/cpu/arm926ejs/mx28/spl_boot.c [new file with mode: 0644]
arch/arm/cpu/arm926ejs/mx28/spl_mem_init.c [moved from board/denx/m28evk/mem_init.c with 99% similarity]
arch/arm/cpu/arm926ejs/mx28/spl_power_init.c [moved from board/denx/m28evk/power_init.c with 99% similarity]
arch/arm/cpu/arm926ejs/mx28/start.S [moved from board/denx/m28evk/start.S with 100% similarity]
arch/arm/cpu/arm926ejs/mx28/u-boot-spl.lds [moved from board/denx/m28evk/u-boot-spl.lds with 93% similarity]
arch/arm/cpu/armv7/exynos/Makefile [moved from arch/arm/cpu/armv7/s5pc2xx/Makefile with 100% similarity]
arch/arm/cpu/armv7/exynos/clock.c [moved from arch/arm/cpu/armv7/s5pc2xx/clock.c with 81% similarity]
arch/arm/cpu/armv7/exynos/soc.c [moved from arch/arm/cpu/armv7/s5pc2xx/soc.c with 100% similarity]
arch/arm/cpu/armv7/imx-common/Makefile [new file with mode: 0644]
arch/arm/cpu/armv7/imx-common/cpu.c [new file with mode: 0644]
arch/arm/cpu/armv7/imx-common/speed.c [moved from arch/arm/cpu/armv7/mx5/speed.c with 100% similarity]
arch/arm/cpu/armv7/imx-common/timer.c [moved from arch/arm/cpu/armv7/mx5/timer.c with 84% similarity, mode: 0755]
arch/arm/cpu/armv7/mx5/Makefile
arch/arm/cpu/armv7/mx5/soc.c
arch/arm/cpu/armv7/mx6/Makefile [new file with mode: 0644]
arch/arm/cpu/armv7/mx6/clock.c [new file with mode: 0644]
arch/arm/cpu/armv7/mx6/iomux-v3.c [new file with mode: 0644]
arch/arm/cpu/armv7/mx6/lowlevel_init.S [new file with mode: 0644]
arch/arm/cpu/armv7/mx6/soc.c [new file with mode: 0644]
arch/arm/cpu/armv7/start.S
arch/arm/cpu/armv7/tegra2/Makefile
arch/arm/cpu/armv7/tegra2/ap20.c
arch/arm/cpu/armv7/tegra2/ap20.h
arch/arm/cpu/armv7/tegra2/board.c
arch/arm/cpu/armv7/tegra2/config.mk
arch/arm/cpu/armv7/tegra2/lowlevel_init.S
arch/arm/include/asm/arch-exynos/adc.h [moved from arch/arm/include/asm/arch-s5pc2xx/adc.h with 100% similarity]
arch/arm/include/asm/arch-exynos/clk.h [moved from arch/arm/include/asm/arch-s5pc2xx/clk.h with 100% similarity]
arch/arm/include/asm/arch-exynos/clock.h [moved from arch/arm/include/asm/arch-s5pc2xx/clock.h with 99% similarity]
arch/arm/include/asm/arch-exynos/cpu.h [moved from arch/arm/include/asm/arch-s5pc2xx/cpu.h with 64% similarity]
arch/arm/include/asm/arch-exynos/gpio.h [moved from arch/arm/include/asm/arch-s5pc2xx/gpio.h with 84% similarity]
arch/arm/include/asm/arch-exynos/mmc.h [moved from arch/arm/include/asm/arch-s5pc2xx/mmc.h with 100% similarity]
arch/arm/include/asm/arch-exynos/pwm.h [moved from arch/arm/include/asm/arch-s5pc2xx/pwm.h with 100% similarity]
arch/arm/include/asm/arch-exynos/sromc.h [moved from arch/arm/include/asm/arch-s5pc2xx/sromc.h with 100% similarity]
arch/arm/include/asm/arch-exynos/sys_proto.h [moved from arch/arm/include/asm/arch-s5pc2xx/sys_proto.h with 100% similarity]
arch/arm/include/asm/arch-exynos/uart.h [moved from arch/arm/include/asm/arch-s5pc2xx/uart.h with 100% similarity]
arch/arm/include/asm/arch-mx28/sys_proto.h
arch/arm/include/asm/arch-mx6/ccm_regs.h [new file with mode: 0644]
arch/arm/include/asm/arch-mx6/clock.h [new file with mode: 0644]
arch/arm/include/asm/arch-mx6/gpio.h [moved from drivers/serial/serial_tegra2.h with 75% similarity]
arch/arm/include/asm/arch-mx6/imx-regs.h [new file with mode: 0644]
arch/arm/include/asm/arch-mx6/iomux-v3.h [new file with mode: 0644]
arch/arm/include/asm/arch-mx6/mx6x_pins.h [new file with mode: 0644]
arch/arm/include/asm/arch-mx6/sys_proto.h [new file with mode: 0644]
arch/arm/include/asm/u-boot-arm.h
board/denx/m28evk/Makefile
board/denx/m28evk/m28evk.c
board/denx/m28evk/spl_boot.c [moved from board/denx/m28evk/mmc_boot.c with 87% similarity]
board/freescale/mx6qarm2/Makefile [new file with mode: 0644]
board/freescale/mx6qarm2/imximage.cfg [new file with mode: 0644]
board/freescale/mx6qarm2/mx6qarm2.c [new file with mode: 0644]
board/nvidia/common/board.c
board/nvidia/common/board.h
board/nvidia/harmony/harmony.c
board/nvidia/seaboard/seaboard.c
board/nvidia/ventana/Makefile [new file with mode: 0644]
board/samsung/origen/lowlevel_init.S
board/samsung/origen/mem_setup.S
board/samsung/origen/origen.c
board/samsung/origen/origen_setup.h
board/samsung/smdkv310/lowlevel_init.S
board/samsung/smdkv310/mem_setup.S
board/samsung/smdkv310/smdkv310.c
board/samsung/universal_c210/lowlevel_init.S
board/samsung/universal_c210/universal.c
boards.cfg
doc/README.m28
drivers/gpio/mxc_gpio.c
drivers/gpio/tegra2_gpio.c
drivers/mmc/tegra2_mmc.c
drivers/mmc/tegra2_mmc.h
drivers/serial/Makefile
drivers/serial/serial_tegra2.c [deleted file]
include/configs/m28evk.h
include/configs/mx6qarm2.h [new file with mode: 0644]
include/configs/origen.h
include/configs/s5pc210_universal.h
include/configs/smdkv310.h
include/configs/tegra2-common.h
include/configs/ventana.h [new file with mode: 0644]

index 0969a1b9ee5ee578e214a067a0ded5d730a9918e..a56ca10f3fcb993b14fd8c25dd0254595aa7c37c 100644 (file)
@@ -578,6 +578,7 @@ Jason Liu <r64343@freescale.com>
 
        mx53evk         i.MX53
        mx53loco        i.MX53
+       mx6qarm2        i.MX6Q
 
 Enric Balletbo i Serra <eballetbo@iseebcn.com>
 
@@ -697,12 +698,12 @@ Minkyu Kang <mk7.kang@samsung.com>
 
        SMDKC100                ARM ARMV7 (S5PC100 SoC)
        s5p_goni                ARM ARMV7 (S5PC110 SoC)
-       s5pc210_universal       ARM ARMV7 (S5PC210 SoC)
+       s5pc210_universal       ARM ARMV7 (EXYNOS4210 SoC)
 
 Chander Kashyap <k.chander@samsung.com>
 
-       origen                  ARM ARMV7 (S5PC210 SoC)
-       SMDKV310                ARM ARMV7 (S5PC210 SoC)
+       origen                  ARM ARMV7 (EXYNOS4210 SoC)
+       SMDKV310                ARM ARMV7 (EXYNOS4210 SoC)
 
 Torsten Koschorrek <koschorrek@synertronixx.de>
        scb9328         ARM920T (i.MXL)
@@ -880,6 +881,11 @@ Tom Warren <twarren@nvidia.com>
        harmony         Tegra2 (ARM7 & A9 Dual Core)
        seaboard        Tegra2 (ARM7 & A9 Dual Core)
 
+Tom Warren <twarren@nvidia.com>
+Stephen Warren <swarren@nvidia.com>
+
+       ventana         Tegra2 (ARM7 & A9 Dual Core)
+
 Thomas Weber <weber@corscience.de>
 
        devkit8000      ARM ARMV7 (OMAP3530 SoC)
index de65a173c62ad44cec944e671e5fcdf247f9b31c..8c47d7250f59dbd22c7f28bab6ccf6ec63d37c1c 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -296,10 +296,18 @@ LIBS += post/libpost.o
 ifneq ($(CONFIG_AM335X)$(CONFIG_OMAP34XX)$(CONFIG_OMAP44XX)$(CONFIG_OMAP54XX),)
 LIBS += $(CPUDIR)/omap-common/libomap-common.o
 endif
+
+ifeq ($(SOC),mx5)
+LIBS += $(CPUDIR)/imx-common/libimx-common.o
+endif
+ifeq ($(SOC),mx6)
+LIBS += $(CPUDIR)/imx-common/libimx-common.o
+endif
+
 ifeq ($(SOC),s5pc1xx)
 LIBS += $(CPUDIR)/s5p-common/libs5p-common.o
 endif
-ifeq ($(SOC),s5pc2xx)
+ifeq ($(SOC),exynos)
 LIBS += $(CPUDIR)/s5p-common/libs5p-common.o
 endif
 
index 7845310cfec12493245d9a20df5a454248275dcf..a2e3f771c26aa9835d4455c4975cf72e191b81a8 100644 (file)
@@ -27,6 +27,10 @@ LIB  = $(obj)lib$(SOC).o
 
 COBJS  = clock.o mx28.o iomux.o timer.o
 
+ifdef  CONFIG_SPL_BUILD
+COBJS  += spl_boot.o spl_mem_init.o spl_power_init.o
+endif
+
 SRCS   := $(START:.o=.S) $(COBJS:.o=.c)
 OBJS   := $(addprefix $(obj),$(COBJS))
 START  := $(addprefix $(obj),$(START))
diff --git a/arch/arm/cpu/arm926ejs/mx28/spl_boot.c b/arch/arm/cpu/arm926ejs/mx28/spl_boot.c
new file mode 100644 (file)
index 0000000..dfb8309
--- /dev/null
@@ -0,0 +1,78 @@
+/*
+ * Freescale i.MX28 Boot setup
+ *
+ * Copyright (C) 2011 Marek Vasut <marek.vasut@gmail.com>
+ * on behalf of DENX Software Engineering GmbH
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#include <common.h>
+#include <config.h>
+#include <asm/io.h>
+#include <asm/arch/iomux-mx28.h>
+#include <asm/arch/imx-regs.h>
+
+#include "mx28_init.h"
+
+/*
+ * This delay function is intended to be used only in early stage of boot, where
+ * clock are not set up yet. The timer used here is reset on every boot and
+ * takes a few seconds to roll. The boot doesn't take that long, so to keep the
+ * code simple, it doesn't take rolling into consideration.
+ */
+#define        HW_DIGCTRL_MICROSECONDS 0x8001c0c0
+void early_delay(int delay)
+{
+       uint32_t st = readl(HW_DIGCTRL_MICROSECONDS);
+       st += delay;
+       while (st > readl(HW_DIGCTRL_MICROSECONDS))
+               ;
+}
+
+void mx28_common_spl_init(const iomux_cfg_t *iomux_setup,
+                       const unsigned int iomux_size)
+{
+       mxs_iomux_setup_multiple_pads(iomux_setup, iomux_size);
+       mx28_power_init();
+       mx28_mem_init();
+       mx28_power_wait_pswitch();
+}
+
+/* Support aparatus */
+inline void board_init_f(unsigned long bootflag)
+{
+       for (;;)
+               ;
+}
+
+inline void board_init_r(gd_t *id, ulong dest_addr)
+{
+       for (;;)
+               ;
+}
+
+void serial_putc(const char c) {}
+void serial_puts(const char *s) {}
+void hang(void) __attribute__ ((noreturn));
+void hang(void)
+{
+       for (;;)
+               ;
+}
similarity index 99%
rename from board/denx/m28evk/mem_init.c
rename to arch/arm/cpu/arm926ejs/mx28/spl_mem_init.c
index 17d1f9b6a1644d90ebea21f16919e90c2273fbe5..00493b8bf9293adbc1401dcb665cbc04374339ff 100644 (file)
@@ -29,7 +29,7 @@
 #include <asm/arch/iomux-mx28.h>
 #include <asm/arch/imx-regs.h>
 
-#include "m28_init.h"
+#include "mx28_init.h"
 
 uint32_t dram_vals[] = {
        0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
similarity index 99%
rename from board/denx/m28evk/power_init.c
rename to arch/arm/cpu/arm926ejs/mx28/spl_power_init.c
index 27322b4ec18d1dcf3c6836ee12a1ca19fc4a13f2..a4dc2a31b7b275c918d40987555bdae72d7ad9ed 100644 (file)
@@ -28,7 +28,7 @@
 #include <asm/io.h>
 #include <asm/arch/imx-regs.h>
 
-#include "m28_init.h"
+#include "mx28_init.h"
 
 void mx28_power_clock2xtal(void)
 {
similarity index 93%
rename from board/denx/m28evk/u-boot-spl.lds
rename to arch/arm/cpu/arm926ejs/mx28/u-boot-spl.lds
index e296a92ed8b21b83d834c0819217a215d0d89449..0fccd52968dc1dce1af745371af22c1395af447c 100644 (file)
@@ -37,7 +37,7 @@ SECTIONS
        . = ALIGN(4);
        .text   :
        {
-               board/denx/m28evk/start.o       (.text)
+               arch/arm/cpu/arm926ejs/mx28/start.o     (.text)
                *(.text)
        }
 
@@ -67,16 +67,16 @@ SECTIONS
                *(.dynsym)
        }
 
-       _end = .;
-
-       .bss __rel_dyn_start (OVERLAY) : {
+       .bss : {
+               . = ALIGN(4);
                __bss_start = .;
-               *(.bss)
-                . = ALIGN(4);
+               *(.bss*)
+               . = ALIGN(4);
                __bss_end__ = .;
        }
 
-       /DISCARD/ : { *(.bss*) }
+       _end = .;
+
        /DISCARD/ : { *(.dynstr*) }
        /DISCARD/ : { *(.dynsym*) }
        /DISCARD/ : { *(.dynamic*) }
similarity index 81%
rename from arch/arm/cpu/armv7/s5pc2xx/clock.c
rename to arch/arm/cpu/armv7/exynos/clock.c
index 5ecd475964c80b34ccab0c01f8a360bb4a4de9ad..64de262737e06531081e536727938bf13b1d7830 100644 (file)
 #define CONFIG_SYS_CLK_FREQ_C210       24000000
 #endif
 
-/* s5pc210: return pll clock frequency */
-static unsigned long s5pc210_get_pll_clk(int pllreg)
+/* exynos4: return pll clock frequency */
+static unsigned long exynos4_get_pll_clk(int pllreg)
 {
-       struct s5pc210_clock *clk =
-               (struct s5pc210_clock *)samsung_get_base_clock();
+       struct exynos4_clock *clk =
+               (struct exynos4_clock *)samsung_get_base_clock();
        unsigned long r, m, p, s, k = 0, mask, fout;
        unsigned int freq;
 
@@ -96,11 +96,11 @@ static unsigned long s5pc210_get_pll_clk(int pllreg)
        return fout;
 }
 
-/* s5pc210: return ARM clock frequency */
-static unsigned long s5pc210_get_arm_clk(void)
+/* exynos4: return ARM clock frequency */
+static unsigned long exynos4_get_arm_clk(void)
 {
-       struct s5pc210_clock *clk =
-               (struct s5pc210_clock *)samsung_get_base_clock();
+       struct exynos4_clock *clk =
+               (struct exynos4_clock *)samsung_get_base_clock();
        unsigned long div;
        unsigned long dout_apll;
        unsigned int apll_ratio;
@@ -115,11 +115,11 @@ static unsigned long s5pc210_get_arm_clk(void)
        return dout_apll;
 }
 
-/* s5pc210: return pwm clock frequency */
-static unsigned long s5pc210_get_pwm_clk(void)
+/* exynos4: return pwm clock frequency */
+static unsigned long exynos4_get_pwm_clk(void)
 {
-       struct s5pc210_clock *clk =
-               (struct s5pc210_clock *)samsung_get_base_clock();
+       struct exynos4_clock *clk =
+               (struct exynos4_clock *)samsung_get_base_clock();
        unsigned long pclk, sclk;
        unsigned int sel;
        unsigned int ratio;
@@ -158,11 +158,11 @@ static unsigned long s5pc210_get_pwm_clk(void)
        return pclk;
 }
 
-/* s5pc210: return uart clock frequency */
-static unsigned long s5pc210_get_uart_clk(int dev_index)
+/* exynos4: return uart clock frequency */
+static unsigned long exynos4_get_uart_clk(int dev_index)
 {
-       struct s5pc210_clock *clk =
-               (struct s5pc210_clock *)samsung_get_base_clock();
+       struct exynos4_clock *clk =
+               (struct exynos4_clock *)samsung_get_base_clock();
        unsigned long uclk, sclk;
        unsigned int sel;
        unsigned int ratio;
@@ -205,11 +205,11 @@ static unsigned long s5pc210_get_uart_clk(int dev_index)
        return uclk;
 }
 
-/* s5pc210: set the mmc clock */
-static void s5pc210_set_mmc_clk(int dev_index, unsigned int div)
+/* exynos4: set the mmc clock */
+static void exynos4_set_mmc_clk(int dev_index, unsigned int div)
 {
-       struct s5pc210_clock *clk =
-               (struct s5pc210_clock *)samsung_get_base_clock();
+       struct exynos4_clock *clk =
+               (struct exynos4_clock *)samsung_get_base_clock();
        unsigned int addr;
        unsigned int val;
 
@@ -234,25 +234,25 @@ static void s5pc210_set_mmc_clk(int dev_index, unsigned int div)
 
 unsigned long get_pll_clk(int pllreg)
 {
-       return s5pc210_get_pll_clk(pllreg);
+       return exynos4_get_pll_clk(pllreg);
 }
 
 unsigned long get_arm_clk(void)
 {
-       return s5pc210_get_arm_clk();
+       return exynos4_get_arm_clk();
 }
 
 unsigned long get_pwm_clk(void)
 {
-       return s5pc210_get_pwm_clk();
+       return exynos4_get_pwm_clk();
 }
 
 unsigned long get_uart_clk(int dev_index)
 {
-       return s5pc210_get_uart_clk(dev_index);
+       return exynos4_get_uart_clk(dev_index);
 }
 
 void set_mmc_clk(int dev_index, unsigned int div)
 {
-       s5pc210_set_mmc_clk(dev_index, div);
+       exynos4_set_mmc_clk(dev_index, div);
 }
diff --git a/arch/arm/cpu/armv7/imx-common/Makefile b/arch/arm/cpu/armv7/imx-common/Makefile
new file mode 100644 (file)
index 0000000..e5ff375
--- /dev/null
@@ -0,0 +1,47 @@
+#
+# (C) Copyright 2000-2006
+# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+#
+# (C) Copyright 2011 Freescale Semiconductor, Inc.
+#
+# See file CREDITS for list of people who contributed to this
+# project.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+# MA 02111-1307 USA
+#
+
+include $(TOPDIR)/config.mk
+
+LIB     = $(obj)libimx-common.o
+
+COBJS  = timer.o cpu.o speed.o
+
+SRCS   := $(SOBJS:.o=.S) $(COBJS:.o=.c)
+OBJS   := $(addprefix $(obj),$(SOBJS) $(COBJS))
+
+all:   $(obj).depend $(LIB)
+
+$(LIB):        $(OBJS)
+       $(call cmd_link_o_target, $(OBJS))
+
+#########################################################################
+
+# defines $(obj).depend target
+include $(SRCTREE)/rules.mk
+
+sinclude $(obj).depend
+
+#########################################################################
diff --git a/arch/arm/cpu/armv7/imx-common/cpu.c b/arch/arm/cpu/armv7/imx-common/cpu.c
new file mode 100644 (file)
index 0000000..1e30ae5
--- /dev/null
@@ -0,0 +1,108 @@
+/*
+ * (C) Copyright 2007
+ * Sascha Hauer, Pengutronix
+ *
+ * (C) Copyright 2009 Freescale Semiconductor, Inc.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#include <common.h>
+#include <asm/errno.h>
+#include <asm/io.h>
+#include <asm/arch/imx-regs.h>
+#include <asm/arch/clock.h>
+#include <asm/arch/sys_proto.h>
+
+#ifdef CONFIG_FSL_ESDHC
+#include <fsl_esdhc.h>
+#endif
+
+static char *get_reset_cause(void)
+{
+       u32 cause;
+       struct src *src_regs = (struct src *)SRC_BASE_ADDR;
+
+       cause = readl(&src_regs->srsr);
+       writel(cause, &src_regs->srsr);
+
+       switch (cause) {
+       case 0x00001:
+               return "POR";
+       case 0x00004:
+               return "CSU";
+       case 0x00008:
+               return "IPP USER";
+       case 0x00010:
+               return "WDOG";
+       case 0x00020:
+               return "JTAG HIGH-Z";
+       case 0x00040:
+               return "JTAG SW";
+       case 0x10000:
+               return "WARM BOOT";
+       default:
+               return "unknown reset";
+       }
+}
+
+#if defined(CONFIG_DISPLAY_CPUINFO)
+int print_cpuinfo(void)
+{
+       u32 cpurev;
+
+       cpurev = get_cpu_rev();
+       printf("CPU:   Freescale i.MX%x family rev%d.%d at %d MHz\n",
+               (cpurev & 0xFF000) >> 12,
+               (cpurev & 0x000F0) >> 4,
+               (cpurev & 0x0000F) >> 0,
+               mxc_get_clock(MXC_ARM_CLK) / 1000000);
+       printf("Reset cause: %s\n", get_reset_cause());
+       return 0;
+}
+#endif
+
+int cpu_eth_init(bd_t *bis)
+{
+       int rc = -ENODEV;
+
+#if defined(CONFIG_FEC_MXC)
+       rc = fecmxc_initialize(bis);
+#endif
+
+       return rc;
+}
+
+/*
+ * Initializes on-chip MMC controllers.
+ * to override, implement board_mmc_init()
+ */
+int cpu_mmc_init(bd_t *bis)
+{
+#ifdef CONFIG_FSL_ESDHC
+       return fsl_esdhc_mmc_init(bis);
+#else
+       return 0;
+#endif
+}
+
+void reset_cpu(ulong addr)
+{
+       __raw_writew(4, WDOG1_BASE_ADDR);
+}
old mode 100644 (file)
new mode 100755 (executable)
similarity index 84%
rename from arch/arm/cpu/armv7/mx5/timer.c
rename to arch/arm/cpu/armv7/imx-common/timer.c
index 2544b08..98e9f4a
@@ -39,10 +39,11 @@ struct mxc_gpt {
 static struct mxc_gpt *cur_gpt = (struct mxc_gpt *)GPT1_BASE_ADDR;
 
 /* General purpose timers bitfields */
-#define GPTCR_SWR       (1<<15)        /* Software reset */
-#define GPTCR_FRR       (1<<9) /* Freerun / restart */
-#define GPTCR_CLKSOURCE_32 (4<<6)      /* Clock source */
-#define GPTCR_TEN       (1)    /* Timer enable */
+#define GPTCR_SWR              (1 << 15)       /* Software reset */
+#define GPTCR_FRR              (1 << 9)        /* Freerun / restart */
+#define GPTCR_CLKSOURCE_32     (4 << 6)        /* Clock source */
+#define GPTCR_TEN              1               /* Timer enable */
+#define CLK_32KHZ              32768           /* 32Khz input */
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -68,7 +69,7 @@ int timer_init(void)
        __raw_writel(i | GPTCR_CLKSOURCE_32 | GPTCR_TEN, &cur_gpt->control);
 
        val = __raw_readl(&cur_gpt->counter);
-       lastinc = val / (CONFIG_SYS_MX5_CLK32 / CONFIG_SYS_HZ);
+       lastinc = val / (CLK_32KHZ / CONFIG_SYS_HZ);
        timestamp = 0;
 
        return 0;
@@ -77,11 +78,11 @@ int timer_init(void)
 ulong get_timer_masked(void)
 {
        ulong val = __raw_readl(&cur_gpt->counter);
-       val /= (CONFIG_SYS_MX5_CLK32 / CONFIG_SYS_HZ);
+       val /= (CLK_32KHZ / CONFIG_SYS_HZ);
        if (val >= lastinc)
                timestamp += (val - lastinc);
        else
-               timestamp += ((0xFFFFFFFF / (CONFIG_SYS_MX5_CLK32 / CONFIG_SYS_HZ))
+               timestamp += ((0xFFFFFFFF / (CLK_32KHZ / CONFIG_SYS_HZ))
                                - lastinc) + val;
        lastinc = val;
        return timestamp;
@@ -96,7 +97,7 @@ ulong get_timer(ulong base)
 void __udelay(unsigned long usec)
 {
        unsigned long now, start, tmo;
-       tmo = usec * (CONFIG_SYS_MX5_CLK32 / 1000) / 1000;
+       tmo = usec * (CLK_32KHZ / 1000) / 1000;
 
        if (!tmo)
                tmo = 1;
index e8be9c9fabfa926de0f0ab30e3d8201005fad635..ecd1184213328fe974af724cc54ae72edd2332aa 100644 (file)
@@ -27,7 +27,7 @@ include $(TOPDIR)/config.mk
 
 LIB    = $(obj)lib$(SOC).o
 
-COBJS  = soc.o clock.o iomux.o timer.o speed.o
+COBJS  = soc.o clock.o iomux.o
 SOBJS = lowlevel_init.o
 
 SRCS   := $(SOBJS:.o=.S) $(COBJS:.o=.c)
index cf12ba88f481382fe26d3aacc290f631845e4c50..1533dd872258380fe04f193d84ff186e8f7b23c4 100644 (file)
 #include <asm/errno.h>
 #include <asm/io.h>
 
-#ifdef CONFIG_FSL_ESDHC
-#include <fsl_esdhc.h>
-#endif
-
 #if !(defined(CONFIG_MX51) || defined(CONFIG_MX53))
 #error "CPU_TYPE not defined"
 #endif
@@ -75,61 +71,6 @@ u32 get_cpu_rev(void)
        return system_rev;
 }
 
-static char *get_reset_cause(void)
-{
-       u32 cause;
-       struct src *src_regs = (struct src *)SRC_BASE_ADDR;
-
-       cause = readl(&src_regs->srsr);
-       writel(cause, &src_regs->srsr);
-
-       switch (cause) {
-       case 0x00001:
-               return "POR";
-       case 0x00004:
-               return "CSU";
-       case 0x00008:
-               return "IPP USER";
-       case 0x00010:
-               return "WDOG";
-       case 0x00020:
-               return "JTAG HIGH-Z";
-       case 0x00040:
-               return "JTAG SW";
-       case 0x10000:
-               return "WARM BOOT";
-       default:
-               return "unknown reset";
-       }
-}
-
-#if defined(CONFIG_DISPLAY_CPUINFO)
-int print_cpuinfo(void)
-{
-       u32 cpurev;
-
-       cpurev = get_cpu_rev();
-       printf("CPU:   Freescale i.MX%x family rev%d.%d at %d MHz\n",
-               (cpurev & 0xFF000) >> 12,
-               (cpurev & 0x000F0) >> 4,
-               (cpurev & 0x0000F) >> 0,
-               mxc_get_clock(MXC_ARM_CLK) / 1000000);
-       printf("Reset cause: %s\n", get_reset_cause());
-       return 0;
-}
-#endif
-
-int cpu_eth_init(bd_t *bis)
-{
-       int rc = -ENODEV;
-
-#if defined(CONFIG_FEC_MXC)
-       rc = fecmxc_initialize(bis);
-#endif
-
-       return rc;
-}
-
 #if defined(CONFIG_FEC_MXC)
 void imx_get_mac_from_fuse(unsigned char *mac)
 {
@@ -144,19 +85,6 @@ void imx_get_mac_from_fuse(unsigned char *mac)
 }
 #endif
 
-/*
- * Initializes on-chip MMC controllers.
- * to override, implement board_mmc_init()
- */
-int cpu_mmc_init(bd_t *bis)
-{
-#ifdef CONFIG_FSL_ESDHC
-       return fsl_esdhc_mmc_init(bis);
-#else
-       return 0;
-#endif
-}
-
 void set_chipselect_size(int const cs_size)
 {
        unsigned int reg;
@@ -187,8 +115,3 @@ void set_chipselect_size(int const cs_size)
 
        writel(reg, &iomuxc_regs->gpr1);
 }
-
-void reset_cpu(ulong addr)
-{
-       __raw_writew(4, WDOG1_BASE_ADDR);
-}
diff --git a/arch/arm/cpu/armv7/mx6/Makefile b/arch/arm/cpu/armv7/mx6/Makefile
new file mode 100644 (file)
index 0000000..b0da028
--- /dev/null
@@ -0,0 +1,48 @@
+#
+# (C) Copyright 2000-2006
+# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+#
+# (C) Copyright 2011 Freescale Semiconductor, Inc.
+#
+# See file CREDITS for list of people who contributed to this
+# project.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+# MA 02111-1307 USA
+#
+
+include $(TOPDIR)/config.mk
+
+LIB    = $(obj)lib$(SOC).o
+
+COBJS  = soc.o clock.o iomux-v3.o
+SOBJS   = lowlevel_init.o
+
+SRCS   := $(SOBJS:.o=.S) $(COBJS:.o=.c)
+OBJS   := $(addprefix $(obj),$(SOBJS) $(COBJS))
+
+all:   $(obj).depend $(LIB)
+
+$(LIB):        $(OBJS)
+       $(call cmd_link_o_target, $(OBJS))
+
+#########################################################################
+
+# defines $(obj).depend target
+include $(SRCTREE)/rules.mk
+
+sinclude $(obj).depend
+
+#########################################################################
diff --git a/arch/arm/cpu/armv7/mx6/clock.c b/arch/arm/cpu/armv7/mx6/clock.c
new file mode 100644 (file)
index 0000000..b143535
--- /dev/null
@@ -0,0 +1,366 @@
+/*
+ * Copyright (C) 2010-2011 Freescale Semiconductor, Inc.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#include <common.h>
+#include <asm/io.h>
+#include <asm/errno.h>
+#include <asm/arch/imx-regs.h>
+#include <asm/arch/ccm_regs.h>
+#include <asm/arch/clock.h>
+
+enum pll_clocks {
+       PLL_SYS,        /* System PLL */
+       PLL_BUS,        /* System Bus PLL*/
+       PLL_USBOTG,     /* OTG USB PLL */
+       PLL_ENET,       /* ENET PLL */
+};
+
+struct imx_ccm_reg *imx_ccm = (struct imx_ccm_reg *)CCM_BASE_ADDR;
+
+static u32 decode_pll(enum pll_clocks pll, u32 infreq)
+{
+       u32 div;
+
+       switch (pll) {
+       case PLL_SYS:
+               div = __raw_readl(&imx_ccm->analog_pll_sys);
+               div &= BM_ANADIG_PLL_SYS_DIV_SELECT;
+
+               return infreq * (div >> 1);
+       case PLL_BUS:
+               div = __raw_readl(&imx_ccm->analog_pll_528);
+               div &= BM_ANADIG_PLL_528_DIV_SELECT;
+
+               return infreq * (20 + (div << 1));
+       case PLL_USBOTG:
+               div = __raw_readl(&imx_ccm->analog_usb1_pll_480_ctrl);
+               div &= BM_ANADIG_USB1_PLL_480_CTRL_DIV_SELECT;
+
+               return infreq * (20 + (div << 1));
+       case PLL_ENET:
+               div = __raw_readl(&imx_ccm->analog_pll_enet);
+               div &= BM_ANADIG_PLL_ENET_DIV_SELECT;
+
+               return (div == 3 ? 125000000 : 25000000 * (div << 1));
+       default:
+               return 0;
+       }
+       /* NOTREACHED */
+}
+
+static u32 get_mcu_main_clk(void)
+{
+       u32 reg, freq;
+
+       reg = __raw_readl(&imx_ccm->cacrr);
+       reg &= MXC_CCM_CACRR_ARM_PODF_MASK;
+       reg >>= MXC_CCM_CACRR_ARM_PODF_OFFSET;
+       freq = decode_pll(PLL_SYS, CONFIG_SYS_MX6_HCLK);
+
+       return freq / (reg + 1);
+}
+
+static u32 get_periph_clk(void)
+{
+       u32 reg, freq = 0;
+
+       reg = __raw_readl(&imx_ccm->cbcdr);
+       if (reg & MXC_CCM_CBCDR_PERIPH_CLK_SEL) {
+               reg = __raw_readl(&imx_ccm->cbcmr);
+               reg &= MXC_CCM_CBCMR_PERIPH_CLK2_SEL_MASK;
+               reg >>= MXC_CCM_CBCMR_PERIPH_CLK2_SEL_OFFSET;
+
+               switch (reg) {
+               case 0:
+                       freq = decode_pll(PLL_USBOTG, CONFIG_SYS_MX6_HCLK);
+                       break;
+               case 1:
+               case 2:
+                       freq = CONFIG_SYS_MX6_HCLK;
+                       break;
+               default:
+                       break;
+               }
+       } else {
+               reg = __raw_readl(&imx_ccm->cbcmr);
+               reg &= MXC_CCM_CBCMR_PRE_PERIPH_CLK_SEL_MASK;
+               reg >>= MXC_CCM_CBCMR_PRE_PERIPH_CLK_SEL_OFFSET;
+
+               switch (reg) {
+               case 0:
+                       freq = decode_pll(PLL_BUS, CONFIG_SYS_MX6_HCLK);
+                       break;
+               case 1:
+                       freq = PLL2_PFD2_FREQ;
+                       break;
+               case 2:
+                       freq = PLL2_PFD0_FREQ;
+                       break;
+               case 3:
+                       freq = PLL2_PFD2_DIV_FREQ;
+                       break;
+               default:
+                       break;
+               }
+       }
+
+       return freq;
+}
+
+
+static u32 get_ahb_clk(void)
+{
+       u32 reg, ahb_podf;
+
+       reg = __raw_readl(&imx_ccm->cbcdr);
+       reg &= MXC_CCM_CBCDR_AHB_PODF_MASK;
+       ahb_podf = reg >> MXC_CCM_CBCDR_AHB_PODF_OFFSET;
+
+       return get_periph_clk() / (ahb_podf + 1);
+}
+
+static u32 get_ipg_clk(void)
+{
+       u32 reg, ipg_podf;
+
+       reg = __raw_readl(&imx_ccm->cbcdr);
+       reg &= MXC_CCM_CBCDR_IPG_PODF_MASK;
+       ipg_podf = reg >> MXC_CCM_CBCDR_IPG_PODF_OFFSET;
+
+       return get_ahb_clk() / (ipg_podf + 1);
+}
+
+static u32 get_ipg_per_clk(void)
+{
+       u32 reg, perclk_podf;
+
+       reg = __raw_readl(&imx_ccm->cscmr1);
+       perclk_podf = reg & MXC_CCM_CSCMR1_PERCLK_PODF_MASK;
+
+       return get_ipg_clk() / (perclk_podf + 1);
+}
+
+static u32 get_uart_clk(void)
+{
+       u32 reg, uart_podf;
+
+       reg = __raw_readl(&imx_ccm->cscdr1);
+       reg &= MXC_CCM_CSCDR1_UART_CLK_PODF_MASK;
+       uart_podf = reg >> MXC_CCM_CSCDR1_UART_CLK_PODF_OFFSET;
+
+       return PLL3_80M / (uart_podf + 1);
+}
+
+static u32 get_cspi_clk(void)
+{
+       u32 reg, cspi_podf;
+
+       reg = __raw_readl(&imx_ccm->cscdr2);
+       reg &= MXC_CCM_CSCDR2_ECSPI_CLK_PODF_MASK;
+       cspi_podf = reg >> MXC_CCM_CSCDR2_ECSPI_CLK_PODF_OFFSET;
+
+       return  PLL3_60M / (cspi_podf + 1);
+}
+
+static u32 get_axi_clk(void)
+{
+       u32 root_freq, axi_podf;
+       u32 cbcdr =  __raw_readl(&imx_ccm->cbcdr);
+
+       axi_podf = cbcdr & MXC_CCM_CBCDR_AXI_PODF_MASK;
+       axi_podf >>= MXC_CCM_CBCDR_AXI_PODF_OFFSET;
+
+       if (cbcdr & MXC_CCM_CBCDR_AXI_SEL) {
+               if (cbcdr & MXC_CCM_CBCDR_AXI_ALT_SEL)
+                       root_freq = PLL2_PFD2_FREQ;
+               else
+                       root_freq = PLL3_PFD1_FREQ;
+       } else
+               root_freq = get_periph_clk();
+
+       return  root_freq / (axi_podf + 1);
+}
+
+static u32 get_emi_slow_clk(void)
+{
+       u32 emi_clk_sel, emi_slow_pof, cscmr1, root_freq = 0;
+
+       cscmr1 =  __raw_readl(&imx_ccm->cscmr1);
+       emi_clk_sel = cscmr1 & MXC_CCM_CSCMR1_ACLK_EMI_SLOW_MASK;
+       emi_clk_sel >>= MXC_CCM_CSCMR1_ACLK_EMI_SLOW_OFFSET;
+       emi_slow_pof = cscmr1 & MXC_CCM_CSCMR1_ACLK_EMI_SLOW_PODF_MASK;
+       emi_slow_pof >>= MXC_CCM_CSCMR1_ACLK_EMI_PODF_OFFSET;
+
+       switch (emi_clk_sel) {
+       case 0:
+               root_freq = get_axi_clk();
+               break;
+       case 1:
+               root_freq = decode_pll(PLL_USBOTG, CONFIG_SYS_MX6_HCLK);
+               break;
+       case 2:
+               root_freq = PLL2_PFD2_FREQ;
+               break;
+       case 3:
+               root_freq = PLL2_PFD0_FREQ;
+               break;
+       }
+
+       return root_freq / (emi_slow_pof + 1);
+}
+
+static u32 get_mmdc_ch0_clk(void)
+{
+       u32 cbcdr = __raw_readl(&imx_ccm->cbcdr);
+       u32 mmdc_ch0_podf = (cbcdr & MXC_CCM_CBCDR_MMDC_CH0_PODF_MASK) >>
+                               MXC_CCM_CBCDR_MMDC_CH0_PODF_OFFSET;
+
+       return get_periph_clk() / (mmdc_ch0_podf + 1);
+}
+
+static u32 get_usdhc_clk(u32 port)
+{
+       u32 root_freq = 0, usdhc_podf = 0, clk_sel = 0;
+       u32 cscmr1 = __raw_readl(&imx_ccm->cscmr1);
+       u32 cscdr1 = __raw_readl(&imx_ccm->cscdr1);
+
+       switch (port) {
+       case 0:
+               usdhc_podf = (cscdr1 & MXC_CCM_CSCDR1_USDHC1_PODF_MASK) >>
+                                       MXC_CCM_CSCDR1_USDHC1_PODF_OFFSET;
+               clk_sel = cscmr1 & MXC_CCM_CSCMR1_USDHC1_CLK_SEL;
+
+               break;
+       case 1:
+               usdhc_podf = (cscdr1 & MXC_CCM_CSCDR1_USDHC2_PODF_MASK) >>
+                                       MXC_CCM_CSCDR1_USDHC2_PODF_OFFSET;
+               clk_sel = cscmr1 & MXC_CCM_CSCMR1_USDHC2_CLK_SEL;
+
+               break;
+       case 2:
+               usdhc_podf = (cscdr1 & MXC_CCM_CSCDR1_USDHC3_PODF_MASK) >>
+                                       MXC_CCM_CSCDR1_USDHC3_PODF_OFFSET;
+               clk_sel = cscmr1 & MXC_CCM_CSCMR1_USDHC3_CLK_SEL;
+
+               break;
+       case 3:
+               usdhc_podf = (cscdr1 & MXC_CCM_CSCDR1_USDHC4_PODF_MASK) >>
+                                       MXC_CCM_CSCDR1_USDHC4_PODF_OFFSET;
+               clk_sel = cscmr1 & MXC_CCM_CSCMR1_USDHC4_CLK_SEL;
+
+               break;
+       default:
+               break;
+       }
+
+       if (clk_sel)
+               root_freq = PLL2_PFD0_FREQ;
+       else
+               root_freq = PLL2_PFD2_FREQ;
+
+       return root_freq / (usdhc_podf + 1);
+}
+
+u32 imx_get_uartclk(void)
+{
+       return get_uart_clk();
+}
+
+unsigned int mxc_get_clock(enum mxc_clock clk)
+{
+       switch (clk) {
+       case MXC_ARM_CLK:
+               return get_mcu_main_clk();
+       case MXC_PER_CLK:
+               return get_periph_clk();
+       case MXC_AHB_CLK:
+               return get_ahb_clk();
+       case MXC_IPG_CLK:
+               return get_ipg_clk();
+       case MXC_IPG_PERCLK:
+               return get_ipg_per_clk();
+       case MXC_UART_CLK:
+               return get_uart_clk();
+       case MXC_CSPI_CLK:
+               return get_cspi_clk();
+       case MXC_AXI_CLK:
+               return get_axi_clk();
+       case MXC_EMI_SLOW_CLK:
+               return get_emi_slow_clk();
+       case MXC_DDR_CLK:
+               return get_mmdc_ch0_clk();
+       case MXC_ESDHC_CLK:
+               return get_usdhc_clk(0);
+       case MXC_ESDHC2_CLK:
+               return get_usdhc_clk(1);
+       case MXC_ESDHC3_CLK:
+               return get_usdhc_clk(2);
+       case MXC_ESDHC4_CLK:
+               return get_usdhc_clk(3);
+       case MXC_SATA_CLK:
+               return get_ahb_clk();
+       default:
+               break;
+       }
+
+       return -1;
+}
+
+/*
+ * Dump some core clockes.
+ */
+int do_mx6_showclocks(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+{
+       u32 freq;
+       freq = decode_pll(PLL_SYS, CONFIG_SYS_MX6_HCLK);
+       printf("PLL_SYS    %8d MHz\n", freq / 1000000);
+       freq = decode_pll(PLL_BUS, CONFIG_SYS_MX6_HCLK);
+       printf("PLL_BUS    %8d MHz\n", freq / 1000000);
+       freq = decode_pll(PLL_USBOTG, CONFIG_SYS_MX6_HCLK);
+       printf("PLL_OTG    %8d MHz\n", freq / 1000000);
+       freq = decode_pll(PLL_ENET, CONFIG_SYS_MX6_HCLK);
+       printf("PLL_NET    %8d MHz\n", freq / 1000000);
+
+       printf("\n");
+       printf("IPG        %8d kHz\n", mxc_get_clock(MXC_IPG_CLK) / 1000);
+       printf("UART       %8d kHz\n", mxc_get_clock(MXC_UART_CLK) / 1000);
+       printf("CSPI       %8d kHz\n", mxc_get_clock(MXC_CSPI_CLK) / 1000);
+       printf("AHB        %8d kHz\n", mxc_get_clock(MXC_AHB_CLK) / 1000);
+       printf("AXI        %8d kHz\n", mxc_get_clock(MXC_AXI_CLK) / 1000);
+       printf("DDR        %8d kHz\n", mxc_get_clock(MXC_DDR_CLK) / 1000);
+       printf("USDHC1     %8d kHz\n", mxc_get_clock(MXC_ESDHC_CLK) / 1000);
+       printf("USDHC2     %8d kHz\n", mxc_get_clock(MXC_ESDHC2_CLK) / 1000);
+       printf("USDHC3     %8d kHz\n", mxc_get_clock(MXC_ESDHC3_CLK) / 1000);
+       printf("USDHC4     %8d kHz\n", mxc_get_clock(MXC_ESDHC4_CLK) / 1000);
+       printf("EMI SLOW   %8d kHz\n", mxc_get_clock(MXC_EMI_SLOW_CLK) / 1000);
+       printf("IPG PERCLK %8d kHz\n", mxc_get_clock(MXC_IPG_PERCLK) / 1000);
+
+       return 0;
+}
+
+/***************************************************/
+
+U_BOOT_CMD(
+       clocks, CONFIG_SYS_MAXARGS, 1, do_mx6_showclocks,
+       "display clocks",
+       ""
+);
diff --git a/arch/arm/cpu/armv7/mx6/iomux-v3.c b/arch/arm/cpu/armv7/mx6/iomux-v3.c
new file mode 100644 (file)
index 0000000..8785532
--- /dev/null
@@ -0,0 +1,71 @@
+/*
+ * Based on the iomux-v3.c from Linux kernel:
+ * Copyright (C) 2008 by Sascha Hauer <kernel@pengutronix.de>
+ * Copyright (C) 2009 by Jan Weitzel Phytec Messtechnik GmbH,
+ *                       <armlinux@phytec.de>
+ *
+ * Copyright (C) 2004-2011 Freescale Semiconductor, Inc.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301, USA.
+ */
+#include <common.h>
+#include <asm/io.h>
+#include <asm/arch/imx-regs.h>
+#include <asm/arch/mx6x_pins.h>
+#include <asm/arch/iomux-v3.h>
+
+static void *base = (void *)IOMUXC_BASE_ADDR;
+
+/*
+ * configures a single pad in the iomuxer
+ */
+int imx_iomux_v3_setup_pad(iomux_v3_cfg_t pad)
+{
+       u32 mux_ctrl_ofs = (pad & MUX_CTRL_OFS_MASK) >> MUX_CTRL_OFS_SHIFT;
+       u32 mux_mode = (pad & MUX_MODE_MASK) >> MUX_MODE_SHIFT;
+       u32 sel_input_ofs =
+               (pad & MUX_SEL_INPUT_OFS_MASK) >> MUX_SEL_INPUT_OFS_SHIFT;
+       u32 sel_input =
+               (pad & MUX_SEL_INPUT_MASK) >> MUX_SEL_INPUT_SHIFT;
+       u32 pad_ctrl_ofs =
+               (pad & MUX_PAD_CTRL_OFS_MASK) >> MUX_PAD_CTRL_OFS_SHIFT;
+       u32 pad_ctrl = (pad & MUX_PAD_CTRL_MASK) >> MUX_PAD_CTRL_SHIFT;
+
+       if (mux_ctrl_ofs)
+               __raw_writel(mux_mode, base + mux_ctrl_ofs);
+
+       if (sel_input_ofs)
+               __raw_writel(sel_input, base + sel_input_ofs);
+
+       if (!(pad_ctrl & NO_PAD_CTRL) && pad_ctrl_ofs)
+               __raw_writel(pad_ctrl, base + pad_ctrl_ofs);
+
+       return 0;
+}
+
+int imx_iomux_v3_setup_multiple_pads(iomux_v3_cfg_t *pad_list, unsigned count)
+{
+       iomux_v3_cfg_t *p = pad_list;
+       int i;
+       int ret;
+
+       for (i = 0; i < count; i++) {
+               ret = imx_iomux_v3_setup_pad(*p);
+               if (ret)
+                       return ret;
+               p++;
+       }
+       return 0;
+}
diff --git a/arch/arm/cpu/armv7/mx6/lowlevel_init.S b/arch/arm/cpu/armv7/mx6/lowlevel_init.S
new file mode 100644 (file)
index 0000000..1864356
--- /dev/null
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010-2011 Freescale Semiconductor, Inc.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+.section ".text.init", "x"
+
+.globl lowlevel_init
+lowlevel_init:
+
+       mov pc, lr
diff --git a/arch/arm/cpu/armv7/mx6/soc.c b/arch/arm/cpu/armv7/mx6/soc.c
new file mode 100644 (file)
index 0000000..dff5e4e
--- /dev/null
@@ -0,0 +1,82 @@
+/*
+ * (C) Copyright 2007
+ * Sascha Hauer, Pengutronix
+ *
+ * (C) Copyright 2009 Freescale Semiconductor, Inc.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#include <common.h>
+#include <asm/errno.h>
+#include <asm/io.h>
+#include <asm/arch/imx-regs.h>
+#include <asm/arch/clock.h>
+#include <asm/arch/sys_proto.h>
+
+u32 get_cpu_rev(void)
+{
+       int system_rev = 0x61000 | CHIP_REV_1_0;
+
+       return system_rev;
+}
+
+#ifdef CONFIG_ARCH_CPU_INIT
+void init_aips(void)
+{
+       u32 reg = AIPS1_BASE_ADDR;
+
+       /*
+        * Set all MPROTx to be non-bufferable, trusted for R/W,
+        * not forced to user-mode.
+        */
+       writel(0x77777777, reg + 0x00);
+       writel(0x77777777, reg + 0x04);
+
+       reg = AIPS2_BASE_ADDR;
+       writel(0x77777777, reg + 0x00);
+       writel(0x77777777, reg + 0x04);
+}
+
+int arch_cpu_init(void)
+{
+       init_aips();
+
+       return 0;
+}
+#endif
+
+#if defined(CONFIG_FEC_MXC)
+void imx_get_mac_from_fuse(unsigned char *mac)
+{
+       struct iim_regs *iim = (struct iim_regs *)IMX_IIM_BASE;
+       struct fuse_bank *bank = &iim->bank[4];
+       struct fuse_bank4_regs *fuse =
+                       (struct fuse_bank4_regs *)bank->fuse_regs;
+
+       u32 mac_lo = readl(&fuse->mac_addr_low);
+       u32 mac_hi = readl(&fuse->mac_addr_high);
+
+       *(u32 *)mac = mac_lo;
+
+       mac[4] = mac_hi & 0xff;
+       mac[5] = (mac_hi >> 8) & 0xff;
+
+}
+#endif
index d23dc9d719b926cc7f2e3b978fbc728d1df8a2e8..6a77c71e1d75ccfe83c4176b47b10116c43f5581 100644 (file)
@@ -82,18 +82,6 @@ _end_vect:
 _TEXT_BASE:
        .word   CONFIG_SYS_TEXT_BASE
 
-#ifdef CONFIG_TEGRA2
-/*
- * Tegra2 uses 2 separate CPUs - the AVP (ARM7TDMI) and the CPU (dual A9s).
- * U-Boot runs on the AVP first, setting things up for the CPU (PLLs,
- * muxes, clocks, clamps, etc.). Then the AVP halts, and expects the CPU
- * to pick up its reset vector, which points here.
- */
-.globl _armboot_start
-_armboot_start:
-       .word _start
-#endif
-
 /*
  * These are defined in the board-specific linker script.
  */
@@ -162,6 +150,7 @@ reset:
 
        /* the mask ROM code should have PLL and others stable */
 #ifndef CONFIG_SKIP_LOWLEVEL_INIT
+       bl      cpu_init_cp15
        bl      cpu_init_crit
 #endif
 
@@ -299,17 +288,16 @@ jump_2_ram:
 _board_init_r_ofs:
        .word board_init_r - _start
 
-
-#ifndef CONFIG_SKIP_LOWLEVEL_INIT
 /*************************************************************************
  *
- * CPU_init_critical registers
+ * cpu_init_cp15
  *
- * setup important registers
- * setup memory timing
+ * Setup CP15 registers (cache, MMU, TLBs). The I-cache is turned on unless
+ * CONFIG_SYS_ICACHE_OFF is defined.
  *
  *************************************************************************/
-cpu_init_crit:
+.globl cpu_init_cp15
+cpu_init_cp15:
        /*
         * Invalidate L1 I/D
         */
@@ -334,7 +322,19 @@ cpu_init_crit:
        orr     r0, r0, #0x00001000     @ set bit 12 (I) I-cache
 #endif
        mcr     p15, 0, r0, c1, c0, 0
+       mov     pc, lr                  @ back to my caller
 
+
+#ifndef CONFIG_SKIP_LOWLEVEL_INIT
+/*************************************************************************
+ *
+ * CPU_init_critical registers
+ *
+ * setup important registers
+ * setup memory timing
+ *
+ *************************************************************************/
+cpu_init_crit:
        /*
         * Jump to board specific initialization...
         * The Mask ROM will have already initialized
index f0dc2ffa83b36b42bc64afdd53e045265fce45bf..955c3b6dc414f497addd6bb491f7cf1cef67a29d 100644 (file)
 # MA 02111-1307 USA
 #
 
+# The AVP is ARMv4T architecture so we must use special compiler
+# flags for any startup files it might use.
+CFLAGS_arch/arm/cpu/armv7/tegra2/ap20.o += -march=armv4t
+CFLAGS_arch/arm/cpu/armv7/tegra2/clock.o += -march=armv4t
+
 include $(TOPDIR)/config.mk
 
 LIB    =  $(obj)lib$(SOC).o
index 5cb4b1b6a0e2a14e3ed2e17f3855c83cb1ce32a3..4c44bb3637736902970a72b207c350110455725a 100644 (file)
 #include <asm/arch/scu.h>
 #include <common.h>
 
-u32 s_first_boot = 1;
+/* Returns 1 if the current CPU executing is a Cortex-A9, else 0 */
+static int ap20_cpu_is_cortexa9(void)
+{
+       u32 id = readb(NV_PA_PG_UP_BASE + PG_UP_TAG_0);
+       return id == (PG_UP_TAG_0_PID_CPU & 0xff);
+}
 
 void init_pllx(void)
 {
@@ -283,38 +288,37 @@ void init_pmc_scratch(void)
        writel(CONFIG_SYS_BOARD_ODMDATA, &pmc->pmc_scratch20);
 }
 
-void cpu_start(void)
+void tegra2_start(void)
 {
        struct pmux_tri_ctlr *pmt = (struct pmux_tri_ctlr *)NV_PA_APB_MISC_BASE;
 
-       /* enable JTAG */
-       writel(0xC0, &pmt->pmt_cfg_ctl);
+       /* If we are the AVP, start up the first Cortex-A9 */
+       if (!ap20_cpu_is_cortexa9()) {
+               /* enable JTAG */
+               writel(0xC0, &pmt->pmt_cfg_ctl);
 
-       if (s_first_boot) {
                /*
-                * Need to set this before cold-booting,
-                *  otherwise we'll end up in an infinite loop.
-                */
-               s_first_boot = 0;
-               cold_boot();
+               * If we are ARM7 - give it a different stack. We are about to
+               * start up the A9 which will want to use this one.
+               */
+               asm volatile("ldr       sp, =%c0\n"
+                       : : "i"(AVP_EARLY_BOOT_STACK_LIMIT));
+
+               start_cpu((u32)_start);
+               halt_avp();
+               /* not reached */
        }
-}
 
-void tegra2_start()
-{
-       if (s_first_boot) {
-               /* Init Debug UART Port (115200 8n1) */
-               uart_init();
+       /* Init PMC scratch memory */
+       init_pmc_scratch();
 
-               /* Init PMC scratch memory */
-               init_pmc_scratch();
-       }
+       enable_scu();
 
-#ifdef CONFIG_ENABLE_CORTEXA9
-       /* take the mpcore out of reset */
-       cpu_start();
+       /* enable SMP mode and FW for CPU0, by writing to Auxiliary Ctl reg */
+       asm volatile(
+               "mrc    p15, 0, r0, c1, c0, 1\n"
+               "orr    r0, r0, #0x41\n"
+               "mcr    p15, 0, r0, c1, c0, 1\n");
 
-       /* configure cache */
-       cache_configure();
-#endif
+       /* FIXME: should have ap20's L2 disabled too? */
 }
index 49fe340a28dc2b6c1f80cbe6d8ff15380bc70386..a4b4d73a407036baaede91dc745c00501b6980c3 100644 (file)
 #define HALT_COP_EVENT_IRQ_1           (1 << 11)
 #define HALT_COP_EVENT_FIQ_1           (1 << 9)
 
-/* Prototypes */
-
+/* Start up the tegra2 SOC */
 void tegra2_start(void);
-void uart_init(void);
-void udelay(unsigned long);
-void cold_boot(void);
-void cache_configure(void);
+
+/* This is the main entry into U-Boot, used by the Cortex-A9 */
+extern void _start(void);
index 751102d180806023dce64718d5888d2030013873..59dce8f8de91dc4dc4f6409d2edd7828e7f90247 100644 (file)
@@ -23,6 +23,7 @@
 
 #include <common.h>
 #include <asm/io.h>
+#include "ap20.h"
 #include <asm/arch/sys_proto.h>
 #include <asm/arch/tegra2.h>
 #include <asm/arch/pmc.h>
@@ -54,28 +55,10 @@ unsigned int query_sdram_size(void)
        }
 }
 
-void s_init(void)
-{
-#ifndef CONFIG_ICACHE_OFF
-       icache_enable();
-#endif
-       invalidate_dcache();
-}
-
 int dram_init(void)
 {
-       unsigned long rs;
-
        /* We do not initialise DRAM here. We just query the size */
-       gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
-       gd->bd->bi_dram[0].size = gd->ram_size = query_sdram_size();
-
-       /* Now check it dynamically */
-       rs = get_ram_size(CONFIG_SYS_SDRAM_BASE, gd->ram_size);
-       if (rs) {
-               printf("dynamic ram_size = %lu\n", rs);
-               gd->bd->bi_dram[0].size = gd->ram_size = rs;
-       }
+       gd->ram_size = query_sdram_size();
        return 0;
 }
 
@@ -86,3 +69,17 @@ int checkboard(void)
        return 0;
 }
 #endif /* CONFIG_DISPLAY_BOARDINFO */
+
+#ifdef CONFIG_ARCH_CPU_INIT
+/*
+ * Note this function is executed by the ARM7TDMI AVP. It does not return
+ * in this case. It is also called once the A9 starts up, but does nothing in
+ * that case.
+ */
+int arch_cpu_init(void)
+{
+       /* Fire up the Cortex A9 */
+       tegra2_start();
+       return 0;
+}
+#endif
index 96c07955aa7658919203da4b6ddde53513949db0..8f9bdc9ff02d7e90da67576b91a24f37bb762429 100644 (file)
@@ -24,5 +24,8 @@
 # MA 02111-1307 USA
 #
 
-# Use ARMv4 for Tegra2 - initial code runs on the AVP, which is an ARM7TDI.
-PLATFORM_CPPFLAGS += -march=armv4
+# Tegra has an ARMv4T CPU which runs board_init_f(), so we must build this
+# file with compatible flags
+ifdef CONFIG_TEGRA2
+CFLAGS_arch/arm/lib/board.o += -march=armv4t
+endif
index f24a2ff57d33894f97ad7898b9eb6eee3bd1705e..6b866476ce7ba746a64b62ca8ddb079211f41831 100644 (file)
 #include <config.h>
 #include <version.h>
 
-
-_TEXT_BASE:
-       .word   CONFIG_SYS_TEXT_BASE    @ sdram load addr from config file
-
-.global invalidate_dcache
-invalidate_dcache:
-       mov pc, lr
-
        .align  5
 .global reset_cpu
 reset_cpu:
@@ -47,113 +39,3 @@ _loop_forever:
        b       _loop_forever
 rstctl:
        .word   PRM_RSTCTRL
-
-.globl lowlevel_init
-lowlevel_init:
-       ldr     sp, SRAM_STACK
-       str     ip, [sp]
-       mov     ip, lr
-       bl      s_init                          @ go setup pll, mux & memory
-       ldr     ip, [sp]
-       mov     lr, ip
-
-       mov     pc, lr                          @ back to arch calling code
-
-
-.globl startup_cpu
-startup_cpu:
-       @ Initialize the AVP, clocks, and memory controller
-       @ SDRAM is guaranteed to be on at this point
-
-       ldr     r0, =cold_boot                  @ R0 = reset vector for CPU
-       bl      start_cpu                       @ start the CPU
-
-       @ Transfer control to the AVP code
-       bl      halt_avp
-
-       @ Should never get here
-_loop_forever2:
-       b       _loop_forever2
-
-.globl cache_configure
-cache_configure:
-       stmdb   r13!,{r14}
-       @ invalidate instruction cache
-       mov     r1, #0
-       mcr     p15, 0, r1, c7, c5, 0
-
-       @ invalidate the i&d tlb entries
-       mcr     p15, 0, r1, c8, c5, 0
-       mcr     p15, 0, r1, c8, c6, 0
-
-       @ enable instruction cache
-       mrc     p15, 0, r1, c1, c0, 0
-       orr     r1, r1, #(1<<12)
-       mcr     p15, 0, r1, c1, c0, 0
-
-       bl      enable_scu
-
-       @ enable SMP mode and FW for CPU0, by writing to Auxiliary Ctl reg
-       mrc     p15, 0, r0, c1, c0, 1
-       orr     r0, r0, #0x41
-       mcr     p15, 0, r0, c1, c0, 1
-
-       @ Now flush the Dcache
-       mov     r0, #0
-       @ 256 cache lines
-       mov     r1, #256
-
-invalidate_loop:
-       add     r1, r1, #-1
-       mov     r0, r1, lsl #5
-       @ invalidate d-cache using line (way0)
-       mcr     p15, 0, r0, c7, c6, 2
-
-       orr     r2, r0, #(1<<30)
-       @ invalidate d-cache using line (way1)
-       mcr     p15, 0, r2, c7, c6, 2
-
-       orr     r2, r0, #(2<<30)
-       @ invalidate d-cache using line (way2)
-       mcr     p15, 0, r2, c7, c6, 2
-
-       orr     r2, r0, #(3<<30)
-       @ invalidate d-cache using line (way3)
-       mcr     p15, 0, r2, c7, c6, 2
-       cmp     r1, #0
-       bne     invalidate_loop
-
-       @ FIXME: should have ap20's L2 disabled too?
-invalidate_done:
-       ldmia   r13!,{pc}
-
-.globl cold_boot
-cold_boot:
-       msr     cpsr_c, #0xD3
-       @ Check current processor: CPU or AVP?
-       @  If CPU, go to CPU boot code, else continue on AVP path
-
-       ldr     r0, =NV_PA_PG_UP_BASE
-       ldr     r1, [r0]
-       ldr     r2, =PG_UP_TAG_AVP
-
-       @ are we the CPU?
-       ldr     sp, CPU_STACK
-       cmp     r1, r2
-       @ yep, we are the CPU
-       bne     _armboot_start
-
-       @ AVP initialization follows this path
-       ldr     sp, AVP_STACK
-       @ Init AVP and start CPU
-       b       startup_cpu
-
-       @ the literal pools origin
-       .ltorg
-
-SRAM_STACK:
-       .word LOW_LEVEL_SRAM_STACK
-AVP_STACK:
-       .word EARLY_AVP_STACK
-CPU_STACK:
-       .word EARLY_CPU_STACK
similarity index 99%
rename from arch/arm/include/asm/arch-s5pc2xx/clock.h
rename to arch/arm/include/asm/arch-exynos/clock.h
index 0ff8cf8cf43ee2349e224d69084761b1328ed182..483c91154b4533b9195ccf7c48da88757d1f4dda 100644 (file)
@@ -23,7 +23,7 @@
 #define __ASM_ARM_ARCH_CLOCK_H_
 
 #ifndef __ASSEMBLY__
-struct s5pc210_clock {
+struct exynos4_clock {
        unsigned char   res1[0x4200];
        unsigned int    src_leftbus;
        unsigned char   res2[0x1fc];
similarity index 64%
rename from arch/arm/include/asm/arch-s5pc2xx/cpu.h
rename to arch/arm/include/asm/arch-exynos/cpu.h
index f9015c76f122930be8e8f33334f55135692b942a..4464d2715c1022315d022dbc975984de7317e8d1 100644 (file)
  *
  */
 
-#ifndef _S5PC2XX_CPU_H
-#define _S5PC2XX_CPU_H
+#ifndef _EXYNOS4_CPU_H
+#define _EXYNOS4_CPU_H
 
-#define S5PC2XX_ADDR_BASE      0x10000000
+#define EXYNOS4_ADDR_BASE              0x10000000
 
-/* S5PC210 */
-#define S5PC210_GPIO_PART3_BASE        0x03860000
-#define S5PC210_PRO_ID         0x10000000
-#define S5PC210_POWER_BASE     0x10020000
-#define S5PC210_SWRESET                0x10020400
-#define S5PC210_CLOCK_BASE     0x10030000
-#define S5PC210_SYSTIMER_BASE  0x10050000
-#define S5PC210_WATCHDOG_BASE  0x10060000
-#define S5PC210_MIU_BASE       0x10600000
-#define S5PC210_DMC0_BASE      0x10400000
-#define S5PC210_DMC1_BASE      0x10410000
-#define S5PC210_GPIO_PART2_BASE        0x11000000
-#define S5PC210_GPIO_PART1_BASE        0x11400000
-#define S5PC210_FIMD_BASE      0x11C00000
-#define S5PC210_USBOTG_BASE    0x12480000
-#define S5PC210_MMC_BASE       0x12510000
-#define S5PC210_SROMC_BASE     0x12570000
-#define S5PC210_USBPHY_BASE    0x125B0000
-#define S5PC210_UART_BASE      0x13800000
-#define S5PC210_ADC_BASE       0x13910000
-#define S5PC210_PWMTIMER_BASE  0x139D0000
-#define S5PC210_MODEM_BASE     0x13A00000
+/* EXYNOS4 */
+#define EXYNOS4_GPIO_PART3_BASE                0x03860000
+#define EXYNOS4_PRO_ID                 0x10000000
+#define EXYNOS4_POWER_BASE             0x10020000
+#define EXYNOS4_SWRESET                        0x10020400
+#define EXYNOS4_CLOCK_BASE             0x10030000
+#define EXYNOS4_SYSTIMER_BASE          0x10050000
+#define EXYNOS4_WATCHDOG_BASE          0x10060000
+#define EXYNOS4_MIU_BASE               0x10600000
+#define EXYNOS4_DMC0_BASE              0x10400000
+#define EXYNOS4_DMC1_BASE              0x10410000
+#define EXYNOS4_GPIO_PART2_BASE                0x11000000
+#define EXYNOS4_GPIO_PART1_BASE                0x11400000
+#define EXYNOS4_FIMD_BASE              0x11C00000
+#define EXYNOS4_USBOTG_BASE            0x12480000
+#define EXYNOS4_MMC_BASE               0x12510000
+#define EXYNOS4_SROMC_BASE             0x12570000
+#define EXYNOS4_USBPHY_BASE            0x125B0000
+#define EXYNOS4_UART_BASE              0x13800000
+#define EXYNOS4_ADC_BASE               0x13910000
+#define EXYNOS4_PWMTIMER_BASE          0x139D0000
+#define EXYNOS4_MODEM_BASE             0x13A00000
 
 #ifndef __ASSEMBLY__
 #include <asm/io.h>
@@ -60,12 +60,12 @@ static inline int s5p_get_cpu_rev(void)
 
 static inline void s5p_set_cpu_id(void)
 {
-       s5p_cpu_id = readl(S5PC210_PRO_ID);
+       s5p_cpu_id = readl(EXYNOS4_PRO_ID);
        s5p_cpu_id = (0xC000 | ((s5p_cpu_id & 0x00FFF000) >> 12));
 
        /*
-        * 0xC200: S5PC210 EVT0
-        * 0xC210: S5PC210 EVT1
+        * 0xC200: EXYNOS4210 EVT0
+        * 0xC210: EXYNOS4210 EVT1
         */
        if (s5p_cpu_id == 0xC200) {
                s5p_cpu_id |= 0x10;
@@ -81,13 +81,13 @@ static inline int cpu_is_##type(void)                       \
        return s5p_cpu_id == id ? 1 : 0;                \
 }
 
-IS_SAMSUNG_TYPE(s5pc210, 0xc210)
+IS_SAMSUNG_TYPE(exynos4, 0xc210)
 
 #define SAMSUNG_BASE(device, base)                             \
 static inline unsigned int samsung_get_base_##device(void)     \
 {                                                              \
-       if (cpu_is_s5pc210())                                   \
-               return S5PC210_##base;                          \
+       if (cpu_is_exynos4())                                   \
+               return EXYNOS4_##base;                          \
        else                                                    \
                return 0;                                       \
 }
@@ -110,4 +110,4 @@ SAMSUNG_BASE(usb_otg, USBOTG_BASE)
 SAMSUNG_BASE(watchdog, WATCHDOG_BASE)
 #endif
 
-#endif /* _S5PC2XX_CPU_H */
+#endif /* _EXYNOS4_CPU_H */
similarity index 84%
rename from arch/arm/include/asm/arch-s5pc2xx/gpio.h
rename to arch/arm/include/asm/arch-exynos/gpio.h
index 8be620cae6c40c35f95dec32788765abfb755661..9863a122459ef5074b0665fde3fbf9d6322ebf40 100644 (file)
@@ -32,7 +32,7 @@ struct s5p_gpio_bank {
        unsigned char   res1[8];
 };
 
-struct s5pc210_gpio_part1 {
+struct exynos4_gpio_part1 {
        struct s5p_gpio_bank a0;
        struct s5p_gpio_bank a1;
        struct s5p_gpio_bank b;
@@ -51,7 +51,7 @@ struct s5pc210_gpio_part1 {
        struct s5p_gpio_bank f3;
 };
 
-struct s5pc210_gpio_part2 {
+struct exynos4_gpio_part2 {
        struct s5p_gpio_bank j0;
        struct s5p_gpio_bank j1;
        struct s5p_gpio_bank k0;
@@ -75,7 +75,7 @@ struct s5pc210_gpio_part2 {
        struct s5p_gpio_bank x3;
 };
 
-struct s5pc210_gpio_part3 {
+struct exynos4_gpio_part3 {
        struct s5p_gpio_bank z;
 };
 
@@ -92,27 +92,27 @@ void s5p_gpio_set_rate(struct s5p_gpio_bank *bank, int gpio, int mode);
 /* GPIO pins per bank  */
 #define GPIO_PER_BANK 8
 
-#define s5pc210_gpio_part1_get_nr(bank, pin) \
-       ((((((unsigned int) &(((struct s5pc210_gpio_part1 *) \
-                              S5PC210_GPIO_PART1_BASE)->bank)) \
-           - S5PC210_GPIO_PART1_BASE) / sizeof(struct s5p_gpio_bank)) \
+#define exynos4_gpio_part1_get_nr(bank, pin) \
+       ((((((unsigned int) &(((struct exynos4_gpio_part1 *) \
+                              EXYNOS4_GPIO_PART1_BASE)->bank)) \
+           - EXYNOS4_GPIO_PART1_BASE) / sizeof(struct s5p_gpio_bank)) \
          * GPIO_PER_BANK) + pin)
 
-#define GPIO_PART1_MAX ((sizeof(struct s5pc210_gpio_part1) \
+#define GPIO_PART1_MAX ((sizeof(struct exynos4_gpio_part1) \
                            / sizeof(struct s5p_gpio_bank)) * GPIO_PER_BANK)
 
-#define s5pc210_gpio_part2_get_nr(bank, pin) \
-       (((((((unsigned int) &(((struct s5pc210_gpio_part2 *) \
-                               S5PC210_GPIO_PART2_BASE)->bank)) \
-           - S5PC210_GPIO_PART2_BASE) / sizeof(struct s5p_gpio_bank)) \
+#define exynos4_gpio_part2_get_nr(bank, pin) \
+       (((((((unsigned int) &(((struct exynos4_gpio_part2 *) \
+                               EXYNOS4_GPIO_PART2_BASE)->bank)) \
+           - EXYNOS4_GPIO_PART2_BASE) / sizeof(struct s5p_gpio_bank)) \
          * GPIO_PER_BANK) + pin) + GPIO_PART1_MAX)
 
 static inline unsigned int s5p_gpio_base(int nr)
 {
        if (nr < GPIO_PART1_MAX)
-               return S5PC210_GPIO_PART1_BASE;
+               return EXYNOS4_GPIO_PART1_BASE;
        else
-               return S5PC210_GPIO_PART2_BASE;
+               return EXYNOS4_GPIO_PART2_BASE;
 
        return 0;
 }
index a226ea4840988bc958f381be92b5df2b28f08af6..be1f7db2ae7b8aa6b22b560a12c4bb20a21dc16a 100644 (file)
@@ -29,4 +29,10 @@ int mx28_wait_mask_clr(struct mx28_register *reg, uint32_t mask, int timeout);
 
 int mxsmmc_initialize(bd_t *bis, int id, int (*wp)(int));
 
+#ifdef CONFIG_SPL_BUILD
+#include <asm/arch/iomux-mx28.h>
+void mx28_common_spl_init(const iomux_cfg_t *iomux_setup,
+                       const unsigned int iomux_size);
+#endif
+
 #endif /* __MX28_H__ */
diff --git a/arch/arm/include/asm/arch-mx6/ccm_regs.h b/arch/arm/include/asm/arch-mx6/ccm_regs.h
new file mode 100644 (file)
index 0000000..4af0b90
--- /dev/null
@@ -0,0 +1,892 @@
+/*
+ * Copyright 2011 Freescale Semiconductor, Inc. All Rights Reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+ *
+ */
+
+#ifndef __ARCH_ARM_MACH_MX6_CCM_REGS_H__
+#define __ARCH_ARM_MACH_MX6_CCM_REGS_H__
+
+struct imx_ccm_reg {
+       u32 ccr;        /* 0x0000 */
+       u32 ccdr;
+       u32 csr;
+       u32 ccsr;
+       u32 cacrr;      /* 0x0010*/
+       u32 cbcdr;
+       u32 cbcmr;
+       u32 cscmr1;
+       u32 cscmr2;     /* 0x0020 */
+       u32 cscdr1;
+       u32 cs1cdr;
+       u32 cs2cdr;
+       u32 cdcdr;      /* 0x0030 */
+       u32 chscdr;
+       u32 cscdr2;
+       u32 cscdr3;
+       u32 cscdr4;     /* 0x0040 */
+       u32 resv0;
+       u32 cdhipr;
+       u32 cdcr;
+       u32 ctor;       /* 0x0050 */
+       u32 clpcr;
+       u32 cisr;
+       u32 cimr;
+       u32 ccosr;      /* 0x0060 */
+       u32 cgpr;
+       u32 CCGR0;
+       u32 CCGR1;
+       u32 CCGR2;      /* 0x0070 */
+       u32 CCGR3;
+       u32 CCGR4;
+       u32 CCGR5;
+       u32 CCGR6;      /* 0x0080 */
+       u32 CCGR7;
+       u32 cmeor;
+       u32 resv[0xfdd];
+       u32 analog_pll_sys;                     /* 0x4000 */
+       u32 analog_pll_sys_set;
+       u32 analog_pll_sys_clr;
+       u32 analog_pll_sys_tog;
+       u32 analog_usb1_pll_480_ctrl;           /* 0x4010 */
+       u32 analog_usb1_pll_480_ctrl_set;
+       u32 analog_usb1_pll_480_ctrl_clr;
+       u32 analog_usb1_pll_480_ctrl_tog;
+       u32 analog_reserved0[4];
+       u32 analog_pll_528;                     /* 0x4030 */
+       u32 analog_pll_528_set;
+       u32 analog_pll_528_clr;
+       u32 analog_pll_528_tog;
+       u32 analog_pll_528_ss;                  /* 0x4040 */
+       u32 analog_reserved1[3];
+       u32 analog_pll_528_num;                 /* 0x4050 */
+       u32 analog_reserved2[3];
+       u32 analog_pll_528_denom;               /* 0x4060 */
+       u32 analog_reserved3[3];
+       u32 analog_pll_audio;                   /* 0x4070 */
+       u32 analog_pll_audio_set;
+       u32 analog_pll_audio_clr;
+       u32 analog_pll_audio_tog;
+       u32 analog_pll_audio_num;               /* 0x4080*/
+       u32 analog_reserved4[3];
+       u32 analog_pll_audio_denom;             /* 0x4090 */
+       u32 analog_reserved5[3];
+       u32 analog_pll_video;                   /* 0x40a0 */
+       u32 analog_pll_video_set;
+       u32 analog_pll_video_clr;
+       u32 analog_pll_video_tog;
+       u32 analog_pll_video_num;               /* 0x40b0 */
+       u32 analog_reserved6[3];
+       u32 analog_pll_vedio_denon;             /* 0x40c0 */
+       u32 analog_reserved7[7];
+       u32 analog_pll_enet;                    /* 0x40e0 */
+       u32 analog_pll_enet_set;
+       u32 analog_pll_enet_clr;
+       u32 analog_pll_enet_tog;
+       u32 analog_pfd_480;                     /* 0x40f0 */
+       u32 analog_pfd_480_set;
+       u32 analog_pfd_480_clr;
+       u32 analog_pfd_480_tog;
+       u32 analog_pfd_528;                     /* 0x4100 */
+       u32 analog_pfd_528_set;
+       u32 analog_pfd_528_clr;
+       u32 analog_pfd_528_tog;
+};
+
+/* Define the bits in register CCR */
+#define MXC_CCM_CCR_RBC_EN                             (1 << 27)
+#define MXC_CCM_CCR_REG_BYPASS_CNT_MASK                        (0x3F << 21)
+#define MXC_CCM_CCR_REG_BYPASS_CNT_OFFSET              21
+#define MXC_CCM_CCR_WB_COUNT_MASK                      0x7
+#define MXC_CCM_CCR_WB_COUNT_OFFSET                    (1 << 16)
+#define MXC_CCM_CCR_COSC_EN                            (1 << 12)
+#define MXC_CCM_CCR_OSCNT_MASK                         0xFF
+#define MXC_CCM_CCR_OSCNT_OFFSET                       0
+
+/* Define the bits in register CCDR */
+#define MXC_CCM_CCDR_MMDC_CH1_HS_MASK                  (1 << 16)
+#define MXC_CCM_CCDR_MMDC_CH0_HS_MASK                  (1 << 17)
+
+/* Define the bits in register CSR */
+#define MXC_CCM_CSR_COSC_READY                         (1 << 5)
+#define MXC_CCM_CSR_REF_EN_B                           (1 << 0)
+
+/* Define the bits in register CCSR */
+#define MXC_CCM_CCSR_PDF_540M_AUTO_DIS                 (1 << 15)
+#define MXC_CCM_CCSR_PDF_720M_AUTO_DIS                 (1 << 14)
+#define MXC_CCM_CCSR_PDF_454M_AUTO_DIS                 (1 << 13)
+#define MXC_CCM_CCSR_PDF_508M_AUTO_DIS                 (1 << 12)
+#define MXC_CCM_CCSR_PDF_594M_AUTO_DIS                 (1 << 11)
+#define MXC_CCM_CCSR_PDF_352M_AUTO_DIS                 (1 << 10)
+#define MXC_CCM_CCSR_PDF_400M_AUTO_DIS                 (1 << 9)
+#define MXC_CCM_CCSR_STEP_SEL                          (1 << 8)
+#define MXC_CCM_CCSR_PLL1_SW_CLK_SEL                   (1 << 2)
+#define MXC_CCM_CCSR_PLL2_SW_CLK_SEL                   (1 << 1)
+#define MXC_CCM_CCSR_PLL3_SW_CLK_SEL                   (1 << 0)
+
+/* Define the bits in register CACRR */
+#define MXC_CCM_CACRR_ARM_PODF_OFFSET                  0
+#define MXC_CCM_CACRR_ARM_PODF_MASK                    0x7
+
+/* Define the bits in register CBCDR */
+#define MXC_CCM_CBCDR_PERIPH_CLK2_PODF_MASK            (0x7 << 27)
+#define MXC_CCM_CBCDR_PERIPH_CLK2_PODF_OFFSET          27
+#define MXC_CCM_CBCDR_PERIPH2_CLK2_SEL                 (1 << 26)
+#define MXC_CCM_CBCDR_PERIPH_CLK_SEL                   (1 << 25)
+#define MXC_CCM_CBCDR_MMDC_CH0_PODF_MASK               (0x7 << 19)
+#define MXC_CCM_CBCDR_MMDC_CH0_PODF_OFFSET             19
+#define MXC_CCM_CBCDR_AXI_PODF_MASK                    (0x7 << 16)
+#define MXC_CCM_CBCDR_AXI_PODF_OFFSET                  16
+#define MXC_CCM_CBCDR_AHB_PODF_MASK                    (0x7 << 10)
+#define MXC_CCM_CBCDR_AHB_PODF_OFFSET                  10
+#define MXC_CCM_CBCDR_IPG_PODF_MASK                    (0x3 << 8)
+#define MXC_CCM_CBCDR_IPG_PODF_OFFSET                  8
+#define MXC_CCM_CBCDR_AXI_ALT_SEL                      (1 << 7)
+#define MXC_CCM_CBCDR_AXI_SEL                          (1 << 6)
+#define MXC_CCM_CBCDR_MMDC_CH1_PODF_MASK               (0x7 << 3)
+#define MXC_CCM_CBCDR_MMDC_CH1_PODF_OFFSET             3
+#define MXC_CCM_CBCDR_PERIPH2_CLK2_PODF_MASK           (0x7 << 0)
+#define MXC_CCM_CBCDR_PERIPH2_CLK2_PODF_OFFSET         0
+
+/* Define the bits in register CBCMR */
+#define MXC_CCM_CBCMR_GPU3D_SHADER_PODF_MASK           (0x7 << 29)
+#define MXC_CCM_CBCMR_GPU3D_SHADER_PODF_OFFSET         29
+#define MXC_CCM_CBCMR_GPU3D_CORE_PODF_MASK             (0x7 << 26)
+#define MXC_CCM_CBCMR_GPU3D_CORE_PODF_OFFSET           26
+#define MXC_CCM_CBCMR_GPU2D_CORE_PODF_MASK             (0x7 << 23)
+#define MXC_CCM_CBCMR_GPU2D_CORE_PODF_OFFSET           23
+#define MXC_CCM_CBCMR_PRE_PERIPH2_CLK_SEL_MASK         (0x3 << 21)
+#define MXC_CCM_CBCMR_PRE_PERIPH2_CLK_SEL_OFFSET       21
+#define MXC_CCM_CBCMR_PRE_PERIPH2_CLK2_SEL             (1 << 20)
+#define MXC_CCM_CBCMR_PRE_PERIPH_CLK_SEL_MASK          (0x3 << 18)
+#define MXC_CCM_CBCMR_PRE_PERIPH_CLK_SEL_OFFSET                18
+#define MXC_CCM_CBCMR_GPU2D_CLK_SEL_MASK               (0x3 << 16)
+#define MXC_CCM_CBCMR_GPU2D_CLK_SEL_OFFSET             16
+#define MXC_CCM_CBCMR_VPU_AXI_CLK_SEL_MASK             (0x3 << 14)
+#define MXC_CCM_CBCMR_VPU_AXI_CLK_SEL_OFFSET           14
+#define MXC_CCM_CBCMR_PERIPH_CLK2_SEL_MASK             (0x3 << 12)
+#define MXC_CCM_CBCMR_PERIPH_CLK2_SEL_OFFSET           12
+#define MXC_CCM_CBCMR_VDOAXI_CLK_SEL                   (1 << 11)
+#define MXC_CCM_CBCMR_PCIE_AXI_CLK_SEL                 (1 << 10)
+#define MXC_CCM_CBCMR_GPU3D_SHADER_CLK_SEL_MASK                (0x3 << 8)
+#define MXC_CCM_CBCMR_GPU3D_SHADER_CLK_SEL_OFFSET      8
+#define MXC_CCM_CBCMR_GPU3D_CORE_CLK_SEL_MASK          (0x3 << 4)
+#define MXC_CCM_CBCMR_GPU3D_CORE_CLK_SEL_OFFSET                4
+#define MXC_CCM_CBCMR_GPU3D_AXI_CLK_SEL                        (1 << 1)
+#define MXC_CCM_CBCMR_GPU2D_AXI_CLK_SEL                        (1 << 0)
+
+/* Define the bits in register CSCMR1 */
+#define MXC_CCM_CSCMR1_ACLK_EMI_SLOW_MASK              (0x3 << 29)
+#define MXC_CCM_CSCMR1_ACLK_EMI_SLOW_OFFSET            29
+#define MXC_CCM_CSCMR1_ACLK_EMI_MASK                   (0x3 << 27)
+#define MXC_CCM_CSCMR1_ACLK_EMI_OFFSET                 27
+#define MXC_CCM_CSCMR1_ACLK_EMI_SLOW_PODF_MASK         (0x7 << 23)
+#define MXC_CCM_CSCMR1_ACLK_EMI_SLOW_PODF_OFFSET       23
+#define MXC_CCM_CSCMR1_ACLK_EMI_PODF_MASK              (0x7 << 20)
+#define MXC_CCM_CSCMR1_ACLK_EMI_PODF_OFFSET            20
+#define MXC_CCM_CSCMR1_USDHC4_CLK_SEL                  (1 << 19)
+#define MXC_CCM_CSCMR1_USDHC3_CLK_SEL                  (1 << 18)
+#define MXC_CCM_CSCMR1_USDHC2_CLK_SEL                  (1 << 17)
+#define MXC_CCM_CSCMR1_USDHC1_CLK_SEL                  (1 << 16)
+#define MXC_CCM_CSCMR1_SSI3_CLK_SEL_MASK               (0x3 << 14)
+#define MXC_CCM_CSCMR1_SSI3_CLK_SEL_OFFSET             14
+#define MXC_CCM_CSCMR1_SSI2_CLK_SEL_MASK               (0x3 << 12)
+#define MXC_CCM_CSCMR1_SSI2_CLK_SEL_OFFSET             12
+#define MXC_CCM_CSCMR1_SSI1_CLK_SEL_MASK               (0x3 << 10)
+#define MXC_CCM_CSCMR1_SSI1_CLK_SEL_OFFSET             10
+#define MXC_CCM_CSCMR1_PERCLK_PODF_MASK                        0x3F
+
+/* Define the bits in register CSCMR2 */
+#define MXC_CCM_CSCMR2_ESAI_PRE_SEL_MASK               (0x3 << 19)
+#define MXC_CCM_CSCMR2_ESAI_PRE_SEL_OFFSET             19
+#define MXC_CCM_CSCMR2_LDB_DI1_IPU_DIV                 (1 << 11)
+#define MXC_CCM_CSCMR2_LDB_DI0_IPU_DIV                 (1 << 10)
+#define MXC_CCM_CSCMR2_CAN_CLK_SEL_MASK                        (0x3F << 2)
+#define MXC_CCM_CSCMR2_CAN_CLK_SEL_OFFSET              2
+
+/* Define the bits in register CSCDR1 */
+#define MXC_CCM_CSCDR1_VPU_AXI_PODF_MASK               (0x7 << 25)
+#define MXC_CCM_CSCDR1_VPU_AXI_PODF_OFFSET             25
+#define MXC_CCM_CSCDR1_USDHC4_PODF_MASK                        (0x7 << 22)
+#define MXC_CCM_CSCDR1_USDHC4_PODF_OFFSET              22
+#define MXC_CCM_CSCDR1_USDHC3_PODF_MASK                        (0x7 << 19)
+#define MXC_CCM_CSCDR1_USDHC3_PODF_OFFSET              19
+#define MXC_CCM_CSCDR1_USDHC2_PODF_MASK                        (0x7 << 16)
+#define MXC_CCM_CSCDR1_USDHC2_PODF_OFFSET              16
+#define MXC_CCM_CSCDR1_USDHC1_PODF_MASK                        (0x7 << 11)
+#define MXC_CCM_CSCDR1_USDHC1_PODF_OFFSET              11
+#define MXC_CCM_CSCDR1_USBOH3_CLK_PRED_OFFSET          8
+#define MXC_CCM_CSCDR1_USBOH3_CLK_PRED_MASK            (0x7 << 8)
+#define MXC_CCM_CSCDR1_USBOH3_CLK_PODF_OFFSET          6
+#define MXC_CCM_CSCDR1_USBOH3_CLK_PODF_MASK            (0x3 << 6)
+#define MXC_CCM_CSCDR1_UART_CLK_PODF_MASK              0x3F
+#define MXC_CCM_CSCDR1_UART_CLK_PODF_OFFSET            0
+
+/* Define the bits in register CS1CDR */
+#define MXC_CCM_CS1CDR_ESAI_CLK_PODF_MASK              (0x3F << 25)
+#define MXC_CCM_CS1CDR_ESAI_CLK_PODF_OFFSET            25
+#define MXC_CCM_CS1CDR_SSI3_CLK_PODF_MASK              (0x3F << 16)
+#define MXC_CCM_CS1CDR_SSI3_CLK_PODF_OFFSET            16
+#define MXC_CCM_CS1CDR_ESAI_CLK_PRED_MASK              (0x3 << 9)
+#define MXC_CCM_CS1CDR_ESAI_CLK_PRED_OFFSET            9
+#define MXC_CCM_CS1CDR_SSI1_CLK_PRED_MASK              (0x7 << 6)
+#define MXC_CCM_CS1CDR_SSI1_CLK_PRED_OFFSET            6
+#define MXC_CCM_CS1CDR_SSI1_CLK_PODF_MASK              0x3F
+#define MXC_CCM_CS1CDR_SSI1_CLK_PODF_OFFSET            0
+
+/* Define the bits in register CS2CDR */
+#define MXC_CCM_CS2CDR_ENFC_CLK_PODF_MASK              (0x3F << 21)
+#define MXC_CCM_CS2CDR_ENFC_CLK_PODF_OFFSET            21
+#define MXC_CCM_CS2CDR_ENFC_CLK_PRED_MASK              (0x7 << 18)
+#define MXC_CCM_CS2CDR_ENFC_CLK_PRED_OFFSET            18
+#define MXC_CCM_CS2CDR_ENFC_CLK_SEL_MASK               (0x3 << 16)
+#define MXC_CCM_CS2CDR_ENFC_CLK_SEL_OFFSET             16
+#define MXC_CCM_CS2CDR_LDB_DI1_CLK_SEL_MASK            (0x7 << 12)
+#define MXC_CCM_CS2CDR_LDB_DI1_CLK_SEL_OFFSET          12
+#define MXC_CCM_CS2CDR_LDB_DI0_CLK_SEL_MASK            (0x7 << 9)
+#define MXC_CCM_CS2CDR_LDB_DI0_CLK_SEL_OFFSET          9
+#define MXC_CCM_CS2CDR_SSI2_CLK_PRED_MASK              (0x7 << 6)
+#define MXC_CCM_CS2CDR_SSI2_CLK_PRED_OFFSET            6
+#define MXC_CCM_CS2CDR_SSI2_CLK_PODF_MASK              0x3F
+#define MXC_CCM_CS2CDR_SSI2_CLK_PODF_OFFSET            0
+
+/* Define the bits in register CDCDR */
+#define MXC_CCM_CDCDR_HSI_TX_PODF_MASK                 (0x7 << 29)
+#define MXC_CCM_CDCDR_HSI_TX_PODF_OFFSET               29
+#define MXC_CCM_CDCDR_HSI_TX_CLK_SEL                   (1 << 28)
+#define MXC_CCM_CDCDR_SPDIF0_CLK_PRED_MASK             (0x7 << 25)
+#define MXC_CCM_CDCDR_SPDIF0_CLK_PRED_OFFSET           25
+#define MXC_CCM_CDCDR_SPDIF0_CLK_PODF_MASK             (0x7 << 19)
+#define MXC_CCM_CDCDR_SPDIF0_CLK_PODF_OFFSET           19
+#define MXC_CCM_CDCDR_SPDIF0_CLK_SEL_MASK              (0x3 << 20)
+#define MXC_CCM_CDCDR_SPDIF0_CLK_SEL_OFFSET            20
+#define MXC_CCM_CDCDR_SPDIF1_CLK_PRED_MASK             (0x7 << 12)
+#define MXC_CCM_CDCDR_SPDIF1_CLK_PRED_OFFSET           12
+#define MXC_CCM_CDCDR_SPDIF1_CLK_PODF_MASK             (0x7 << 9)
+#define MXC_CCM_CDCDR_SPDIF1_CLK_PODF_OFFSET           9
+#define MXC_CCM_CDCDR_SPDIF1_CLK_SEL_MASK              (0x3 << 7)
+#define MXC_CCM_CDCDR_SPDIF1_CLK_SEL_OFFSET            7
+
+/* Define the bits in register CHSCCDR */
+#define MXC_CCM_CHSCCDR_IPU1_DI1_PRE_CLK_SEL_MASK      (0x7 << 15)
+#define MXC_CCM_CHSCCDR_IPU1_DI1_PRE_CLK_SEL_OFFSET    15
+#define MXC_CCM_CHSCCDR_IPU1_DI1_PODF_MASK             (0x7 << 12)
+#define MXC_CCM_CHSCCDR_IPU1_DI1_PODF_OFFSET           12
+#define MXC_CCM_CHSCCDR_IPU1_DI1_CLK_SEL_MASK          (0x7 << 9)
+#define MXC_CCM_CHSCCDR_IPU1_DI1_CLK_SEL_OFFSET                9
+#define MXC_CCM_CHSCCDR_IPU1_DI0_PRE_CLK_SEL_MASK      (0x7 << 6)
+#define MXC_CCM_CHSCCDR_IPU1_DI0_PRE_CLK_SEL_OFFSET    6
+#define MXC_CCM_CHSCCDR_IPU1_DI0_PODF_MASK             (0x7 << 3)
+#define MXC_CCM_CHSCCDR_IPU1_DI0_PODF_OFFSET           3
+#define MXC_CCM_CHSCCDR_IPU1_DI0_CLK_SEL_MASK          (0x7)
+#define MXC_CCM_CHSCCDR_IPU1_DI0_CLK_SEL_OFFSET                0
+
+/* Define the bits in register CSCDR2 */
+#define MXC_CCM_CSCDR2_ECSPI_CLK_PODF_MASK             (0x3F << 19)
+#define MXC_CCM_CSCDR2_ECSPI_CLK_PODF_OFFSET           19
+#define MXC_CCM_CHSCCDR_IPU2_DI1_PRE_CLK_SEL_MASK      (0x7 << 15)
+#define MXC_CCM_CHSCCDR_IPU2_DI1_PRE_CLK_SEL_OFFSET    15
+#define MXC_CCM_CHSCCDR_IPU2_DI1_PODF_MASK             (0x7 << 12)
+#define MXC_CCM_CHSCCDR_IPU2_DI1_PODF_OFFSET           12
+#define MXC_CCM_CHSCCDR_IPU2_DI1_CLK_SEL_MASK          (0x7 << 9)
+#define MXC_CCM_CHSCCDR_IPU2_DI1_CLK_SEL_OFFSET                9
+#define MXC_CCM_CHSCCDR_IPU2_DI0_PRE_CLK_SEL_MASK      (0x7 << 6)
+#define MXC_CCM_CHSCCDR_IPU2_DI0_PRE_CLK_SEL_OFFSET    6
+#define MXC_CCM_CHSCCDR_IPU2_DI0_PODF_MASK             (0x7 << 3)
+#define MXC_CCM_CHSCCDR_IPU2_DI0_PODF_OFFSET           3
+#define MXC_CCM_CHSCCDR_IPU2_DI0_CLK_SEL_MASK          0x7
+#define MXC_CCM_CHSCCDR_IPU2_DI0_CLK_SEL_OFFSET                0
+
+/* Define the bits in register CSCDR3 */
+#define MXC_CCM_CSCDR3_IPU2_HSP_PODF_MASK              (0x7 << 16)
+#define MXC_CCM_CSCDR3_IPU2_HSP_PODF_OFFSET            16
+#define MXC_CCM_CSCDR3_IPU2_HSP_CLK_SEL_MASK           (0x3 << 14)
+#define MXC_CCM_CSCDR3_IPU2_HSP_CLK_SEL_OFFSET         14
+#define MXC_CCM_CSCDR3_IPU1_HSP_PODF_MASK              (0x7 << 11)
+#define MXC_CCM_CSCDR3_IPU1_HSP_PODF_OFFSET            11
+#define MXC_CCM_CSCDR3_IPU1_HSP_CLK_SEL_MASK           (0x3 << 9)
+#define MXC_CCM_CSCDR3_IPU1_HSP_CLK_SEL_OFFSET         9
+
+/* Define the bits in register CDHIPR */
+#define MXC_CCM_CDHIPR_ARM_PODF_BUSY                   (1 << 16)
+#define MXC_CCM_CDHIPR_PERIPH_CLK_SEL_BUSY             (1 << 5)
+#define MXC_CCM_CDHIPR_MMDC_CH0_PODF_BUSY              (1 << 4)
+#define MXC_CCM_CDHIPR_PERIPH2_CLK_SEL_BUSY            (1 << 3)
+#define MXC_CCM_CDHIPR_MMDC_CH1_PODF_BUSY              (1 << 2)
+#define MXC_CCM_CDHIPR_AHB_PODF_BUSY                   (1 << 1)
+#define MXC_CCM_CDHIPR_AXI_PODF_BUSY                   1
+
+/* Define the bits in register CLPCR */
+#define MXC_CCM_CLPCR_MASK_L2CC_IDLE                   (1 << 27)
+#define MXC_CCM_CLPCR_MASK_SCU_IDLE                    (1 << 26)
+#define MXC_CCM_CLPCR_MASK_CORE3_WFI                   (1 << 25)
+#define MXC_CCM_CLPCR_MASK_CORE2_WFI                   (1 << 24)
+#define MXC_CCM_CLPCR_MASK_CORE1_WFI                   (1 << 23)
+#define MXC_CCM_CLPCR_MASK_CORE0_WFI                   (1 << 22)
+#define MXC_CCM_CLPCR_BYP_MMDC_CH1_LPM_HS              (1 << 21)
+#define MXC_CCM_CLPCR_BYP_MMDC_CH0_LPM_HS              (1 << 19)
+#define MXC_CCM_CLPCR_WB_CORE_AT_LPM                   (1 << 17)
+#define MXC_CCM_CLPCR_WB_PER_AT_LPM                    (1 << 17)
+#define MXC_CCM_CLPCR_COSC_PWRDOWN                     (1 << 11)
+#define MXC_CCM_CLPCR_STBY_COUNT_MASK                  (0x3 << 9)
+#define MXC_CCM_CLPCR_STBY_COUNT_OFFSET                        9
+#define MXC_CCM_CLPCR_VSTBY                            (1 << 8)
+#define MXC_CCM_CLPCR_DIS_REF_OSC                      (1 << 7)
+#define MXC_CCM_CLPCR_SBYOS                            (1 << 6)
+#define MXC_CCM_CLPCR_ARM_CLK_DIS_ON_LPM               (1 << 5)
+#define MXC_CCM_CLPCR_LPSR_CLK_SEL_MASK                        (0x3 << 3)
+#define MXC_CCM_CLPCR_LPSR_CLK_SEL_OFFSET              3
+#define MXC_CCM_CLPCR_BYPASS_PMIC_VFUNC_READY          (1 << 2)
+#define MXC_CCM_CLPCR_LPM_MASK                         0x3
+#define MXC_CCM_CLPCR_LPM_OFFSET                       0
+
+/* Define the bits in register CISR */
+#define MXC_CCM_CISR_ARM_PODF_LOADED                   (1 << 26)
+#define MXC_CCM_CISR_MMDC_CH0_PODF_LOADED              (1 << 23)
+#define MXC_CCM_CISR_PERIPH_CLK_SEL_LOADED             (1 << 22)
+#define MXC_CCM_CISR_MMDC_CH1_PODF_LOADED              (1 << 21)
+#define MXC_CCM_CISR_AHB_PODF_LOADED                   (1 << 20)
+#define MXC_CCM_CISR_PERIPH2_CLK_SEL_LOADED            (1 << 19)
+#define MXC_CCM_CISR_AXI_PODF_LOADED                   (1 << 17)
+#define MXC_CCM_CISR_COSC_READY                                (1 << 6)
+#define MXC_CCM_CISR_LRF_PLL                           1
+
+/* Define the bits in register CIMR */
+#define MXC_CCM_CIMR_MASK_ARM_PODF_LOADED              (1 << 26)
+#define MXC_CCM_CIMR_MASK_MMDC_CH0_PODF_LOADED         (1 << 23)
+#define MXC_CCM_CIMR_MASK_PERIPH_CLK_SEL_LOADED                (1 << 22)
+#define MXC_CCM_CIMR_MASK_MMDC_CH1_PODF_LOADED         (1 << 21)
+#define MXC_CCM_CIMR_MASK_AHB_PODF_LOADED              (1 << 20)
+#define MXC_CCM_CIMR_MASK_PERIPH2_CLK_SEL_LOADED       (1 << 22)
+#define MXC_CCM_CIMR_MASK_AXI_PODF_LOADED              (1 << 17)
+#define MXC_CCM_CIMR_MASK_COSC_READY                   (1 << 6)
+#define MXC_CCM_CIMR_MASK_LRF_PLL                      1
+
+/* Define the bits in register CCOSR */
+#define MXC_CCM_CCOSR_CKO2_EN_OFFSET                   (1 << 24)
+#define MXC_CCM_CCOSR_CKO2_DIV_MASK                    (0x7 << 21)
+#define MXC_CCM_CCOSR_CKO2_DIV_OFFSET                  21
+#define MXC_CCM_CCOSR_CKO2_SEL_OFFSET                  16
+#define MXC_CCM_CCOSR_CKO2_SEL_MASK                    (0x1F << 16)
+#define MXC_CCM_CCOSR_CKOL_EN                          (0x1 << 7)
+#define MXC_CCM_CCOSR_CKOL_DIV_MASK                    (0x7 << 4)
+#define MXC_CCM_CCOSR_CKOL_DIV_OFFSET                  4
+#define MXC_CCM_CCOSR_CKOL_SEL_MASK                    0xF
+#define MXC_CCM_CCOSR_CKOL_SEL_OFFSET                  0
+
+/* Define the bits in registers CGPR */
+#define MXC_CCM_CGPR_EFUSE_PROG_SUPPLY_GATE            (1 << 4)
+#define MXC_CCM_CGPR_MMDC_EXT_CLK_DIS                  (1 << 2)
+#define MXC_CCM_CGPR_PMIC_DELAY_SCALER                 1
+
+/* Define the bits in registers CCGRx */
+#define MXC_CCM_CCGR_CG_MASK                           3
+
+#define MXC_CCM_CCGR0_CG15_OFFSET                      30
+#define MXC_CCM_CCGR0_CG15_MASK                        (0x3 << 30)
+#define MXC_CCM_CCGR0_CG14_OFFSET                      28
+#define MXC_CCM_CCGR0_CG14_MASK                        (0x3 << 28)
+#define MXC_CCM_CCGR0_CG13_OFFSET                      26
+#define MXC_CCM_CCGR0_CG13_MASK                        (0x3 << 26)
+#define MXC_CCM_CCGR0_CG12_OFFSET                      24
+#define MXC_CCM_CCGR0_CG12_MASK                        (0x3 << 24)
+#define MXC_CCM_CCGR0_CG11_OFFSET                      22
+#define MXC_CCM_CCGR0_CG11_MASK                        (0x3 << 22)
+#define MXC_CCM_CCGR0_CG10_OFFSET                      20
+#define MXC_CCM_CCGR0_CG10_MASK                        (0x3 << 20)
+#define MXC_CCM_CCGR0_CG9_OFFSET                       18
+#define MXC_CCM_CCGR0_CG9_MASK                 (0x3 << 18)
+#define MXC_CCM_CCGR0_CG8_OFFSET                       16
+#define MXC_CCM_CCGR0_CG8_MASK                 (0x3 << 16)
+#define MXC_CCM_CCGR0_CG7_OFFSET                       14
+#define MXC_CCM_CCGR0_CG6_OFFSET                       12
+#define MXC_CCM_CCGR0_CG5_OFFSET                       10
+#define MXC_CCM_CCGR0_CG5_MASK                 (0x3 << 10)
+#define MXC_CCM_CCGR0_CG4_OFFSET                       8
+#define MXC_CCM_CCGR0_CG4_MASK                 (0x3 << 8)
+#define MXC_CCM_CCGR0_CG3_OFFSET                       6
+#define MXC_CCM_CCGR0_CG3_MASK                 (0x3 << 6)
+#define MXC_CCM_CCGR0_CG2_OFFSET                       4
+#define MXC_CCM_CCGR0_CG2_MASK                 (0x3 << 4)
+#define MXC_CCM_CCGR0_CG1_OFFSET                       2
+#define MXC_CCM_CCGR0_CG1_MASK                 (0x3 << 2)
+#define MXC_CCM_CCGR0_CG0_OFFSET                       0
+#define MXC_CCM_CCGR0_CG0_MASK                         3
+
+#define MXC_CCM_CCGR1_CG15_OFFSET                      30
+#define MXC_CCM_CCGR1_CG14_OFFSET                      28
+#define MXC_CCM_CCGR1_CG13_OFFSET                      26
+#define MXC_CCM_CCGR1_CG12_OFFSET                      24
+#define MXC_CCM_CCGR1_CG11_OFFSET                      22
+#define MXC_CCM_CCGR1_CG10_OFFSET                      20
+#define MXC_CCM_CCGR1_CG9_OFFSET                       18
+#define MXC_CCM_CCGR1_CG8_OFFSET                       16
+#define MXC_CCM_CCGR1_CG7_OFFSET                       14
+#define MXC_CCM_CCGR1_CG6_OFFSET                       12
+#define MXC_CCM_CCGR1_CG5_OFFSET                       10
+#define MXC_CCM_CCGR1_CG4_OFFSET                       8
+#define MXC_CCM_CCGR1_CG3_OFFSET                       6
+#define MXC_CCM_CCGR1_CG2_OFFSET                       4
+#define MXC_CCM_CCGR1_CG1_OFFSET                       2
+#define MXC_CCM_CCGR1_CG0_OFFSET                       0
+
+#define MXC_CCM_CCGR2_CG15_OFFSET                      30
+#define MXC_CCM_CCGR2_CG14_OFFSET                      28
+#define MXC_CCM_CCGR2_CG13_OFFSET                      26
+#define MXC_CCM_CCGR2_CG12_OFFSET                      24
+#define MXC_CCM_CCGR2_CG11_OFFSET                      22
+#define MXC_CCM_CCGR2_CG10_OFFSET                      20
+#define MXC_CCM_CCGR2_CG9_OFFSET                       18
+#define MXC_CCM_CCGR2_CG8_OFFSET                       16
+#define MXC_CCM_CCGR2_CG7_OFFSET                       14
+#define MXC_CCM_CCGR2_CG6_OFFSET                       12
+#define MXC_CCM_CCGR2_CG5_OFFSET                       10
+#define MXC_CCM_CCGR2_CG4_OFFSET                       8
+#define MXC_CCM_CCGR2_CG3_OFFSET                       6
+#define MXC_CCM_CCGR2_CG2_OFFSET                       4
+#define MXC_CCM_CCGR2_CG1_OFFSET                       2
+#define MXC_CCM_CCGR2_CG0_OFFSET                       0
+
+#define MXC_CCM_CCGR3_CG15_OFFSET                      30
+#define MXC_CCM_CCGR3_CG14_OFFSET                      28
+#define MXC_CCM_CCGR3_CG13_OFFSET                      26
+#define MXC_CCM_CCGR3_CG12_OFFSET                      24
+#define MXC_CCM_CCGR3_CG11_OFFSET                      22
+#define MXC_CCM_CCGR3_CG10_OFFSET                      20
+#define MXC_CCM_CCGR3_CG9_OFFSET                       18
+#define MXC_CCM_CCGR3_CG8_OFFSET                       16
+#define MXC_CCM_CCGR3_CG7_OFFSET                       14
+#define MXC_CCM_CCGR3_CG6_OFFSET                       12
+#define MXC_CCM_CCGR3_CG5_OFFSET                       10
+#define MXC_CCM_CCGR3_CG4_OFFSET                       8
+#define MXC_CCM_CCGR3_CG3_OFFSET                       6
+#define MXC_CCM_CCGR3_CG2_OFFSET                       4
+#define MXC_CCM_CCGR3_CG1_OFFSET                       2
+#define MXC_CCM_CCGR3_CG0_OFFSET                       0
+
+#define MXC_CCM_CCGR4_CG15_OFFSET                      30
+#define MXC_CCM_CCGR4_CG14_OFFSET                      28
+#define MXC_CCM_CCGR4_CG13_OFFSET                      26
+#define MXC_CCM_CCGR4_CG12_OFFSET                      24
+#define MXC_CCM_CCGR4_CG11_OFFSET                      22
+#define MXC_CCM_CCGR4_CG10_OFFSET                      20
+#define MXC_CCM_CCGR4_CG9_OFFSET                       18
+#define MXC_CCM_CCGR4_CG8_OFFSET                       16
+#define MXC_CCM_CCGR4_CG7_OFFSET                       14
+#define MXC_CCM_CCGR4_CG6_OFFSET                       12
+#define MXC_CCM_CCGR4_CG5_OFFSET                       10
+#define MXC_CCM_CCGR4_CG4_OFFSET                       8
+#define MXC_CCM_CCGR4_CG3_OFFSET                       6
+#define MXC_CCM_CCGR4_CG2_OFFSET                       4
+#define MXC_CCM_CCGR4_CG1_OFFSET                       2
+#define MXC_CCM_CCGR4_CG0_OFFSET                       0
+
+#define MXC_CCM_CCGR5_CG15_OFFSET                      30
+#define MXC_CCM_CCGR5_CG14_OFFSET                      28
+#define MXC_CCM_CCGR5_CG14_MASK                        (0x3 << 28)
+#define MXC_CCM_CCGR5_CG13_OFFSET                      26
+#define MXC_CCM_CCGR5_CG13_MASK                        (0x3 << 26)
+#define MXC_CCM_CCGR5_CG12_OFFSET                      24
+#define MXC_CCM_CCGR5_CG12_MASK                        (0x3 << 24)
+#define MXC_CCM_CCGR5_CG11_OFFSET                      22
+#define MXC_CCM_CCGR5_CG11_MASK                        (0x3 << 22)
+#define MXC_CCM_CCGR5_CG10_OFFSET                      20
+#define MXC_CCM_CCGR5_CG10_MASK                        (0x3 << 20)
+#define MXC_CCM_CCGR5_CG9_OFFSET                       18
+#define MXC_CCM_CCGR5_CG9_MASK                 (0x3 << 18)
+#define MXC_CCM_CCGR5_CG8_OFFSET                       16
+#define MXC_CCM_CCGR5_CG8_MASK                 (0x3 << 16)
+#define MXC_CCM_CCGR5_CG7_OFFSET                       14
+#define MXC_CCM_CCGR5_CG7_MASK                 (0x3 << 14)
+#define MXC_CCM_CCGR5_CG6_OFFSET                       12
+#define MXC_CCM_CCGR5_CG6_MASK                 (0x3 << 12)
+#define MXC_CCM_CCGR5_CG5_OFFSET                       10
+#define MXC_CCM_CCGR5_CG4_OFFSET                       8
+#define MXC_CCM_CCGR5_CG3_OFFSET                       6
+#define MXC_CCM_CCGR5_CG2_OFFSET                       4
+#define MXC_CCM_CCGR5_CG2_MASK                 (0x3 << 4)
+#define MXC_CCM_CCGR5_CG1_OFFSET                       2
+#define MXC_CCM_CCGR5_CG0_OFFSET                       0
+
+#define MXC_CCM_CCGR6_CG15_OFFSET                      30
+#define MXC_CCM_CCGR6_CG14_OFFSET                      28
+#define MXC_CCM_CCGR6_CG14_MASK                        (0x3 << 28)
+#define MXC_CCM_CCGR6_CG13_OFFSET                      26
+#define MXC_CCM_CCGR6_CG13_MASK                        (0x3 << 26)
+#define MXC_CCM_CCGR6_CG12_OFFSET                      24
+#define MXC_CCM_CCGR6_CG12_MASK                        (0x3 << 24)
+#define MXC_CCM_CCGR6_CG11_OFFSET                      22
+#define MXC_CCM_CCGR6_CG11_MASK                        (0x3 << 22)
+#define MXC_CCM_CCGR6_CG10_OFFSET                      20
+#define MXC_CCM_CCGR6_CG10_MASK                        (0x3 << 20)
+#define MXC_CCM_CCGR6_CG9_OFFSET                       18
+#define MXC_CCM_CCGR6_CG9_MASK                 (0x3 << 18)
+#define MXC_CCM_CCGR6_CG8_OFFSET                       16
+#define MXC_CCM_CCGR6_CG8_MASK                 (0x3 << 16)
+#define MXC_CCM_CCGR6_CG7_OFFSET                       14
+#define MXC_CCM_CCGR6_CG7_MASK                 (0x3 << 14)
+#define MXC_CCM_CCGR6_CG6_OFFSET                       12
+#define MXC_CCM_CCGR6_CG6_MASK                 (0x3 << 12)
+#define MXC_CCM_CCGR6_CG5_OFFSET                       10
+#define MXC_CCM_CCGR6_CG4_OFFSET                       8
+#define MXC_CCM_CCGR6_CG3_OFFSET                       6
+#define MXC_CCM_CCGR6_CG2_OFFSET                       4
+#define MXC_CCM_CCGR6_CG2_MASK                 (0x3 << 4)
+#define MXC_CCM_CCGR6_CG1_OFFSET                       2
+#define MXC_CCM_CCGR6_CG0_OFFSET                       0
+
+#define MXC_CCM_CCGR7_CG15_OFFSET                      30
+#define MXC_CCM_CCGR7_CG14_OFFSET                      28
+#define MXC_CCM_CCGR7_CG14_MASK                        (0x3 << 28)
+#define MXC_CCM_CCGR7_CG13_OFFSET                      26
+#define MXC_CCM_CCGR7_CG13_MASK                        (0x3 << 26)
+#define MXC_CCM_CCGR7_CG12_OFFSET                      24
+#define MXC_CCM_CCGR7_CG12_MASK                        (0x3 << 24)
+#define MXC_CCM_CCGR7_CG11_OFFSET                      22
+#define MXC_CCM_CCGR7_CG11_MASK                        (0x3 << 22)
+#define MXC_CCM_CCGR7_CG10_OFFSET                      20
+#define MXC_CCM_CCGR7_CG10_MASK                        (0x3 << 20)
+#define MXC_CCM_CCGR7_CG9_OFFSET                       18
+#define MXC_CCM_CCGR7_CG9_MASK                 (0x3 << 18)
+#define MXC_CCM_CCGR7_CG8_OFFSET                       16
+#define MXC_CCM_CCGR7_CG8_MASK                 (0x3 << 16)
+#define MXC_CCM_CCGR7_CG7_OFFSET                       14
+#define MXC_CCM_CCGR7_CG7_MASK                 (0x3 << 14)
+#define MXC_CCM_CCGR7_CG6_OFFSET                       12
+#define MXC_CCM_CCGR7_CG6_MASK                 (0x3 << 12)
+#define MXC_CCM_CCGR7_CG5_OFFSET                       10
+#define MXC_CCM_CCGR7_CG4_OFFSET                       8
+#define MXC_CCM_CCGR7_CG3_OFFSET                       6
+#define MXC_CCM_CCGR7_CG2_OFFSET                       4
+#define MXC_CCM_CCGR7_CG2_MASK                 (0x3 << 4)
+#define MXC_CCM_CCGR7_CG1_OFFSET                       2
+#define MXC_CCM_CCGR7_CG0_OFFSET                       0
+#define BM_ANADIG_PLL_SYS_LOCK 0x80000000
+#define BP_ANADIG_PLL_SYS_RSVD0      20
+#define BM_ANADIG_PLL_SYS_RSVD0 0x7FF00000
+#define BF_ANADIG_PLL_SYS_RSVD0(v)  \
+       (((v) << 20) & BM_ANADIG_PLL_SYS_RSVD0)
+#define BM_ANADIG_PLL_SYS_PLL_SEL 0x00080000
+#define BM_ANADIG_PLL_SYS_LVDS_24MHZ_SEL 0x00040000
+#define BM_ANADIG_PLL_SYS_LVDS_SEL 0x00020000
+#define BM_ANADIG_PLL_SYS_BYPASS 0x00010000
+#define BP_ANADIG_PLL_SYS_BYPASS_CLK_SRC      14
+#define BM_ANADIG_PLL_SYS_BYPASS_CLK_SRC 0x0000C000
+#define BF_ANADIG_PLL_SYS_BYPASS_CLK_SRC(v)  \
+       (((v) << 14) & BM_ANADIG_PLL_SYS_BYPASS_CLK_SRC)
+#define BV_ANADIG_PLL_SYS_BYPASS_CLK_SRC__OSC_24M  0x0
+#define BV_ANADIG_PLL_SYS_BYPASS_CLK_SRC__ANACLK_1 0x1
+#define BV_ANADIG_PLL_SYS_BYPASS_CLK_SRC__ANACLK_2 0x2
+#define BV_ANADIG_PLL_SYS_BYPASS_CLK_SRC__XOR      0x3
+#define BM_ANADIG_PLL_SYS_ENABLE 0x00002000
+#define BM_ANADIG_PLL_SYS_POWERDOWN 0x00001000
+#define BM_ANADIG_PLL_SYS_HOLD_RING_OFF 0x00000800
+#define BM_ANADIG_PLL_SYS_DOUBLE_CP 0x00000400
+#define BM_ANADIG_PLL_SYS_HALF_CP 0x00000200
+#define BM_ANADIG_PLL_SYS_DOUBLE_LF 0x00000100
+#define BM_ANADIG_PLL_SYS_HALF_LF 0x00000080
+#define BP_ANADIG_PLL_SYS_DIV_SELECT      0
+#define BM_ANADIG_PLL_SYS_DIV_SELECT 0x0000007F
+#define BF_ANADIG_PLL_SYS_DIV_SELECT(v)  \
+       (((v) << 0) & BM_ANADIG_PLL_SYS_DIV_SELECT)
+
+#define BM_ANADIG_USB1_PLL_480_CTRL_LOCK 0x80000000
+#define BP_ANADIG_USB1_PLL_480_CTRL_RSVD1      17
+#define BM_ANADIG_USB1_PLL_480_CTRL_RSVD1 0x7FFE0000
+#define BF_ANADIG_USB1_PLL_480_CTRL_RSVD1(v)  \
+       (((v) << 17) & BM_ANADIG_USB1_PLL_480_CTRL_RSVD1)
+#define BM_ANADIG_USB1_PLL_480_CTRL_BYPASS 0x00010000
+#define BP_ANADIG_USB1_PLL_480_CTRL_BYPASS_CLK_SRC      14
+#define BM_ANADIG_USB1_PLL_480_CTRL_BYPASS_CLK_SRC 0x0000C000
+#define BF_ANADIG_USB1_PLL_480_CTRL_BYPASS_CLK_SRC(v)  \
+       (((v) << 14) & BM_ANADIG_USB1_PLL_480_CTRL_BYPASS_CLK_SRC)
+#define BV_ANADIG_USB1_PLL_480_CTRL_BYPASS_CLK_SRC__OSC_24M  0x0
+#define BV_ANADIG_USB1_PLL_480_CTRL_BYPASS_CLK_SRC__ANACLK_1 0x1
+#define BV_ANADIG_USB1_PLL_480_CTRL_BYPASS_CLK_SRC__ANACLK_2 0x2
+#define BV_ANADIG_USB1_PLL_480_CTRL_BYPASS_CLK_SRC__XOR      0x3
+#define BM_ANADIG_USB1_PLL_480_CTRL_ENABLE 0x00002000
+#define BM_ANADIG_USB1_PLL_480_CTRL_POWER 0x00001000
+#define BM_ANADIG_USB1_PLL_480_CTRL_HOLD_RING_OFF 0x00000800
+#define BM_ANADIG_USB1_PLL_480_CTRL_DOUBLE_CP 0x00000400
+#define BM_ANADIG_USB1_PLL_480_CTRL_HALF_CP 0x00000200
+#define BM_ANADIG_USB1_PLL_480_CTRL_DOUBLE_LF 0x00000100
+#define BM_ANADIG_USB1_PLL_480_CTRL_HALF_LF 0x00000080
+#define BM_ANADIG_USB1_PLL_480_CTRL_EN_USB_CLKS 0x00000040
+#define BM_ANADIG_USB1_PLL_480_CTRL_RSVD0 0x00000020
+#define BP_ANADIG_USB1_PLL_480_CTRL_CONTROL0      2
+#define BM_ANADIG_USB1_PLL_480_CTRL_CONTROL0 0x0000001C
+#define BF_ANADIG_USB1_PLL_480_CTRL_CONTROL0(v)  \
+       (((v) << 2) & BM_ANADIG_USB1_PLL_480_CTRL_CONTROL0)
+#define BP_ANADIG_USB1_PLL_480_CTRL_DIV_SELECT      0
+#define BM_ANADIG_USB1_PLL_480_CTRL_DIV_SELECT 0x00000003
+#define BF_ANADIG_USB1_PLL_480_CTRL_DIV_SELECT(v)  \
+       (((v) << 0) & BM_ANADIG_USB1_PLL_480_CTRL_DIV_SELECT)
+
+#define BM_ANADIG_PLL_528_LOCK 0x80000000
+#define BP_ANADIG_PLL_528_RSVD1      19
+#define BM_ANADIG_PLL_528_RSVD1 0x7FF80000
+#define BF_ANADIG_PLL_528_RSVD1(v)  \
+       (((v) << 19) & BM_ANADIG_PLL_528_RSVD1)
+#define BM_ANADIG_PLL_528_PFD_OFFSET_EN 0x00040000
+#define BM_ANADIG_PLL_528_DITHER_ENABLE 0x00020000
+#define BM_ANADIG_PLL_528_BYPASS 0x00010000
+#define BP_ANADIG_PLL_528_BYPASS_CLK_SRC      14
+#define BM_ANADIG_PLL_528_BYPASS_CLK_SRC 0x0000C000
+#define BF_ANADIG_PLL_528_BYPASS_CLK_SRC(v)  \
+       (((v) << 14) & BM_ANADIG_PLL_528_BYPASS_CLK_SRC)
+#define BV_ANADIG_PLL_528_BYPASS_CLK_SRC__OSC_24M  0x0
+#define BV_ANADIG_PLL_528_BYPASS_CLK_SRC__ANACLK_1 0x1
+#define BV_ANADIG_PLL_528_BYPASS_CLK_SRC__ANACLK_2 0x2
+#define BV_ANADIG_PLL_528_BYPASS_CLK_SRC__XOR      0x3
+#define BM_ANADIG_PLL_528_ENABLE 0x00002000
+#define BM_ANADIG_PLL_528_POWERDOWN 0x00001000
+#define BM_ANADIG_PLL_528_HOLD_RING_OFF 0x00000800
+#define BM_ANADIG_PLL_528_DOUBLE_CP 0x00000400
+#define BM_ANADIG_PLL_528_HALF_CP 0x00000200
+#define BM_ANADIG_PLL_528_DOUBLE_LF 0x00000100
+#define BM_ANADIG_PLL_528_HALF_LF 0x00000080
+#define BP_ANADIG_PLL_528_RSVD0      1
+#define BM_ANADIG_PLL_528_RSVD0 0x0000007E
+#define BF_ANADIG_PLL_528_RSVD0(v)  \
+       (((v) << 1) & BM_ANADIG_PLL_528_RSVD0)
+#define BM_ANADIG_PLL_528_DIV_SELECT 0x00000001
+
+#define BP_ANADIG_PLL_528_SS_STOP      16
+#define BM_ANADIG_PLL_528_SS_STOP 0xFFFF0000
+#define BF_ANADIG_PLL_528_SS_STOP(v) \
+       (((v) << 16) & BM_ANADIG_PLL_528_SS_STOP)
+#define BM_ANADIG_PLL_528_SS_ENABLE 0x00008000
+#define BP_ANADIG_PLL_528_SS_STEP      0
+#define BM_ANADIG_PLL_528_SS_STEP 0x00007FFF
+#define BF_ANADIG_PLL_528_SS_STEP(v)  \
+       (((v) << 0) & BM_ANADIG_PLL_528_SS_STEP)
+
+#define BP_ANADIG_PLL_528_NUM_RSVD0      30
+#define BM_ANADIG_PLL_528_NUM_RSVD0 0xC0000000
+#define BF_ANADIG_PLL_528_NUM_RSVD0(v) \
+       (((v) << 30) & BM_ANADIG_PLL_528_NUM_RSVD0)
+#define BP_ANADIG_PLL_528_NUM_A      0
+#define BM_ANADIG_PLL_528_NUM_A 0x3FFFFFFF
+#define BF_ANADIG_PLL_528_NUM_A(v)  \
+       (((v) << 0) & BM_ANADIG_PLL_528_NUM_A)
+
+#define BP_ANADIG_PLL_528_DENOM_RSVD0      30
+#define BM_ANADIG_PLL_528_DENOM_RSVD0 0xC0000000
+#define BF_ANADIG_PLL_528_DENOM_RSVD0(v) \
+       (((v) << 30) & BM_ANADIG_PLL_528_DENOM_RSVD0)
+#define BP_ANADIG_PLL_528_DENOM_B      0
+#define BM_ANADIG_PLL_528_DENOM_B 0x3FFFFFFF
+#define BF_ANADIG_PLL_528_DENOM_B(v)  \
+       (((v) << 0) & BM_ANADIG_PLL_528_DENOM_B)
+
+#define BM_ANADIG_PLL_AUDIO_LOCK 0x80000000
+#define BP_ANADIG_PLL_AUDIO_RSVD0      22
+#define BM_ANADIG_PLL_AUDIO_RSVD0 0x7FC00000
+#define BF_ANADIG_PLL_AUDIO_RSVD0(v)  \
+       (((v) << 22) & BM_ANADIG_PLL_AUDIO_RSVD0)
+#define BM_ANADIG_PLL_AUDIO_SSC_EN 0x00200000
+#define BP_ANADIG_PLL_AUDIO_TEST_DIV_SELECT      19
+#define BM_ANADIG_PLL_AUDIO_TEST_DIV_SELECT 0x00180000
+#define BF_ANADIG_PLL_AUDIO_TEST_DIV_SELECT(v)  \
+       (((v) << 19) & BM_ANADIG_PLL_AUDIO_TEST_DIV_SELECT)
+#define BM_ANADIG_PLL_AUDIO_PFD_OFFSET_EN 0x00040000
+#define BM_ANADIG_PLL_AUDIO_DITHER_ENABLE 0x00020000
+#define BM_ANADIG_PLL_AUDIO_BYPASS 0x00010000
+#define BP_ANADIG_PLL_AUDIO_BYPASS_CLK_SRC      14
+#define BM_ANADIG_PLL_AUDIO_BYPASS_CLK_SRC 0x0000C000
+#define BF_ANADIG_PLL_AUDIO_BYPASS_CLK_SRC(v)  \
+       (((v) << 14) & BM_ANADIG_PLL_AUDIO_BYPASS_CLK_SRC)
+#define BV_ANADIG_PLL_AUDIO_BYPASS_CLK_SRC__OSC_24M  0x0
+#define BV_ANADIG_PLL_AUDIO_BYPASS_CLK_SRC__ANACLK_1 0x1
+#define BV_ANADIG_PLL_AUDIO_BYPASS_CLK_SRC__ANACLK_2 0x2
+#define BV_ANADIG_PLL_AUDIO_BYPASS_CLK_SRC__XOR      0x3
+#define BM_ANADIG_PLL_AUDIO_ENABLE 0x00002000
+#define BM_ANADIG_PLL_AUDIO_POWERDOWN 0x00001000
+#define BM_ANADIG_PLL_AUDIO_HOLD_RING_OFF 0x00000800
+#define BM_ANADIG_PLL_AUDIO_DOUBLE_CP 0x00000400
+#define BM_ANADIG_PLL_AUDIO_HALF_CP 0x00000200
+#define BM_ANADIG_PLL_AUDIO_DOUBLE_LF 0x00000100
+#define BM_ANADIG_PLL_AUDIO_HALF_LF 0x00000080
+#define BP_ANADIG_PLL_AUDIO_DIV_SELECT      0
+#define BM_ANADIG_PLL_AUDIO_DIV_SELECT 0x0000007F
+#define BF_ANADIG_PLL_AUDIO_DIV_SELECT(v)  \
+       (((v) << 0) & BM_ANADIG_PLL_AUDIO_DIV_SELECT)
+
+#define BP_ANADIG_PLL_AUDIO_NUM_RSVD0      30
+#define BM_ANADIG_PLL_AUDIO_NUM_RSVD0 0xC0000000
+#define BF_ANADIG_PLL_AUDIO_NUM_RSVD0(v) \
+       (((v) << 30) & BM_ANADIG_PLL_AUDIO_NUM_RSVD0)
+#define BP_ANADIG_PLL_AUDIO_NUM_A      0
+#define BM_ANADIG_PLL_AUDIO_NUM_A 0x3FFFFFFF
+#define BF_ANADIG_PLL_AUDIO_NUM_A(v)  \
+       (((v) << 0) & BM_ANADIG_PLL_AUDIO_NUM_A)
+
+#define BP_ANADIG_PLL_AUDIO_DENOM_RSVD0      30
+#define BM_ANADIG_PLL_AUDIO_DENOM_RSVD0 0xC0000000
+#define BF_ANADIG_PLL_AUDIO_DENOM_RSVD0(v) \
+       (((v) << 30) & BM_ANADIG_PLL_AUDIO_DENOM_RSVD0)
+#define BP_ANADIG_PLL_AUDIO_DENOM_B      0
+#define BM_ANADIG_PLL_AUDIO_DENOM_B 0x3FFFFFFF
+#define BF_ANADIG_PLL_AUDIO_DENOM_B(v)  \
+       (((v) << 0) & BM_ANADIG_PLL_AUDIO_DENOM_B)
+
+#define BM_ANADIG_PLL_VIDEO_LOCK 0x80000000
+#define BP_ANADIG_PLL_VIDEO_RSVD0      22
+#define BM_ANADIG_PLL_VIDEO_RSVD0 0x7FC00000
+#define BF_ANADIG_PLL_VIDEO_RSVD0(v)  \
+       (((v) << 22) & BM_ANADIG_PLL_VIDEO_RSVD0)
+#define BM_ANADIG_PLL_VIDEO_SSC_EN 0x00200000
+#define BP_ANADIG_PLL_VIDEO_TEST_DIV_SELECT      19
+#define BM_ANADIG_PLL_VIDEO_TEST_DIV_SELECT 0x00180000
+#define BF_ANADIG_PLL_VIDEO_TEST_DIV_SELECT(v)  \
+       (((v) << 19) & BM_ANADIG_PLL_VIDEO_TEST_DIV_SELECT)
+#define BM_ANADIG_PLL_VIDEO_PFD_OFFSET_EN 0x00040000
+#define BM_ANADIG_PLL_VIDEO_DITHER_ENABLE 0x00020000
+#define BM_ANADIG_PLL_VIDEO_BYPASS 0x00010000
+#define BP_ANADIG_PLL_VIDEO_BYPASS_CLK_SRC      14
+#define BM_ANADIG_PLL_VIDEO_BYPASS_CLK_SRC 0x0000C000
+#define BF_ANADIG_PLL_VIDEO_BYPASS_CLK_SRC(v)  \
+       (((v) << 14) & BM_ANADIG_PLL_VIDEO_BYPASS_CLK_SRC)
+#define BV_ANADIG_PLL_VIDEO_BYPASS_CLK_SRC__OSC_24M  0x0
+#define BV_ANADIG_PLL_VIDEO_BYPASS_CLK_SRC__ANACLK_1 0x1
+#define BV_ANADIG_PLL_VIDEO_BYPASS_CLK_SRC__ANACLK_2 0x2
+#define BV_ANADIG_PLL_VIDEO_BYPASS_CLK_SRC__XOR      0x3
+#define BM_ANADIG_PLL_VIDEO_ENABLE 0x00002000
+#define BM_ANADIG_PLL_VIDEO_POWERDOWN 0x00001000
+#define BM_ANADIG_PLL_VIDEO_HOLD_RING_OFF 0x00000800
+#define BM_ANADIG_PLL_VIDEO_DOUBLE_CP 0x00000400
+#define BM_ANADIG_PLL_VIDEO_HALF_CP 0x00000200
+#define BM_ANADIG_PLL_VIDEO_DOUBLE_LF 0x00000100
+#define BM_ANADIG_PLL_VIDEO_HALF_LF 0x00000080
+#define BP_ANADIG_PLL_VIDEO_DIV_SELECT      0
+#define BM_ANADIG_PLL_VIDEO_DIV_SELECT 0x0000007F
+#define BF_ANADIG_PLL_VIDEO_DIV_SELECT(v)  \
+       (((v) << 0) & BM_ANADIG_PLL_VIDEO_DIV_SELECT)
+
+#define BP_ANADIG_PLL_VIDEO_NUM_RSVD0      30
+#define BM_ANADIG_PLL_VIDEO_NUM_RSVD0 0xC0000000
+#define BF_ANADIG_PLL_VIDEO_NUM_RSVD0(v) \
+       (((v) << 30) & BM_ANADIG_PLL_VIDEO_NUM_RSVD0)
+#define BP_ANADIG_PLL_VIDEO_NUM_A      0
+#define BM_ANADIG_PLL_VIDEO_NUM_A 0x3FFFFFFF
+#define BF_ANADIG_PLL_VIDEO_NUM_A(v)  \
+       (((v) << 0) & BM_ANADIG_PLL_VIDEO_NUM_A)
+
+#define BP_ANADIG_PLL_VIDEO_DENOM_RSVD0      30
+#define BM_ANADIG_PLL_VIDEO_DENOM_RSVD0 0xC0000000
+#define BF_ANADIG_PLL_VIDEO_DENOM_RSVD0(v) \
+       (((v) << 30) & BM_ANADIG_PLL_VIDEO_DENOM_RSVD0)
+#define BP_ANADIG_PLL_VIDEO_DENOM_B      0
+#define BM_ANADIG_PLL_VIDEO_DENOM_B 0x3FFFFFFF
+#define BF_ANADIG_PLL_VIDEO_DENOM_B(v)  \
+       (((v) << 0) & BM_ANADIG_PLL_VIDEO_DENOM_B)
+
+#define BM_ANADIG_PLL_ENET_LOCK 0x80000000
+#define BP_ANADIG_PLL_ENET_RSVD1      21
+#define BM_ANADIG_PLL_ENET_RSVD1 0x7FE00000
+#define BF_ANADIG_PLL_ENET_RSVD1(v)  \
+       (((v) << 21) & BM_ANADIG_PLL_ENET_RSVD1)
+#define BM_ANADIG_PLL_ENET_ENABLE_SATA 0x00100000
+#define BM_ANADIG_PLL_ENET_ENABLE_PCIE 0x00080000
+#define BM_ANADIG_PLL_ENET_PFD_OFFSET_EN 0x00040000
+#define BM_ANADIG_PLL_ENET_DITHER_ENABLE 0x00020000
+#define BM_ANADIG_PLL_ENET_BYPASS 0x00010000
+#define BP_ANADIG_PLL_ENET_BYPASS_CLK_SRC      14
+#define BM_ANADIG_PLL_ENET_BYPASS_CLK_SRC 0x0000C000
+#define BF_ANADIG_PLL_ENET_BYPASS_CLK_SRC(v)  \
+       (((v) << 14) & BM_ANADIG_PLL_ENET_BYPASS_CLK_SRC)
+#define BV_ANADIG_PLL_ENET_BYPASS_CLK_SRC__OSC_24M  0x0
+#define BV_ANADIG_PLL_ENET_BYPASS_CLK_SRC__ANACLK_1 0x1
+#define BV_ANADIG_PLL_ENET_BYPASS_CLK_SRC__ANACLK_2 0x2
+#define BV_ANADIG_PLL_ENET_BYPASS_CLK_SRC__XOR      0x3
+#define BM_ANADIG_PLL_ENET_ENABLE 0x00002000
+#define BM_ANADIG_PLL_ENET_POWERDOWN 0x00001000
+#define BM_ANADIG_PLL_ENET_HOLD_RING_OFF 0x00000800
+#define BM_ANADIG_PLL_ENET_DOUBLE_CP 0x00000400
+#define BM_ANADIG_PLL_ENET_HALF_CP 0x00000200
+#define BM_ANADIG_PLL_ENET_DOUBLE_LF 0x00000100
+#define BM_ANADIG_PLL_ENET_HALF_LF 0x00000080
+#define BP_ANADIG_PLL_ENET_RSVD0      2
+#define BM_ANADIG_PLL_ENET_RSVD0 0x0000007C
+#define BF_ANADIG_PLL_ENET_RSVD0(v)  \
+       (((v) << 2) & BM_ANADIG_PLL_ENET_RSVD0)
+#define BP_ANADIG_PLL_ENET_DIV_SELECT      0
+#define BM_ANADIG_PLL_ENET_DIV_SELECT 0x00000003
+#define BF_ANADIG_PLL_ENET_DIV_SELECT(v)  \
+       (((v) << 0) & BM_ANADIG_PLL_ENET_DIV_SELECT)
+
+#define BM_ANADIG_PFD_480_PFD3_CLKGATE 0x80000000
+#define BM_ANADIG_PFD_480_PFD3_STABLE 0x40000000
+#define BP_ANADIG_PFD_480_PFD3_FRAC      24
+#define BM_ANADIG_PFD_480_PFD3_FRAC 0x3F000000
+#define BF_ANADIG_PFD_480_PFD3_FRAC(v)  \
+       (((v) << 24) & BM_ANADIG_PFD_480_PFD3_FRAC)
+#define BM_ANADIG_PFD_480_PFD2_CLKGATE 0x00800000
+#define BM_ANADIG_PFD_480_PFD2_STABLE 0x00400000
+#define BP_ANADIG_PFD_480_PFD2_FRAC      16
+#define BM_ANADIG_PFD_480_PFD2_FRAC 0x003F0000
+#define BF_ANADIG_PFD_480_PFD2_FRAC(v)  \
+       (((v) << 16) & BM_ANADIG_PFD_480_PFD2_FRAC)
+#define BM_ANADIG_PFD_480_PFD1_CLKGATE 0x00008000
+#define BM_ANADIG_PFD_480_PFD1_STABLE 0x00004000
+#define BP_ANADIG_PFD_480_PFD1_FRAC      8
+#define BM_ANADIG_PFD_480_PFD1_FRAC 0x00003F00
+#define BF_ANADIG_PFD_480_PFD1_FRAC(v)  \
+       (((v) << 8) & BM_ANADIG_PFD_480_PFD1_FRAC)
+#define BM_ANADIG_PFD_480_PFD0_CLKGATE 0x00000080
+#define BM_ANADIG_PFD_480_PFD0_STABLE 0x00000040
+#define BP_ANADIG_PFD_480_PFD0_FRAC      0
+#define BM_ANADIG_PFD_480_PFD0_FRAC 0x0000003F
+#define BF_ANADIG_PFD_480_PFD0_FRAC(v)  \
+       (((v) << 0) & BM_ANADIG_PFD_480_PFD0_FRAC)
+
+#define BM_ANADIG_PFD_528_PFD3_CLKGATE 0x80000000
+#define BM_ANADIG_PFD_528_PFD3_STABLE 0x40000000
+#define BP_ANADIG_PFD_528_PFD3_FRAC      24
+#define BM_ANADIG_PFD_528_PFD3_FRAC 0x3F000000
+#define BF_ANADIG_PFD_528_PFD3_FRAC(v)  \
+       (((v) << 24) & BM_ANADIG_PFD_528_PFD3_FRAC)
+#define BM_ANADIG_PFD_528_PFD2_CLKGATE 0x00800000
+#define BM_ANADIG_PFD_528_PFD2_STABLE 0x00400000
+#define BP_ANADIG_PFD_528_PFD2_FRAC      16
+#define BM_ANADIG_PFD_528_PFD2_FRAC 0x003F0000
+#define BF_ANADIG_PFD_528_PFD2_FRAC(v)  \
+       (((v) << 16) & BM_ANADIG_PFD_528_PFD2_FRAC)
+#define BM_ANADIG_PFD_528_PFD1_CLKGATE 0x00008000
+#define BM_ANADIG_PFD_528_PFD1_STABLE 0x00004000
+#define BP_ANADIG_PFD_528_PFD1_FRAC      8
+#define BM_ANADIG_PFD_528_PFD1_FRAC 0x00003F00
+#define BF_ANADIG_PFD_528_PFD1_FRAC(v)  \
+       (((v) << 8) & BM_ANADIG_PFD_528_PFD1_FRAC)
+#define BM_ANADIG_PFD_528_PFD0_CLKGATE 0x00000080
+#define BM_ANADIG_PFD_528_PFD0_STABLE 0x00000040
+#define BP_ANADIG_PFD_528_PFD0_FRAC      0
+#define BM_ANADIG_PFD_528_PFD0_FRAC 0x0000003F
+#define BF_ANADIG_PFD_528_PFD0_FRAC(v)  \
+       (((v) << 0) & BM_ANADIG_PFD_528_PFD0_FRAC)
+
+#define PLL2_PFD0_FREQ         352000000
+#define PLL2_PFD1_FREQ         594000000
+#define PLL2_PFD2_FREQ         400000000
+#define PLL2_PFD2_DIV_FREQ     200000000
+#define PLL3_PFD0_FREQ         720000000
+#define PLL3_PFD1_FREQ         540000000
+#define PLL3_PFD2_FREQ         508200000
+#define PLL3_PFD3_FREQ         454700000
+#define PLL3_80M               80000000
+#define PLL3_60M               60000000
+
+#endif /*__ARCH_ARM_MACH_MX6_CCM_REGS_H__ */
diff --git a/arch/arm/include/asm/arch-mx6/clock.h b/arch/arm/include/asm/arch-mx6/clock.h
new file mode 100644 (file)
index 0000000..636458f
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * (C) Copyright 2009
+ * Stefano Babic, DENX Software Engineering, sbabic@denx.de.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#ifndef __ASM_ARCH_CLOCK_H
+#define __ASM_ARCH_CLOCK_H
+
+enum mxc_clock {
+       MXC_ARM_CLK = 0,
+       MXC_PER_CLK,
+       MXC_AHB_CLK,
+       MXC_IPG_CLK,
+       MXC_IPG_PERCLK,
+       MXC_UART_CLK,
+       MXC_CSPI_CLK,
+       MXC_AXI_CLK,
+       MXC_EMI_SLOW_CLK,
+       MXC_DDR_CLK,
+       MXC_ESDHC_CLK,
+       MXC_ESDHC2_CLK,
+       MXC_ESDHC3_CLK,
+       MXC_ESDHC4_CLK,
+       MXC_SATA_CLK,
+       MXC_NFC_CLK,
+};
+
+u32 imx_get_uartclk(void);
+u32 imx_get_fecclk(void);
+unsigned int mxc_get_clock(enum mxc_clock clk);
+
+#endif /* __ASM_ARCH_CLOCK_H */
similarity index 75%
rename from drivers/serial/serial_tegra2.h
rename to arch/arm/include/asm/arch-mx6/gpio.h
index 5704800e3bd24d98ba58d8e8d8ea177e8e22dbc3..20c4e5748492a02fefaadee40daac8ff2c49cf95 100644 (file)
@@ -1,6 +1,6 @@
 /*
- *  (C) Copyright 2010,2011
- *  NVIDIA Corporation <www.nvidia.com>
+ * Copyright (C) 2011
+ * Stefano Babic, DENX Software Engineering, <sbabic@denx.de>
  *
  * See file CREDITS for list of people who contributed to this
  * project.
  * MA 02111-1307 USA
  */
 
-#ifndef _SERIAL_TEGRA_H_
-#define _SERIAL_TEGRA_H_
 
-#include <asm/arch/uart.h>
+#ifndef __ASM_ARCH_MX6_GPIO_H
+#define __ASM_ARCH_MX6_GPIO_H
 
-#endif /* _SERIAL_TEGRA_H_ */
+/* GPIO registers */
+struct gpio_regs {
+       u32     gpio_dr;
+       u32     gpio_dir;
+       u32     gpio_psr;
+};
+
+#endif /* __ASM_ARCH_MX6_GPIO_H */
diff --git a/arch/arm/include/asm/arch-mx6/imx-regs.h b/arch/arm/include/asm/arch-mx6/imx-regs.h
new file mode 100644 (file)
index 0000000..85d55b7
--- /dev/null
@@ -0,0 +1,236 @@
+/*
+ * Copyright (C) 2011 Freescale Semiconductor, Inc. All Rights Reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#ifndef __ASM_ARCH_MX6_IMX_REGS_H__
+#define __ASM_ARCH_MX6_IMX_REGS_H__
+
+#define ROMCP_ARB_BASE_ADDR             0x00000000
+#define ROMCP_ARB_END_ADDR              0x000FFFFF
+#define CAAM_ARB_BASE_ADDR              0x00100000
+#define CAAM_ARB_END_ADDR               0x00103FFF
+#define APBH_DMA_ARB_BASE_ADDR          0x00110000
+#define APBH_DMA_ARB_END_ADDR           0x00117FFF
+#define HDMI_ARB_BASE_ADDR              0x00120000
+#define HDMI_ARB_END_ADDR               0x00128FFF
+#define GPU_3D_ARB_BASE_ADDR            0x00130000
+#define GPU_3D_ARB_END_ADDR             0x00133FFF
+#define GPU_2D_ARB_BASE_ADDR            0x00134000
+#define GPU_2D_ARB_END_ADDR             0x00137FFF
+#define DTCP_ARB_BASE_ADDR              0x00138000
+#define DTCP_ARB_END_ADDR               0x0013BFFF
+
+/* GPV - PL301 configuration ports */
+#define GPV2_BASE_ADDR                 0x00200000
+#define GPV3_BASE_ADDR                 0x00300000
+#define GPV4_BASE_ADDR                 0x00800000
+#define IRAM_BASE_ADDR                 0x00900000
+#define SCU_BASE_ADDR                   0x00A00000
+#define IC_INTERFACES_BASE_ADDR         0x00A00100
+#define GLOBAL_TIMER_BASE_ADDR          0x00A00200
+#define PRIVATE_TIMERS_WD_BASE_ADDR     0x00A00600
+#define IC_DISTRIBUTOR_BASE_ADDR        0x00A01000
+#define GPV0_BASE_ADDR                  0x00B00000
+#define GPV1_BASE_ADDR                  0x00C00000
+#define PCIE_ARB_BASE_ADDR              0x01000000
+#define PCIE_ARB_END_ADDR               0x01FFFFFF
+
+#define AIPS1_ARB_BASE_ADDR             0x02000000
+#define AIPS1_ARB_END_ADDR              0x020FFFFF
+#define AIPS2_ARB_BASE_ADDR             0x02100000
+#define AIPS2_ARB_END_ADDR              0x021FFFFF
+#define SATA_ARB_BASE_ADDR              0x02200000
+#define SATA_ARB_END_ADDR               0x02203FFF
+#define OPENVG_ARB_BASE_ADDR            0x02204000
+#define OPENVG_ARB_END_ADDR             0x02207FFF
+#define HSI_ARB_BASE_ADDR               0x02208000
+#define HSI_ARB_END_ADDR                0x0220BFFF
+#define IPU1_ARB_BASE_ADDR              0x02400000
+#define IPU1_ARB_END_ADDR               0x027FFFFF
+#define IPU2_ARB_BASE_ADDR              0x02800000
+#define IPU2_ARB_END_ADDR               0x02BFFFFF
+#define WEIM_ARB_BASE_ADDR              0x08000000
+#define WEIM_ARB_END_ADDR               0x0FFFFFFF
+
+#define MMDC0_ARB_BASE_ADDR             0x10000000
+#define MMDC0_ARB_END_ADDR              0x7FFFFFFF
+#define MMDC1_ARB_BASE_ADDR             0x80000000
+#define MMDC1_ARB_END_ADDR              0xFFFFFFFF
+
+/* Defines for Blocks connected via AIPS (SkyBlue) */
+#define ATZ1_BASE_ADDR              AIPS1_ARB_BASE_ADDR
+#define ATZ2_BASE_ADDR              AIPS2_ARB_BASE_ADDR
+#define AIPS1_BASE_ADDR             AIPS1_ON_BASE_ADDR
+#define AIPS2_BASE_ADDR             AIPS2_ON_BASE_ADDR
+
+#define SPDIF_BASE_ADDR             (ATZ1_BASE_ADDR + 0x04000)
+#define ECSPI1_BASE_ADDR            (ATZ1_BASE_ADDR + 0x08000)
+#define ECSPI2_BASE_ADDR            (ATZ1_BASE_ADDR + 0x0C000)
+#define ECSPI3_BASE_ADDR            (ATZ1_BASE_ADDR + 0x10000)
+#define ECSPI4_BASE_ADDR            (ATZ1_BASE_ADDR + 0x14000)
+#define ECSPI5_BASE_ADDR            (ATZ1_BASE_ADDR + 0x18000)
+#define UART1_BASE                  (ATZ1_BASE_ADDR + 0x20000)
+#define ESAI1_BASE_ADDR             (ATZ1_BASE_ADDR + 0x24000)
+#define SSI1_BASE_ADDR              (ATZ1_BASE_ADDR + 0x28000)
+#define SSI2_BASE_ADDR              (ATZ1_BASE_ADDR + 0x2C000)
+#define SSI3_BASE_ADDR              (ATZ1_BASE_ADDR + 0x30000)
+#define ASRC_BASE_ADDR              (ATZ1_BASE_ADDR + 0x34000)
+#define SPBA_BASE_ADDR              (ATZ1_BASE_ADDR + 0x3C000)
+#define VPU_BASE_ADDR               (ATZ1_BASE_ADDR + 0x40000)
+#define AIPS1_ON_BASE_ADDR          (ATZ1_BASE_ADDR + 0x7C000)
+
+#define AIPS1_OFF_BASE_ADDR         (ATZ1_BASE_ADDR + 0x80000)
+#define PWM1_BASE_ADDR              (AIPS1_OFF_BASE_ADDR + 0x0000)
+#define PWM2_BASE_ADDR              (AIPS1_OFF_BASE_ADDR + 0x4000)
+#define PWM3_BASE_ADDR              (AIPS1_OFF_BASE_ADDR + 0x8000)
+#define PWM4_BASE_ADDR              (AIPS1_OFF_BASE_ADDR + 0xC000)
+#define CAN1_BASE_ADDR              (AIPS1_OFF_BASE_ADDR + 0x10000)
+#define CAN2_BASE_ADDR              (AIPS1_OFF_BASE_ADDR + 0x14000)
+#define GPT1_BASE_ADDR              (AIPS1_OFF_BASE_ADDR + 0x18000)
+#define GPIO1_BASE_ADDR             (AIPS1_OFF_BASE_ADDR + 0x1C000)
+#define GPIO2_BASE_ADDR             (AIPS1_OFF_BASE_ADDR + 0x20000)
+#define GPIO3_BASE_ADDR             (AIPS1_OFF_BASE_ADDR + 0x24000)
+#define GPIO4_BASE_ADDR             (AIPS1_OFF_BASE_ADDR + 0x28000)
+#define GPIO5_BASE_ADDR             (AIPS1_OFF_BASE_ADDR + 0x2C000)
+#define GPIO6_BASE_ADDR             (AIPS1_OFF_BASE_ADDR + 0x30000)
+#define GPIO7_BASE_ADDR             (AIPS1_OFF_BASE_ADDR + 0x34000)
+#define KPP_BASE_ADDR               (AIPS1_OFF_BASE_ADDR + 0x38000)
+#define WDOG1_BASE_ADDR             (AIPS1_OFF_BASE_ADDR + 0x3C000)
+#define WDOG2_BASE_ADDR             (AIPS1_OFF_BASE_ADDR + 0x40000)
+#define CCM_BASE_ADDR               (AIPS1_OFF_BASE_ADDR + 0x44000)
+#define ANATOP_BASE_ADDR            (AIPS1_OFF_BASE_ADDR + 0x48000)
+#define SNVS_BASE_ADDR              (AIPS1_OFF_BASE_ADDR + 0x4C000)
+#define EPIT1_BASE_ADDR             (AIPS1_OFF_BASE_ADDR + 0x50000)
+#define EPIT2_BASE_ADDR             (AIPS1_OFF_BASE_ADDR + 0x54000)
+#define SRC_BASE_ADDR               (AIPS1_OFF_BASE_ADDR + 0x58000)
+#define GPC_BASE_ADDR               (AIPS1_OFF_BASE_ADDR + 0x5C000)
+#define IOMUXC_BASE_ADDR            (AIPS1_OFF_BASE_ADDR + 0x60000)
+#define DCIC1_BASE_ADDR             (AIPS1_OFF_BASE_ADDR + 0x64000)
+#define DCIC2_BASE_ADDR             (AIPS1_OFF_BASE_ADDR + 0x68000)
+#define DMA_REQ_PORT_HOST_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x6C000)
+
+#define AIPS2_ON_BASE_ADDR          (ATZ2_BASE_ADDR + 0x7C000)
+#define AIPS2_OFF_BASE_ADDR         (ATZ2_BASE_ADDR + 0x80000)
+#define CAAM_BASE_ADDR              (ATZ2_BASE_ADDR)
+#define ARM_BASE_ADDR              (ATZ2_BASE_ADDR + 0x40000)
+#define USBOH3_PL301_BASE_ADDR      (AIPS2_OFF_BASE_ADDR + 0x0000)
+#define USBOH3_USB_BASE_ADDR        (AIPS2_OFF_BASE_ADDR + 0x4000)
+#define ENET_BASE_ADDR              (AIPS2_OFF_BASE_ADDR + 0x8000)
+#define MLB_BASE_ADDR               (AIPS2_OFF_BASE_ADDR + 0xC000)
+#define USDHC1_BASE_ADDR            (AIPS2_OFF_BASE_ADDR + 0x10000)
+#define USDHC2_BASE_ADDR            (AIPS2_OFF_BASE_ADDR + 0x14000)
+#define USDHC3_BASE_ADDR            (AIPS2_OFF_BASE_ADDR + 0x18000)
+#define USDHC4_BASE_ADDR            (AIPS2_OFF_BASE_ADDR + 0x1C000)
+#define I2C1_BASE_ADDR              (AIPS2_OFF_BASE_ADDR + 0x20000)
+#define I2C2_BASE_ADDR              (AIPS2_OFF_BASE_ADDR + 0x24000)
+#define I2C3_BASE_ADDR              (AIPS2_OFF_BASE_ADDR + 0x28000)
+#define ROMCP_BASE_ADDR             (AIPS2_OFF_BASE_ADDR + 0x2C000)
+#define MMDC_P0_BASE_ADDR           (AIPS2_OFF_BASE_ADDR + 0x30000)
+#define MMDC_P1_BASE_ADDR           (AIPS2_OFF_BASE_ADDR + 0x34000)
+#define WEIM_BASE_ADDR              (AIPS2_OFF_BASE_ADDR + 0x38000)
+#define OCOTP_BASE_ADDR             (AIPS2_OFF_BASE_ADDR + 0x3C000)
+#define CSU_BASE_ADDR               (AIPS2_OFF_BASE_ADDR + 0x40000)
+#define IP2APB_PERFMON1_BASE_ADDR   (AIPS2_OFF_BASE_ADDR + 0x44000)
+#define IP2APB_PERFMON2_BASE_ADDR   (AIPS2_OFF_BASE_ADDR + 0x48000)
+#define IP2APB_PERFMON3_BASE_ADDR   (AIPS2_OFF_BASE_ADDR + 0x4C000)
+#define IP2APB_TZASC1_BASE_ADDR     (AIPS2_OFF_BASE_ADDR + 0x50000)
+#define IP2APB_TZASC2_BASE_ADDR     (AIPS2_OFF_BASE_ADDR + 0x54000)
+#define AUDMUX_BASE_ADDR            (AIPS2_OFF_BASE_ADDR + 0x58000)
+#define MIPI_CSI2_BASE_ADDR         (AIPS2_OFF_BASE_ADDR + 0x5C000)
+#define MIPI_DSI_BASE_ADDR          (AIPS2_OFF_BASE_ADDR + 0x60000)
+#define VDOA_BASE_ADDR              (AIPS2_OFF_BASE_ADDR + 0x64000)
+#define UART2_BASE                  (AIPS2_OFF_BASE_ADDR + 0x68000)
+#define UART3_BASE                  (AIPS2_OFF_BASE_ADDR + 0x6C000)
+#define UART4_BASE                  (AIPS2_OFF_BASE_ADDR + 0x70000)
+#define UART5_BASE                  (AIPS2_OFF_BASE_ADDR + 0x74000)
+#define IP2APB_USBPHY1_BASE_ADDR    (AIPS2_OFF_BASE_ADDR + 0x78000)
+#define IP2APB_USBPHY2_BASE_ADDR    (AIPS2_OFF_BASE_ADDR + 0x7C000)
+
+#define CHIP_REV_1_0                 0x10
+#define IRAM_SIZE                    0x00040000
+#define IMX_IIM_BASE                 OCOTP_BASE_ADDR
+
+#if !(defined(__KERNEL_STRICT_NAMES) || defined(__ASSEMBLY__))
+#include <asm/types.h>
+
+extern void imx_get_mac_from_fuse(unsigned char *mac);
+
+/* System Reset Controller (SRC) */
+struct src {
+       u32     scr;
+       u32     sbmr1;
+       u32     srsr;
+       u32     reserved1[2];
+       u32     sisr;
+       u32     simr;
+       u32     sbmr2;
+       u32     gpr1;
+       u32     gpr2;
+       u32     gpr3;
+       u32     gpr4;
+       u32     gpr5;
+       u32     gpr6;
+       u32     gpr7;
+       u32     gpr8;
+       u32     gpr9;
+       u32     gpr10;
+};
+
+struct iim_regs {
+       u32     ctrl;
+       u32     ctrl_set;
+       u32     ctrl_clr;
+       u32     ctrl_tog;
+       u32     timing;
+       u32     rsvd0[3];
+       u32     data;
+       u32     rsvd1[3];
+       u32     read_ctrl;
+       u32     rsvd2[3];
+       u32     fuse_data;
+       u32     rsvd3[3];
+       u32     sticky;
+       u32     rsvd4[3];
+       u32     scs;
+       u32     scs_set;
+       u32     scs_clr;
+       u32     scs_tog;
+       u32     crc_addr;
+       u32     rsvd5[3];
+       u32     crc_value;
+       u32     rsvd6[3];
+       u32     version;
+       u32     rsvd7[0xd8];
+
+       struct fuse_bank {
+               u32     fuse_regs[0x20];
+       } bank[15];
+};
+
+struct fuse_bank4_regs {
+       u32     sjc_resp_low;
+       u32     rsvd0[3];
+       u32     sjc_resp_high;
+       u32     rsvd1[3];
+       u32     mac_addr_low;
+       u32     rsvd2[3];
+       u32     mac_addr_high;
+       u32     rsvd3[0x13];
+};
+
+#endif /* __ASSEMBLER__*/
+#endif /* __ASM_ARCH_MX6_IMX_REGS_H__ */
diff --git a/arch/arm/include/asm/arch-mx6/iomux-v3.h b/arch/arm/include/asm/arch-mx6/iomux-v3.h
new file mode 100644 (file)
index 0000000..4558f4f
--- /dev/null
@@ -0,0 +1,103 @@
+/*
+ * Based on Linux i.MX iomux-v3.h file:
+ * Copyright (C) 2009 by Jan Weitzel Phytec Messtechnik GmbH,
+ *                     <armlinux@phytec.de>
+ *
+ * Copyright (C) 2011 Freescale Semiconductor, Inc.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301, USA.
+ */
+
+#ifndef __MACH_IOMUX_V3_H__
+#define __MACH_IOMUX_V3_H__
+
+/*
+ *     build IOMUX_PAD structure
+ *
+ * This iomux scheme is based around pads, which are the physical balls
+ * on the processor.
+ *
+ * - Each pad has a pad control register (IOMUXC_SW_PAD_CTRL_x) which controls
+ *   things like driving strength and pullup/pulldown.
+ * - Each pad can have but not necessarily does have an output routing register
+ *   (IOMUXC_SW_MUX_CTL_PAD_x).
+ * - Each pad can have but not necessarily does have an input routing register
+ *   (IOMUXC_x_SELECT_INPUT)
+ *
+ * The three register sets do not have a fixed offset to each other,
+ * hence we order this table by pad control registers (which all pads
+ * have) and put the optional i/o routing registers into additional
+ * fields.
+ *
+ * The naming convention for the pad modes is SOC_PAD_<padname>__<padmode>
+ * If <padname> or <padmode> refers to a GPIO, it is named GPIO_<unit>_<num>
+ *
+ * IOMUX/PAD Bit field definitions
+ *
+ * MUX_CTRL_OFS:           0..11 (12)
+ * PAD_CTRL_OFS:          12..23 (12)
+ * SEL_INPUT_OFS:         24..35 (12)
+ * MUX_MODE + SION:       36..40  (5)
+ * PAD_CTRL + NO_PAD_CTRL: 41..58 (18)
+ * SEL_INP:               59..62  (4)
+ * reserved:                63    (1)
+*/
+
+typedef u64 iomux_v3_cfg_t;
+
+#define MUX_CTRL_OFS_SHIFT     0
+#define MUX_CTRL_OFS_MASK      ((iomux_v3_cfg_t)0xfff << MUX_CTRL_OFS_SHIFT)
+#define MUX_PAD_CTRL_OFS_SHIFT 12
+#define MUX_PAD_CTRL_OFS_MASK  ((iomux_v3_cfg_t)0xfff << \
+       MUX_PAD_CTRL_OFS_SHIFT)
+#define MUX_SEL_INPUT_OFS_SHIFT        24
+#define MUX_SEL_INPUT_OFS_MASK ((iomux_v3_cfg_t)0xfff << \
+       MUX_SEL_INPUT_OFS_SHIFT)
+
+#define MUX_MODE_SHIFT         36
+#define MUX_MODE_MASK          ((iomux_v3_cfg_t)0x1f << MUX_MODE_SHIFT)
+#define MUX_PAD_CTRL_SHIFT     41
+#define MUX_PAD_CTRL_MASK      ((iomux_v3_cfg_t)0x3ffff << MUX_PAD_CTRL_SHIFT)
+#define MUX_SEL_INPUT_SHIFT    59
+#define MUX_SEL_INPUT_MASK     ((iomux_v3_cfg_t)0xf << MUX_SEL_INPUT_SHIFT)
+
+#define MUX_PAD_CTRL(x)                ((iomux_v3_cfg_t)(x) << MUX_PAD_CTRL_SHIFT)
+
+#define IOMUX_PAD(pad_ctrl_ofs, mux_ctrl_ofs, mux_mode, sel_input_ofs, \
+               sel_input, pad_ctrl)                                    \
+       (((iomux_v3_cfg_t)(mux_ctrl_ofs) << MUX_CTRL_OFS_SHIFT)     |   \
+       ((iomux_v3_cfg_t)(mux_mode)      << MUX_MODE_SHIFT)         |   \
+       ((iomux_v3_cfg_t)(pad_ctrl_ofs)  << MUX_PAD_CTRL_OFS_SHIFT) |   \
+       ((iomux_v3_cfg_t)(pad_ctrl)      << MUX_PAD_CTRL_SHIFT)     |   \
+       ((iomux_v3_cfg_t)(sel_input_ofs) << MUX_SEL_INPUT_OFS_SHIFT)|   \
+       ((iomux_v3_cfg_t)(sel_input)     << MUX_SEL_INPUT_SHIFT))
+
+#define NO_PAD_CTRL            (1 << 17)
+#define GPIO_PIN_MASK          0x1f
+#define GPIO_PORT_SHIFT                5
+#define GPIO_PORT_MASK         (0x7 << GPIO_PORT_SHIFT)
+#define GPIO_PORTA             (0 << GPIO_PORT_SHIFT)
+#define GPIO_PORTB             (1 << GPIO_PORT_SHIFT)
+#define GPIO_PORTC             (2 << GPIO_PORT_SHIFT)
+#define GPIO_PORTD             (3 << GPIO_PORT_SHIFT)
+#define GPIO_PORTE             (4 << GPIO_PORT_SHIFT)
+#define GPIO_PORTF             (5 << GPIO_PORT_SHIFT)
+
+#define MUX_CONFIG_SION                (0x1 << 4)
+
+int imx_iomux_v3_setup_pad(iomux_v3_cfg_t pad);
+int imx_iomux_v3_setup_multiple_pads(iomux_v3_cfg_t *pad_list, unsigned count);
+
+#endif /* __MACH_IOMUX_V3_H__*/
diff --git a/arch/arm/include/asm/arch-mx6/mx6x_pins.h b/arch/arm/include/asm/arch-mx6/mx6x_pins.h
new file mode 100644 (file)
index 0000000..b3f613c
--- /dev/null
@@ -0,0 +1,1683 @@
+/*
+ * Copyright (C) 2011 Freescale Semiconductor, Inc. All Rights Reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Auto Generate file, please don't edit it
+ *
+ */
+
+#ifndef __ASM_ARCH_MX6_MX6X_PINS_H__
+#define __ASM_ARCH_MX6_MX6X_PINS_H__
+
+#include <asm/arch/iomux-v3.h>
+
+/* Use to set PAD control */
+#define PAD_CTL_HYS            (1 << 16)
+#define PAD_CTL_PUS_100K_DOWN  (0 << 14)
+#define PAD_CTL_PUS_47K_UP     (1 << 14)
+#define PAD_CTL_PUS_100K_UP    (2 << 14)
+#define PAD_CTL_PUS_22K_UP     (3 << 14)
+
+#define PAD_CTL_PUE            (1 << 13)
+#define PAD_CTL_PKE            (1 << 12)
+#define PAD_CTL_ODE            (1 << 11)
+#define PAD_CTL_SPEED_LOW      (1 << 6)
+#define PAD_CTL_SPEED_MED      (2 << 6)
+#define PAD_CTL_SPEED_HIGH     (3 << 6)
+#define PAD_CTL_DSE_DISABLE    (0 << 3)
+#define PAD_CTL_DSE_240ohm     (1 << 3)
+#define PAD_CTL_DSE_120ohm     (2 << 3)
+#define PAD_CTL_DSE_80ohm      (3 << 3)
+#define PAD_CTL_DSE_60ohm      (4 << 3)
+#define PAD_CTL_DSE_48ohm      (5 << 3)
+#define PAD_CTL_DSE_40ohm      (6 << 3)
+#define PAD_CTL_DSE_34ohm      (7 << 3)
+#define PAD_CTL_SRE_FAST       (1 << 0)
+#define PAD_CTL_SRE_SLOW       (0 << 0)
+
+#define NO_MUX_I               0x3FF
+#define NO_PAD_I               0x7FF
+
+enum {
+       MX6Q_PAD_SD2_DAT1__USDHC2_DAT1          = IOMUX_PAD(0x0360, 0x004C, 0, 0x0000, 0, 0),
+       MX6Q_PAD_SD2_DAT1__ECSPI5_SS0           = IOMUX_PAD(0x0360, 0x004C, 1, 0x0834, 0, 0),
+       MX6Q_PAD_SD2_DAT1__WEIM_WEIM_CS_2       = IOMUX_PAD(0x0360, 0x004C, 2, 0x0000, 0, 0),
+       MX6Q_PAD_SD2_DAT1__AUDMUX_AUD4_TXFS     = IOMUX_PAD(0x0360, 0x004C, 3, 0x07C8, 0, 0),
+       MX6Q_PAD_SD2_DAT1__KPP_COL_7            = IOMUX_PAD(0x0360, 0x004C, 4, 0x08F0, 0, 0),
+       MX6Q_PAD_SD2_DAT1__GPIO_1_14            = IOMUX_PAD(0x0360, 0x004C, 5, 0x0000, 0, 0),
+       MX6Q_PAD_SD2_DAT1__CCM_WAIT             = IOMUX_PAD(0x0360, 0x004C, 6, 0x0000, 0, 0),
+       MX6Q_PAD_SD2_DAT1__ANATOP_TESTO_0       = IOMUX_PAD(0x0360, 0x004C, 7, 0x0000, 0, 0),
+       MX6Q_PAD_SD2_DAT2__USDHC2_DAT2          = IOMUX_PAD(0x0364, 0x0050, 0, 0x0000, 0, 0),
+       MX6Q_PAD_SD2_DAT2__ECSPI5_SS1           = IOMUX_PAD(0x0364, 0x0050, 1, 0x0838, 0, 0),
+       MX6Q_PAD_SD2_DAT2__WEIM_WEIM_CS_3       = IOMUX_PAD(0x0364, 0x0050, 2, 0x0000, 0, 0),
+       MX6Q_PAD_SD2_DAT2__AUDMUX_AUD4_TXD      = IOMUX_PAD(0x0364, 0x0050, 3, 0x07B8, 0, 0),
+       MX6Q_PAD_SD2_DAT2__KPP_ROW_6            = IOMUX_PAD(0x0364, 0x0050, 4, 0x08F8, 0, 0),
+       MX6Q_PAD_SD2_DAT2__GPIO_1_13            = IOMUX_PAD(0x0364, 0x0050, 5, 0x0000, 0, 0),
+       MX6Q_PAD_SD2_DAT2__CCM_STOP             = IOMUX_PAD(0x0364, 0x0050, 6, 0x0000, 0, 0),
+       MX6Q_PAD_SD2_DAT2__ANATOP_TESTO_1       = IOMUX_PAD(0x0364, 0x0050, 7, 0x0000, 0, 0),
+       MX6Q_PAD_SD2_DAT0__USDHC2_DAT0          = IOMUX_PAD(0x0368, 0x0054, 0, 0x0000, 0, 0),
+       MX6Q_PAD_SD2_DAT0__ECSPI5_MISO          = IOMUX_PAD(0x0368, 0x0054, 1, 0x082C, 0, 0),
+       MX6Q_PAD_SD2_DAT0__AUDMUX_AUD4_RXD      = IOMUX_PAD(0x0368, 0x0054, 3, 0x07B4, 0, 0),
+       MX6Q_PAD_SD2_DAT0__KPP_ROW_7            = IOMUX_PAD(0x0368, 0x0054, 4, 0x08FC, 0, 0),
+       MX6Q_PAD_SD2_DAT0__GPIO_1_15            = IOMUX_PAD(0x0368, 0x0054, 5, 0x0000, 0, 0),
+       MX6Q_PAD_SD2_DAT0__DCIC2_DCIC_OUT       = IOMUX_PAD(0x0368, 0x0054, 6, 0x0000, 0, 0),
+       MX6Q_PAD_SD2_DAT0__TESTO_2              = IOMUX_PAD(0x0368, 0x0054, 7, 0x0000, 0, 0),
+       MX6Q_PAD_RGMII_TXC__USBOH3_H2_DATA      = IOMUX_PAD(0x036C, 0x0058, 0, 0x0000, 0, 0),
+       MX6Q_PAD_RGMII_TXC__ENET_RGMII_TXC      = IOMUX_PAD(0x036C, 0x0058, 1, 0x0000, 0, 0),
+       MX6Q_PAD_RGMII_TXC__SPDIF_SPDIF_EXTCLK  = IOMUX_PAD(0x036C, 0x0058, 2, 0x0918, 0, 0),
+       MX6Q_PAD_RGMII_TXC__GPIO_6_19           = IOMUX_PAD(0x036C, 0x0058, 5, 0x0000, 0, 0),
+       MX6Q_PAD_RGMII_TXC__MIPI_CORE_DPHY_IN_0 = IOMUX_PAD(0x036C, 0x0058, 6, 0x0000, 0, 0),
+       MX6Q_PAD_RGMII_TXC__ANATOP_24M_OUT      = IOMUX_PAD(0x036C, 0x0058, 7, 0x0000, 0, 0),
+       MX6Q_PAD_RGMII_TD0__MIPI_HSI_CRL_TX_RDY = IOMUX_PAD(0x0370, 0x005C, 0, 0x0000, 0, 0),
+       MX6Q_PAD_RGMII_TD0__ENET_RGMII_TD0      = IOMUX_PAD(0x0370, 0x005C, 1, 0x0000, 0, 0),
+       MX6Q_PAD_RGMII_TD0__GPIO_6_20           = IOMUX_PAD(0x0370, 0x005C, 5, 0x0000, 0, 0),
+       MX6Q_PAD_RGMII_TD0__MIPI_CORE_DPHY_IN_1 = IOMUX_PAD(0x0370, 0x005C, 6, 0x0000, 0, 0),
+       MX6Q_PAD_RGMII_TD1__MIPI_HSI_CRL_RX_FLG = IOMUX_PAD(0x0374, 0x0060, 0, 0x0000, 0, 0),
+       MX6Q_PAD_RGMII_TD1__ENET_RGMII_TD1      = IOMUX_PAD(0x0374, 0x0060, 1, 0x0000, 0, 0),
+       MX6Q_PAD_RGMII_TD1__GPIO_6_21           = IOMUX_PAD(0x0374, 0x0060, 5, 0x0000, 0, 0),
+       MX6Q_PAD_RGMII_TD1__MIPI_CORE_DPHY_IN_2 = IOMUX_PAD(0x0374, 0x0060, 6, 0x0000, 0, 0),
+       MX6Q_PAD_RGMII_TD1__CCM_PLL3_BYP        = IOMUX_PAD(0x0374, 0x0060, 7, 0x0000, 0, 0),
+       MX6Q_PAD_RGMII_TD2__MIPI_HSI_CRL_RX_DTA = IOMUX_PAD(0x0378, 0x0064, 0, 0x0000, 0, 0),
+       MX6Q_PAD_RGMII_TD2__ENET_RGMII_TD2      = IOMUX_PAD(0x0378, 0x0064, 1, 0x0000, 0, 0),
+       MX6Q_PAD_RGMII_TD2__GPIO_6_22           = IOMUX_PAD(0x0378, 0x0064, 5, 0x0000, 0, 0),
+       MX6Q_PAD_RGMII_TD2__MIPI_CORE_DPHY_IN_3 = IOMUX_PAD(0x0378, 0x0064, 6, 0x0000, 0, 0),
+       MX6Q_PAD_RGMII_TD2__CCM_PLL2_BYP        = IOMUX_PAD(0x0378, 0x0064, 7, 0x0000, 0, 0),
+       MX6Q_PAD_RGMII_TD3__MIPI_HSI_CRL_RX_WAK = IOMUX_PAD(0x037C, 0x0068, 0, 0x0000, 0, 0),
+       MX6Q_PAD_RGMII_TD3__ENET_RGMII_TD3      = IOMUX_PAD(0x037C, 0x0068, 1, 0x0000, 0, 0),
+       MX6Q_PAD_RGMII_TD3__GPIO_6_23           = IOMUX_PAD(0x037C, 0x0068, 5, 0x0000, 0, 0),
+       MX6Q_PAD_RGMII_TD3__MIPI_CORE_DPHY_IN_4 = IOMUX_PAD(0x037C, 0x0068, 6, 0x0000, 0, 0),
+       MX6Q_PAD_RGMII_RX_CTL__USBOH3_H3_DATA   = IOMUX_PAD(0x0380, 0x006C, 0, 0x0000, 0, 0),
+       MX6Q_PAD_RGMII_RX_CTL__RGMII_RX_CTL     = IOMUX_PAD(0x0380, 0x006C, 1, 0x0858, 0, 0),
+       MX6Q_PAD_RGMII_RX_CTL__GPIO_6_24        = IOMUX_PAD(0x0380, 0x006C, 5, 0x0000, 0, 0),
+       MX6Q_PAD_RGMII_RX_CTL__MIPI_DPHY_IN_5   = IOMUX_PAD(0x0380, 0x006C, 6, 0x0000, 0, 0),
+       MX6Q_PAD_RGMII_RD0__MIPI_HSI_CRL_RX_RDY = IOMUX_PAD(0x0384, 0x0070, 0, 0x0000, 0, 0),
+       MX6Q_PAD_RGMII_RD0__ENET_RGMII_RD0      = IOMUX_PAD(0x0384, 0x0070, 1, 0x0848, 0, 0),
+       MX6Q_PAD_RGMII_RD0__GPIO_6_25           = IOMUX_PAD(0x0384, 0x0070, 5, 0x0000, 0, 0),
+       MX6Q_PAD_RGMII_RD0__MIPI_CORE_DPHY_IN_6 = IOMUX_PAD(0x0384, 0x0070, 6, 0x0000, 0, 0),
+       MX6Q_PAD_RGMII_TX_CTL__USBOH3_H2_STROBE = IOMUX_PAD(0x0388, 0x0074, 0, 0x0000, 0, 0),
+       MX6Q_PAD_RGMII_TX_CTL__RGMII_TX_CTL     = IOMUX_PAD(0x0388, 0x0074, 1, 0x0000, 0, 0),
+       MX6Q_PAD_RGMII_TX_CTL__GPIO_6_26        = IOMUX_PAD(0x0388, 0x0074, 5, 0x0000, 0, 0),
+       MX6Q_PAD_RGMII_TX_CTL__CORE_DPHY_IN_7   = IOMUX_PAD(0x0388, 0x0074, 6, 0x0000, 0, 0),
+       MX6Q_PAD_RGMII_TX_CTL__ANATOP_REF_OUT   = IOMUX_PAD(0x0388, 0x0074, 7, 0x083C, 0, 0),
+       MX6Q_PAD_RGMII_RD1__MIPI_HSI_CTRL_TX_FL = IOMUX_PAD(0x038C, 0x0078, 0, 0x0000, 0, 0),
+       MX6Q_PAD_RGMII_RD1__ENET_RGMII_RD1      = IOMUX_PAD(0x038C, 0x0078, 1, 0x084C, 0, 0),
+       MX6Q_PAD_RGMII_RD1__GPIO_6_27           = IOMUX_PAD(0x038C, 0x0078, 5, 0x0000, 0, 0),
+       MX6Q_PAD_RGMII_RD1__CORE_DPHY_TEST_IN_8 = IOMUX_PAD(0x038C, 0x0078, 6, 0x0000, 0, 0),
+       MX6Q_PAD_RGMII_RD1__SJC_FAIL            = IOMUX_PAD(0x038C, 0x0078, 7, 0x0000, 0, 0),
+       MX6Q_PAD_RGMII_RD2__MIPI_HSI_CRL_TX_DTA = IOMUX_PAD(0x0390, 0x007C, 0, 0x0000, 0, 0),
+       MX6Q_PAD_RGMII_RD2__ENET_RGMII_RD2      = IOMUX_PAD(0x0390, 0x007C, 1, 0x0850, 0, 0),
+       MX6Q_PAD_RGMII_RD2__GPIO_6_28           = IOMUX_PAD(0x0390, 0x007C, 5, 0x0000, 0, 0),
+       MX6Q_PAD_RGMII_RD2__MIPI_CORE_DPHY_IN_9 = IOMUX_PAD(0x0390, 0x007C, 6, 0x0000, 0, 0),
+       MX6Q_PAD_RGMII_RD3__MIPI_HSI_CRL_TX_WAK = IOMUX_PAD(0x0394, 0x0080, 0, 0x0000, 0, 0),
+       MX6Q_PAD_RGMII_RD3__ENET_RGMII_RD3      = IOMUX_PAD(0x0394, 0x0080, 1, 0x0854, 0, 0),
+       MX6Q_PAD_RGMII_RD3__GPIO_6_29           = IOMUX_PAD(0x0394, 0x0080, 5, 0x0000, 0, 0),
+       MX6Q_PAD_RGMII_RD3__MIPI_CORE_DPHY_IN10 = IOMUX_PAD(0x0394, 0x0080, 6, 0x0000, 0, 0),
+       MX6Q_PAD_RGMII_RXC__USBOH3_H3_STROBE    = IOMUX_PAD(0x0398, 0x0084, 0, 0x0000, 0, 0),
+       MX6Q_PAD_RGMII_RXC__ENET_RGMII_RXC      = IOMUX_PAD(0x0398, 0x0084, 1, 0x0844, 0, 0),
+       MX6Q_PAD_RGMII_RXC__GPIO_6_30           = IOMUX_PAD(0x0398, 0x0084, 5, 0x0000, 0, 0),
+       MX6Q_PAD_RGMII_RXC__MIPI_CORE_DPHY_IN11 = IOMUX_PAD(0x0398, 0x0084, 6, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_A25__WEIM_WEIM_A_25        = IOMUX_PAD(0x039C, 0x0088, 0, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_A25__ECSPI4_SS1            = IOMUX_PAD(0x039C, 0x0088, 1, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_A25__ECSPI2_RDY            = IOMUX_PAD(0x039C, 0x0088, 2, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_A25__IPU1_DI1_PIN12        = IOMUX_PAD(0x039C, 0x0088, 3, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_A25__IPU1_DI0_D1_CS        = IOMUX_PAD(0x039C, 0x0088, 4, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_A25__GPIO_5_2              = IOMUX_PAD(0x039C, 0x0088, 5, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_A25__HDMI_TX_CEC_LINE      = IOMUX_PAD(0x039C, 0x0088, 6, 0x088C, 0, 0),
+       MX6Q_PAD_EIM_A25__PL301_PER1_HBURST_0   = IOMUX_PAD(0x039C, 0x0088, 7, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_EB2__WEIM_WEIM_EB_2        = IOMUX_PAD(0x03A0, 0x008C, 0, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_EB2__ECSPI1_SS0            = IOMUX_PAD(0x03A0, 0x008C, 1, 0x0800, 0, 0),
+       MX6Q_PAD_EIM_EB2__CCM_DI1_EXT_CLK       = IOMUX_PAD(0x03A0, 0x008C, 2, 0x07EC, 0, 0),
+       MX6Q_PAD_EIM_EB2__IPU2_CSI1_D_19        = IOMUX_PAD(0x03A0, 0x008C, 3, 0x08D4, 0, 0),
+       MX6Q_PAD_EIM_EB2__HDMI_TX_DDC_SCL       = IOMUX_PAD(0x03A0, 0x008C, 4, 0x0890, 0, 0),
+       MX6Q_PAD_EIM_EB2__GPIO_2_30             = IOMUX_PAD(0x03A0, 0x008C, 5, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_EB2__I2C2_SCL              = IOMUX_PAD(0x03A0, 0x008C, 22, 0x08A0, 0, 0),
+       MX6Q_PAD_EIM_EB2__SRC_BT_CFG_30         = IOMUX_PAD(0x03A0, 0x008C, 7, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D16__WEIM_WEIM_D_16        = IOMUX_PAD(0x03A4, 0x0090, 0, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D16__ECSPI1_SCLK           = IOMUX_PAD(0x03A4, 0x0090, 1, 0x07F4, 0, 0),
+       MX6Q_PAD_EIM_D16__IPU1_DI0_PIN5         = IOMUX_PAD(0x03A4, 0x0090, 2, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D16__IPU2_CSI1_D_18        = IOMUX_PAD(0x03A4, 0x0090, 3, 0x08D0, 0, 0),
+       MX6Q_PAD_EIM_D16__HDMI_TX_DDC_SDA       = IOMUX_PAD(0x03A4, 0x0090, 4, 0x0894, 0, 0),
+       MX6Q_PAD_EIM_D16__GPIO_3_16             = IOMUX_PAD(0x03A4, 0x0090, 5, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D16__I2C2_SDA              = IOMUX_PAD(0x03A4, 0x0090, 22, 0x08A4, 0, 0),
+       MX6Q_PAD_EIM_D17__WEIM_WEIM_D_17        = IOMUX_PAD(0x03A8, 0x0094, 0, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D17__ECSPI1_MISO           = IOMUX_PAD(0x03A8, 0x0094, 1, 0x07F8, 0, 0),
+       MX6Q_PAD_EIM_D17__IPU1_DI0_PIN6         = IOMUX_PAD(0x03A8, 0x0094, 2, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D17__IPU2_CSI1_PIXCLK      = IOMUX_PAD(0x03A8, 0x0094, 3, 0x08E0, 0, 0),
+       MX6Q_PAD_EIM_D17__DCIC1_DCIC_OUT        = IOMUX_PAD(0x03A8, 0x0094, 4, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D17__GPIO_3_17             = IOMUX_PAD(0x03A8, 0x0094, 5, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D17__I2C3_SCL              = IOMUX_PAD(0x03A8, 0x0094, 22, 0x08A8, 0, 0),
+       MX6Q_PAD_EIM_D17__PL301_PER1_HBURST_1   = IOMUX_PAD(0x03A8, 0x0094, 7, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D18__WEIM_WEIM_D_18        = IOMUX_PAD(0x03AC, 0x0098, 0, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D18__ECSPI1_MOSI           = IOMUX_PAD(0x03AC, 0x0098, 1, 0x07FC, 0, 0),
+       MX6Q_PAD_EIM_D18__IPU1_DI0_PIN7         = IOMUX_PAD(0x03AC, 0x0098, 2, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D18__IPU2_CSI1_D_17        = IOMUX_PAD(0x03AC, 0x0098, 3, 0x08CC, 0, 0),
+       MX6Q_PAD_EIM_D18__IPU1_DI1_D0_CS        = IOMUX_PAD(0x03AC, 0x0098, 4, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D18__GPIO_3_18             = IOMUX_PAD(0x03AC, 0x0098, 5, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D18__I2C3_SDA              = IOMUX_PAD(0x03AC, 0x0098, 22, 0x08AC, 0, 0),
+       MX6Q_PAD_EIM_D18__PL301_PER1_HBURST_2   = IOMUX_PAD(0x03AC, 0x0098, 7, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D19__WEIM_WEIM_D_19        = IOMUX_PAD(0x03B0, 0x009C, 0, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D19__ECSPI1_SS1            = IOMUX_PAD(0x03B0, 0x009C, 1, 0x0804, 0, 0),
+       MX6Q_PAD_EIM_D19__IPU1_DI0_PIN8         = IOMUX_PAD(0x03B0, 0x009C, 2, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D19__IPU2_CSI1_D_16        = IOMUX_PAD(0x03B0, 0x009C, 3, 0x08C8, 0, 0),
+       MX6Q_PAD_EIM_D19__UART1_CTS             = IOMUX_PAD(0x03B0, 0x009C, 4, 0x091C, 0, 0),
+       MX6Q_PAD_EIM_D19__GPIO_3_19             = IOMUX_PAD(0x03B0, 0x009C, 5, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D19__EPIT1_EPITO           = IOMUX_PAD(0x03B0, 0x009C, 6, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D19__PL301MX6QPER1_HRESP   = IOMUX_PAD(0x03B0, 0x009C, 7, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D20__WEIM_WEIM_D_20        = IOMUX_PAD(0x03B4, 0x00A0, 0, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D20__ECSPI4_SS0            = IOMUX_PAD(0x03B4, 0x00A0, 1, 0x0824, 0, 0),
+       MX6Q_PAD_EIM_D20__IPU1_DI0_PIN16        = IOMUX_PAD(0x03B4, 0x00A0, 2, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D20__IPU2_CSI1_D_15        = IOMUX_PAD(0x03B4, 0x00A0, 3, 0x08C4, 0, 0),
+       MX6Q_PAD_EIM_D20__UART1_CTS             = IOMUX_PAD(0x03B4, 0x00A0, 4, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D20__UART1_RTS             = IOMUX_PAD(0x03B4, 0x00A0, 4, 0x091C, 1, 0),
+       MX6Q_PAD_EIM_D20__GPIO_3_20             = IOMUX_PAD(0x03B4, 0x00A0, 5, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D20__EPIT2_EPITO           = IOMUX_PAD(0x03B4, 0x00A0, 6, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D21__WEIM_WEIM_D_21        = IOMUX_PAD(0x03B8, 0x00A4, 0, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D21__ECSPI4_SCLK           = IOMUX_PAD(0x03B8, 0x00A4, 1, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D21__IPU1_DI0_PIN17        = IOMUX_PAD(0x03B8, 0x00A4, 2, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D21__IPU2_CSI1_D_11        = IOMUX_PAD(0x03B8, 0x00A4, 3, 0x08B4, 0, 0),
+       MX6Q_PAD_EIM_D21__USBOH3_USBOTG_OC      = IOMUX_PAD(0x03B8, 0x00A4, 4, 0x0944, 0, 0),
+       MX6Q_PAD_EIM_D21__GPIO_3_21             = IOMUX_PAD(0x03B8, 0x00A4, 5, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D21__I2C1_SCL              = IOMUX_PAD(0x03B8, 0x00A4, 22, 0x0898, 0, 0),
+       MX6Q_PAD_EIM_D21__SPDIF_IN1             = IOMUX_PAD(0x03B8, 0x00A4, 7, 0x0914, 0, 0),
+       MX6Q_PAD_EIM_D22__WEIM_WEIM_D_22        = IOMUX_PAD(0x03BC, 0x00A8, 0, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D22__ECSPI4_MISO           = IOMUX_PAD(0x03BC, 0x00A8, 1, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D22__IPU1_DI0_PIN1         = IOMUX_PAD(0x03BC, 0x00A8, 2, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D22__IPU2_CSI1_D_10        = IOMUX_PAD(0x03BC, 0x00A8, 3, 0x08B0, 0, 0),
+       MX6Q_PAD_EIM_D22__USBOH3_USBOTG_PWR     = IOMUX_PAD(0x03BC, 0x00A8, 4, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D22__GPIO_3_22             = IOMUX_PAD(0x03BC, 0x00A8, 5, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D22__SPDIF_OUT1            = IOMUX_PAD(0x03BC, 0x00A8, 6, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D22__PL301MX6QPER1_HWRITE  = IOMUX_PAD(0x03BC, 0x00A8, 7, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D23__WEIM_WEIM_D_23        = IOMUX_PAD(0x03C0, 0x00AC, 0, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D23__IPU1_DI0_D0_CS        = IOMUX_PAD(0x03C0, 0x00AC, 1, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D23__UART3_CTS             = IOMUX_PAD(0x03C0, 0x00AC, 2, 0x092C, 0, 0),
+       MX6Q_PAD_EIM_D23__UART1_DCD             = IOMUX_PAD(0x03C0, 0x00AC, 3, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D23__IPU2_CSI1_DATA_EN     = IOMUX_PAD(0x03C0, 0x00AC, 4, 0x08D8, 0, 0),
+       MX6Q_PAD_EIM_D23__GPIO_3_23             = IOMUX_PAD(0x03C0, 0x00AC, 5, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D23__IPU1_DI1_PIN2         = IOMUX_PAD(0x03C0, 0x00AC, 6, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D23__IPU1_DI1_PIN14        = IOMUX_PAD(0x03C0, 0x00AC, 7, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_EB3__WEIM_WEIM_EB_3        = IOMUX_PAD(0x03C4, 0x00B0, 0, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_EB3__ECSPI4_RDY            = IOMUX_PAD(0x03C4, 0x00B0, 1, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_EB3__UART3_CTS             = IOMUX_PAD(0x03C4, 0x00B0, 2, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_EB3__UART3_RTS             = IOMUX_PAD(0x03C4, 0x00B0, 2, 0x092C, 1, 0),
+       MX6Q_PAD_EIM_EB3__UART1_RI              = IOMUX_PAD(0x03C4, 0x00B0, 3, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_EB3__IPU2_CSI1_HSYNC       = IOMUX_PAD(0x03C4, 0x00B0, 4, 0x08DC, 0, 0),
+       MX6Q_PAD_EIM_EB3__GPIO_2_31             = IOMUX_PAD(0x03C4, 0x00B0, 5, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_EB3__IPU1_DI1_PIN3         = IOMUX_PAD(0x03C4, 0x00B0, 6, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_EB3__SRC_BT_CFG_31         = IOMUX_PAD(0x03C4, 0x00B0, 7, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D24__WEIM_WEIM_D_24        = IOMUX_PAD(0x03C8, 0x00B4, 0, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D24__ECSPI4_SS2            = IOMUX_PAD(0x03C8, 0x00B4, 1, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D24__UART3_TXD             = IOMUX_PAD(0x03C8, 0x00B4, 2, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D24__UART3_RXD             = IOMUX_PAD(0x03C8, 0x00B4, 2, 0x0930, 0, 0),
+       MX6Q_PAD_EIM_D24__ECSPI1_SS2            = IOMUX_PAD(0x03C8, 0x00B4, 3, 0x0808, 0, 0),
+       MX6Q_PAD_EIM_D24__ECSPI2_SS2            = IOMUX_PAD(0x03C8, 0x00B4, 4, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D24__GPIO_3_24             = IOMUX_PAD(0x03C8, 0x00B4, 5, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D24__AUDMUX_AUD5_RXFS      = IOMUX_PAD(0x03C8, 0x00B4, 6, 0x07D8, 0, 0),
+       MX6Q_PAD_EIM_D24__UART1_DTR             = IOMUX_PAD(0x03C8, 0x00B4, 7, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D25__WEIM_WEIM_D_25        = IOMUX_PAD(0x03CC, 0x00B8, 0, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D25__ECSPI4_SS3            = IOMUX_PAD(0x03CC, 0x00B8, 1, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D25__UART3_TXD             = IOMUX_PAD(0x03CC, 0x00B8, 2, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D25__UART3_RXD             = IOMUX_PAD(0x03CC, 0x00B8, 2, 0x0930, 1, 0),
+       MX6Q_PAD_EIM_D25__ECSPI1_SS3            = IOMUX_PAD(0x03CC, 0x00B8, 3, 0x080C, 0, 0),
+       MX6Q_PAD_EIM_D25__ECSPI2_SS3            = IOMUX_PAD(0x03CC, 0x00B8, 4, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D25__GPIO_3_25             = IOMUX_PAD(0x03CC, 0x00B8, 5, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D25__AUDMUX_AUD5_RXC       = IOMUX_PAD(0x03CC, 0x00B8, 6, 0x07D4, 0, 0),
+       MX6Q_PAD_EIM_D25__UART1_DSR             = IOMUX_PAD(0x03CC, 0x00B8, 7, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D26__WEIM_WEIM_D_26        = IOMUX_PAD(0x03D0, 0x00BC, 0, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D26__IPU1_DI1_PIN11        = IOMUX_PAD(0x03D0, 0x00BC, 1, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D26__IPU1_CSI0_D_1         = IOMUX_PAD(0x03D0, 0x00BC, 2, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D26__IPU2_CSI1_D_14        = IOMUX_PAD(0x03D0, 0x00BC, 3, 0x08C0, 0, 0),
+       MX6Q_PAD_EIM_D26__UART2_TXD             = IOMUX_PAD(0x03D0, 0x00BC, 4, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D26__UART2_RXD             = IOMUX_PAD(0x03D0, 0x00BC, 4, 0x0928, 0, 0),
+       MX6Q_PAD_EIM_D26__GPIO_3_26             = IOMUX_PAD(0x03D0, 0x00BC, 5, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D26__IPU1_SISG_2           = IOMUX_PAD(0x03D0, 0x00BC, 6, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D26__IPU1_DISP1_DAT_22     = IOMUX_PAD(0x03D0, 0x00BC, 7, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D27__WEIM_WEIM_D_27        = IOMUX_PAD(0x03D4, 0x00C0, 0, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D27__IPU1_DI1_PIN13        = IOMUX_PAD(0x03D4, 0x00C0, 1, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D27__IPU1_CSI0_D_0         = IOMUX_PAD(0x03D4, 0x00C0, 2, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D27__IPU2_CSI1_D_13        = IOMUX_PAD(0x03D4, 0x00C0, 3, 0x08BC, 0, 0),
+       MX6Q_PAD_EIM_D27__UART2_TXD             = IOMUX_PAD(0x03D4, 0x00C0, 4, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D27__UART2_RXD             = IOMUX_PAD(0x03D4, 0x00C0, 4, 0x0928, 1, 0),
+       MX6Q_PAD_EIM_D27__GPIO_3_27             = IOMUX_PAD(0x03D4, 0x00C0, 5, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D27__IPU1_SISG_3           = IOMUX_PAD(0x03D4, 0x00C0, 6, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D27__IPU1_DISP1_DAT_23     = IOMUX_PAD(0x03D4, 0x00C0, 7, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D28__WEIM_WEIM_D_28        = IOMUX_PAD(0x03D8, 0x00C4, 0, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D28__I2C1_SDA              = IOMUX_PAD(0x03D8, 0x00C4, 17, 0x089C, 0, 0),
+       MX6Q_PAD_EIM_D28__ECSPI4_MOSI           = IOMUX_PAD(0x03D8, 0x00C4, 2, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D28__IPU2_CSI1_D_12        = IOMUX_PAD(0x03D8, 0x00C4, 3, 0x08B8, 0, 0),
+       MX6Q_PAD_EIM_D28__UART2_CTS             = IOMUX_PAD(0x03D8, 0x00C4, 4, 0x0924, 0, 0),
+       MX6Q_PAD_EIM_D28__GPIO_3_28             = IOMUX_PAD(0x03D8, 0x00C4, 5, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D28__IPU1_EXT_TRIG         = IOMUX_PAD(0x03D8, 0x00C4, 6, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D28__IPU1_DI0_PIN13        = IOMUX_PAD(0x03D8, 0x00C4, 7, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D29__WEIM_WEIM_D_29        = IOMUX_PAD(0x03DC, 0x00C8, 0, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D29__IPU1_DI1_PIN15        = IOMUX_PAD(0x03DC, 0x00C8, 1, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D29__ECSPI4_SS0            = IOMUX_PAD(0x03DC, 0x00C8, 2, 0x0824, 1, 0),
+       MX6Q_PAD_EIM_D29__UART2_CTS             = IOMUX_PAD(0x03DC, 0x00C8, 4, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D29__UART2_RTS             = IOMUX_PAD(0x03DC, 0x00C8, 4, 0x0924, 1, 0),
+       MX6Q_PAD_EIM_D29__GPIO_3_29             = IOMUX_PAD(0x03DC, 0x00C8, 5, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D29__IPU2_CSI1_VSYNC       = IOMUX_PAD(0x03DC, 0x00C8, 6, 0x08E4, 0, 0),
+       MX6Q_PAD_EIM_D29__IPU1_DI0_PIN14        = IOMUX_PAD(0x03DC, 0x00C8, 7, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D30__WEIM_WEIM_D_30        = IOMUX_PAD(0x03E0, 0x00CC, 0, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D30__IPU1_DISP1_DAT_21     = IOMUX_PAD(0x03E0, 0x00CC, 1, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D30__IPU1_DI0_PIN11        = IOMUX_PAD(0x03E0, 0x00CC, 2, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D30__IPU1_CSI0_D_3         = IOMUX_PAD(0x03E0, 0x00CC, 3, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D30__UART3_CTS             = IOMUX_PAD(0x03E0, 0x00CC, 4, 0x092C, 2, 0),
+       MX6Q_PAD_EIM_D30__GPIO_3_30             = IOMUX_PAD(0x03E0, 0x00CC, 5, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D30__USBOH3_USBH1_OC       = IOMUX_PAD(0x03E0, 0x00CC, 6, 0x0948, 0, 0),
+       MX6Q_PAD_EIM_D30__PL301MX6QPER1_HPROT_0 = IOMUX_PAD(0x03E0, 0x00CC, 7, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D31__WEIM_WEIM_D_31        = IOMUX_PAD(0x03E4, 0x00D0, 0, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D31__IPU1_DISP1_DAT_20     = IOMUX_PAD(0x03E4, 0x00D0, 1, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D31__IPU1_DI0_PIN12        = IOMUX_PAD(0x03E4, 0x00D0, 2, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D31__IPU1_CSI0_D_2         = IOMUX_PAD(0x03E4, 0x00D0, 3, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D31__UART3_CTS             = IOMUX_PAD(0x03E4, 0x00D0, 4, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D31__UART3_RTS             = IOMUX_PAD(0x03E4, 0x00D0, 4, 0x092C, 3, 0),
+       MX6Q_PAD_EIM_D31__GPIO_3_31             = IOMUX_PAD(0x03E4, 0x00D0, 5, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D31__USBOH3_USBH1_PWR      = IOMUX_PAD(0x03E4, 0x00D0, 6, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_D31__PL301MX6QPER1_HPROT_1 = IOMUX_PAD(0x03E4, 0x00D0, 7, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_A24__WEIM_WEIM_A_24        = IOMUX_PAD(0x03E8, 0x00D4, 0, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_A24__IPU1_DISP1_DAT_19     = IOMUX_PAD(0x03E8, 0x00D4, 1, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_A24__IPU2_CSI1_D_19        = IOMUX_PAD(0x03E8, 0x00D4, 2, 0x08D4, 1, 0),
+       MX6Q_PAD_EIM_A24__IPU2_SISG_2           = IOMUX_PAD(0x03E8, 0x00D4, 3, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_A24__IPU1_SISG_2           = IOMUX_PAD(0x03E8, 0x00D4, 4, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_A24__GPIO_5_4              = IOMUX_PAD(0x03E8, 0x00D4, 5, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_A24__PL301MX6QPER1_HPROT_2 = IOMUX_PAD(0x03E8, 0x00D4, 6, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_A24__SRC_BT_CFG_24         = IOMUX_PAD(0x03E8, 0x00D4, 7, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_A23__WEIM_WEIM_A_23        = IOMUX_PAD(0x03EC, 0x00D8, 0, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_A23__IPU1_DISP1_DAT_18     = IOMUX_PAD(0x03EC, 0x00D8, 1, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_A23__IPU2_CSI1_D_18        = IOMUX_PAD(0x03EC, 0x00D8, 2, 0x08D0, 1, 0),
+       MX6Q_PAD_EIM_A23__IPU2_SISG_3           = IOMUX_PAD(0x03EC, 0x00D8, 3, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_A23__IPU1_SISG_3           = IOMUX_PAD(0x03EC, 0x00D8, 4, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_A23__GPIO_6_6              = IOMUX_PAD(0x03EC, 0x00D8, 5, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_A23__PL301MX6QPER1_HPROT_3 = IOMUX_PAD(0x03EC, 0x00D8, 6, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_A23__SRC_BT_CFG_23         = IOMUX_PAD(0x03EC, 0x00D8, 7, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_A22__WEIM_WEIM_A_22        = IOMUX_PAD(0x03F0, 0x00DC, 0, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_A22__IPU1_DISP1_DAT_17     = IOMUX_PAD(0x03F0, 0x00DC, 1, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_A22__IPU2_CSI1_D_17        = IOMUX_PAD(0x03F0, 0x00DC, 2, 0x08CC, 1, 0),
+       MX6Q_PAD_EIM_A22__GPIO_2_16             = IOMUX_PAD(0x03F0, 0x00DC, 5, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_A22__TPSMP_HDATA_0         = IOMUX_PAD(0x03F0, 0x00DC, 6, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_A22__SRC_BT_CFG_22         = IOMUX_PAD(0x03F0, 0x00DC, 7, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_A21__WEIM_WEIM_A_21        = IOMUX_PAD(0x03F4, 0x00E0, 0, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_A21__IPU1_DISP1_DAT_16     = IOMUX_PAD(0x03F4, 0x00E0, 1, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_A21__IPU2_CSI1_D_16        = IOMUX_PAD(0x03F4, 0x00E0, 2, 0x08C8, 1, 0),
+       MX6Q_PAD_EIM_A21__RESERVED_RESERVED     = IOMUX_PAD(0x03F4, 0x00E0, 3, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_A21__MIPI_CORE_DPHY_OUT_18 = IOMUX_PAD(0x03F4, 0x00E0, 4, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_A21__GPIO_2_17             = IOMUX_PAD(0x03F4, 0x00E0, 5, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_A21__TPSMP_HDATA_1         = IOMUX_PAD(0x03F4, 0x00E0, 6, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_A21__SRC_BT_CFG_21         = IOMUX_PAD(0x03F4, 0x00E0, 7, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_A20__WEIM_WEIM_A_20        = IOMUX_PAD(0x03F8, 0x00E4, 0, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_A20__IPU1_DISP1_DAT_15     = IOMUX_PAD(0x03F8, 0x00E4, 1, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_A20__IPU2_CSI1_D_15        = IOMUX_PAD(0x03F8, 0x00E4, 2, 0x08C4, 1, 0),
+       MX6Q_PAD_EIM_A20__RESERVED_RESERVED     = IOMUX_PAD(0x03F8, 0x00E4, 3, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_A20__MIPI_CORE_DPHY_OUT_19 = IOMUX_PAD(0x03F8, 0x00E4, 4, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_A20__GPIO_2_18             = IOMUX_PAD(0x03F8, 0x00E4, 5, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_A20__TPSMP_HDATA_2         = IOMUX_PAD(0x03F8, 0x00E4, 6, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_A20__SRC_BT_CFG_20         = IOMUX_PAD(0x03F8, 0x00E4, 7, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_A19__WEIM_WEIM_A_19        = IOMUX_PAD(0x03FC, 0x00E8, 0, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_A19__IPU1_DISP1_DAT_14     = IOMUX_PAD(0x03FC, 0x00E8, 1, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_A19__IPU2_CSI1_D_14        = IOMUX_PAD(0x03FC, 0x00E8, 2, 0x08C0, 1, 0),
+       MX6Q_PAD_EIM_A19__RESERVED_RESERVED     = IOMUX_PAD(0x03FC, 0x00E8, 3, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_A19__MIPI_CORE_DPHY_OUT_20 = IOMUX_PAD(0x03FC, 0x00E8, 4, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_A19__GPIO_2_19             = IOMUX_PAD(0x03FC, 0x00E8, 5, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_A19__TPSMP_HDATA_3         = IOMUX_PAD(0x03FC, 0x00E8, 6, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_A19__SRC_BT_CFG_19         = IOMUX_PAD(0x03FC, 0x00E8, 7, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_A18__WEIM_WEIM_A_18        = IOMUX_PAD(0x0400, 0x00EC, 0, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_A18__IPU1_DISP1_DAT_13     = IOMUX_PAD(0x0400, 0x00EC, 1, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_A18__IPU2_CSI1_D_13        = IOMUX_PAD(0x0400, 0x00EC, 2, 0x08BC, 1, 0),
+       MX6Q_PAD_EIM_A18__RESERVED_RESERVED     = IOMUX_PAD(0x0400, 0x00EC, 3, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_A18__MIPI_CORE_DPHY_OUT_21 = IOMUX_PAD(0x0400, 0x00EC, 4, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_A18__GPIO_2_20             = IOMUX_PAD(0x0400, 0x00EC, 5, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_A18__TPSMP_HDATA_4         = IOMUX_PAD(0x0400, 0x00EC, 6, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_A18__SRC_BT_CFG_18         = IOMUX_PAD(0x0400, 0x00EC, 7, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_A17__WEIM_WEIM_A_17        = IOMUX_PAD(0x0404, 0x00F0, 0, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_A17__IPU1_DISP1_DAT_12     = IOMUX_PAD(0x0404, 0x00F0, 1, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_A17__IPU2_CSI1_D_12        = IOMUX_PAD(0x0404, 0x00F0, 2, 0x08B8, 1, 0),
+       MX6Q_PAD_EIM_A17__RESERVED_RESERVED     = IOMUX_PAD(0x0404, 0x00F0, 3, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_A17__MIPI_CORE_DPHY_OUT_22 = IOMUX_PAD(0x0404, 0x00F0, 4, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_A17__GPIO_2_21             = IOMUX_PAD(0x0404, 0x00F0, 5, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_A17__TPSMP_HDATA_5         = IOMUX_PAD(0x0404, 0x00F0, 6, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_A17__SRC_BT_CFG_17         = IOMUX_PAD(0x0404, 0x00F0, 7, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_A16__WEIM_WEIM_A_16        = IOMUX_PAD(0x0408, 0x00F4, 0, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_A16__IPU1_DI1_DISP_CLK     = IOMUX_PAD(0x0408, 0x00F4, 1, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_A16__IPU2_CSI1_PIXCLK      = IOMUX_PAD(0x0408, 0x00F4, 2, 0x08E0, 1, 0),
+       MX6Q_PAD_EIM_A16__MIPI_CORE_DPHY_OUT_23 = IOMUX_PAD(0x0408, 0x00F4, 4, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_A16__GPIO_2_22             = IOMUX_PAD(0x0408, 0x00F4, 5, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_A16__TPSMP_HDATA_6         = IOMUX_PAD(0x0408, 0x00F4, 6, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_A16__SRC_BT_CFG_16         = IOMUX_PAD(0x0408, 0x00F4, 7, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_CS0__WEIM_WEIM_CS_0        = IOMUX_PAD(0x040C, 0x00F8, 0, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_CS0__IPU1_DI1_PIN5         = IOMUX_PAD(0x040C, 0x00F8, 1, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_CS0__ECSPI2_SCLK           = IOMUX_PAD(0x040C, 0x00F8, 2, 0x0810, 0, 0),
+       MX6Q_PAD_EIM_CS0__MIPI_CORE_DPHY_OUT_24 = IOMUX_PAD(0x040C, 0x00F8, 4, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_CS0__GPIO_2_23             = IOMUX_PAD(0x040C, 0x00F8, 5, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_CS0__TPSMP_HDATA_7         = IOMUX_PAD(0x040C, 0x00F8, 6, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_CS1__WEIM_WEIM_CS_1        = IOMUX_PAD(0x0410, 0x00FC, 0, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_CS1__IPU1_DI1_PIN6         = IOMUX_PAD(0x0410, 0x00FC, 1, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_CS1__ECSPI2_MOSI           = IOMUX_PAD(0x0410, 0x00FC, 2, 0x0818, 0, 0),
+       MX6Q_PAD_EIM_CS1__MIPI_CORE_DPHY_OUT_25 = IOMUX_PAD(0x0410, 0x00FC, 4, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_CS1__GPIO_2_24             = IOMUX_PAD(0x0410, 0x00FC, 5, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_CS1__TPSMP_HDATA_8         = IOMUX_PAD(0x0410, 0x00FC, 6, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_OE__WEIM_WEIM_OE           = IOMUX_PAD(0x0414, 0x0100, 0, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_OE__IPU1_DI1_PIN7          = IOMUX_PAD(0x0414, 0x0100, 1, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_OE__ECSPI2_MISO            = IOMUX_PAD(0x0414, 0x0100, 2, 0x0814, 0, 0),
+       MX6Q_PAD_EIM_OE__MIPI_CORE_DPHY_OUT_26  = IOMUX_PAD(0x0414, 0x0100, 4, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_OE__GPIO_2_25              = IOMUX_PAD(0x0414, 0x0100, 5, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_OE__TPSMP_HDATA_9          = IOMUX_PAD(0x0414, 0x0100, 6, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_RW__WEIM_WEIM_RW           = IOMUX_PAD(0x0418, 0x0104, 0, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_RW__IPU1_DI1_PIN8          = IOMUX_PAD(0x0418, 0x0104, 1, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_RW__ECSPI2_SS0             = IOMUX_PAD(0x0418, 0x0104, 2, 0x081C, 0, 0),
+       MX6Q_PAD_EIM_RW__MIPI_CORE_DPHY_OUT_27  = IOMUX_PAD(0x0418, 0x0104, 4, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_RW__GPIO_2_26              = IOMUX_PAD(0x0418, 0x0104, 5, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_RW__TPSMP_HDATA_10         = IOMUX_PAD(0x0418, 0x0104, 6, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_RW__SRC_BT_CFG_29          = IOMUX_PAD(0x0418, 0x0104, 7, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_LBA__WEIM_WEIM_LBA         = IOMUX_PAD(0x041C, 0x0108, 0, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_LBA__IPU1_DI1_PIN17        = IOMUX_PAD(0x041C, 0x0108, 1, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_LBA__ECSPI2_SS1            = IOMUX_PAD(0x041C, 0x0108, 2, 0x0820, 0, 0),
+       MX6Q_PAD_EIM_LBA__GPIO_2_27             = IOMUX_PAD(0x041C, 0x0108, 5, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_LBA__TPSMP_HDATA_11        = IOMUX_PAD(0x041C, 0x0108, 6, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_LBA__SRC_BT_CFG_26         = IOMUX_PAD(0x041C, 0x0108, 7, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_EB0__WEIM_WEIM_EB_0        = IOMUX_PAD(0x0420, 0x010C, 0, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_EB0__IPU1_DISP1_DAT_11     = IOMUX_PAD(0x0420, 0x010C, 1, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_EB0__IPU2_CSI1_D_11        = IOMUX_PAD(0x0420, 0x010C, 2, 0x08B4, 1, 0),
+       MX6Q_PAD_EIM_EB0__MIPI_CORE_DPHY_OUT_0  = IOMUX_PAD(0x0420, 0x010C, 3, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_EB0__CCM_PMIC_RDY          = IOMUX_PAD(0x0420, 0x010C, 4, 0x07F0, 0, 0),
+       MX6Q_PAD_EIM_EB0__GPIO_2_28             = IOMUX_PAD(0x0420, 0x010C, 5, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_EB0__TPSMP_HDATA_12        = IOMUX_PAD(0x0420, 0x010C, 6, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_EB0__SRC_BT_CFG_27         = IOMUX_PAD(0x0420, 0x010C, 7, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_EB1__WEIM_WEIM_EB_1        = IOMUX_PAD(0x0424, 0x0110, 0, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_EB1__IPU1_DISP1_DAT_10     = IOMUX_PAD(0x0424, 0x0110, 1, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_EB1__IPU2_CSI1_D_10        = IOMUX_PAD(0x0424, 0x0110, 2, 0x08B0, 1, 0),
+       MX6Q_PAD_EIM_EB1__MIPI_CORE_DPHY__OUT_1 = IOMUX_PAD(0x0424, 0x0110, 3, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_EB1__GPIO_2_29             = IOMUX_PAD(0x0424, 0x0110, 5, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_EB1__TPSMP_HDATA_13        = IOMUX_PAD(0x0424, 0x0110, 6, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_EB1__SRC_BT_CFG_28         = IOMUX_PAD(0x0424, 0x0110, 7, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA0__WEIM_WEIM_DA_A_0      = IOMUX_PAD(0x0428, 0x0114, 0, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA0__IPU1_DISP1_DAT_9      = IOMUX_PAD(0x0428, 0x0114, 1, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA0__IPU2_CSI1_D_9         = IOMUX_PAD(0x0428, 0x0114, 2, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA0__MIPI_CORE_DPHY__OUT_2 = IOMUX_PAD(0x0428, 0x0114, 3, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA0__GPIO_3_0              = IOMUX_PAD(0x0428, 0x0114, 5, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA0__TPSMP_HDATA_14        = IOMUX_PAD(0x0428, 0x0114, 6, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA0__SRC_BT_CFG_0          = IOMUX_PAD(0x0428, 0x0114, 7, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA1__WEIM_WEIM_DA_A_1      = IOMUX_PAD(0x042C, 0x0118, 0, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA1__IPU1_DISP1_DAT_8      = IOMUX_PAD(0x042C, 0x0118, 1, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA1__IPU2_CSI1_D_8         = IOMUX_PAD(0x042C, 0x0118, 2, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA1__MIPI_CORE_DPHY_OUT_3  = IOMUX_PAD(0x042C, 0x0118, 3, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA1__USBPHY1_TX_LS_MODE    = IOMUX_PAD(0x042C, 0x0118, 4, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA1__GPIO_3_1              = IOMUX_PAD(0x042C, 0x0118, 5, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA1__TPSMP_HDATA_15        = IOMUX_PAD(0x042C, 0x0118, 6, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA1__SRC_BT_CFG_1          = IOMUX_PAD(0x042C, 0x0118, 7, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA2__WEIM_WEIM_DA_A_2      = IOMUX_PAD(0x0430, 0x011C, 0, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA2__IPU1_DISP1_DAT_7      = IOMUX_PAD(0x0430, 0x011C, 1, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA2__IPU2_CSI1_D_7         = IOMUX_PAD(0x0430, 0x011C, 2, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA2__MIPI_CORE_DPHY_OUT_4  = IOMUX_PAD(0x0430, 0x011C, 3, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA2__USBPHY1_TX_HS_MODE    = IOMUX_PAD(0x0430, 0x011C, 4, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA2__GPIO_3_2              = IOMUX_PAD(0x0430, 0x011C, 5, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA2__TPSMP_HDATA_16        = IOMUX_PAD(0x0430, 0x011C, 6, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA2__SRC_BT_CFG_2          = IOMUX_PAD(0x0430, 0x011C, 7, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA3__WEIM_WEIM_DA_A_3      = IOMUX_PAD(0x0434, 0x0120, 0, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA3__IPU1_DISP1_DAT_6      = IOMUX_PAD(0x0434, 0x0120, 1, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA3__IPU2_CSI1_D_6         = IOMUX_PAD(0x0434, 0x0120, 2, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA3__MIPI_CORE_DPHY_OUT_5  = IOMUX_PAD(0x0434, 0x0120, 3, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA3__USBPHY1_TX_HIZ        = IOMUX_PAD(0x0434, 0x0120, 4, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA3__GPIO_3_3              = IOMUX_PAD(0x0434, 0x0120, 5, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA3__TPSMP_HDATA_17        = IOMUX_PAD(0x0434, 0x0120, 6, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA3__SRC_BT_CFG_3          = IOMUX_PAD(0x0434, 0x0120, 7, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA4__WEIM_WEIM_DA_A_4      = IOMUX_PAD(0x0438, 0x0124, 0, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA4__IPU1_DISP1_DAT_5      = IOMUX_PAD(0x0438, 0x0124, 1, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA4__IPU2_CSI1_D_5         = IOMUX_PAD(0x0438, 0x0124, 2, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA4__MIPI_CORE_DPHY_OUT_6  = IOMUX_PAD(0x0438, 0x0124, 3, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA4__ANATOP_USBPHY1_TX_EN  = IOMUX_PAD(0x0438, 0x0124, 4, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA4__GPIO_3_4              = IOMUX_PAD(0x0438, 0x0124, 5, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA4__TPSMP_HDATA_18        = IOMUX_PAD(0x0438, 0x0124, 6, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA4__SRC_BT_CFG_4          = IOMUX_PAD(0x0438, 0x0124, 7, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA5__WEIM_WEIM_DA_A_5      = IOMUX_PAD(0x043C, 0x0128, 0, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA5__IPU1_DISP1_DAT_4      = IOMUX_PAD(0x043C, 0x0128, 1, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA5__IPU2_CSI1_D_4         = IOMUX_PAD(0x043C, 0x0128, 2, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA5__MIPI_CORE_DPHY_OUT_7  = IOMUX_PAD(0x043C, 0x0128, 3, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA5__ANATOP_USBPHY1_TX_DP  = IOMUX_PAD(0x043C, 0x0128, 4, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA5__GPIO_3_5              = IOMUX_PAD(0x043C, 0x0128, 5, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA5__TPSMP_HDATA_19        = IOMUX_PAD(0x043C, 0x0128, 6, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA5__SRC_BT_CFG_5          = IOMUX_PAD(0x043C, 0x0128, 7, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA6__WEIM_WEIM_DA_A_6      = IOMUX_PAD(0x0440, 0x012C, 0, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA6__IPU1_DISP1_DAT_3      = IOMUX_PAD(0x0440, 0x012C, 1, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA6__IPU2_CSI1_D_3         = IOMUX_PAD(0x0440, 0x012C, 2, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA6__MIPI_CORE_DPHY_OUT_8  = IOMUX_PAD(0x0440, 0x012C, 3, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA6__ANATOP_USBPHY1_TX_DN  = IOMUX_PAD(0x0440, 0x012C, 4, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA6__GPIO_3_6              = IOMUX_PAD(0x0440, 0x012C, 5, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA6__TPSMP_HDATA_20        = IOMUX_PAD(0x0440, 0x012C, 6, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA6__SRC_BT_CFG_6          = IOMUX_PAD(0x0440, 0x012C, 7, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA7__WEIM_WEIM_DA_A_7      = IOMUX_PAD(0x0444, 0x0130, 0, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA7__IPU1_DISP1_DAT_2      = IOMUX_PAD(0x0444, 0x0130, 1, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA7__IPU2_CSI1_D_2         = IOMUX_PAD(0x0444, 0x0130, 2, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA7__MIPI_CORE_DPHY_OUT_9  = IOMUX_PAD(0x0444, 0x0130, 3, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA7__GPIO_3_7              = IOMUX_PAD(0x0444, 0x0130, 5, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA7__TPSMP_HDATA_21        = IOMUX_PAD(0x0444, 0x0130, 6, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA7__SRC_BT_CFG_7          = IOMUX_PAD(0x0444, 0x0130, 7, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA8__WEIM_WEIM_DA_A_8      = IOMUX_PAD(0x0448, 0x0134, 0, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA8__IPU1_DISP1_DAT_1      = IOMUX_PAD(0x0448, 0x0134, 1, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA8__IPU2_CSI1_D_1         = IOMUX_PAD(0x0448, 0x0134, 2, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA8__MIPI_CORE_DPHY_OUT_10 = IOMUX_PAD(0x0448, 0x0134, 3, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA8__GPIO_3_8              = IOMUX_PAD(0x0448, 0x0134, 5, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA8__TPSMP_HDATA_22        = IOMUX_PAD(0x0448, 0x0134, 6, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA8__SRC_BT_CFG_8          = IOMUX_PAD(0x0448, 0x0134, 7, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA9__WEIM_WEIM_DA_A_9      = IOMUX_PAD(0x044C, 0x0138, 0, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA9__IPU1_DISP1_DAT_0      = IOMUX_PAD(0x044C, 0x0138, 1, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA9__IPU2_CSI1_D_0         = IOMUX_PAD(0x044C, 0x0138, 2, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA9__MIPI_CORE_DPHY_OUT_11 = IOMUX_PAD(0x044C, 0x0138, 3, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA9__GPIO_3_9              = IOMUX_PAD(0x044C, 0x0138, 5, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA9__TPSMP_HDATA_23        = IOMUX_PAD(0x044C, 0x0138, 6, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA9__SRC_BT_CFG_9          = IOMUX_PAD(0x044C, 0x0138, 7, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA10__WEIM_WEIM_DA_A_10    = IOMUX_PAD(0x0450, 0x013C, 0, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA10__IPU1_DI1_PIN15       = IOMUX_PAD(0x0450, 0x013C, 1, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA10__IPU2_CSI1_DATA_EN    = IOMUX_PAD(0x0450, 0x013C, 2, 0x08D8, 1, 0),
+       MX6Q_PAD_EIM_DA10__MIPI_CORE_DPHY_OUT12 = IOMUX_PAD(0x0450, 0x013C, 3, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA10__GPIO_3_10            = IOMUX_PAD(0x0450, 0x013C, 5, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA10__TPSMP_HDATA_24       = IOMUX_PAD(0x0450, 0x013C, 6, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA10__SRC_BT_CFG_10        = IOMUX_PAD(0x0450, 0x013C, 7, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA11__WEIM_WEIM_DA_A_11    = IOMUX_PAD(0x0454, 0x0140, 0, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA11__IPU1_DI1_PIN2        = IOMUX_PAD(0x0454, 0x0140, 1, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA11__IPU2_CSI1_HSYNC      = IOMUX_PAD(0x0454, 0x0140, 2, 0x08DC, 1, 0),
+       MX6Q_PAD_EIM_DA11__MIPI_CORE_DPHY_OUT13 = IOMUX_PAD(0x0454, 0x0140, 3, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA11__SDMA_DBG_EVT_CHN_6   = IOMUX_PAD(0x0454, 0x0140, 4, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA11__GPIO_3_11            = IOMUX_PAD(0x0454, 0x0140, 5, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA11__TPSMP_HDATA_25       = IOMUX_PAD(0x0454, 0x0140, 6, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA11__SRC_BT_CFG_11        = IOMUX_PAD(0x0454, 0x0140, 7, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA12__WEIM_WEIM_DA_A_12    = IOMUX_PAD(0x0458, 0x0144, 0, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA12__IPU1_DI1_PIN3        = IOMUX_PAD(0x0458, 0x0144, 1, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA12__IPU2_CSI1_VSYNC      = IOMUX_PAD(0x0458, 0x0144, 2, 0x08E4, 1, 0),
+       MX6Q_PAD_EIM_DA12__MIPI_CORE_DPHY_OUT14 = IOMUX_PAD(0x0458, 0x0144, 3, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA12__SDMA_DEBUG_EVT_CHN_3 = IOMUX_PAD(0x0458, 0x0144, 4, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA12__GPIO_3_12            = IOMUX_PAD(0x0458, 0x0144, 5, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA12__TPSMP_HDATA_26       = IOMUX_PAD(0x0458, 0x0144, 6, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA12__SRC_BT_CFG_12        = IOMUX_PAD(0x0458, 0x0144, 7, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA13__WEIM_WEIM_DA_A_13    = IOMUX_PAD(0x045C, 0x0148, 0, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA13__IPU1_DI1_D0_CS       = IOMUX_PAD(0x045C, 0x0148, 1, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA13__CCM_DI1_EXT_CLK      = IOMUX_PAD(0x045C, 0x0148, 2, 0x07EC, 1, 0),
+       MX6Q_PAD_EIM_DA13__MIPI_CORE_DPHY_OUT15 = IOMUX_PAD(0x045C, 0x0148, 3, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA13__SDMA_DEBUG_EVT_CHN_4 = IOMUX_PAD(0x045C, 0x0148, 4, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA13__GPIO_3_13            = IOMUX_PAD(0x045C, 0x0148, 5, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA13__TPSMP_HDATA_27       = IOMUX_PAD(0x045C, 0x0148, 6, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA13__SRC_BT_CFG_13        = IOMUX_PAD(0x045C, 0x0148, 7, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA14__WEIM_WEIM_DA_A_14    = IOMUX_PAD(0x0460, 0x014C, 0, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA14__IPU1_DI1_D1_CS       = IOMUX_PAD(0x0460, 0x014C, 1, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA14__CCM_DI0_EXT_CLK      = IOMUX_PAD(0x0460, 0x014C, 2, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA14__MIPI_CORE_DPHY_OUT16 = IOMUX_PAD(0x0460, 0x014C, 3, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA14__SDMA_DEBUG_EVT_CHN_5 = IOMUX_PAD(0x0460, 0x014C, 4, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA14__GPIO_3_14            = IOMUX_PAD(0x0460, 0x014C, 5, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA14__TPSMP_HDATA_28       = IOMUX_PAD(0x0460, 0x014C, 6, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA14__SRC_BT_CFG_14        = IOMUX_PAD(0x0460, 0x014C, 7, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA15__WEIM_WEIM_DA_A_15    = IOMUX_PAD(0x0464, 0x0150, 0, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA15__IPU1_DI1_PIN1        = IOMUX_PAD(0x0464, 0x0150, 1, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA15__IPU1_DI1_PIN4        = IOMUX_PAD(0x0464, 0x0150, 2, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA15__MIPI_CORE_DPHY_OUT17 = IOMUX_PAD(0x0464, 0x0150, 3, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA15__GPIO_3_15            = IOMUX_PAD(0x0464, 0x0150, 5, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA15__TPSMP_HDATA_29       = IOMUX_PAD(0x0464, 0x0150, 6, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_DA15__SRC_BT_CFG_15        = IOMUX_PAD(0x0464, 0x0150, 7, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_WAIT__WEIM_WEIM_WAIT       = IOMUX_PAD(0x0468, 0x0154, 0, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_WAIT__WEIM_WEIM_DTACK_B    = IOMUX_PAD(0x0468, 0x0154, 1, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_WAIT__GPIO_5_0             = IOMUX_PAD(0x0468, 0x0154, 5, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_WAIT__TPSMP_HDATA_30       = IOMUX_PAD(0x0468, 0x0154, 6, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_WAIT__SRC_BT_CFG_25        = IOMUX_PAD(0x0468, 0x0154, 7, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_BCLK__WEIM_WEIM_BCLK       = IOMUX_PAD(0x046C, 0x0158, 0, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_BCLK__IPU1_DI1_PIN16       = IOMUX_PAD(0x046C, 0x0158, 1, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_BCLK__GPIO_6_31            = IOMUX_PAD(0x046C, 0x0158, 5, 0x0000, 0, 0),
+       MX6Q_PAD_EIM_BCLK__TPSMP_HDATA_31       = IOMUX_PAD(0x046C, 0x0158, 6, 0x0000, 0, 0),
+       MX6Q_PAD_DI0_DISP_CLK__IPU1_DI0_DSP_CLK = IOMUX_PAD(0x0470, 0x015C, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DI0_DISP_CLK__IPU2_DI0_DSP_CLK = IOMUX_PAD(0x0470, 0x015C, 1, 0x0000, 0, 0),
+       MX6Q_PAD_DI0_DISP_CLK__MIPI_CR_DPY_OT28 = IOMUX_PAD(0x0470, 0x015C, 3, 0x0000, 0, 0),
+       MX6Q_PAD_DI0_DISP_CLK__SDMA_DBG_CR_STA0 = IOMUX_PAD(0x0470, 0x015C, 4, 0x0000, 0, 0),
+       MX6Q_PAD_DI0_DISP_CLK__GPIO_4_16        = IOMUX_PAD(0x0470, 0x015C, 5, 0x0000, 0, 0),
+       MX6Q_PAD_DI0_DISP_CLK__MMDC_DEBUG_0     = IOMUX_PAD(0x0470, 0x015C, 6, 0x0000, 0, 0),
+       MX6Q_PAD_DI0_PIN15__IPU1_DI0_PIN15      = IOMUX_PAD(0x0474, 0x0160, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DI0_PIN15__IPU2_DI0_PIN15      = IOMUX_PAD(0x0474, 0x0160, 1, 0x0000, 0, 0),
+       MX6Q_PAD_DI0_PIN15__AUDMUX_AUD6_TXC     = IOMUX_PAD(0x0474, 0x0160, 2, 0x0000, 0, 0),
+       MX6Q_PAD_DI0_PIN15__MIPI_CR_DPHY_OUT_29 = IOMUX_PAD(0x0474, 0x0160, 3, 0x0000, 0, 0),
+       MX6Q_PAD_DI0_PIN15__SDMA_DBG_CORE_STA_1 = IOMUX_PAD(0x0474, 0x0160, 4, 0x0000, 0, 0),
+       MX6Q_PAD_DI0_PIN15__GPIO_4_17           = IOMUX_PAD(0x0474, 0x0160, 5, 0x0000, 0, 0),
+       MX6Q_PAD_DI0_PIN15__MMDC_MMDC_DEBUG_1   = IOMUX_PAD(0x0474, 0x0160, 6, 0x0000, 0, 0),
+       MX6Q_PAD_DI0_PIN2__IPU1_DI0_PIN2        = IOMUX_PAD(0x0478, 0x0164, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DI0_PIN2__IPU2_DI0_PIN2        = IOMUX_PAD(0x0478, 0x0164, 1, 0x0000, 0, 0),
+       MX6Q_PAD_DI0_PIN2__AUDMUX_AUD6_TXD      = IOMUX_PAD(0x0478, 0x0164, 2, 0x0000, 0, 0),
+       MX6Q_PAD_DI0_PIN2__MIPI_CR_DPHY_OUT_30  = IOMUX_PAD(0x0478, 0x0164, 3, 0x0000, 0, 0),
+       MX6Q_PAD_DI0_PIN2__SDMA_DBG_CORE_STA_2  = IOMUX_PAD(0x0478, 0x0164, 4, 0x0000, 0, 0),
+       MX6Q_PAD_DI0_PIN2__GPIO_4_18            = IOMUX_PAD(0x0478, 0x0164, 5, 0x0000, 0, 0),
+       MX6Q_PAD_DI0_PIN2__MMDC_DEBUG_2         = IOMUX_PAD(0x0478, 0x0164, 6, 0x0000, 0, 0),
+       MX6Q_PAD_DI0_PIN2__PL301_PER1_HADDR_9   = IOMUX_PAD(0x0478, 0x0164, 7, 0x0000, 0, 0),
+       MX6Q_PAD_DI0_PIN3__IPU1_DI0_PIN3        = IOMUX_PAD(0x047C, 0x0168, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DI0_PIN3__IPU2_DI0_PIN3        = IOMUX_PAD(0x047C, 0x0168, 1, 0x0000, 0, 0),
+       MX6Q_PAD_DI0_PIN3__AUDMUX_AUD6_TXFS     = IOMUX_PAD(0x047C, 0x0168, 2, 0x0000, 0, 0),
+       MX6Q_PAD_DI0_PIN3__MIPI_CORE_DPHY_OUT31 = IOMUX_PAD(0x047C, 0x0168, 3, 0x0000, 0, 0),
+       MX6Q_PAD_DI0_PIN3__SDMA_DBG_CORE_STA_3  = IOMUX_PAD(0x047C, 0x0168, 4, 0x0000, 0, 0),
+       MX6Q_PAD_DI0_PIN3__GPIO_4_19            = IOMUX_PAD(0x047C, 0x0168, 5, 0x0000, 0, 0),
+       MX6Q_PAD_DI0_PIN3__MMDC_MMDC_DEBUG_3    = IOMUX_PAD(0x047C, 0x0168, 6, 0x0000, 0, 0),
+       MX6Q_PAD_DI0_PIN3__PL301_PER1_HADDR_10  = IOMUX_PAD(0x047C, 0x0168, 7, 0x0000, 0, 0),
+       MX6Q_PAD_DI0_PIN4__IPU1_DI0_PIN4        = IOMUX_PAD(0x0480, 0x016C, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DI0_PIN4__IPU2_DI0_PIN4        = IOMUX_PAD(0x0480, 0x016C, 1, 0x0000, 0, 0),
+       MX6Q_PAD_DI0_PIN4__AUDMUX_AUD6_RXD      = IOMUX_PAD(0x0480, 0x016C, 2, 0x0000, 0, 0),
+       MX6Q_PAD_DI0_PIN4__USDHC1_WP            = IOMUX_PAD(0x0480, 0x016C, 3, 0x094C, 0, 0),
+       MX6Q_PAD_DI0_PIN4__SDMA_DEBUG_YIELD     = IOMUX_PAD(0x0480, 0x016C, 4, 0x0000, 0, 0),
+       MX6Q_PAD_DI0_PIN4__GPIO_4_20            = IOMUX_PAD(0x0480, 0x016C, 5, 0x0000, 0, 0),
+       MX6Q_PAD_DI0_PIN4__MMDC_MMDC_DEBUG_4    = IOMUX_PAD(0x0480, 0x016C, 6, 0x0000, 0, 0),
+       MX6Q_PAD_DI0_PIN4__PL301_PER1_HADDR_11  = IOMUX_PAD(0x0480, 0x016C, 7, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT0__IPU1_DISP0_DAT_0   = IOMUX_PAD(0x0484, 0x0170, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT0__IPU2_DISP0_DAT_0   = IOMUX_PAD(0x0484, 0x0170, 1, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT0__ECSPI3_SCLK        = IOMUX_PAD(0x0484, 0x0170, 2, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT0__USDHC1_USDHC_DBG_0 = IOMUX_PAD(0x0484, 0x0170, 3, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT0__SDMA_DBG_CORE_RUN  = IOMUX_PAD(0x0484, 0x0170, 4, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT0__GPIO_4_21          = IOMUX_PAD(0x0484, 0x0170, 5, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT0__MMDC_MMDC_DEBUG_5  = IOMUX_PAD(0x0484, 0x0170, 6, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT1__IPU1_DISP0_DAT_1   = IOMUX_PAD(0x0488, 0x0174, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT1__IPU2_DISP0_DAT_1   = IOMUX_PAD(0x0488, 0x0174, 1, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT1__ECSPI3_MOSI        = IOMUX_PAD(0x0488, 0x0174, 2, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT1__USDHC1_USDHC_DBG_1 = IOMUX_PAD(0x0488, 0x0174, 3, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT1__SDMA_DBG_EVT_CHNSL = IOMUX_PAD(0x0488, 0x0174, 4, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT1__GPIO_4_22          = IOMUX_PAD(0x0488, 0x0174, 5, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT1__MMDC_DEBUG_6       = IOMUX_PAD(0x0488, 0x0174, 6, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT1__PL301_PER1_HADR_12 = IOMUX_PAD(0x0488, 0x0174, 7, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT2__IPU1_DISP0_DAT_2   = IOMUX_PAD(0x048C, 0x0178, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT2__IPU2_DISP0_DAT_2   = IOMUX_PAD(0x048C, 0x0178, 1, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT2__ECSPI3_MISO        = IOMUX_PAD(0x048C, 0x0178, 2, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT2__USDHC1_USDHC_DBG_2 = IOMUX_PAD(0x048C, 0x0178, 3, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT2__SDMA_DEBUG_MODE    = IOMUX_PAD(0x048C, 0x0178, 4, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT2__GPIO_4_23          = IOMUX_PAD(0x048C, 0x0178, 5, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT2__MMDC_DEBUG_7       = IOMUX_PAD(0x048C, 0x0178, 6, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT2__PL301_PER1_HADR_13 = IOMUX_PAD(0x048C, 0x0178, 7, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT3__IPU1_DISP0_DAT_3   = IOMUX_PAD(0x0490, 0x017C, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT3__IPU2_DISP0_DAT_3   = IOMUX_PAD(0x0490, 0x017C, 1, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT3__ECSPI3_SS0         = IOMUX_PAD(0x0490, 0x017C, 2, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT3__USDHC1_USDHC_DBG_3 = IOMUX_PAD(0x0490, 0x017C, 3, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT3__SDMA_DBG_BUS_ERROR = IOMUX_PAD(0x0490, 0x017C, 4, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT3__GPIO_4_24          = IOMUX_PAD(0x0490, 0x017C, 5, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT3__MMDC_MMDC_DBG_8    = IOMUX_PAD(0x0490, 0x017C, 6, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT3__PL301_PER1_HADR_14 = IOMUX_PAD(0x0490, 0x017C, 7, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT4__IPU1_DISP0_DAT_4   = IOMUX_PAD(0x0494, 0x0180, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT4__IPU2_DISP0_DAT_4   = IOMUX_PAD(0x0494, 0x0180, 1, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT4__ECSPI3_SS1         = IOMUX_PAD(0x0494, 0x0180, 2, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT4__USDHC1_USDHC_DBG_4 = IOMUX_PAD(0x0494, 0x0180, 3, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT4__SDMA_DEBUG_BUS_RWB = IOMUX_PAD(0x0494, 0x0180, 4, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT4__GPIO_4_25          = IOMUX_PAD(0x0494, 0x0180, 5, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT4__MMDC_MMDC_DEBUG_9  = IOMUX_PAD(0x0494, 0x0180, 6, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT4__PL301_PER1_HADR_15 = IOMUX_PAD(0x0494, 0x0180, 7, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT5__IPU1_DISP0_DAT_5   = IOMUX_PAD(0x0498, 0x0184, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT5__IPU2_DISP0_DAT_5   = IOMUX_PAD(0x0498, 0x0184, 1, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT5__ECSPI3_SS2         = IOMUX_PAD(0x0498, 0x0184, 2, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT5__AUDMUX_AUD6_RXFS   = IOMUX_PAD(0x0498, 0x0184, 3, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT5__SDMA_DBG_MCH_DMBUS = IOMUX_PAD(0x0498, 0x0184, 4, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT5__GPIO_4_26          = IOMUX_PAD(0x0498, 0x0184, 5, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT5__MMDC_DEBUG_10      = IOMUX_PAD(0x0498, 0x0184, 6, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT5__PL301_PER1_HADR_16 = IOMUX_PAD(0x0498, 0x0184, 7, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT6__IPU1_DISP0_DAT_6   = IOMUX_PAD(0x049C, 0x0188, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT6__IPU2_DISP0_DAT_6   = IOMUX_PAD(0x049C, 0x0188, 1, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT6__ECSPI3_SS3         = IOMUX_PAD(0x049C, 0x0188, 2, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT6__AUDMUX_AUD6_RXC    = IOMUX_PAD(0x049C, 0x0188, 3, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT6__SDMA_DBG_RTBUF_WRT = IOMUX_PAD(0x049C, 0x0188, 4, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT6__GPIO_4_27          = IOMUX_PAD(0x049C, 0x0188, 5, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT6__MMDC_DEBUG_11      = IOMUX_PAD(0x049C, 0x0188, 6, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT6__PL301_PER1_HADR_17 = IOMUX_PAD(0x049C, 0x0188, 7, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT7__IPU1_DISP0_DAT_7   = IOMUX_PAD(0x04A0, 0x018C, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT7__IPU2_DISP0_DAT_7   = IOMUX_PAD(0x04A0, 0x018C, 1, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT7__ECSPI3_RDY         = IOMUX_PAD(0x04A0, 0x018C, 2, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT7__USDHC1_USDHC_DBG_5 = IOMUX_PAD(0x04A0, 0x018C, 3, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT7__SDMA_DBG_EVT_CHN_0 = IOMUX_PAD(0x04A0, 0x018C, 4, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT7__GPIO_4_28          = IOMUX_PAD(0x04A0, 0x018C, 5, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT7__MMDC_DEBUG_12      = IOMUX_PAD(0x04A0, 0x018C, 6, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT7__PL301_PER1_HADR_18 = IOMUX_PAD(0x04A0, 0x018C, 7, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT8__IPU1_DISP0_DAT_8   = IOMUX_PAD(0x04A4, 0x0190, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT8__IPU2_DISP0_DAT_8   = IOMUX_PAD(0x04A4, 0x0190, 1, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT8__PWM1_PWMO          = IOMUX_PAD(0x04A4, 0x0190, 2, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT8__WDOG1_WDOG_B       = IOMUX_PAD(0x04A4, 0x0190, 3, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT8__SDMA_DBG_EVT_CHN_1 = IOMUX_PAD(0x04A4, 0x0190, 4, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT8__GPIO_4_29          = IOMUX_PAD(0x04A4, 0x0190, 5, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT8__MMDC_DEBUG_13      = IOMUX_PAD(0x04A4, 0x0190, 6, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT8__PL301_PER1_HADR_19 = IOMUX_PAD(0x04A4, 0x0190, 7, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT9__IPU1_DISP0_DAT_9   = IOMUX_PAD(0x04A8, 0x0194, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT9__IPU2_DISP0_DAT_9   = IOMUX_PAD(0x04A8, 0x0194, 1, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT9__PWM2_PWMO          = IOMUX_PAD(0x04A8, 0x0194, 2, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT9__WDOG2_WDOG_B       = IOMUX_PAD(0x04A8, 0x0194, 3, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT9__SDMA_DBG_EVT_CHN_2 = IOMUX_PAD(0x04A8, 0x0194, 4, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT9__GPIO_4_30          = IOMUX_PAD(0x04A8, 0x0194, 5, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT9__MMDC_DEBUG_14      = IOMUX_PAD(0x04A8, 0x0194, 6, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT9__PL301_PER1_HADR_20 = IOMUX_PAD(0x04A8, 0x0194, 7, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT10__IPU1_DISP0_DAT_10 = IOMUX_PAD(0x04AC, 0x0198, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT10__IPU2_DISP0_DAT_10 = IOMUX_PAD(0x04AC, 0x0198, 1, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT10__USDHC1_DBG_6      = IOMUX_PAD(0x04AC, 0x0198, 3, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT10__SDMA_DBG_EVT_CHN3 = IOMUX_PAD(0x04AC, 0x0198, 4, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT10__GPIO_4_31         = IOMUX_PAD(0x04AC, 0x0198, 5, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT10__MMDC_DEBUG_15     = IOMUX_PAD(0x04AC, 0x0198, 6, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT10__PL301_PER1_HADR21 = IOMUX_PAD(0x04AC, 0x0198, 7, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT11__IPU1_DISP0_DAT_11 = IOMUX_PAD(0x04B0, 0x019C, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT11__IPU2_DISP0_DAT_11 = IOMUX_PAD(0x04B0, 0x019C, 1, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT11__USDHC1_USDHC_DBG7 = IOMUX_PAD(0x04B0, 0x019C, 3, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT11__SDMA_DBG_EVT_CHN4 = IOMUX_PAD(0x04B0, 0x019C, 4, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT11__GPIO_5_5          = IOMUX_PAD(0x04B0, 0x019C, 5, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT11__MMDC_DEBUG_16     = IOMUX_PAD(0x04B0, 0x019C, 6, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT11__PL301_PER1_HADR22 = IOMUX_PAD(0x04B0, 0x019C, 7, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT12__IPU1_DISP0_DAT_12 = IOMUX_PAD(0x04B4, 0x01A0, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT12__IPU2_DISP0_DAT_12 = IOMUX_PAD(0x04B4, 0x01A0, 1, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT12__RESERVED_RESERVED = IOMUX_PAD(0x04B4, 0x01A0, 3, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT12__SDMA_DBG_EVT_CHN5 = IOMUX_PAD(0x04B4, 0x01A0, 4, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT12__GPIO_5_6          = IOMUX_PAD(0x04B4, 0x01A0, 5, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT12__MMDC_DEBUG_17     = IOMUX_PAD(0x04B4, 0x01A0, 6, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT12__PL301_PER1_HADR23 = IOMUX_PAD(0x04B4, 0x01A0, 7, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT13__IPU1_DISP0_DAT_13 = IOMUX_PAD(0x04B8, 0x01A4, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT13__IPU2_DISP0_DAT_13 = IOMUX_PAD(0x04B8, 0x01A4, 1, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT13__AUDMUX_AUD5_RXFS  = IOMUX_PAD(0x04B8, 0x01A4, 3, 0x07D8, 1, 0),
+       MX6Q_PAD_DISP0_DAT13__SDMA_DBG_EVT_CHN0 = IOMUX_PAD(0x04B8, 0x01A4, 4, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT13__GPIO_5_7          = IOMUX_PAD(0x04B8, 0x01A4, 5, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT13__MMDC_DEBUG_18     = IOMUX_PAD(0x04B8, 0x01A4, 6, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT13__PL301_PER1_HADR24 = IOMUX_PAD(0x04B8, 0x01A4, 7, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT14__IPU1_DISP0_DAT_14 = IOMUX_PAD(0x04BC, 0x01A8, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT14__IPU2_DISP0_DAT_14 = IOMUX_PAD(0x04BC, 0x01A8, 1, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT14__AUDMUX_AUD5_RXC   = IOMUX_PAD(0x04BC, 0x01A8, 3, 0x07D4, 1, 0),
+       MX6Q_PAD_DISP0_DAT14__SDMA_DBG_EVT_CHN1 = IOMUX_PAD(0x04BC, 0x01A8, 4, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT14__GPIO_5_8          = IOMUX_PAD(0x04BC, 0x01A8, 5, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT14__MMDC_DEBUG_19     = IOMUX_PAD(0x04BC, 0x01A8, 6, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT15__IPU1_DISP0_DAT_15 = IOMUX_PAD(0x04C0, 0x01AC, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT15__IPU2_DISP0_DAT_15 = IOMUX_PAD(0x04C0, 0x01AC, 1, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT15__ECSPI1_SS1        = IOMUX_PAD(0x04C0, 0x01AC, 2, 0x0804, 1, 0),
+       MX6Q_PAD_DISP0_DAT15__ECSPI2_SS1        = IOMUX_PAD(0x04C0, 0x01AC, 3, 0x0820, 1, 0),
+       MX6Q_PAD_DISP0_DAT15__SDMA_DBG_EVT_CHN2 = IOMUX_PAD(0x04C0, 0x01AC, 4, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT15__GPIO_5_9          = IOMUX_PAD(0x04C0, 0x01AC, 5, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT15__MMDC_DEBUG_20     = IOMUX_PAD(0x04C0, 0x01AC, 6, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT15__PL301_PER1_HADR25 = IOMUX_PAD(0x04C0, 0x01AC, 7, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT16__IPU1_DISP0_DAT_16 = IOMUX_PAD(0x04C4, 0x01B0, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT16__IPU2_DISP0_DAT_16 = IOMUX_PAD(0x04C4, 0x01B0, 1, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT16__ECSPI2_MOSI       = IOMUX_PAD(0x04C4, 0x01B0, 2, 0x0818, 1, 0),
+       MX6Q_PAD_DISP0_DAT16__AUDMUX_AUD5_TXC   = IOMUX_PAD(0x04C4, 0x01B0, 3, 0x07DC, 0, 0),
+       MX6Q_PAD_DISP0_DAT16__SDMA_EXT_EVENT_0  = IOMUX_PAD(0x04C4, 0x01B0, 4, 0x090C, 0, 0),
+       MX6Q_PAD_DISP0_DAT16__GPIO_5_10         = IOMUX_PAD(0x04C4, 0x01B0, 5, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT16__MMDC_DEBUG_21     = IOMUX_PAD(0x04C4, 0x01B0, 6, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT16__PL301_PER1_HADR26 = IOMUX_PAD(0x04C4, 0x01B0, 7, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT17__IPU1_DISP0_DAT_17 = IOMUX_PAD(0x04C8, 0x01B4, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT17__IPU2_DISP0_DAT_17 = IOMUX_PAD(0x04C8, 0x01B4, 1, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT17__ECSPI2_MISO       = IOMUX_PAD(0x04C8, 0x01B4, 2, 0x0814, 1, 0),
+       MX6Q_PAD_DISP0_DAT17__AUDMUX_AUD5_TXD   = IOMUX_PAD(0x04C8, 0x01B4, 3, 0x07D0, 0, 0),
+       MX6Q_PAD_DISP0_DAT17__SDMA_EXT_EVENT_1  = IOMUX_PAD(0x04C8, 0x01B4, 4, 0x0910, 0, 0),
+       MX6Q_PAD_DISP0_DAT17__GPIO_5_11         = IOMUX_PAD(0x04C8, 0x01B4, 5, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT17__MMDC_DEBUG_22     = IOMUX_PAD(0x04C8, 0x01B4, 6, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT17__PL301_PER1_HADR27 = IOMUX_PAD(0x04C8, 0x01B4, 7, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT18__IPU1_DISP0_DAT_18 = IOMUX_PAD(0x04CC, 0x01B8, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT18__IPU2_DISP0_DAT_18 = IOMUX_PAD(0x04CC, 0x01B8, 1, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT18__ECSPI2_SS0        = IOMUX_PAD(0x04CC, 0x01B8, 2, 0x081C, 1, 0),
+       MX6Q_PAD_DISP0_DAT18__AUDMUX_AUD5_TXFS  = IOMUX_PAD(0x04CC, 0x01B8, 3, 0x07E0, 0, 0),
+       MX6Q_PAD_DISP0_DAT18__AUDMUX_AUD4_RXFS  = IOMUX_PAD(0x04CC, 0x01B8, 4, 0x07C0, 0, 0),
+       MX6Q_PAD_DISP0_DAT18__GPIO_5_12         = IOMUX_PAD(0x04CC, 0x01B8, 5, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT18__MMDC_DEBUG_23     = IOMUX_PAD(0x04CC, 0x01B8, 6, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT18__WEIM_WEIM_CS_2    = IOMUX_PAD(0x04CC, 0x01B8, 7, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT19__IPU1_DISP0_DAT_19 = IOMUX_PAD(0x04D0, 0x01BC, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT19__IPU2_DISP0_DAT_19 = IOMUX_PAD(0x04D0, 0x01BC, 1, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT19__ECSPI2_SCLK       = IOMUX_PAD(0x04D0, 0x01BC, 2, 0x0810, 1, 0),
+       MX6Q_PAD_DISP0_DAT19__AUDMUX_AUD5_RXD   = IOMUX_PAD(0x04D0, 0x01BC, 3, 0x07CC, 0, 0),
+       MX6Q_PAD_DISP0_DAT19__AUDMUX_AUD4_RXC   = IOMUX_PAD(0x04D0, 0x01BC, 4, 0x07BC, 0, 0),
+       MX6Q_PAD_DISP0_DAT19__GPIO_5_13         = IOMUX_PAD(0x04D0, 0x01BC, 5, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT19__MMDC_DEBUG_24     = IOMUX_PAD(0x04D0, 0x01BC, 6, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT19__WEIM_WEIM_CS_3    = IOMUX_PAD(0x04D0, 0x01BC, 7, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT20__IPU1_DISP0_DAT_20 = IOMUX_PAD(0x04D4, 0x01C0, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT20__IPU2_DISP0_DAT_20 = IOMUX_PAD(0x04D4, 0x01C0, 1, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT20__ECSPI1_SCLK       = IOMUX_PAD(0x04D4, 0x01C0, 2, 0x07F4, 1, 0),
+       MX6Q_PAD_DISP0_DAT20__AUDMUX_AUD4_TXC   = IOMUX_PAD(0x04D4, 0x01C0, 3, 0x07C4, 0, 0),
+       MX6Q_PAD_DISP0_DAT20__SDMA_DBG_EVT_CHN7 = IOMUX_PAD(0x04D4, 0x01C0, 4, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT20__GPIO_5_14         = IOMUX_PAD(0x04D4, 0x01C0, 5, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT20__MMDC_DEBUG_25     = IOMUX_PAD(0x04D4, 0x01C0, 6, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT20__PL301_PER1_HADR28 = IOMUX_PAD(0x04D4, 0x01C0, 7, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT21__IPU1_DISP0_DAT_21 = IOMUX_PAD(0x04D8, 0x01C4, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT21__IPU2_DISP0_DAT_21 = IOMUX_PAD(0x04D8, 0x01C4, 1, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT21__ECSPI1_MOSI       = IOMUX_PAD(0x04D8, 0x01C4, 2, 0x07FC, 1, 0),
+       MX6Q_PAD_DISP0_DAT21__AUDMUX_AUD4_TXD   = IOMUX_PAD(0x04D8, 0x01C4, 3, 0x07B8, 1, 0),
+       MX6Q_PAD_DISP0_DAT21__SDMA_DBG_BUS_DEV0 = IOMUX_PAD(0x04D8, 0x01C4, 4, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT21__GPIO_5_15         = IOMUX_PAD(0x04D8, 0x01C4, 5, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT21__MMDC_DEBUG_26     = IOMUX_PAD(0x04D8, 0x01C4, 6, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT21__PL301_PER1_HADR29 = IOMUX_PAD(0x04D8, 0x01C4, 7, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT22__IPU1_DISP0_DAT_22 = IOMUX_PAD(0x04DC, 0x01C8, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT22__IPU2_DISP0_DAT_22 = IOMUX_PAD(0x04DC, 0x01C8, 1, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT22__ECSPI1_MISO       = IOMUX_PAD(0x04DC, 0x01C8, 2, 0x07F8, 1, 0),
+       MX6Q_PAD_DISP0_DAT22__AUDMUX_AUD4_TXFS  = IOMUX_PAD(0x04DC, 0x01C8, 3, 0x07C8, 1, 0),
+       MX6Q_PAD_DISP0_DAT22__SDMA_DBG_BUS_DEV1 = IOMUX_PAD(0x04DC, 0x01C8, 4, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT22__GPIO_5_16         = IOMUX_PAD(0x04DC, 0x01C8, 5, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT22__MMDC_DEBUG_27     = IOMUX_PAD(0x04DC, 0x01C8, 6, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT22__PL301_PER1_HADR30 = IOMUX_PAD(0x04DC, 0x01C8, 7, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT23__IPU1_DISP0_DAT_23 = IOMUX_PAD(0x04E0, 0x01CC, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT23__IPU2_DISP0_DAT_23 = IOMUX_PAD(0x04E0, 0x01CC, 1, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT23__ECSPI1_SS0        = IOMUX_PAD(0x04E0, 0x01CC, 2, 0x0800, 1, 0),
+       MX6Q_PAD_DISP0_DAT23__AUDMUX_AUD4_RXD   = IOMUX_PAD(0x04E0, 0x01CC, 3, 0x07B4, 1, 0),
+       MX6Q_PAD_DISP0_DAT23__SDMA_DBG_BUS_DEV2 = IOMUX_PAD(0x04E0, 0x01CC, 4, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT23__GPIO_5_17         = IOMUX_PAD(0x04E0, 0x01CC, 5, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT23__MMDC_DEBUG_28     = IOMUX_PAD(0x04E0, 0x01CC, 6, 0x0000, 0, 0),
+       MX6Q_PAD_DISP0_DAT23__PL301_PER1_HADR31 = IOMUX_PAD(0x04E0, 0x01CC, 7, 0x0000, 0, 0),
+       MX6Q_PAD_ENET_MDIO__RESERVED_RESERVED   = IOMUX_PAD(0x04E4, 0x01D0, 0, 0x0000, 0, 0),
+       MX6Q_PAD_ENET_MDIO__ENET_MDIO           = IOMUX_PAD(0x04E4, 0x01D0, 1, 0x0840, 0, 0),
+       MX6Q_PAD_ENET_MDIO__ESAI1_SCKR          = IOMUX_PAD(0x04E4, 0x01D0, 2, 0x086C, 0, 0),
+       MX6Q_PAD_ENET_MDIO__SDMA_DEBUG_BUS_DEV3 = IOMUX_PAD(0x04E4, 0x01D0, 3, 0x0000, 0, 0),
+       MX6Q_PAD_ENET_MDIO__ENET_1588_EVT1_OUT  = IOMUX_PAD(0x04E4, 0x01D0, 4, 0x0000, 0, 0),
+       MX6Q_PAD_ENET_MDIO__GPIO_1_22           = IOMUX_PAD(0x04E4, 0x01D0, 5, 0x0000, 0, 0),
+       MX6Q_PAD_ENET_MDIO__SPDIF_PLOCK         = IOMUX_PAD(0x04E4, 0x01D0, 6, 0x0000, 0, 0),
+       MX6Q_PAD_ENET_REF_CLK__RESERVED_RSRVED  = IOMUX_PAD(0x04E8, 0x01D4, 0, 0x0000, 0, 0),
+       MX6Q_PAD_ENET_REF_CLK__ENET_TX_CLK      = IOMUX_PAD(0x04E8, 0x01D4, 1, 0x0000, 0, 0),
+       MX6Q_PAD_ENET_REF_CLK__ESAI1_FSR        = IOMUX_PAD(0x04E8, 0x01D4, 2, 0x085C, 0, 0),
+       MX6Q_PAD_ENET_REF_CLK__SDMA_DBGBUS_DEV4 = IOMUX_PAD(0x04E8, 0x01D4, 3, 0x0000, 0, 0),
+       MX6Q_PAD_ENET_REF_CLK__GPIO_1_23        = IOMUX_PAD(0x04E8, 0x01D4, 5, 0x0000, 0, 0),
+       MX6Q_PAD_ENET_REF_CLK__SPDIF_SRCLK      = IOMUX_PAD(0x04E8, 0x01D4, 6, 0x0000, 0, 0),
+       MX6Q_PAD_ENET_REF_CLK__USBPHY1_RX_SQH   = IOMUX_PAD(0x04E8, 0x01D4, 7, 0x0000, 0, 0),
+       MX6Q_PAD_ENET_RX_ER__ENET_RX_ER         = IOMUX_PAD(0x04EC, 0x01D8, 1, 0x0000, 0, 0),
+       MX6Q_PAD_ENET_RX_ER__ESAI1_HCKR         = IOMUX_PAD(0x04EC, 0x01D8, 2, 0x0864, 0, 0),
+       MX6Q_PAD_ENET_RX_ER__SPDIF_IN1          = IOMUX_PAD(0x04EC, 0x01D8, 3, 0x0914, 1, 0),
+       MX6Q_PAD_ENET_RX_ER__ENET_1588_EVT2_OUT = IOMUX_PAD(0x04EC, 0x01D8, 4, 0x0000, 0, 0),
+       MX6Q_PAD_ENET_RX_ER__GPIO_1_24          = IOMUX_PAD(0x04EC, 0x01D8, 5, 0x0000, 0, 0),
+       MX6Q_PAD_ENET_RX_ER__PHY_TDI            = IOMUX_PAD(0x04EC, 0x01D8, 6, 0x0000, 0, 0),
+       MX6Q_PAD_ENET_RX_ER__USBPHY1_RX_HS_RXD  = IOMUX_PAD(0x04EC, 0x01D8, 7, 0x0000, 0, 0),
+       MX6Q_PAD_ENET_CRS_DV__RESERVED_RSRVED   = IOMUX_PAD(0x04F0, 0x01DC, 0, 0x0000, 0, 0),
+       MX6Q_PAD_ENET_CRS_DV__ENET_RX_EN        = IOMUX_PAD(0x04F0, 0x01DC, 1, 0x0858, 1, 0),
+       MX6Q_PAD_ENET_CRS_DV__ESAI1_SCKT        = IOMUX_PAD(0x04F0, 0x01DC, 2, 0x0870, 0, 0),
+       MX6Q_PAD_ENET_CRS_DV__SPDIF_EXTCLK      = IOMUX_PAD(0x04F0, 0x01DC, 3, 0x0918, 1, 0),
+       MX6Q_PAD_ENET_CRS_DV__GPIO_1_25         = IOMUX_PAD(0x04F0, 0x01DC, 5, 0x0000, 0, 0),
+       MX6Q_PAD_ENET_CRS_DV__PHY_TDO           = IOMUX_PAD(0x04F0, 0x01DC, 6, 0x0000, 0, 0),
+       MX6Q_PAD_ENET_CRS_DV__USBPHY1_RX_FS_RXD = IOMUX_PAD(0x04F0, 0x01DC, 7, 0x0000, 0, 0),
+       MX6Q_PAD_ENET_RXD1__MLB_MLBSIG          = IOMUX_PAD(0x04F4, 0x01E0, 0, 0x0908, 0, 0),
+       MX6Q_PAD_ENET_RXD1__ENET_RDATA_1        = IOMUX_PAD(0x04F4, 0x01E0, 1, 0x084C, 1, 0),
+       MX6Q_PAD_ENET_RXD1__ESAI1_FST           = IOMUX_PAD(0x04F4, 0x01E0, 2, 0x0860, 0, 0),
+       MX6Q_PAD_ENET_RXD1__ENET_1588_EVT3_OUT  = IOMUX_PAD(0x04F4, 0x01E0, 4, 0x0000, 0, 0),
+       MX6Q_PAD_ENET_RXD1__GPIO_1_26           = IOMUX_PAD(0x04F4, 0x01E0, 5, 0x0000, 0, 0),
+       MX6Q_PAD_ENET_RXD1__PHY_TCK             = IOMUX_PAD(0x04F4, 0x01E0, 6, 0x0000, 0, 0),
+       MX6Q_PAD_ENET_RXD1__USBPHY1_RX_DISCON   = IOMUX_PAD(0x04F4, 0x01E0, 7, 0x0000, 0, 0),
+       MX6Q_PAD_ENET_RXD0__OSC32K_32K_OUT      = IOMUX_PAD(0x04F8, 0x01E4, 0, 0x0000, 0, 0),
+       MX6Q_PAD_ENET_RXD0__ENET_RDATA_0        = IOMUX_PAD(0x04F8, 0x01E4, 1, 0x0848, 1, 0),
+       MX6Q_PAD_ENET_RXD0__ESAI1_HCKT          = IOMUX_PAD(0x04F8, 0x01E4, 2, 0x0868, 0, 0),
+       MX6Q_PAD_ENET_RXD0__SPDIF_OUT1          = IOMUX_PAD(0x04F8, 0x01E4, 3, 0x0000, 0, 0),
+       MX6Q_PAD_ENET_RXD0__GPIO_1_27           = IOMUX_PAD(0x04F8, 0x01E4, 5, 0x0000, 0, 0),
+       MX6Q_PAD_ENET_RXD0__PHY_TMS             = IOMUX_PAD(0x04F8, 0x01E4, 6, 0x0000, 0, 0),
+       MX6Q_PAD_ENET_RXD0__USBPHY1_PLL_CK20DIV = IOMUX_PAD(0x04F8, 0x01E4, 7, 0x0000, 0, 0),
+       MX6Q_PAD_ENET_TX_EN__RESERVED_RSRVED    = IOMUX_PAD(0x04FC, 0x01E8, 0, 0x0000, 0, 0),
+       MX6Q_PAD_ENET_TX_EN__ENET_TX_EN         = IOMUX_PAD(0x04FC, 0x01E8, 1, 0x0000, 0, 0),
+       MX6Q_PAD_ENET_TX_EN__ESAI1_TX3_RX2      = IOMUX_PAD(0x04FC, 0x01E8, 2, 0x0880, 0, 0),
+       MX6Q_PAD_ENET_TX_EN__GPIO_1_28          = IOMUX_PAD(0x04FC, 0x01E8, 5, 0x0000, 0, 0),
+       MX6Q_PAD_ENET_TX_EN__SATA_PHY_TDI       = IOMUX_PAD(0x04FC, 0x01E8, 6, 0x0000, 0, 0),
+       MX6Q_PAD_ENET_TX_EN__USBPHY2_RX_SQH     = IOMUX_PAD(0x04FC, 0x01E8, 7, 0x0000, 0, 0),
+       MX6Q_PAD_ENET_TXD1__MLB_MLBCLK          = IOMUX_PAD(0x0500, 0x01EC, 0, 0x0900, 0, 0),
+       MX6Q_PAD_ENET_TXD1__ENET_TDATA_1        = IOMUX_PAD(0x0500, 0x01EC, 1, 0x0000, 0, 0),
+       MX6Q_PAD_ENET_TXD1__ESAI1_TX2_RX3       = IOMUX_PAD(0x0500, 0x01EC, 2, 0x087C, 0, 0),
+       MX6Q_PAD_ENET_TXD1__ENET_1588_EVENT0_IN = IOMUX_PAD(0x0500, 0x01EC, 4, 0x0000, 0, 0),
+       MX6Q_PAD_ENET_TXD1__GPIO_1_29           = IOMUX_PAD(0x0500, 0x01EC, 5, 0x0000, 0, 0),
+       MX6Q_PAD_ENET_TXD1__SATA_PHY_TDO        = IOMUX_PAD(0x0500, 0x01EC, 6, 0x0000, 0, 0),
+       MX6Q_PAD_ENET_TXD1__USBPHY2_RX_HS_RXD   = IOMUX_PAD(0x0500, 0x01EC, 7, 0x0000, 0, 0),
+       MX6Q_PAD_ENET_TXD0__RESERVED_RSRVED     = IOMUX_PAD(0x0504, 0x01F0, 0, 0x0000, 0, 0),
+       MX6Q_PAD_ENET_TXD0__ENET_TDATA_0        = IOMUX_PAD(0x0504, 0x01F0, 1, 0x0000, 0, 0),
+       MX6Q_PAD_ENET_TXD0__ESAI1_TX4_RX1       = IOMUX_PAD(0x0504, 0x01F0, 2, 0x0884, 0, 0),
+       MX6Q_PAD_ENET_TXD0__GPIO_1_30           = IOMUX_PAD(0x0504, 0x01F0, 5, 0x0000, 0, 0),
+       MX6Q_PAD_ENET_TXD0__SATA_PHY_TCK        = IOMUX_PAD(0x0504, 0x01F0, 6, 0x0000, 0, 0),
+       MX6Q_PAD_ENET_TXD0__USBPHY2_RX_FS_RXD   = IOMUX_PAD(0x0504, 0x01F0, 7, 0x0000, 0, 0),
+       MX6Q_PAD_ENET_MDC__MLB_MLBDAT           = IOMUX_PAD(0x0508, 0x01F4, 0, 0x0904, 0, 0),
+       MX6Q_PAD_ENET_MDC__ENET_MDC             = IOMUX_PAD(0x0508, 0x01F4, 1, 0x0000, 0, 0),
+       MX6Q_PAD_ENET_MDC__ESAI1_TX5_RX0        = IOMUX_PAD(0x0508, 0x01F4, 2, 0x0888, 0, 0),
+       MX6Q_PAD_ENET_MDC__ENET_1588_EVENT1_IN  = IOMUX_PAD(0x0508, 0x01F4, 4, 0x0000, 0, 0),
+       MX6Q_PAD_ENET_MDC__GPIO_1_31            = IOMUX_PAD(0x0508, 0x01F4, 5, 0x0000, 0, 0),
+       MX6Q_PAD_ENET_MDC__SATA_PHY_TMS         = IOMUX_PAD(0x0508, 0x01F4, 6, 0x0000, 0, 0),
+       MX6Q_PAD_ENET_MDC__USBPHY2_RX_DISCON    = IOMUX_PAD(0x0508, 0x01F4, 7, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_D40__MMDC_DRAM_D_40       = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_D41__MMDC_DRAM_D_41       = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_D42__MMDC_DRAM_D_42       = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_D43__MMDC_DRAM_D_43       = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_D44__MMDC_DRAM_D_44       = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_D45__MMDC_DRAM_D_45       = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_D46__MMDC_DRAM_D_46       = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_D47__MMDC_DRAM_D_47       = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_SDQS5__MMDC_DRAM_SDQS_5   = IOMUX_PAD(0x050C, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_DQM5__MMDC_DRAM_DQM_5     = IOMUX_PAD(0x0510, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_D32__MMDC_DRAM_D_32       = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_D33__MMDC_DRAM_D_33       = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_D34__MMDC_DRAM_D_34       = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_D35__MMDC_DRAM_D_35       = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_D36__MMDC_DRAM_D_36       = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_D37__MMDC_DRAM_D_37       = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_D38__MMDC_DRAM_D_38       = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_D39__MMDC_DRAM_D_39       = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_DQM4__MMDC_DRAM_DQM_4     = IOMUX_PAD(0x0514, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_SDQS4__MMDC_DRAM_SDQS_4   = IOMUX_PAD(0x0518, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_D24__MMDC_DRAM_D_24       = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_D25__MMDC_DRAM_D_25       = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_D26__MMDC_DRAM_D_26       = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_D27__MMDC_DRAM_D_27       = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_D28__MMDC_DRAM_D_28       = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_D29__MMDC_DRAM_D_29       = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_SDQS3__MMDC_DRAM_SDQS_3   = IOMUX_PAD(0x051C, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_D30__MMDC_DRAM_D_30       = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_D31__MMDC_DRAM_D_31       = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_DQM3__MMDC_DRAM_DQM_3     = IOMUX_PAD(0x0520, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_D16__MMDC_DRAM_D_16       = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_D17__MMDC_DRAM_D_17       = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_D18__MMDC_DRAM_D_18       = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_D19__MMDC_DRAM_D_19       = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_D20__MMDC_DRAM_D_20       = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_D21__MMDC_DRAM_D_21       = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_D22__MMDC_DRAM_D_22       = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_SDQS2__MMDC_DRAM_SDQS_2   = IOMUX_PAD(0x0524, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_D23__MMDC_DRAM_D_23       = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_DQM2__MMDC_DRAM_DQM_2     = IOMUX_PAD(0x0528, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_A0__MMDC_DRAM_A_0         = IOMUX_PAD(0x052C, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_A1__MMDC_DRAM_A_1         = IOMUX_PAD(0x0530, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_A2__MMDC_DRAM_A_2         = IOMUX_PAD(0x0534, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_A3__MMDC_DRAM_A_3         = IOMUX_PAD(0x0538, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_A4__MMDC_DRAM_A_4         = IOMUX_PAD(0x053C, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_A5__MMDC_DRAM_A_5         = IOMUX_PAD(0x0540, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_A6__MMDC_DRAM_A_6         = IOMUX_PAD(0x0544, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_A7__MMDC_DRAM_A_7         = IOMUX_PAD(0x0548, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_A8__MMDC_DRAM_A_8         = IOMUX_PAD(0x054C, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_A9__MMDC_DRAM_A_9         = IOMUX_PAD(0x0550, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_A10__MMDC_DRAM_A_10       = IOMUX_PAD(0x0554, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_A11__MMDC_DRAM_A_11       = IOMUX_PAD(0x0558, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_A12__MMDC_DRAM_A_12       = IOMUX_PAD(0x055C, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_A13__MMDC_DRAM_A_13       = IOMUX_PAD(0x0560, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_A14__MMDC_DRAM_A_14       = IOMUX_PAD(0x0564, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_A15__MMDC_DRAM_A_15       = IOMUX_PAD(0x0568, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_CAS__MMDC_DRAM_CAS        = IOMUX_PAD(0x056C, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_CS0__MMDC_DRAM_CS_0       = IOMUX_PAD(0x0570, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_CS1__MMDC_DRAM_CS_1       = IOMUX_PAD(0x0574, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_RAS__MMDC_DRAM_RAS        = IOMUX_PAD(0x0578, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_RESET__MMDC_DRAM_RESET    = IOMUX_PAD(0x057C, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_SDBA0__MMDC_DRAM_SDBA_0   = IOMUX_PAD(0x0580, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_SDBA1__MMDC_DRAM_SDBA_1   = IOMUX_PAD(0x0584, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_SDCLK_0__MMDC_DRAM_SDCLK0 = IOMUX_PAD(0x0588, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_SDBA2__MMDC_DRAM_SDBA_2   = IOMUX_PAD(0x058C, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_SDCKE0__MMDC_DRAM_SDCKE_0 = IOMUX_PAD(0x0590, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_SDCLK_1__MMDC_DRAM_SDCLK1 = IOMUX_PAD(0x0594, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_SDCKE1__MMDC_DRAM_SDCKE_1 = IOMUX_PAD(0x0598, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_SDODT0__MMDC_DRAM_ODT_0   = IOMUX_PAD(0x059C, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_SDODT1__MMDC_DRAM_ODT_1   = IOMUX_PAD(0x05A0, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_SDWE__MMDC_DRAM_SDWE      = IOMUX_PAD(0x05A4, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_D0__MMDC_DRAM_D_0         = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_D1__MMDC_DRAM_D_1         = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_D2__MMDC_DRAM_D_2         = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_D3__MMDC_DRAM_D_3         = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_D4__MMDC_DRAM_D_4         = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_D5__MMDC_DRAM_D_5         = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_SDQS0__MMDC_DRAM_SDQS_0   = IOMUX_PAD(0x05A8, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_D6__MMDC_DRAM_D_6         = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_D7__MMDC_DRAM_D_7         = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_DQM0__MMDC_DRAM_DQM_0     = IOMUX_PAD(0x05AC, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_D8__MMDC_DRAM_D_8         = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_D9__MMDC_DRAM_D_9         = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_D10__MMDC_DRAM_D_10       = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_D11__MMDC_DRAM_D_11       = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_D12__MMDC_DRAM_D_12       = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_D13__MMDC_DRAM_D_13       = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_D14__MMDC_DRAM_D_14       = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_SDQS1__MMDC_DRAM_SDQS_1   = IOMUX_PAD(0x05B0, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_D15__MMDC_DRAM_D_15       = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_DQM1__MMDC_DRAM_DQM_1     = IOMUX_PAD(0x05B4, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_D48__MMDC_DRAM_D_48       = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_D49__MMDC_DRAM_D_49       = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_D50__MMDC_DRAM_D_50       = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_D51__MMDC_DRAM_D_51       = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_D52__MMDC_DRAM_D_52       = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_D53__MMDC_DRAM_D_53       = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_D54__MMDC_DRAM_D_54       = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_D55__MMDC_DRAM_D_55       = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_SDQS6__MMDC_DRAM_SDQS_6   = IOMUX_PAD(0x05B8, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_DQM6__MMDC_DRAM_DQM_6     = IOMUX_PAD(0x05BC, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_D56__MMDC_DRAM_D_56       = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_SDQS7__MMDC_DRAM_SDQS_7   = IOMUX_PAD(0x05C0, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_D57__MMDC_DRAM_D_57       = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_D58__MMDC_DRAM_D_58       = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_D59__MMDC_DRAM_D_59       = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_D60__MMDC_DRAM_D_60       = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_DQM7__MMDC_DRAM_DQM_7     = IOMUX_PAD(0x05C4, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_D61__MMDC_DRAM_D_61       = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_D62__MMDC_DRAM_D_62       = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_DRAM_D63__MMDC_DRAM_D_63       = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_KEY_COL0__ECSPI1_SCLK          = IOMUX_PAD(0x05C8, 0x01F8, 0, 0x07F4, 2, 0),
+       MX6Q_PAD_KEY_COL0__ENET_RDATA_3         = IOMUX_PAD(0x05C8, 0x01F8, 1, 0x0854, 1, 0),
+       MX6Q_PAD_KEY_COL0__AUDMUX_AUD5_TXC      = IOMUX_PAD(0x05C8, 0x01F8, 2, 0x07DC, 1, 0),
+       MX6Q_PAD_KEY_COL0__KPP_COL_0            = IOMUX_PAD(0x05C8, 0x01F8, 3, 0x0000, 0, 0),
+       MX6Q_PAD_KEY_COL0__UART4_TXD            = IOMUX_PAD(0x05C8, 0x01F8, 4, 0x0000, 0, 0),
+       MX6Q_PAD_KEY_COL0__UART4_RXD            = IOMUX_PAD(0x05C8, 0x01F8, 4, 0x0938, 0, 0),
+       MX6Q_PAD_KEY_COL0__GPIO_4_6             = IOMUX_PAD(0x05C8, 0x01F8, 5, 0x0000, 0, 0),
+       MX6Q_PAD_KEY_COL0__DCIC1_DCIC_OUT       = IOMUX_PAD(0x05C8, 0x01F8, 6, 0x0000, 0, 0),
+       MX6Q_PAD_KEY_COL0__SRC_ANY_PU_RST       = IOMUX_PAD(0x05C8, 0x01F8, 7, 0x0000, 0, 0),
+       MX6Q_PAD_KEY_ROW0__ECSPI1_MOSI          = IOMUX_PAD(0x05CC, 0x01FC, 0, 0x07FC, 2, 0),
+       MX6Q_PAD_KEY_ROW0__ENET_TDATA_3         = IOMUX_PAD(0x05CC, 0x01FC, 1, 0x0000, 0, 0),
+       MX6Q_PAD_KEY_ROW0__AUDMUX_AUD5_TXD      = IOMUX_PAD(0x05CC, 0x01FC, 2, 0x07D0, 1, 0),
+       MX6Q_PAD_KEY_ROW0__KPP_ROW_0            = IOMUX_PAD(0x05CC, 0x01FC, 3, 0x0000, 0, 0),
+       MX6Q_PAD_KEY_ROW0__UART4_TXD            = IOMUX_PAD(0x05CC, 0x01FC, 4, 0x0000, 0, 0),
+       MX6Q_PAD_KEY_ROW0__UART4_RXD            = IOMUX_PAD(0x05CC, 0x01FC, 4, 0x0938, 1, 0),
+       MX6Q_PAD_KEY_ROW0__GPIO_4_7             = IOMUX_PAD(0x05CC, 0x01FC, 5, 0x0000, 0, 0),
+       MX6Q_PAD_KEY_ROW0__DCIC2_DCIC_OUT       = IOMUX_PAD(0x05CC, 0x01FC, 6, 0x0000, 0, 0),
+       MX6Q_PAD_KEY_ROW0__PL301_PER1_HADR_0    = IOMUX_PAD(0x05CC, 0x01FC, 7, 0x0000, 0, 0),
+       MX6Q_PAD_KEY_COL1__ECSPI1_MISO          = IOMUX_PAD(0x05D0, 0x0200, 0, 0x07F8, 2, 0),
+       MX6Q_PAD_KEY_COL1__ENET_MDIO            = IOMUX_PAD(0x05D0, 0x0200, 1, 0x0840, 1, 0),
+       MX6Q_PAD_KEY_COL1__AUDMUX_AUD5_TXFS     = IOMUX_PAD(0x05D0, 0x0200, 2, 0x07E0, 1, 0),
+       MX6Q_PAD_KEY_COL1__KPP_COL_1            = IOMUX_PAD(0x05D0, 0x0200, 3, 0x0000, 0, 0),
+       MX6Q_PAD_KEY_COL1__UART5_TXD            = IOMUX_PAD(0x05D0, 0x0200, 4, 0x0000, 0, 0),
+       MX6Q_PAD_KEY_COL1__UART5_RXD            = IOMUX_PAD(0x05D0, 0x0200, 4, 0x0940, 0, 0),
+       MX6Q_PAD_KEY_COL1__GPIO_4_8             = IOMUX_PAD(0x05D0, 0x0200, 5, 0x0000, 0, 0),
+       MX6Q_PAD_KEY_COL1__USDHC1_VSELECT       = IOMUX_PAD(0x05D0, 0x0200, 6, 0x0000, 0, 0),
+       MX6Q_PAD_KEY_COL1__PL301MX_PER1_HADR_1  = IOMUX_PAD(0x05D0, 0x0200, 7, 0x0000, 0, 0),
+       MX6Q_PAD_KEY_ROW1__ECSPI1_SS0           = IOMUX_PAD(0x05D4, 0x0204, 0, 0x0800, 2, 0),
+       MX6Q_PAD_KEY_ROW1__ENET_COL             = IOMUX_PAD(0x05D4, 0x0204, 1, 0x0000, 0, 0),
+       MX6Q_PAD_KEY_ROW1__AUDMUX_AUD5_RXD      = IOMUX_PAD(0x05D4, 0x0204, 2, 0x07CC, 1, 0),
+       MX6Q_PAD_KEY_ROW1__KPP_ROW_1            = IOMUX_PAD(0x05D4, 0x0204, 3, 0x0000, 0, 0),
+       MX6Q_PAD_KEY_ROW1__UART5_TXD            = IOMUX_PAD(0x05D4, 0x0204, 4, 0x0000, 0, 0),
+       MX6Q_PAD_KEY_ROW1__UART5_RXD            = IOMUX_PAD(0x05D4, 0x0204, 4, 0x0940, 1, 0),
+       MX6Q_PAD_KEY_ROW1__GPIO_4_9             = IOMUX_PAD(0x05D4, 0x0204, 5, 0x0000, 0, 0),
+       MX6Q_PAD_KEY_ROW1__USDHC2_VSELECT       = IOMUX_PAD(0x05D4, 0x0204, 6, 0x0000, 0, 0),
+       MX6Q_PAD_KEY_ROW1__PL301_PER1_HADDR_2   = IOMUX_PAD(0x05D4, 0x0204, 7, 0x0000, 0, 0),
+       MX6Q_PAD_KEY_COL2__ECSPI1_SS1           = IOMUX_PAD(0x05D8, 0x0208, 0, 0x0804, 2, 0),
+       MX6Q_PAD_KEY_COL2__ENET_RDATA_2         = IOMUX_PAD(0x05D8, 0x0208, 1, 0x0850, 1, 0),
+       MX6Q_PAD_KEY_COL2__CAN1_TXCAN           = IOMUX_PAD(0x05D8, 0x0208, 2, 0x0000, 0, 0),
+       MX6Q_PAD_KEY_COL2__KPP_COL_2            = IOMUX_PAD(0x05D8, 0x0208, 3, 0x0000, 0, 0),
+       MX6Q_PAD_KEY_COL2__ENET_MDC             = IOMUX_PAD(0x05D8, 0x0208, 4, 0x0000, 0, 0),
+       MX6Q_PAD_KEY_COL2__GPIO_4_10            = IOMUX_PAD(0x05D8, 0x0208, 5, 0x0000, 0, 0),
+       MX6Q_PAD_KEY_COL2__USBOH3_H1_PWRCTL_WKP = IOMUX_PAD(0x05D8, 0x0208, 6, 0x0000, 0, 0),
+       MX6Q_PAD_KEY_COL2__PL301_PER1_HADDR_3   = IOMUX_PAD(0x05D8, 0x0208, 7, 0x0000, 0, 0),
+       MX6Q_PAD_KEY_ROW2__ECSPI1_SS2           = IOMUX_PAD(0x05DC, 0x020C, 0, 0x0808, 1, 0),
+       MX6Q_PAD_KEY_ROW2__ENET_TDATA_2         = IOMUX_PAD(0x05DC, 0x020C, 1, 0x0000, 0, 0),
+       MX6Q_PAD_KEY_ROW2__CAN1_RXCAN           = IOMUX_PAD(0x05DC, 0x020C, 2, 0x07E4, 0, 0),
+       MX6Q_PAD_KEY_ROW2__KPP_ROW_2            = IOMUX_PAD(0x05DC, 0x020C, 3, 0x0000, 0, 0),
+       MX6Q_PAD_KEY_ROW2__USDHC2_VSELECT       = IOMUX_PAD(0x05DC, 0x020C, 4, 0x0000, 0, 0),
+       MX6Q_PAD_KEY_ROW2__GPIO_4_11            = IOMUX_PAD(0x05DC, 0x020C, 5, 0x0000, 0, 0),
+       MX6Q_PAD_KEY_ROW2__HDMI_TX_CEC_LINE     = IOMUX_PAD(0x05DC, 0x020C, 6, 0x088C, 1, 0),
+       MX6Q_PAD_KEY_ROW2__PL301_PER1_HADR_4    = IOMUX_PAD(0x05DC, 0x020C, 7, 0x0000, 0, 0),
+       MX6Q_PAD_KEY_COL3__ECSPI1_SS3           = IOMUX_PAD(0x05E0, 0x0210, 0, 0x080C, 1, 0),
+       MX6Q_PAD_KEY_COL3__ENET_CRS             = IOMUX_PAD(0x05E0, 0x0210, 1, 0x0000, 0, 0),
+       MX6Q_PAD_KEY_COL3__HDMI_TX_DDC_SCL      = IOMUX_PAD(0x05E0, 0x0210, 2, 0x0890, 1, 0),
+       MX6Q_PAD_KEY_COL3__KPP_COL_3            = IOMUX_PAD(0x05E0, 0x0210, 3, 0x0000, 0, 0),
+       MX6Q_PAD_KEY_COL3__I2C2_SCL             = IOMUX_PAD(0x05E0, 0x0210, 20, 0x08A0, 1, 0),
+       MX6Q_PAD_KEY_COL3__GPIO_4_12            = IOMUX_PAD(0x05E0, 0x0210, 5, 0x0000, 0, 0),
+       MX6Q_PAD_KEY_COL3__SPDIF_IN1            = IOMUX_PAD(0x05E0, 0x0210, 6, 0x0914, 2, 0),
+       MX6Q_PAD_KEY_COL3__PL301_PER1_HADR_5    = IOMUX_PAD(0x05E0, 0x0210, 7, 0x0000, 0, 0),
+       MX6Q_PAD_KEY_ROW3__OSC32K_32K_OUT       = IOMUX_PAD(0x05E4, 0x0214, 0, 0x0000, 0, 0),
+       MX6Q_PAD_KEY_ROW3__ASRC_ASRC_EXT_CLK    = IOMUX_PAD(0x05E4, 0x0214, 1, 0x07B0, 0, 0),
+       MX6Q_PAD_KEY_ROW3__HDMI_TX_DDC_SDA      = IOMUX_PAD(0x05E4, 0x0214, 2, 0x0894, 1, 0),
+       MX6Q_PAD_KEY_ROW3__KPP_ROW_3            = IOMUX_PAD(0x05E4, 0x0214, 3, 0x0000, 0, 0),
+       MX6Q_PAD_KEY_ROW3__I2C2_SDA             = IOMUX_PAD(0x05E4, 0x0214, 20, 0x08A4, 1, 0),
+       MX6Q_PAD_KEY_ROW3__GPIO_4_13            = IOMUX_PAD(0x05E4, 0x0214, 5, 0x0000, 0, 0),
+       MX6Q_PAD_KEY_ROW3__USDHC1_VSELECT       = IOMUX_PAD(0x05E4, 0x0214, 6, 0x0000, 0, 0),
+       MX6Q_PAD_KEY_ROW3__PL301_PER1_HADR_6    = IOMUX_PAD(0x05E4, 0x0214, 7, 0x0000, 0, 0),
+       MX6Q_PAD_KEY_COL4__CAN2_TXCAN           = IOMUX_PAD(0x05E8, 0x0218, 0, 0x0000, 0, 0),
+       MX6Q_PAD_KEY_COL4__IPU1_SISG_4          = IOMUX_PAD(0x05E8, 0x0218, 1, 0x0000, 0, 0),
+       MX6Q_PAD_KEY_COL4__USBOH3_USBOTG_OC     = IOMUX_PAD(0x05E8, 0x0218, 2, 0x0944, 1, 0),
+       MX6Q_PAD_KEY_COL4__KPP_COL_4            = IOMUX_PAD(0x05E8, 0x0218, 3, 0x0000, 0, 0),
+       MX6Q_PAD_KEY_COL4__UART5_CTS            = IOMUX_PAD(0x05E8, 0x0218, 4, 0x0000, 0, 0),
+       MX6Q_PAD_KEY_COL4__UART5_RTS            = IOMUX_PAD(0x05E8, 0x0218, 4, 0x093C, 0, 0),
+       MX6Q_PAD_KEY_COL4__GPIO_4_14            = IOMUX_PAD(0x05E8, 0x0218, 5, 0x0000, 0, 0),
+       MX6Q_PAD_KEY_COL4__MMDC_DEBUG_49        = IOMUX_PAD(0x05E8, 0x0218, 6, 0x0000, 0, 0),
+       MX6Q_PAD_KEY_COL4__PL301_PER1_HADDR_7   = IOMUX_PAD(0x05E8, 0x0218, 7, 0x0000, 0, 0),
+       MX6Q_PAD_KEY_ROW4__CAN2_RXCAN           = IOMUX_PAD(0x05EC, 0x021C, 0, 0x07E8, 0, 0),
+       MX6Q_PAD_KEY_ROW4__IPU1_SISG_5          = IOMUX_PAD(0x05EC, 0x021C, 1, 0x0000, 0, 0),
+       MX6Q_PAD_KEY_ROW4__USBOH3_USBOTG_PWR    = IOMUX_PAD(0x05EC, 0x021C, 2, 0x0000, 0, 0),
+       MX6Q_PAD_KEY_ROW4__KPP_ROW_4            = IOMUX_PAD(0x05EC, 0x021C, 3, 0x0000, 0, 0),
+       MX6Q_PAD_KEY_ROW4__UART5_CTS            = IOMUX_PAD(0x05EC, 0x021C, 4, 0x093C, 1, 0),
+       MX6Q_PAD_KEY_ROW4__GPIO_4_15            = IOMUX_PAD(0x05EC, 0x021C, 5, 0x0000, 0, 0),
+       MX6Q_PAD_KEY_ROW4__MMDC_DEBUG_50        = IOMUX_PAD(0x05EC, 0x021C, 6, 0x0000, 0, 0),
+       MX6Q_PAD_KEY_ROW4__PL301_PER1_HADR_8    = IOMUX_PAD(0x05EC, 0x021C, 7, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_0__CCM_CLKO               = IOMUX_PAD(0x05F0, 0x0220, 0, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_0__KPP_COL_5              = IOMUX_PAD(0x05F0, 0x0220, 2, 0x08E8, 0, 0),
+       MX6Q_PAD_GPIO_0__ASRC_ASRC_EXT_CLK      = IOMUX_PAD(0x05F0, 0x0220, 3, 0x07B0, 1, 0),
+       MX6Q_PAD_GPIO_0__EPIT1_EPITO            = IOMUX_PAD(0x05F0, 0x0220, 4, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_0__GPIO_1_0               = IOMUX_PAD(0x05F0, 0x0220, 5, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_0__USBOH3_USBH1_PWR       = IOMUX_PAD(0x05F0, 0x0220, 6, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_0__SNVS_HP_WRAP_SNVS_VIO5 = IOMUX_PAD(0x05F0, 0x0220, 7, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_1__ESAI1_SCKR             = IOMUX_PAD(0x05F4, 0x0224, 0, 0x086C, 1, 0),
+       MX6Q_PAD_GPIO_1__WDOG2_WDOG_B           = IOMUX_PAD(0x05F4, 0x0224, 1, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_1__KPP_ROW_5              = IOMUX_PAD(0x05F4, 0x0224, 2, 0x08F4, 0, 0),
+       MX6Q_PAD_GPIO_1__PWM2_PWMO              = IOMUX_PAD(0x05F4, 0x0224, 4, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_1__GPIO_1_1               = IOMUX_PAD(0x05F4, 0x0224, 5, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_1__USDHC1_CD              = IOMUX_PAD(0x05F4, 0x0224, 6, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_1__SRC_TESTER_ACK         = IOMUX_PAD(0x05F4, 0x0224, 7, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_9__ESAI1_FSR              = IOMUX_PAD(0x05F8, 0x0228, 0, 0x085C, 1, 0),
+       MX6Q_PAD_GPIO_9__WDOG1_WDOG_B           = IOMUX_PAD(0x05F8, 0x0228, 1, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_9__KPP_COL_6              = IOMUX_PAD(0x05F8, 0x0228, 2, 0x08EC, 0, 0),
+       MX6Q_PAD_GPIO_9__CCM_REF_EN_B           = IOMUX_PAD(0x05F8, 0x0228, 3, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_9__PWM1_PWMO              = IOMUX_PAD(0x05F8, 0x0228, 4, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_9__GPIO_1_9               = IOMUX_PAD(0x05F8, 0x0228, 5, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_9__USDHC1_WP              = IOMUX_PAD(0x05F8, 0x0228, 6, 0x094C, 1, 0),
+       MX6Q_PAD_GPIO_9__SRC_EARLY_RST          = IOMUX_PAD(0x05F8, 0x0228, 7, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_3__ESAI1_HCKR             = IOMUX_PAD(0x05FC, 0x022C, 0, 0x0864, 1, 0),
+       MX6Q_PAD_GPIO_3__OBSERVE_MUX_INT_OUT0   = IOMUX_PAD(0x05FC, 0x022C, 1, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_3__I2C3_SCL               = IOMUX_PAD(0x05FC, 0x022C, 18, 0x08A8, 1, 0),
+       MX6Q_PAD_GPIO_3__ANATOP_24M_OUT         = IOMUX_PAD(0x05FC, 0x022C, 3, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_3__CCM_CLKO2              = IOMUX_PAD(0x05FC, 0x022C, 4, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_3__GPIO_1_3               = IOMUX_PAD(0x05FC, 0x022C, 5, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_3__USBOH3_USBH1_OC        = IOMUX_PAD(0x05FC, 0x022C, 6, 0x0948, 1, 0),
+       MX6Q_PAD_GPIO_3__MLB_MLBCLK             = IOMUX_PAD(0x05FC, 0x022C, 7, 0x0900, 1, 0),
+       MX6Q_PAD_GPIO_6__ESAI1_SCKT             = IOMUX_PAD(0x0600, 0x0230, 0, 0x0870, 1, 0),
+       MX6Q_PAD_GPIO_6__OBSERVE_MUX_INT_OUT1   = IOMUX_PAD(0x0600, 0x0230, 1, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_6__I2C3_SDA               = IOMUX_PAD(0x0600, 0x0230, 18, 0x08AC, 1, 0),
+       MX6Q_PAD_GPIO_6__CCM_CCM_OUT_0          = IOMUX_PAD(0x0600, 0x0230, 3, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_6__CSU_CSU_INT_DEB        = IOMUX_PAD(0x0600, 0x0230, 4, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_6__GPIO_1_6               = IOMUX_PAD(0x0600, 0x0230, 5, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_6__USDHC2_LCTL            = IOMUX_PAD(0x0600, 0x0230, 6, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_6__MLB_MLBSIG             = IOMUX_PAD(0x0600, 0x0230, 7, 0x0908, 1, 0),
+       MX6Q_PAD_GPIO_2__ESAI1_FST              = IOMUX_PAD(0x0604, 0x0234, 0, 0x0860, 1, 0),
+       MX6Q_PAD_GPIO_2__OBSERVE_MUX_INT_OUT2   = IOMUX_PAD(0x0604, 0x0234, 1, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_2__KPP_ROW_6              = IOMUX_PAD(0x0604, 0x0234, 2, 0x08F8, 1, 0),
+       MX6Q_PAD_GPIO_2__CCM_CCM_OUT_1          = IOMUX_PAD(0x0604, 0x0234, 3, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_2__CSU_CSU_ALARM_AUT_0    = IOMUX_PAD(0x0604, 0x0234, 4, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_2__GPIO_1_2               = IOMUX_PAD(0x0604, 0x0234, 5, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_2__USDHC2_WP              = IOMUX_PAD(0x0604, 0x0234, 6, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_2__MLB_MLBDAT             = IOMUX_PAD(0x0604, 0x0234, 7, 0x0904, 1, 0),
+       MX6Q_PAD_GPIO_4__ESAI1_HCKT             = IOMUX_PAD(0x0608, 0x0238, 0, 0x0868, 1, 0),
+       MX6Q_PAD_GPIO_4__OBSERVE_MUX_INT_OUT3   = IOMUX_PAD(0x0608, 0x0238, 1, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_4__KPP_COL_7              = IOMUX_PAD(0x0608, 0x0238, 2, 0x08F0, 1, 0),
+       MX6Q_PAD_GPIO_4__CCM_CCM_OUT_2          = IOMUX_PAD(0x0608, 0x0238, 3, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_4__CSU_CSU_ALARM_AUT_1    = IOMUX_PAD(0x0608, 0x0238, 4, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_4__GPIO_1_4               = IOMUX_PAD(0x0608, 0x0238, 5, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_4__USDHC2_CD              = IOMUX_PAD(0x0608, 0x0238, 6, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_4__OCOTP_CRL_WRAR_FUSE_LA = IOMUX_PAD(0x0608, 0x0238, 7, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_5__ESAI1_TX2_RX3          = IOMUX_PAD(0x060C, 0x023C, 0, 0x087C, 1, 0),
+       MX6Q_PAD_GPIO_5__OBSERVE_MUX_INT_OUT4   = IOMUX_PAD(0x060C, 0x023C, 1, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_5__KPP_ROW_7              = IOMUX_PAD(0x060C, 0x023C, 2, 0x08FC, 1, 0),
+       MX6Q_PAD_GPIO_5__CCM_CLKO               = IOMUX_PAD(0x060C, 0x023C, 3, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_5__CSU_CSU_ALARM_AUT_2    = IOMUX_PAD(0x060C, 0x023C, 4, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_5__GPIO_1_5               = IOMUX_PAD(0x060C, 0x023C, 5, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_5__I2C3_SCL               = IOMUX_PAD(0x060C, 0x023C, 22, 0x08A8, 2, 0),
+       MX6Q_PAD_GPIO_5__CHEETAH_EVENTI         = IOMUX_PAD(0x060C, 0x023C, 7, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_7__ESAI1_TX4_RX1          = IOMUX_PAD(0x0610, 0x0240, 0, 0x0884, 1, 0),
+       MX6Q_PAD_GPIO_7__ECSPI5_RDY             = IOMUX_PAD(0x0610, 0x0240, 1, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_7__EPIT1_EPITO            = IOMUX_PAD(0x0610, 0x0240, 2, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_7__CAN1_TXCAN             = IOMUX_PAD(0x0610, 0x0240, 3, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_7__UART2_TXD              = IOMUX_PAD(0x0610, 0x0240, 4, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_7__UART2_RXD              = IOMUX_PAD(0x0610, 0x0240, 4, 0x0928, 2, 0),
+       MX6Q_PAD_GPIO_7__GPIO_1_7               = IOMUX_PAD(0x0610, 0x0240, 5, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_7__SPDIF_PLOCK            = IOMUX_PAD(0x0610, 0x0240, 6, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_7__USBOH3_OTGUSB_HST_MODE = IOMUX_PAD(0x0610, 0x0240, 7, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_8__ESAI1_TX5_RX0          = IOMUX_PAD(0x0614, 0x0244, 0, 0x0888, 1, 0),
+       MX6Q_PAD_GPIO_8__ANATOP_ANATOP_32K_OUT  = IOMUX_PAD(0x0614, 0x0244, 1, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_8__EPIT2_EPITO            = IOMUX_PAD(0x0614, 0x0244, 2, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_8__CAN1_RXCAN             = IOMUX_PAD(0x0614, 0x0244, 3, 0x07E4, 1, 0),
+       MX6Q_PAD_GPIO_8__UART2_TXD              = IOMUX_PAD(0x0614, 0x0244, 4, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_8__UART2_RXD              = IOMUX_PAD(0x0614, 0x0244, 4, 0x0928, 3, 0),
+       MX6Q_PAD_GPIO_8__GPIO_1_8               = IOMUX_PAD(0x0614, 0x0244, 5, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_8__SPDIF_SRCLK            = IOMUX_PAD(0x0614, 0x0244, 6, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_8__USBOH3_OTG_PWRCTL_WAK  = IOMUX_PAD(0x0614, 0x0244, 7, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_16__ESAI1_TX3_RX2         = IOMUX_PAD(0x0618, 0x0248, 0, 0x0880, 1, 0),
+       MX6Q_PAD_GPIO_16__ENET_1588_EVENT2_IN   = IOMUX_PAD(0x0618, 0x0248, 1, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_16__ENET_ETHERNET_REF_OUT = IOMUX_PAD(0x0618, 0x0248, 2, 0x083C, 1, 0),
+       MX6Q_PAD_GPIO_16__USDHC1_LCTL           = IOMUX_PAD(0x0618, 0x0248, 3, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_16__SPDIF_IN1             = IOMUX_PAD(0x0618, 0x0248, 4, 0x0914, 3, 0),
+       MX6Q_PAD_GPIO_16__GPIO_7_11             = IOMUX_PAD(0x0618, 0x0248, 5, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_16__I2C3_SDA              = IOMUX_PAD(0x0618, 0x0248, 22, 0x08AC, 2, 0),
+       MX6Q_PAD_GPIO_16__SJC_DE_B              = IOMUX_PAD(0x0618, 0x0248, 7, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_17__ESAI1_TX0             = IOMUX_PAD(0x061C, 0x024C, 0, 0x0874, 0, 0),
+       MX6Q_PAD_GPIO_17__ENET_1588_EVENT3_IN   = IOMUX_PAD(0x061C, 0x024C, 1, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_17__CCM_PMIC_RDY          = IOMUX_PAD(0x061C, 0x024C, 2, 0x07F0, 1, 0),
+       MX6Q_PAD_GPIO_17__SDMA_SDMA_EXT_EVENT_0 = IOMUX_PAD(0x061C, 0x024C, 3, 0x090C, 1, 0),
+       MX6Q_PAD_GPIO_17__SPDIF_OUT1            = IOMUX_PAD(0x061C, 0x024C, 4, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_17__GPIO_7_12             = IOMUX_PAD(0x061C, 0x024C, 5, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_17__SJC_JTAG_ACT          = IOMUX_PAD(0x061C, 0x024C, 7, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_18__ESAI1_TX1             = IOMUX_PAD(0x0620, 0x0250, 0, 0x0878, 0, 0),
+       MX6Q_PAD_GPIO_18__ENET_RX_CLK           = IOMUX_PAD(0x0620, 0x0250, 1, 0x0844, 1, 0),
+       MX6Q_PAD_GPIO_18__USDHC3_VSELECT        = IOMUX_PAD(0x0620, 0x0250, 2, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_18__SDMA_SDMA_EXT_EVENT_1 = IOMUX_PAD(0x0620, 0x0250, 3, 0x0910, 1, 0),
+       MX6Q_PAD_GPIO_18__ASRC_ASRC_EXT_CLK     = IOMUX_PAD(0x0620, 0x0250, 4, 0x07B0, 2, 0),
+       MX6Q_PAD_GPIO_18__GPIO_7_13             = IOMUX_PAD(0x0620, 0x0250, 5, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_18__SNVS_HP_WRA_SNVS_VIO5 = IOMUX_PAD(0x0620, 0x0250, 6, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_18__SRC_SYSTEM_RST        = IOMUX_PAD(0x0620, 0x0250, 7, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_19__KPP_COL_5             = IOMUX_PAD(0x0624, 0x0254, 0, 0x08E8, 1, 0),
+       MX6Q_PAD_GPIO_19__ENET_1588_EVENT0_OUT  = IOMUX_PAD(0x0624, 0x0254, 1, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_19__SPDIF_OUT1            = IOMUX_PAD(0x0624, 0x0254, 2, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_19__CCM_CLKO              = IOMUX_PAD(0x0624, 0x0254, 3, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_19__ECSPI1_RDY            = IOMUX_PAD(0x0624, 0x0254, 4, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_19__GPIO_4_5              = IOMUX_PAD(0x0624, 0x0254, 5, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_19__ENET_TX_ER            = IOMUX_PAD(0x0624, 0x0254, 6, 0x0000, 0, 0),
+       MX6Q_PAD_GPIO_19__SRC_INT_BOOT          = IOMUX_PAD(0x0624, 0x0254, 7, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_PIXCLK__IPU1_CSI0_PIXCLK  = IOMUX_PAD(0x0628, 0x0258, 0, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_PIXCLK__PCIE_CTRL_MUX_12  = IOMUX_PAD(0x0628, 0x0258, 2, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_PIXCLK__SDMA_DEBUG_PC_0   = IOMUX_PAD(0x0628, 0x0258, 4, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_PIXCLK__GPIO_5_18         = IOMUX_PAD(0x0628, 0x0258, 5, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_PIXCLK___MMDC_DEBUG_29    = IOMUX_PAD(0x0628, 0x0258, 6, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_PIXCLK__CHEETAH_EVENTO    = IOMUX_PAD(0x0628, 0x0258, 7, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_MCLK__IPU1_CSI0_HSYNC     = IOMUX_PAD(0x062C, 0x025C, 0, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_MCLK__PCIE_CTRL_MUX_13    = IOMUX_PAD(0x062C, 0x025C, 2, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_MCLK__CCM_CLKO            = IOMUX_PAD(0x062C, 0x025C, 3, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_MCLK__SDMA_DEBUG_PC_1     = IOMUX_PAD(0x062C, 0x025C, 4, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_MCLK__GPIO_5_19           = IOMUX_PAD(0x062C, 0x025C, 5, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_MCLK__MMDC_MMDC_DEBUG_30  = IOMUX_PAD(0x062C, 0x025C, 6, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_MCLK__CHEETAH_TRCTL       = IOMUX_PAD(0x062C, 0x025C, 7, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DATA_EN__IPU1_CSI0_DA_EN  = IOMUX_PAD(0x0630, 0x0260, 0, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DATA_EN__WEIM_WEIM_D_0    = IOMUX_PAD(0x0630, 0x0260, 1, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DATA_EN__PCIE_CTRL_MUX_14 = IOMUX_PAD(0x0630, 0x0260, 2, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DATA_EN__SDMA_DEBUG_PC_2  = IOMUX_PAD(0x0630, 0x0260, 4, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DATA_EN__GPIO_5_20        = IOMUX_PAD(0x0630, 0x0260, 5, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DATA_EN__MMDC_DEBUG_31    = IOMUX_PAD(0x0630, 0x0260, 6, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DATA_EN__CHEETAH_TRCLK    = IOMUX_PAD(0x0630, 0x0260, 7, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_VSYNC__IPU1_CSI0_VSYNC    = IOMUX_PAD(0x0634, 0x0264, 0, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_VSYNC__WEIM_WEIM_D_1      = IOMUX_PAD(0x0634, 0x0264, 1, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_VSYNC__PCIE_CTRL_MUX_15   = IOMUX_PAD(0x0634, 0x0264, 2, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_VSYNC__SDMA_DEBUG_PC_3    = IOMUX_PAD(0x0634, 0x0264, 4, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_VSYNC__GPIO_5_21          = IOMUX_PAD(0x0634, 0x0264, 5, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_VSYNC__MMDC_DEBUG_32      = IOMUX_PAD(0x0634, 0x0264, 6, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_VSYNC__CHEETAH_TRACE_0    = IOMUX_PAD(0x0634, 0x0264, 7, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT4__IPU1_CSI0_D_4       = IOMUX_PAD(0x0638, 0x0268, 0, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT4__WEIM_WEIM_D_2       = IOMUX_PAD(0x0638, 0x0268, 1, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT4__ECSPI1_SCLK         = IOMUX_PAD(0x0638, 0x0268, 2, 0x07F4, 3, 0),
+       MX6Q_PAD_CSI0_DAT4__KPP_COL_5           = IOMUX_PAD(0x0638, 0x0268, 3, 0x08E8, 2, 0),
+       MX6Q_PAD_CSI0_DAT4__AUDMUX_AUD3_TXC     = IOMUX_PAD(0x0638, 0x0268, 4, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT4__GPIO_5_22           = IOMUX_PAD(0x0638, 0x0268, 5, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT4__MMDC_DEBUG_43       = IOMUX_PAD(0x0638, 0x0268, 6, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT4__CHEETAH_TRACE_1     = IOMUX_PAD(0x0638, 0x0268, 7, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT5__IPU1_CSI0_D_5       = IOMUX_PAD(0x063C, 0x026C, 0, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT5__WEIM_WEIM_D_3       = IOMUX_PAD(0x063C, 0x026C, 1, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT5__ECSPI1_MOSI         = IOMUX_PAD(0x063C, 0x026C, 2, 0x07FC, 3, 0),
+       MX6Q_PAD_CSI0_DAT5__KPP_ROW_5           = IOMUX_PAD(0x063C, 0x026C, 3, 0x08F4, 1, 0),
+       MX6Q_PAD_CSI0_DAT5__AUDMUX_AUD3_TXD     = IOMUX_PAD(0x063C, 0x026C, 4, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT5__GPIO_5_23           = IOMUX_PAD(0x063C, 0x026C, 5, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT5__MMDC_MMDC_DEBUG_44  = IOMUX_PAD(0x063C, 0x026C, 6, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT5__CHEETAH_TRACE_2     = IOMUX_PAD(0x063C, 0x026C, 7, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT6__IPU1_CSI0_D_6       = IOMUX_PAD(0x0640, 0x0270, 0, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT6__WEIM_WEIM_D_4       = IOMUX_PAD(0x0640, 0x0270, 1, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT6__ECSPI1_MISO         = IOMUX_PAD(0x0640, 0x0270, 2, 0x07F8, 3, 0),
+       MX6Q_PAD_CSI0_DAT6__KPP_COL_6           = IOMUX_PAD(0x0640, 0x0270, 3, 0x08EC, 1, 0),
+       MX6Q_PAD_CSI0_DAT6__AUDMUX_AUD3_TXFS    = IOMUX_PAD(0x0640, 0x0270, 4, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT6__GPIO_5_24           = IOMUX_PAD(0x0640, 0x0270, 5, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT6__MMDC_MMDC_DEBUG_45  = IOMUX_PAD(0x0640, 0x0270, 6, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT6__CHEETAH_TRACE_3     = IOMUX_PAD(0x0640, 0x0270, 7, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT7__IPU1_CSI0_D_7       = IOMUX_PAD(0x0644, 0x0274, 0, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT7__WEIM_WEIM_D_5       = IOMUX_PAD(0x0644, 0x0274, 1, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT7__ECSPI1_SS0          = IOMUX_PAD(0x0644, 0x0274, 2, 0x0800, 3, 0),
+       MX6Q_PAD_CSI0_DAT7__KPP_ROW_6           = IOMUX_PAD(0x0644, 0x0274, 3, 0x08F8, 2, 0),
+       MX6Q_PAD_CSI0_DAT7__AUDMUX_AUD3_RXD     = IOMUX_PAD(0x0644, 0x0274, 4, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT7__GPIO_5_25           = IOMUX_PAD(0x0644, 0x0274, 5, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT7__MMDC_MMDC_DEBUG_46  = IOMUX_PAD(0x0644, 0x0274, 6, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT7__CHEETAH_TRACE_4     = IOMUX_PAD(0x0644, 0x0274, 7, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT8__IPU1_CSI0_D_8       = IOMUX_PAD(0x0648, 0x0278, 0, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT8__WEIM_WEIM_D_6       = IOMUX_PAD(0x0648, 0x0278, 1, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT8__ECSPI2_SCLK         = IOMUX_PAD(0x0648, 0x0278, 2, 0x0810, 2, 0),
+       MX6Q_PAD_CSI0_DAT8__KPP_COL_7           = IOMUX_PAD(0x0648, 0x0278, 3, 0x08F0, 2, 0),
+       MX6Q_PAD_CSI0_DAT8__I2C1_SDA            = IOMUX_PAD(0x0648, 0x0278, 20, 0x089C, 1, 0),
+       MX6Q_PAD_CSI0_DAT8__GPIO_5_26           = IOMUX_PAD(0x0648, 0x0278, 5, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT8__MMDC_MMDC_DEBUG_47  = IOMUX_PAD(0x0648, 0x0278, 6, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT8__CHEETAH_TRACE_5     = IOMUX_PAD(0x0648, 0x0278, 7, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT9__IPU1_CSI0_D_9       = IOMUX_PAD(0x064C, 0x027C, 0, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT9__WEIM_WEIM_D_7       = IOMUX_PAD(0x064C, 0x027C, 1, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT9__ECSPI2_MOSI         = IOMUX_PAD(0x064C, 0x027C, 2, 0x0818, 2, 0),
+       MX6Q_PAD_CSI0_DAT9__KPP_ROW_7           = IOMUX_PAD(0x064C, 0x027C, 3, 0x08FC, 2, 0),
+       MX6Q_PAD_CSI0_DAT9__I2C1_SCL            = IOMUX_PAD(0x064C, 0x027C, 20, 0x0898, 1, 0),
+       MX6Q_PAD_CSI0_DAT9__GPIO_5_27           = IOMUX_PAD(0x064C, 0x027C, 5, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT9__MMDC_MMDC_DEBUG_48  = IOMUX_PAD(0x064C, 0x027C, 6, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT9__CHEETAH_TRACE_6     = IOMUX_PAD(0x064C, 0x027C, 7, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT10__IPU1_CSI0_D_10     = IOMUX_PAD(0x0650, 0x0280, 0, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT10__AUDMUX_AUD3_RXC    = IOMUX_PAD(0x0650, 0x0280, 1, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT10__ECSPI2_MISO        = IOMUX_PAD(0x0650, 0x0280, 2, 0x0814, 2, 0),
+       MX6Q_PAD_CSI0_DAT10__UART1_TXD          = IOMUX_PAD(0x0650, 0x0280, 3, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT10__UART1_RXD          = IOMUX_PAD(0x0650, 0x0280, 3, 0x0920, 0, 0),
+       MX6Q_PAD_CSI0_DAT10__SDMA_DEBUG_PC_4    = IOMUX_PAD(0x0650, 0x0280, 4, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT10__GPIO_5_28          = IOMUX_PAD(0x0650, 0x0280, 5, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT10__MMDC_MMDC_DEBUG_33 = IOMUX_PAD(0x0650, 0x0280, 6, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT10__CHEETAH_TRACE_7    = IOMUX_PAD(0x0650, 0x0280, 7, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT11__IPU1_CSI0_D_11     = IOMUX_PAD(0x0654, 0x0284, 0, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT11__AUDMUX_AUD3_RXFS   = IOMUX_PAD(0x0654, 0x0284, 1, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT11__ECSPI2_SS0         = IOMUX_PAD(0x0654, 0x0284, 2, 0x081C, 2, 0),
+       MX6Q_PAD_CSI0_DAT11__UART1_TXD          = IOMUX_PAD(0x0654, 0x0284, 3, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT11__UART1_RXD          = IOMUX_PAD(0x0654, 0x0284, 3, 0x0920, 1, 0),
+       MX6Q_PAD_CSI0_DAT11__SDMA_DEBUG_PC_5    = IOMUX_PAD(0x0654, 0x0284, 4, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT11__GPIO_5_29          = IOMUX_PAD(0x0654, 0x0284, 5, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT11__MMDC_MMDC_DEBUG_34 = IOMUX_PAD(0x0654, 0x0284, 6, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT11__CHEETAH_TRACE_8    = IOMUX_PAD(0x0654, 0x0284, 7, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT12__IPU1_CSI0_D_12     = IOMUX_PAD(0x0658, 0x0288, 0, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT12__WEIM_WEIM_D_8      = IOMUX_PAD(0x0658, 0x0288, 1, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT12__PCIE_CTRL_MUX_16   = IOMUX_PAD(0x0658, 0x0288, 2, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT12__UART4_TXD          = IOMUX_PAD(0x0658, 0x0288, 3, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT12__UART4_RXD          = IOMUX_PAD(0x0658, 0x0288, 3, 0x0938, 2, 0),
+       MX6Q_PAD_CSI0_DAT12__SDMA_DEBUG_PC_6    = IOMUX_PAD(0x0658, 0x0288, 4, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT12__GPIO_5_30          = IOMUX_PAD(0x0658, 0x0288, 5, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT12__MMDC_MMDC_DEBUG_35 = IOMUX_PAD(0x0658, 0x0288, 6, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT12__CHEETAH_TRACE_9    = IOMUX_PAD(0x0658, 0x0288, 7, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT13__IPU1_CSI0_D_13     = IOMUX_PAD(0x065C, 0x028C, 0, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT13__WEIM_WEIM_D_9      = IOMUX_PAD(0x065C, 0x028C, 1, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT13__PCIE_CTRL_MUX_17   = IOMUX_PAD(0x065C, 0x028C, 2, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT13__UART4_TXD          = IOMUX_PAD(0x065C, 0x028C, 3, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT13__UART4_RXD          = IOMUX_PAD(0x065C, 0x028C, 3, 0x0938, 3, 0),
+       MX6Q_PAD_CSI0_DAT13__SDMA_DEBUG_PC_7    = IOMUX_PAD(0x065C, 0x028C, 4, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT13__GPIO_5_31          = IOMUX_PAD(0x065C, 0x028C, 5, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT13__MMDC_MMDC_DEBUG_36 = IOMUX_PAD(0x065C, 0x028C, 6, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT13__CHEETAH_TRACE_10   = IOMUX_PAD(0x065C, 0x028C, 7, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT14__IPU1_CSI0_D_14     = IOMUX_PAD(0x0660, 0x0290, 0, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT14__WEIM_WEIM_D_10     = IOMUX_PAD(0x0660, 0x0290, 1, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT14__PCIE_CTRL_MUX_18   = IOMUX_PAD(0x0660, 0x0290, 2, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT14__UART5_TXD          = IOMUX_PAD(0x0660, 0x0290, 3, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT14__UART5_RXD          = IOMUX_PAD(0x0660, 0x0290, 3, 0x0940, 2, 0),
+       MX6Q_PAD_CSI0_DAT14__SDMA_DEBUG_PC_8    = IOMUX_PAD(0x0660, 0x0290, 4, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT14__GPIO_6_0           = IOMUX_PAD(0x0660, 0x0290, 5, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT14__MMDC_MMDC_DEBUG_37 = IOMUX_PAD(0x0660, 0x0290, 6, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT14__CHEETAH_TRACE_11   = IOMUX_PAD(0x0660, 0x0290, 7, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT15__IPU1_CSI0_D_15     = IOMUX_PAD(0x0664, 0x0294, 0, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT15__WEIM_WEIM_D_11     = IOMUX_PAD(0x0664, 0x0294, 1, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT15__PCIE_CTRL_MUX_19   = IOMUX_PAD(0x0664, 0x0294, 2, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT15__UART5_TXD          = IOMUX_PAD(0x0664, 0x0294, 3, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT15__UART5_RXD          = IOMUX_PAD(0x0664, 0x0294, 3, 0x0940, 3, 0),
+       MX6Q_PAD_CSI0_DAT15__SDMA_DEBUG_PC_9    = IOMUX_PAD(0x0664, 0x0294, 4, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT15__GPIO_6_1           = IOMUX_PAD(0x0664, 0x0294, 5, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT15__MMDC_MMDC_DEBUG_38 = IOMUX_PAD(0x0664, 0x0294, 6, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT15__CHEETAH_TRACE_12   = IOMUX_PAD(0x0664, 0x0294, 7, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT16__IPU1_CSI0_D_16     = IOMUX_PAD(0x0668, 0x0298, 0, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT16__WEIM_WEIM_D_12     = IOMUX_PAD(0x0668, 0x0298, 1, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT16__PCIE_CTRL_MUX_20   = IOMUX_PAD(0x0668, 0x0298, 2, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT16__UART4_CTS          = IOMUX_PAD(0x0668, 0x0298, 3, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT16__UART4_RTS          = IOMUX_PAD(0x0668, 0x0298, 3, 0x0934, 0, 0),
+       MX6Q_PAD_CSI0_DAT16__SDMA_DEBUG_PC_10   = IOMUX_PAD(0x0668, 0x0298, 4, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT16__GPIO_6_2           = IOMUX_PAD(0x0668, 0x0298, 5, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT16__MMDC_MMDC_DEBUG_39 = IOMUX_PAD(0x0668, 0x0298, 6, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT16__CHEETAH_TRACE_13   = IOMUX_PAD(0x0668, 0x0298, 7, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT17__IPU1_CSI0_D_17     = IOMUX_PAD(0x066C, 0x029C, 0, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT17__WEIM_WEIM_D_13     = IOMUX_PAD(0x066C, 0x029C, 1, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT17__PCIE_CTRL_MUX_21   = IOMUX_PAD(0x066C, 0x029C, 2, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT17__UART4_CTS          = IOMUX_PAD(0x066C, 0x029C, 3, 0x0934, 1, 0),
+       MX6Q_PAD_CSI0_DAT17__SDMA_DEBUG_PC_11   = IOMUX_PAD(0x066C, 0x029C, 4, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT17__GPIO_6_3           = IOMUX_PAD(0x066C, 0x029C, 5, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT17__MMDC_MMDC_DEBUG_40 = IOMUX_PAD(0x066C, 0x029C, 6, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT17__CHEETAH_TRACE_14   = IOMUX_PAD(0x066C, 0x029C, 7, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT18__IPU1_CSI0_D_18     = IOMUX_PAD(0x0670, 0x02A0, 0, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT18__WEIM_WEIM_D_14     = IOMUX_PAD(0x0670, 0x02A0, 1, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT18__PCIE_CTRL_MUX_22   = IOMUX_PAD(0x0670, 0x02A0, 2, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT18__UART5_CTS          = IOMUX_PAD(0x0670, 0x02A0, 3, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT18__UART5_RTS          = IOMUX_PAD(0x0670, 0x02A0, 3, 0x093C, 2, 0),
+       MX6Q_PAD_CSI0_DAT18__SDMA_DEBUG_PC_12   = IOMUX_PAD(0x0670, 0x02A0, 4, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT18__GPIO_6_4           = IOMUX_PAD(0x0670, 0x02A0, 5, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT18__MMDC_MMDC_DEBUG_41 = IOMUX_PAD(0x0670, 0x02A0, 6, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT18__CHEETAH_TRACE_15   = IOMUX_PAD(0x0670, 0x02A0, 7, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT19__IPU1_CSI0_D_19     = IOMUX_PAD(0x0674, 0x02A4, 0, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT19__WEIM_WEIM_D_15     = IOMUX_PAD(0x0674, 0x02A4, 1, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT19__PCIE_CTRL_MUX_23   = IOMUX_PAD(0x0674, 0x02A4, 2, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT19__UART5_CTS          = IOMUX_PAD(0x0674, 0x02A4, 3, 0x093C, 3, 0),
+       MX6Q_PAD_CSI0_DAT19__SDMA_DEBUG_PC_13   = IOMUX_PAD(0x0674, 0x02A4, 4, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT19__GPIO_6_5           = IOMUX_PAD(0x0674, 0x02A4, 5, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT19__MMDC_MMDC_DEBUG_42 = IOMUX_PAD(0x0674, 0x02A4, 6, 0x0000, 0, 0),
+       MX6Q_PAD_CSI0_DAT19__ANATOP_TESTO_9     = IOMUX_PAD(0x0674, 0x02A4, 7, 0x0000, 0, 0),
+       MX6Q_PAD_JTAG_TMS__SJC_TMS              = IOMUX_PAD(0x0678, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_JTAG_MOD__SJC_MOD              = IOMUX_PAD(0x067C, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_JTAG_TRSTB__SJC_TRSTB          = IOMUX_PAD(0x0680, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_JTAG_TDI__SJC_TDI              = IOMUX_PAD(0x0684, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_JTAG_TCK__SJC_TCK              = IOMUX_PAD(0x0688, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_JTAG_TDO__SJC_TDO              = IOMUX_PAD(0x068C, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_LVDS1_TX3_P__LDB_LVDS1_TX3     = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_LVDS1_TX2_P__LDB_LVDS1_TX2     = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_LVDS1_CLK_P__LDB_LVDS1_CLK     = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_LVDS1_TX1_P__LDB_LVDS1_TX1     = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_LVDS1_TX0_P__LDB_LVDS1_TX0     = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_LVDS0_TX3_P__LDB_LVDS0_TX3     = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_LVDS0_CLK_P__LDB_LVDS0_CLK     = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_LVDS0_TX2_P__LDB_LVDS0_TX2     = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_LVDS0_TX1_P__LDB_LVDS0_TX1     = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_LVDS0_TX0_P__LDB_LVDS0_TX0     = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_TAMPER__SNVS_LP_WRAP_SNVS_TD1  = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_PMIC_ON_REQ__SNVS_LPWRAP_WKALM = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_PMIC_STBY_REQ__CCM_PMIC_STBYRQ = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_POR_B__SRC_POR_B               = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_BOOT_MODE1__SRC_BOOT_MODE_1    = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_RESET_IN_B__SRC_RESET_B        = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_BOOT_MODE0__SRC_BOOT_MODE_0    = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_TEST_MODE__TCU_TEST_MODE       = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_DAT7__USDHC3_DAT7          = IOMUX_PAD(0x0690, 0x02A8, 0, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_DAT7__UART1_TXD            = IOMUX_PAD(0x0690, 0x02A8, 1, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_DAT7__UART1_RXD            = IOMUX_PAD(0x0690, 0x02A8, 1, 0x0920, 2, 0),
+       MX6Q_PAD_SD3_DAT7__PCIE_CTRL_MUX_24     = IOMUX_PAD(0x0690, 0x02A8, 2, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_DAT7__USBOH3_UH3_DFD_OUT_0 = IOMUX_PAD(0x0690, 0x02A8, 3, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_DAT7__USBOH3_UH2_DFD_OUT_0 = IOMUX_PAD(0x0690, 0x02A8, 4, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_DAT7__GPIO_6_17            = IOMUX_PAD(0x0690, 0x02A8, 5, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_DAT7__MIPI_CORE_DPHY_IN_12 = IOMUX_PAD(0x0690, 0x02A8, 6, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_DAT7__USBPHY2_CLK20DIV     = IOMUX_PAD(0x0690, 0x02A8, 7, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_DAT6__USDHC3_DAT6          = IOMUX_PAD(0x0694, 0x02AC, 0, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_DAT6__UART1_TXD            = IOMUX_PAD(0x0694, 0x02AC, 1, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_DAT6__UART1_RXD            = IOMUX_PAD(0x0694, 0x02AC, 1, 0x0920, 3, 0),
+       MX6Q_PAD_SD3_DAT6__PCIE_CTRL_MUX_25     = IOMUX_PAD(0x0694, 0x02AC, 2, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_DAT6__USBOH3_UH3_DFD_OUT_1 = IOMUX_PAD(0x0694, 0x02AC, 3, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_DAT6__USBOH3_UH2_DFD_OUT_1 = IOMUX_PAD(0x0694, 0x02AC, 4, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_DAT6__GPIO_6_18            = IOMUX_PAD(0x0694, 0x02AC, 5, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_DAT6__MIPI_CORE_DPHY_IN_13 = IOMUX_PAD(0x0694, 0x02AC, 6, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_DAT6__ANATOP_TESTO_10      = IOMUX_PAD(0x0694, 0x02AC, 7, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_DAT5__USDHC3_DAT5          = IOMUX_PAD(0x0698, 0x02B0, 0, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_DAT5__UART2_TXD            = IOMUX_PAD(0x0698, 0x02B0, 1, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_DAT5__UART2_RXD            = IOMUX_PAD(0x0698, 0x02B0, 1, 0x0928, 4, 0),
+       MX6Q_PAD_SD3_DAT5__PCIE_CTRL_MUX_26     = IOMUX_PAD(0x0698, 0x02B0, 2, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_DAT5__USBOH3_UH3_DFD_OUT_2 = IOMUX_PAD(0x0698, 0x02B0, 3, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_DAT5__USBOH3_UH2_DFD_OUT_2 = IOMUX_PAD(0x0698, 0x02B0, 4, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_DAT5__GPIO_7_0             = IOMUX_PAD(0x0698, 0x02B0, 5, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_DAT5__MIPI_CORE_DPHY_IN_14 = IOMUX_PAD(0x0698, 0x02B0, 6, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_DAT5__ANATOP_TESTO_11      = IOMUX_PAD(0x0698, 0x02B0, 7, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_DAT4__USDHC3_DAT4          = IOMUX_PAD(0x069C, 0x02B4, 0, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_DAT4__UART2_TXD            = IOMUX_PAD(0x069C, 0x02B4, 1, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_DAT4__UART2_RXD            = IOMUX_PAD(0x069C, 0x02B4, 1, 0x0928, 5, 0),
+       MX6Q_PAD_SD3_DAT4__PCIE_CTRL_MUX_27     = IOMUX_PAD(0x069C, 0x02B4, 2, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_DAT4__USBOH3_UH3_DFD_OUT_3 = IOMUX_PAD(0x069C, 0x02B4, 3, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_DAT4__USBOH3_UH2_DFD_OUT_3 = IOMUX_PAD(0x069C, 0x02B4, 4, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_DAT4__GPIO_7_1             = IOMUX_PAD(0x069C, 0x02B4, 5, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_DAT4__MIPI_CORE_DPHY_IN_15 = IOMUX_PAD(0x069C, 0x02B4, 6, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_DAT4__ANATOP_TESTO_12      = IOMUX_PAD(0x069C, 0x02B4, 7, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_CMD__USDHC3_CMD            = IOMUX_PAD(0x06A0, 0x02B8, 16, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_CMD__UART2_CTS             = IOMUX_PAD(0x06A0, 0x02B8, 1, 0x0924, 2, 0),
+       MX6Q_PAD_SD3_CMD__CAN1_TXCAN            = IOMUX_PAD(0x06A0, 0x02B8, 2, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_CMD__USBOH3_UH3_DFD_OUT_4  = IOMUX_PAD(0x06A0, 0x02B8, 3, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_CMD__USBOH3_UH2_DFD_OUT_4  = IOMUX_PAD(0x06A0, 0x02B8, 4, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_CMD__GPIO_7_2              = IOMUX_PAD(0x06A0, 0x02B8, 5, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_CMD__MIPI_CORE_DPHY_IN_16  = IOMUX_PAD(0x06A0, 0x02B8, 6, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_CMD__ANATOP_TESTO_13       = IOMUX_PAD(0x06A0, 0x02B8, 7, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_CLK__USDHC3_CLK            = IOMUX_PAD(0x06A4, 0x02BC, 0, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_CLK__UART2_CTS             = IOMUX_PAD(0x06A4, 0x02BC, 1, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_CLK__UART2_RTS             = IOMUX_PAD(0x06A4, 0x02BC, 1, 0x0924, 3, 0),
+       MX6Q_PAD_SD3_CLK__CAN1_RXCAN            = IOMUX_PAD(0x06A4, 0x02BC, 2, 0x07E4, 2, 0),
+       MX6Q_PAD_SD3_CLK__USBOH3_UH3_DFD_OUT_5  = IOMUX_PAD(0x06A4, 0x02BC, 3, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_CLK__USBOH3_UH2_DFD_OUT_5  = IOMUX_PAD(0x06A4, 0x02BC, 4, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_CLK__GPIO_7_3              = IOMUX_PAD(0x06A4, 0x02BC, 5, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_CLK__MIPI_CORE_DPHY_IN_17  = IOMUX_PAD(0x06A4, 0x02BC, 6, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_CLK__ANATOP_TESTO_14       = IOMUX_PAD(0x06A4, 0x02BC, 7, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_DAT0__USDHC3_DAT0          = IOMUX_PAD(0x06A8, 0x02C0, 0, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_DAT0__UART1_CTS            = IOMUX_PAD(0x06A8, 0x02C0, 1, 0x091C, 2, 0),
+       MX6Q_PAD_SD3_DAT0__CAN2_TXCAN           = IOMUX_PAD(0x06A8, 0x02C0, 2, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_DAT0__USBOH3_UH3_DFD_OUT_6 = IOMUX_PAD(0x06A8, 0x02C0, 3, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_DAT0__USBOH3_UH2_DFD_OUT_6 = IOMUX_PAD(0x06A8, 0x02C0, 4, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_DAT0__GPIO_7_4             = IOMUX_PAD(0x06A8, 0x02C0, 5, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_DAT0__MIPI_CORE_DPHY_IN_18 = IOMUX_PAD(0x06A8, 0x02C0, 6, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_DAT0__ANATOP_TESTO_15      = IOMUX_PAD(0x06A8, 0x02C0, 7, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_DAT1__USDHC3_DAT1          = IOMUX_PAD(0x06AC, 0x02C4, 0, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_DAT1__UART1_CTS            = IOMUX_PAD(0x06AC, 0x02C4, 1, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_DAT1__UART1_RTS            = IOMUX_PAD(0x06AC, 0x02C4, 1, 0x091C, 3, 0),
+       MX6Q_PAD_SD3_DAT1__CAN2_RXCAN           = IOMUX_PAD(0x06AC, 0x02C4, 2, 0x07E8, 1, 0),
+       MX6Q_PAD_SD3_DAT1__USBOH3_UH3_DFD_OUT_7 = IOMUX_PAD(0x06AC, 0x02C4, 3, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_DAT1__USBOH3_UH2_DFD_OUT_7 = IOMUX_PAD(0x06AC, 0x02C4, 4, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_DAT1__GPIO_7_5             = IOMUX_PAD(0x06AC, 0x02C4, 5, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_DAT1__MIPI_CORE_DPHY_IN_19 = IOMUX_PAD(0x06AC, 0x02C4, 6, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_DAT1__ANATOP_TESTI_0       = IOMUX_PAD(0x06AC, 0x02C4, 7, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_DAT2__USDHC3_DAT2          = IOMUX_PAD(0x06B0, 0x02C8, 0, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_DAT2__PCIE_CTRL_MUX_28     = IOMUX_PAD(0x06B0, 0x02C8, 2, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_DAT2__USBOH3_UH3_DFD_OUT_8 = IOMUX_PAD(0x06B0, 0x02C8, 3, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_DAT2__USBOH3_UH2_DFD_OUT_8 = IOMUX_PAD(0x06B0, 0x02C8, 4, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_DAT2__GPIO_7_6             = IOMUX_PAD(0x06B0, 0x02C8, 5, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_DAT2__MIPI_CORE_DPHY_IN_20 = IOMUX_PAD(0x06B0, 0x02C8, 6, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_DAT2__ANATOP_TESTI_1       = IOMUX_PAD(0x06B0, 0x02C8, 7, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_DAT3__USDHC3_DAT3          = IOMUX_PAD(0x06B4, 0x02CC, 0, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_DAT3__UART3_CTS            = IOMUX_PAD(0x06B4, 0x02CC, 1, 0x092C, 4, 0),
+       MX6Q_PAD_SD3_DAT3__PCIE_CTRL_MUX_29     = IOMUX_PAD(0x06B4, 0x02CC, 2, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_DAT3__USBOH3_UH3_DFD_OUT_9 = IOMUX_PAD(0x06B4, 0x02CC, 3, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_DAT3__USBOH3_UH2_DFD_OUT_9 = IOMUX_PAD(0x06B4, 0x02CC, 4, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_DAT3__GPIO_7_7             = IOMUX_PAD(0x06B4, 0x02CC, 5, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_DAT3__MIPI_CORE_DPHY_IN_21 = IOMUX_PAD(0x06B4, 0x02CC, 6, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_DAT3__ANATOP_TESTI_2       = IOMUX_PAD(0x06B4, 0x02CC, 7, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_RST__USDHC3_RST            = IOMUX_PAD(0x06B8, 0x02D0, 0, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_RST__UART3_CTS             = IOMUX_PAD(0x06B8, 0x02D0, 1, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_RST__UART3_RTS             = IOMUX_PAD(0x06B8, 0x02D0, 1, 0x092C, 5, 0),
+       MX6Q_PAD_SD3_RST__PCIE_CTRL_MUX_30      = IOMUX_PAD(0x06B8, 0x02D0, 2, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_RST__USBOH3_UH3_DFD_OUT_10 = IOMUX_PAD(0x06B8, 0x02D0, 3, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_RST__USBOH3_UH2_DFD_OUT_10 = IOMUX_PAD(0x06B8, 0x02D0, 4, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_RST__GPIO_7_8              = IOMUX_PAD(0x06B8, 0x02D0, 5, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_RST__MIPI_CORE_DPHY_IN_22  = IOMUX_PAD(0x06B8, 0x02D0, 6, 0x0000, 0, 0),
+       MX6Q_PAD_SD3_RST__ANATOP_ANATOP_TESTI_3 = IOMUX_PAD(0x06B8, 0x02D0, 7, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_CLE__RAWNAND_CLE         = IOMUX_PAD(0x06BC, 0x02D4, 0, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_CLE__IPU2_SISG_4         = IOMUX_PAD(0x06BC, 0x02D4, 1, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_CLE__PCIE_CTRL_MUX_31    = IOMUX_PAD(0x06BC, 0x02D4, 2, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_CLE__USBOH3_UH3_DFD_OT11 = IOMUX_PAD(0x06BC, 0x02D4, 3, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_CLE__USBOH3_UH2_DFD_OT11 = IOMUX_PAD(0x06BC, 0x02D4, 4, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_CLE__GPIO_6_7            = IOMUX_PAD(0x06BC, 0x02D4, 5, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_CLE__MIPI_CORE_DPHY_IN23 = IOMUX_PAD(0x06BC, 0x02D4, 6, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_CLE__TPSMP_HTRANS_0      = IOMUX_PAD(0x06BC, 0x02D4, 7, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_ALE__RAWNAND_ALE         = IOMUX_PAD(0x06C0, 0x02D8, 0, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_ALE__USDHC4_RST          = IOMUX_PAD(0x06C0, 0x02D8, 1, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_ALE__PCIE_CTRL_MUX_0     = IOMUX_PAD(0x06C0, 0x02D8, 2, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_ALE__USBOH3_UH3_DFD_OT12 = IOMUX_PAD(0x06C0, 0x02D8, 3, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_ALE__USBOH3_UH2_DFD_OT12 = IOMUX_PAD(0x06C0, 0x02D8, 4, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_ALE__GPIO_6_8            = IOMUX_PAD(0x06C0, 0x02D8, 5, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_ALE__MIPI_CR_DPHY_IN_24  = IOMUX_PAD(0x06C0, 0x02D8, 6, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_ALE__TPSMP_HTRANS_1      = IOMUX_PAD(0x06C0, 0x02D8, 7, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_WP_B__RAWNAND_RESETN     = IOMUX_PAD(0x06C4, 0x02DC, 0, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_WP_B__IPU2_SISG_5        = IOMUX_PAD(0x06C4, 0x02DC, 1, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_WP_B__PCIE_CTRL__MUX_1   = IOMUX_PAD(0x06C4, 0x02DC, 2, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_WP_B__USBOH3_UH3_DFDOT13 = IOMUX_PAD(0x06C4, 0x02DC, 3, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_WP_B__USBOH3_UH2_DFDOT13 = IOMUX_PAD(0x06C4, 0x02DC, 4, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_WP_B__GPIO_6_9           = IOMUX_PAD(0x06C4, 0x02DC, 5, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_WP_B__MIPI_CR_DPHY_OUT32 = IOMUX_PAD(0x06C4, 0x02DC, 6, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_WP_B__PL301_PER1_HSIZE_0 = IOMUX_PAD(0x06C4, 0x02DC, 7, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_RB0__RAWNAND_READY0      = IOMUX_PAD(0x06C8, 0x02E0, 0, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_RB0__IPU2_DI0_PIN1       = IOMUX_PAD(0x06C8, 0x02E0, 1, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_RB0__PCIE_CTRL_MUX_2     = IOMUX_PAD(0x06C8, 0x02E0, 2, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_RB0__USBOH3_UH3_DFD_OT14 = IOMUX_PAD(0x06C8, 0x02E0, 3, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_RB0__USBOH3_UH2_DFD_OT14 = IOMUX_PAD(0x06C8, 0x02E0, 4, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_RB0__GPIO_6_10           = IOMUX_PAD(0x06C8, 0x02E0, 5, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_RB0__MIPI_CR_DPHY_OUT_33 = IOMUX_PAD(0x06C8, 0x02E0, 6, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_RB0__PL301_PER1_HSIZE_1  = IOMUX_PAD(0x06C8, 0x02E0, 7, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_CS0__RAWNAND_CE0N        = IOMUX_PAD(0x06CC, 0x02E4, 0, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_CS0__USBOH3_UH3_DFD_OT15 = IOMUX_PAD(0x06CC, 0x02E4, 3, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_CS0__USBOH3_UH2_DFD_OT15 = IOMUX_PAD(0x06CC, 0x02E4, 4, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_CS0__GPIO_6_11           = IOMUX_PAD(0x06CC, 0x02E4, 5, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_CS0__PL301_PER1_HSIZE_2  = IOMUX_PAD(0x06CC, 0x02E4, 7, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_CS1__RAWNAND_CE1N        = IOMUX_PAD(0x06D0, 0x02E8, 0, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_CS1__USDHC4_VSELECT      = IOMUX_PAD(0x06D0, 0x02E8, 1, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_CS1__USDHC3_VSELECT      = IOMUX_PAD(0x06D0, 0x02E8, 2, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_CS1__PCIE_CTRL_MUX_3     = IOMUX_PAD(0x06D0, 0x02E8, 4, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_CS1__GPIO_6_14           = IOMUX_PAD(0x06D0, 0x02E8, 5, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_CS1__PL301_PER1_HRDYOUT  = IOMUX_PAD(0x06D0, 0x02E8, 7, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_CS2__RAWNAND_CE2N        = IOMUX_PAD(0x06D4, 0x02EC, 0, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_CS2__IPU1_SISG_0         = IOMUX_PAD(0x06D4, 0x02EC, 1, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_CS2__ESAI1_TX0           = IOMUX_PAD(0x06D4, 0x02EC, 2, 0x0874, 1, 0),
+       MX6Q_PAD_NANDF_CS2__WEIM_WEIM_CRE       = IOMUX_PAD(0x06D4, 0x02EC, 3, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_CS2__CCM_CLKO2           = IOMUX_PAD(0x06D4, 0x02EC, 4, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_CS2__GPIO_6_15           = IOMUX_PAD(0x06D4, 0x02EC, 5, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_CS2__IPU2_SISG_0         = IOMUX_PAD(0x06D4, 0x02EC, 6, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_CS3__RAWNAND_CE3N        = IOMUX_PAD(0x06D8, 0x02F0, 0, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_CS3__IPU1_SISG_1         = IOMUX_PAD(0x06D8, 0x02F0, 1, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_CS3__ESAI1_TX1           = IOMUX_PAD(0x06D8, 0x02F0, 2, 0x0878, 1, 0),
+       MX6Q_PAD_NANDF_CS3__WEIM_WEIM_A_26      = IOMUX_PAD(0x06D8, 0x02F0, 3, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_CS3__PCIE_CTRL_MUX_4     = IOMUX_PAD(0x06D8, 0x02F0, 4, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_CS3__GPIO_6_16           = IOMUX_PAD(0x06D8, 0x02F0, 5, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_CS3__IPU2_SISG_1         = IOMUX_PAD(0x06D8, 0x02F0, 6, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_CS3__TPSMP_CLK           = IOMUX_PAD(0x06D8, 0x02F0, 7, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_CMD__USDHC4_CMD            = IOMUX_PAD(0x06DC, 0x02F4, 16, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_CMD__RAWNAND_RDN           = IOMUX_PAD(0x06DC, 0x02F4, 1, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_CMD__UART3_TXD             = IOMUX_PAD(0x06DC, 0x02F4, 2, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_CMD__UART3_RXD             = IOMUX_PAD(0x06DC, 0x02F4, 2, 0x0930, 2, 0),
+       MX6Q_PAD_SD4_CMD__PCIE_CTRL_MUX_5       = IOMUX_PAD(0x06DC, 0x02F4, 4, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_CMD__GPIO_7_9              = IOMUX_PAD(0x06DC, 0x02F4, 5, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_CMD__TPSMP_HDATA_DIR       = IOMUX_PAD(0x06DC, 0x02F4, 7, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_CLK__USDHC4_CLK            = IOMUX_PAD(0x06E0, 0x02F8, 0, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_CLK__RAWNAND_WRN           = IOMUX_PAD(0x06E0, 0x02F8, 1, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_CLK__UART3_TXD             = IOMUX_PAD(0x06E0, 0x02F8, 2, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_CLK__UART3_RXD             = IOMUX_PAD(0x06E0, 0x02F8, 2, 0x0930, 3, 0),
+       MX6Q_PAD_SD4_CLK__PCIE_CTRL_MUX_6       = IOMUX_PAD(0x06E0, 0x02F8, 4, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_CLK__GPIO_7_10             = IOMUX_PAD(0x06E0, 0x02F8, 5, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_D0__RAWNAND_D0           = IOMUX_PAD(0x06E4, 0x02FC, 0, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_D0__USDHC1_DAT4          = IOMUX_PAD(0x06E4, 0x02FC, 1, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_D0__GPU3D_GPU_DBG_OUT_0  = IOMUX_PAD(0x06E4, 0x02FC, 2, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_D0__USBOH3_UH2_DFD_OUT16 = IOMUX_PAD(0x06E4, 0x02FC, 3, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_D0__USBOH3_UH3_DFD_OUT16 = IOMUX_PAD(0x06E4, 0x02FC, 4, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_D0__GPIO_2_0             = IOMUX_PAD(0x06E4, 0x02FC, 5, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_D0__IPU1_IPU_DIAG_BUS_0  = IOMUX_PAD(0x06E4, 0x02FC, 6, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_D0__IPU2_IPU_DIAG_BUS_0  = IOMUX_PAD(0x06E4, 0x02FC, 7, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_D1__RAWNAND_D1           = IOMUX_PAD(0x06E8, 0x0300, 0, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_D1__USDHC1_DAT5          = IOMUX_PAD(0x06E8, 0x0300, 1, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_D1__GPU3D_GPU_DEBUG_OUT1 = IOMUX_PAD(0x06E8, 0x0300, 2, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_D1__USBOH3_UH2_DFD_OUT17 = IOMUX_PAD(0x06E8, 0x0300, 3, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_D1__USBOH3_UH3_DFD_OUT17 = IOMUX_PAD(0x06E8, 0x0300, 4, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_D1__GPIO_2_1             = IOMUX_PAD(0x06E8, 0x0300, 5, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_D1__IPU1_IPU_DIAG_BUS_1  = IOMUX_PAD(0x06E8, 0x0300, 6, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_D1__IPU2_IPU_DIAG_BUS_1  = IOMUX_PAD(0x06E8, 0x0300, 7, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_D2__RAWNAND_D2           = IOMUX_PAD(0x06EC, 0x0304, 0, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_D2__USDHC1_DAT6          = IOMUX_PAD(0x06EC, 0x0304, 1, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_D2__GPU3D_GPU_DBG_OUT_2  = IOMUX_PAD(0x06EC, 0x0304, 2, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_D2__USBOH3_UH2_DFD_OUT18 = IOMUX_PAD(0x06EC, 0x0304, 3, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_D2__USBOH3_UH3_DFD_OUT18 = IOMUX_PAD(0x06EC, 0x0304, 4, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_D2__GPIO_2_2             = IOMUX_PAD(0x06EC, 0x0304, 5, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_D2__IPU1_IPU_DIAG_BUS_2  = IOMUX_PAD(0x06EC, 0x0304, 6, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_D2__IPU2_IPU_DIAG_BUS_2  = IOMUX_PAD(0x06EC, 0x0304, 7, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_D3__RAWNAND_D3           = IOMUX_PAD(0x06F0, 0x0308, 0, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_D3__USDHC1_DAT7          = IOMUX_PAD(0x06F0, 0x0308, 1, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_D3__GPU3D_GPU_DBG_OUT_3  = IOMUX_PAD(0x06F0, 0x0308, 2, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_D3__USBOH3_UH2_DFD_OUT19 = IOMUX_PAD(0x06F0, 0x0308, 3, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_D3__USBOH3_UH3_DFD_OUT19 = IOMUX_PAD(0x06F0, 0x0308, 4, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_D3__GPIO_2_3             = IOMUX_PAD(0x06F0, 0x0308, 5, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_D3__IPU1_IPU_DIAG_BUS_3  = IOMUX_PAD(0x06F0, 0x0308, 6, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_D3__IPU2_IPU_DIAG_BUS_3  = IOMUX_PAD(0x06F0, 0x0308, 7, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_D4__RAWNAND_D4           = IOMUX_PAD(0x06F4, 0x030C, 0, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_D4__USDHC2_DAT4          = IOMUX_PAD(0x06F4, 0x030C, 1, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_D4__GPU3D_GPU_DBG_OUT_4  = IOMUX_PAD(0x06F4, 0x030C, 2, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_D4__USBOH3_UH2_DFD_OUT20 = IOMUX_PAD(0x06F4, 0x030C, 3, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_D4__USBOH3_UH3_DFD_OUT20 = IOMUX_PAD(0x06F4, 0x030C, 4, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_D4__GPIO_2_4             = IOMUX_PAD(0x06F4, 0x030C, 5, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_D4__IPU1_IPU_DIAG_BUS_4  = IOMUX_PAD(0x06F4, 0x030C, 6, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_D4__IPU2_IPU_DIAG_BUS_4  = IOMUX_PAD(0x06F4, 0x030C, 7, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_D5__RAWNAND_D5           = IOMUX_PAD(0x06F8, 0x0310, 0, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_D5__USDHC2_DAT5          = IOMUX_PAD(0x06F8, 0x0310, 1, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_D5__GPU3D_GPU_DBG_OUT_5  = IOMUX_PAD(0x06F8, 0x0310, 2, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_D5__USBOH3_UH2_DFD_OUT21 = IOMUX_PAD(0x06F8, 0x0310, 3, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_D5__USBOH3_UH3_DFD_OUT21 = IOMUX_PAD(0x06F8, 0x0310, 4, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_D5__GPIO_2_5             = IOMUX_PAD(0x06F8, 0x0310, 5, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_D5__IPU1_IPU_DIAG_BUS_5  = IOMUX_PAD(0x06F8, 0x0310, 6, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_D5__IPU2_IPU_DIAG_BUS_5  = IOMUX_PAD(0x06F8, 0x0310, 7, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_D6__RAWNAND_D6           = IOMUX_PAD(0x06FC, 0x0314, 0, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_D6__USDHC2_DAT6          = IOMUX_PAD(0x06FC, 0x0314, 1, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_D6__GPU3D_GPU_DBG_OUT_6  = IOMUX_PAD(0x06FC, 0x0314, 2, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_D6__USBOH3_UH2_DFD_OUT22 = IOMUX_PAD(0x06FC, 0x0314, 3, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_D6__USBOH3_UH3_DFD_OUT22 = IOMUX_PAD(0x06FC, 0x0314, 4, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_D6__GPIO_2_6             = IOMUX_PAD(0x06FC, 0x0314, 5, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_D6__IPU1_IPU_DIAG_BUS_6  = IOMUX_PAD(0x06FC, 0x0314, 6, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_D6__IPU2_IPU_DIAG_BUS_6  = IOMUX_PAD(0x06FC, 0x0314, 7, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_D7__RAWNAND_D7           = IOMUX_PAD(0x0700, 0x0318, 0, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_D7__USDHC2_DAT7          = IOMUX_PAD(0x0700, 0x0318, 1, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_D7__GPU3D_GPU_DBG_OUT_7  = IOMUX_PAD(0x0700, 0x0318, 2, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_D7__USBOH3_UH2_DFD_OUT23 = IOMUX_PAD(0x0700, 0x0318, 3, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_D7__USBOH3_UH3_DFD_OUT23 = IOMUX_PAD(0x0700, 0x0318, 4, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_D7__GPIO_2_7             = IOMUX_PAD(0x0700, 0x0318, 5, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_D7__IPU1_IPU_DIAG_BUS_7  = IOMUX_PAD(0x0700, 0x0318, 6, 0x0000, 0, 0),
+       MX6Q_PAD_NANDF_D7__IPU2_IPU_DIAG_BUS_7  = IOMUX_PAD(0x0700, 0x0318, 7, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_DAT0__RAWNAND_D8           = IOMUX_PAD(0x0704, 0x031C, 0, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_DAT0__USDHC4_DAT0          = IOMUX_PAD(0x0704, 0x031C, 1, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_DAT0__RAWNAND_DQS          = IOMUX_PAD(0x0704, 0x031C, 2, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_DAT0__USBOH3_UH2_DFD_OUT24 = IOMUX_PAD(0x0704, 0x031C, 3, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_DAT0__USBOH3_UH3_DFD_OUT24 = IOMUX_PAD(0x0704, 0x031C, 4, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_DAT0__GPIO_2_8             = IOMUX_PAD(0x0704, 0x031C, 5, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_DAT0__IPU1_IPU_DIAG_BUS_8  = IOMUX_PAD(0x0704, 0x031C, 6, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_DAT0__IPU2_IPU_DIAG_BUS_8  = IOMUX_PAD(0x0704, 0x031C, 7, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_DAT1__RAWNAND_D9           = IOMUX_PAD(0x0708, 0x0320, 0, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_DAT1__USDHC4_DAT1          = IOMUX_PAD(0x0708, 0x0320, 1, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_DAT1__PWM3_PWMO            = IOMUX_PAD(0x0708, 0x0320, 2, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_DAT1__USBOH3_UH2_DFD_OUT25 = IOMUX_PAD(0x0708, 0x0320, 3, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_DAT1__USBOH3_UH3_DFD_OUT25 = IOMUX_PAD(0x0708, 0x0320, 4, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_DAT1__GPIO_2_9             = IOMUX_PAD(0x0708, 0x0320, 5, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_DAT1__IPU1_IPU_DIAG_BUS_9  = IOMUX_PAD(0x0708, 0x0320, 6, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_DAT1__IPU2_IPU_DIAG_BUS_9  = IOMUX_PAD(0x0708, 0x0320, 7, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_DAT2__RAWNAND_D10          = IOMUX_PAD(0x070C, 0x0324, 0, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_DAT2__USDHC4_DAT2          = IOMUX_PAD(0x070C, 0x0324, 1, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_DAT2__PWM4_PWMO            = IOMUX_PAD(0x070C, 0x0324, 2, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_DAT2__USBOH3_UH2_DFD_OUT26 = IOMUX_PAD(0x070C, 0x0324, 3, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_DAT2__USBOH3_UH3_DFD_OUT26 = IOMUX_PAD(0x070C, 0x0324, 4, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_DAT2__GPIO_2_10            = IOMUX_PAD(0x070C, 0x0324, 5, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_DAT2__IPU1_IPU_DIAG_BUS_10 = IOMUX_PAD(0x070C, 0x0324, 6, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_DAT2__IPU2_IPU_DIAG_BUS_10 = IOMUX_PAD(0x070C, 0x0324, 7, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_DAT3__RAWNAND_D11          = IOMUX_PAD(0x0710, 0x0328, 0, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_DAT3__USDHC4_DAT3          = IOMUX_PAD(0x0710, 0x0328, 1, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_DAT3__USBOH3_UH2_DFD_OUT27 = IOMUX_PAD(0x0710, 0x0328, 3, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_DAT3__USBOH3_UH3_DFD_OUT27 = IOMUX_PAD(0x0710, 0x0328, 4, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_DAT3__GPIO_2_11            = IOMUX_PAD(0x0710, 0x0328, 5, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_DAT3__IPU1_IPU_DIAG_BUS_11 = IOMUX_PAD(0x0710, 0x0328, 6, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_DAT3__IPU2_IPU_DIAG_BUS_11 = IOMUX_PAD(0x0710, 0x0328, 7, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_DAT4__RAWNAND_D12          = IOMUX_PAD(0x0714, 0x032C, 0, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_DAT4__USDHC4_DAT4          = IOMUX_PAD(0x0714, 0x032C, 1, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_DAT4__UART2_TXD            = IOMUX_PAD(0x0714, 0x032C, 2, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_DAT4__UART2_RXD            = IOMUX_PAD(0x0714, 0x032C, 2, 0x0928, 6, 0),
+       MX6Q_PAD_SD4_DAT4__USBOH3_UH2_DFD_OUT28 = IOMUX_PAD(0x0714, 0x032C, 3, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_DAT4__USBOH3_UH3_DFD_OUT28 = IOMUX_PAD(0x0714, 0x032C, 4, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_DAT4__GPIO_2_12            = IOMUX_PAD(0x0714, 0x032C, 5, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_DAT4__IPU1_IPU_DIAG_BUS_12 = IOMUX_PAD(0x0714, 0x032C, 6, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_DAT4__IPU2_IPU_DIAG_BUS_12 = IOMUX_PAD(0x0714, 0x032C, 7, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_DAT5__RAWNAND_D13          = IOMUX_PAD(0x0718, 0x0330, 0, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_DAT5__USDHC4_DAT5          = IOMUX_PAD(0x0718, 0x0330, 1, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_DAT5__UART2_CTS            = IOMUX_PAD(0x0718, 0x0330, 2, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_DAT5__UART2_RTS            = IOMUX_PAD(0x0718, 0x0330, 2, 0x0924, 4, 0),
+       MX6Q_PAD_SD4_DAT5__USBOH3_UH2_DFD_OUT29 = IOMUX_PAD(0x0718, 0x0330, 3, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_DAT5__USBOH3_UH3_DFD_OUT29 = IOMUX_PAD(0x0718, 0x0330, 4, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_DAT5__GPIO_2_13            = IOMUX_PAD(0x0718, 0x0330, 5, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_DAT5__IPU1_IPU_DIAG_BUS_13 = IOMUX_PAD(0x0718, 0x0330, 6, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_DAT5__IPU2_IPU_DIAG_BUS_13 = IOMUX_PAD(0x0718, 0x0330, 7, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_DAT6__RAWNAND_D14          = IOMUX_PAD(0x071C, 0x0334, 0, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_DAT6__USDHC4_DAT6          = IOMUX_PAD(0x071C, 0x0334, 1, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_DAT6__UART2_CTS            = IOMUX_PAD(0x071C, 0x0334, 2, 0x0924, 5, 0),
+       MX6Q_PAD_SD4_DAT6__USBOH3_UH2_DFD_OUT30 = IOMUX_PAD(0x071C, 0x0334, 3, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_DAT6__USBOH3_UH3_DFD_OUT30 = IOMUX_PAD(0x071C, 0x0334, 4, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_DAT6__GPIO_2_14            = IOMUX_PAD(0x071C, 0x0334, 5, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_DAT6__IPU1_IPU_DIAG_BUS_14 = IOMUX_PAD(0x071C, 0x0334, 6, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_DAT6__IPU2_IPU_DIAG_BUS_14 = IOMUX_PAD(0x071C, 0x0334, 7, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_DAT7__RAWNAND_D15          = IOMUX_PAD(0x0720, 0x0338, 0, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_DAT7__USDHC4_DAT7          = IOMUX_PAD(0x0720, 0x0338, 1, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_DAT7__UART2_TXD            = IOMUX_PAD(0x0720, 0x0338, 2, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_DAT7__UART2_RXD            = IOMUX_PAD(0x0720, 0x0338, 2, 0x0928, 7, 0),
+       MX6Q_PAD_SD4_DAT7__USBOH3_UH2_DFD_OUT31 = IOMUX_PAD(0x0720, 0x0338, 3, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_DAT7__USBOH3_UH3_DFD_OUT31 = IOMUX_PAD(0x0720, 0x0338, 4, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_DAT7__GPIO_2_15            = IOMUX_PAD(0x0720, 0x0338, 5, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_DAT7__IPU1_IPU_DIAG_BUS_15 = IOMUX_PAD(0x0720, 0x0338, 6, 0x0000, 0, 0),
+       MX6Q_PAD_SD4_DAT7__IPU2_IPU_DIAG_BUS_15 = IOMUX_PAD(0x0720, 0x0338, 7, 0x0000, 0, 0),
+       MX6Q_PAD_SD1_DAT1__USDHC1_DAT1          = IOMUX_PAD(0x0724, 0x033C, 0, 0x0000, 0, 0),
+       MX6Q_PAD_SD1_DAT1__ECSPI5_SS0           = IOMUX_PAD(0x0724, 0x033C, 1, 0x0834, 1, 0),
+       MX6Q_PAD_SD1_DAT1__PWM3_PWMO            = IOMUX_PAD(0x0724, 0x033C, 2, 0x0000, 0, 0),
+       MX6Q_PAD_SD1_DAT1__GPT_CAPIN2           = IOMUX_PAD(0x0724, 0x033C, 3, 0x0000, 0, 0),
+       MX6Q_PAD_SD1_DAT1__PCIE_CTRL_MUX_7      = IOMUX_PAD(0x0724, 0x033C, 4, 0x0000, 0, 0),
+       MX6Q_PAD_SD1_DAT1__GPIO_1_17            = IOMUX_PAD(0x0724, 0x033C, 5, 0x0000, 0, 0),
+       MX6Q_PAD_SD1_DAT1__HDMI_TX_OPHYDTB_0    = IOMUX_PAD(0x0724, 0x033C, 6, 0x0000, 0, 0),
+       MX6Q_PAD_SD1_DAT1__ANATOP_TESTO_8       = IOMUX_PAD(0x0724, 0x033C, 7, 0x0000, 0, 0),
+       MX6Q_PAD_SD1_DAT0__USDHC1_DAT0          = IOMUX_PAD(0x0728, 0x0340, 0, 0x0000, 0, 0),
+       MX6Q_PAD_SD1_DAT0__ECSPI5_MISO          = IOMUX_PAD(0x0728, 0x0340, 1, 0x082C, 1, 0),
+       MX6Q_PAD_SD1_DAT0__CAAM_WRAP_RNG_OSCOBS = IOMUX_PAD(0x0728, 0x0340, 2, 0x0000, 0, 0),
+       MX6Q_PAD_SD1_DAT0__GPT_CAPIN1           = IOMUX_PAD(0x0728, 0x0340, 3, 0x0000, 0, 0),
+       MX6Q_PAD_SD1_DAT0__PCIE_CTRL_MUX_8      = IOMUX_PAD(0x0728, 0x0340, 4, 0x0000, 0, 0),
+       MX6Q_PAD_SD1_DAT0__GPIO_1_16            = IOMUX_PAD(0x0728, 0x0340, 5, 0x0000, 0, 0),
+       MX6Q_PAD_SD1_DAT0__HDMI_TX_OPHYDTB_1    = IOMUX_PAD(0x0728, 0x0340, 6, 0x0000, 0, 0),
+       MX6Q_PAD_SD1_DAT0__ANATOP_TESTO_7       = IOMUX_PAD(0x0728, 0x0340, 7, 0x0000, 0, 0),
+       MX6Q_PAD_SD1_DAT3__USDHC1_DAT3          = IOMUX_PAD(0x072C, 0x0344, 0, 0x0000, 0, 0),
+       MX6Q_PAD_SD1_DAT3__ECSPI5_SS2           = IOMUX_PAD(0x072C, 0x0344, 1, 0x0000, 0, 0),
+       MX6Q_PAD_SD1_DAT3__GPT_CMPOUT3          = IOMUX_PAD(0x072C, 0x0344, 2, 0x0000, 0, 0),
+       MX6Q_PAD_SD1_DAT3__PWM1_PWMO            = IOMUX_PAD(0x072C, 0x0344, 3, 0x0000, 0, 0),
+       MX6Q_PAD_SD1_DAT3__WDOG2_WDOG_B         = IOMUX_PAD(0x072C, 0x0344, 4, 0x0000, 0, 0),
+       MX6Q_PAD_SD1_DAT3__GPIO_1_21            = IOMUX_PAD(0x072C, 0x0344, 5, 0x0000, 0, 0),
+       MX6Q_PAD_SD1_DAT3__WDOG2_WDOG_RST_B_DEB = IOMUX_PAD(0x072C, 0x0344, 6, 0x0000, 0, 0),
+       MX6Q_PAD_SD1_DAT3__ANATOP_TESTO_6       = IOMUX_PAD(0x072C, 0x0344, 7, 0x0000, 0, 0),
+       MX6Q_PAD_SD1_CMD__USDHC1_CMD            = IOMUX_PAD(0x0730, 0x0348, 16, 0x0000, 0, 0),
+       MX6Q_PAD_SD1_CMD__ECSPI5_MOSI           = IOMUX_PAD(0x0730, 0x0348, 1, 0x0830, 0, 0),
+       MX6Q_PAD_SD1_CMD__PWM4_PWMO             = IOMUX_PAD(0x0730, 0x0348, 2, 0x0000, 0, 0),
+       MX6Q_PAD_SD1_CMD__GPT_CMPOUT1           = IOMUX_PAD(0x0730, 0x0348, 3, 0x0000, 0, 0),
+       MX6Q_PAD_SD1_CMD__GPIO_1_18             = IOMUX_PAD(0x0730, 0x0348, 5, 0x0000, 0, 0),
+       MX6Q_PAD_SD1_CMD__ANATOP_TESTO_5        = IOMUX_PAD(0x0730, 0x0348, 7, 0x0000, 0, 0),
+       MX6Q_PAD_SD1_DAT2__USDHC1_DAT2          = IOMUX_PAD(0x0734, 0x034C, 0, 0x0000, 0, 0),
+       MX6Q_PAD_SD1_DAT2__ECSPI5_SS1           = IOMUX_PAD(0x0734, 0x034C, 1, 0x0838, 1, 0),
+       MX6Q_PAD_SD1_DAT2__GPT_CMPOUT2          = IOMUX_PAD(0x0734, 0x034C, 2, 0x0000, 0, 0),
+       MX6Q_PAD_SD1_DAT2__PWM2_PWMO            = IOMUX_PAD(0x0734, 0x034C, 3, 0x0000, 0, 0),
+       MX6Q_PAD_SD1_DAT2__WDOG1_WDOG_B         = IOMUX_PAD(0x0734, 0x034C, 4, 0x0000, 0, 0),
+       MX6Q_PAD_SD1_DAT2__GPIO_1_19            = IOMUX_PAD(0x0734, 0x034C, 5, 0x0000, 0, 0),
+       MX6Q_PAD_SD1_DAT2__WDOG1_WDOG_RST_B_DEB = IOMUX_PAD(0x0734, 0x034C, 6, 0x0000, 0, 0),
+       MX6Q_PAD_SD1_DAT2__ANATOP_TESTO_4       = IOMUX_PAD(0x0734, 0x034C, 7, 0x0000, 0, 0),
+       MX6Q_PAD_SD1_CLK__USDHC1_CLK            = IOMUX_PAD(0x0738, 0x0350, 0, 0x0000, 0, 0),
+       MX6Q_PAD_SD1_CLK__ECSPI5_SCLK           = IOMUX_PAD(0x0738, 0x0350, 1, 0x0828, 0, 0),
+       MX6Q_PAD_SD1_CLK__OSC32K_32K_OUT        = IOMUX_PAD(0x0738, 0x0350, 2, 0x0000, 0, 0),
+       MX6Q_PAD_SD1_CLK__GPT_CLKIN             = IOMUX_PAD(0x0738, 0x0350, 3, 0x0000, 0, 0),
+       MX6Q_PAD_SD1_CLK__GPIO_1_20             = IOMUX_PAD(0x0738, 0x0350, 5, 0x0000, 0, 0),
+       MX6Q_PAD_SD1_CLK__PHY_DTB_0             = IOMUX_PAD(0x0738, 0x0350, 6, 0x0000, 0, 0),
+       MX6Q_PAD_SD1_CLK__SATA_PHY_DTB_0        = IOMUX_PAD(0x0738, 0x0350, 7, 0x0000, 0, 0),
+       MX6Q_PAD_SD2_CLK__USDHC2_CLK            = IOMUX_PAD(0x073C, 0x0354, 0, 0x0000, 0, 0),
+       MX6Q_PAD_SD2_CLK__ECSPI5_SCLK           = IOMUX_PAD(0x073C, 0x0354, 1, 0x0828, 1, 0),
+       MX6Q_PAD_SD2_CLK__KPP_COL_5             = IOMUX_PAD(0x073C, 0x0354, 2, 0x08E8, 3, 0),
+       MX6Q_PAD_SD2_CLK__AUDMUX_AUD4_RXFS      = IOMUX_PAD(0x073C, 0x0354, 3, 0x07C0, 1, 0),
+       MX6Q_PAD_SD2_CLK__PCIE_CTRL_MUX_9       = IOMUX_PAD(0x073C, 0x0354, 4, 0x0000, 0, 0),
+       MX6Q_PAD_SD2_CLK__GPIO_1_10             = IOMUX_PAD(0x073C, 0x0354, 5, 0x0000, 0, 0),
+       MX6Q_PAD_SD2_CLK__PHY_DTB_1             = IOMUX_PAD(0x073C, 0x0354, 6, 0x0000, 0, 0),
+       MX6Q_PAD_SD2_CLK__SATA_PHY_DTB_1        = IOMUX_PAD(0x073C, 0x0354, 7, 0x0000, 0, 0),
+       MX6Q_PAD_SD2_CMD__USDHC2_CMD            = IOMUX_PAD(0x0740, 0x0358, 16, 0x0000, 0, 0),
+       MX6Q_PAD_SD2_CMD__ECSPI5_MOSI           = IOMUX_PAD(0x0740, 0x0358, 1, 0x0830, 1, 0),
+       MX6Q_PAD_SD2_CMD__KPP_ROW_5             = IOMUX_PAD(0x0740, 0x0358, 2, 0x08F4, 2, 0),
+       MX6Q_PAD_SD2_CMD__AUDMUX_AUD4_RXC       = IOMUX_PAD(0x0740, 0x0358, 3, 0x07BC, 1, 0),
+       MX6Q_PAD_SD2_CMD__PCIE_CTRL_MUX_10      = IOMUX_PAD(0x0740, 0x0358, 4, 0x0000, 0, 0),
+       MX6Q_PAD_SD2_CMD__GPIO_1_11             = IOMUX_PAD(0x0740, 0x0358, 5, 0x0000, 0, 0),
+       MX6Q_PAD_SD2_DAT3__USDHC2_DAT3          = IOMUX_PAD(0x0744, 0x035C, 0, 0x0000, 0, 0),
+       MX6Q_PAD_SD2_DAT3__ECSPI5_SS3           = IOMUX_PAD(0x0744, 0x035C, 1, 0x0000, 0, 0),
+       MX6Q_PAD_SD2_DAT3__KPP_COL_6            = IOMUX_PAD(0x0744, 0x035C, 2, 0x08EC, 2, 0),
+       MX6Q_PAD_SD2_DAT3__AUDMUX_AUD4_TXC      = IOMUX_PAD(0x0744, 0x035C, 3, 0x07C4, 1, 0),
+       MX6Q_PAD_SD2_DAT3__PCIE_CTRL_MUX_11     = IOMUX_PAD(0x0744, 0x035C, 4, 0x0000, 0, 0),
+       MX6Q_PAD_SD2_DAT3__GPIO_1_12            = IOMUX_PAD(0x0744, 0x035C, 5, 0x0000, 0, 0),
+       MX6Q_PAD_SD2_DAT3__SJC_DONE             = IOMUX_PAD(0x0744, 0x035C, 6, 0x0000, 0, 0),
+       MX6Q_PAD_SD2_DAT3__ANATOP_TESTO_3       = IOMUX_PAD(0x0744, 0x035C, 7, 0x0000, 0, 0),
+};
+
+#endif /* __ASM_ARCH_MX6_MX6X_PINS_H__ */
diff --git a/arch/arm/include/asm/arch-mx6/sys_proto.h b/arch/arm/include/asm/arch-mx6/sys_proto.h
new file mode 100644 (file)
index 0000000..668e77a
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+ * (C) Copyright 2009
+ * Stefano Babic, DENX Software Engineering, sbabic@denx.de.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#ifndef _SYS_PROTO_H_
+#define _SYS_PROTO_H_
+
+#define is_soc_rev(rev)        ((get_cpu_rev() & 0xFF) - rev)
+
+u32 get_cpu_rev(void);
+
+/*
+ * Initializes on-chip ethernet controllers.
+ * to override, implement board_eth_init()
+ */
+
+int fecmxc_initialize(bd_t *bis);
+
+#endif
index d3308f7a811dc5570a4421fae6bbbcc42df40122..4ca75f9f93d4b13b6a3c1437448ca459e51019b5 100644 (file)
@@ -46,6 +46,9 @@ extern ulong IRQ_STACK_START_IN;      /* 8 bytes in IRQ stack */
 int    cpu_init(void);
 int    cleanup_before_linux(void);
 
+/* Set up ARMv7 MMU, caches and TLBs */
+void   cpu_init_cp15(void);
+
 /* cpu/.../arch/cpu.c */
 int    arch_cpu_init(void);
 int    arch_misc_init(void);
index b6f002fe36f466e570c819b782e543e5468d3023..aa16c7d1560b763b3c77f385435c085a8876e9f2 100644 (file)
@@ -27,10 +27,8 @@ LIB  = $(obj)lib$(BOARD).o
 
 ifndef CONFIG_SPL_BUILD
 COBJS  := m28evk.o
-endif
-
-ifdef  CONFIG_SPL_BUILD
-COBJS  := mem_init.o mmc_boot.o power_init.o memsize.o
+else
+COBJS  := spl_boot.o
 endif
 
 SRCS   := $(COBJS:.o=.c)
@@ -41,11 +39,6 @@ $(LIB):      $(obj).depend $(OBJS)
 
 all:   $(ALL)
 
-ifdef  CONFIG_SPL_BUILD
-memsize.c:
-       ln -sf $(TOPDIR)/common/memsize.c $@
-endif
-
 #########################################################################
 
 # defines $(obj).depend target
index 8cf3dc9d4e5d83f354d4f8b7b2db53d2c0ea49ed..fcee046e1d9b833436dbc3a9a1e80d4455cf56af 100644 (file)
@@ -104,7 +104,7 @@ static int m28_mmc_wp(int id)
 
 int board_mmc_init(bd_t *bis)
 {
-       /* Configure WP as output */
+       /* Configure WP as input. */
        gpio_direction_input(MX28_PAD_AUART2_CTS__GPIO_3_10);
 
        return mxsmmc_initialize(bis, 0, m28_mmc_wp);
similarity index 87%
rename from board/denx/m28evk/mmc_boot.c
rename to board/denx/m28evk/spl_boot.c
index 86d3ab5e1cb2565010df73aad2f1720b44712183..86d7d876daf0e166fffdcc223855b6f32f72f75e 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Freescale i.MX28 Boot setup
+ * DENX M28 Boot setup
  *
  * Copyright (C) 2011 Marek Vasut <marek.vasut@gmail.com>
  * on behalf of DENX Software Engineering GmbH
 #include <config.h>
 #include <asm/io.h>
 #include <asm/arch/iomux-mx28.h>
-
-#include "m28_init.h"
-
-/*
- * This delay function is intended to be used only in early stage of boot, where
- * clock are not set up yet. The timer used here is reset on every boot and
- * takes a few seconds to roll. The boot doesn't take that long, so to keep the
- * code simple, it doesn't take rolling into consideration.
- */
-#define        HW_DIGCTRL_MICROSECONDS 0x8001c0c0
-void early_delay(int delay)
-{
-       uint32_t st = readl(HW_DIGCTRL_MICROSECONDS);
-       st += delay;
-       while (st > readl(HW_DIGCTRL_MICROSECONDS))
-               ;
-}
+#include <asm/arch/imx-regs.h>
+#include <asm/arch/sys_proto.h>
 
 #define        MUX_CONFIG_LED  (MXS_PAD_3V3 | MXS_PAD_4MA | MXS_PAD_NOPULL)
 #define        MUX_CONFIG_LCD  (MXS_PAD_3V3 | MXS_PAD_4MA)
@@ -109,10 +94,6 @@ const iomux_cfg_t iomux_setup[] = {
        MX28_PAD_GPMI_RDY2__CAN0_TX,
        MX28_PAD_GPMI_RDY3__CAN0_RX,
 
-       /* I2C */
-       MX28_PAD_I2C0_SCL__I2C0_SCL,
-       MX28_PAD_I2C0_SDA__I2C0_SDA,
-
        /* TSC2007 */
        MX28_PAD_SAIF0_MCLK__GPIO_3_20 | MUX_CONFIG_TSC,
 
@@ -235,39 +216,5 @@ const iomux_cfg_t iomux_setup[] = {
 
 void board_init_ll(void)
 {
-       mxs_iomux_setup_multiple_pads(iomux_setup, ARRAY_SIZE(iomux_setup));
-       mx28_power_init();
-       mx28_mem_init();
-       mx28_power_wait_pswitch();
-}
-
-/* Support aparatus */
-inline void board_init_f(unsigned long bootflag)
-{
-       for (;;)
-               ;
-}
-
-inline void board_init_r(gd_t *id, ulong dest_addr)
-{
-       for (;;)
-               ;
-}
-
-inline int printf(const char *fmt, ...)
-{
-       return 0;
-}
-
-inline void __coloured_LED_init(void) {}
-inline void __red_LED_on(void) {}
-void coloured_LED_init(void)
-       __attribute__((weak, alias("__coloured_LED_init")));
-void red_LED_on(void)
-       __attribute__((weak, alias("__red_LED_on")));
-void hang(void) __attribute__ ((noreturn));
-void hang(void)
-{
-       for (;;)
-               ;
+       mx28_common_spl_init(iomux_setup, ARRAY_SIZE(iomux_setup));
 }
diff --git a/board/freescale/mx6qarm2/Makefile b/board/freescale/mx6qarm2/Makefile
new file mode 100644 (file)
index 0000000..79bc315
--- /dev/null
@@ -0,0 +1,42 @@
+#
+# Copyright (C) 2007, Guennadi Liakhovetski <lg@denx.de>
+#
+# (C) Copyright 2011 Freescale Semiconductor, Inc.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+# MA 02111-1307 USA
+#
+
+include $(TOPDIR)/config.mk
+
+LIB    = $(obj)lib$(BOARD).o
+
+COBJS  := mx6qarm2.o
+
+SRCS   := $(SOBJS:.o=.S) $(COBJS:.o=.c)
+OBJS   := $(addprefix $(obj),$(COBJS))
+SOBJS  := $(addprefix $(obj),$(SOBJS))
+
+$(LIB):        $(obj).depend $(OBJS) $(SOBJS)
+       $(call cmd_link_o_target, $(OBJS) $(SOBJS))
+
+#########################################################################
+
+# defines $(obj).depend target
+include $(SRCTREE)/rules.mk
+
+sinclude $(obj).depend
+
+#########################################################################
diff --git a/board/freescale/mx6qarm2/imximage.cfg b/board/freescale/mx6qarm2/imximage.cfg
new file mode 100644 (file)
index 0000000..ffac1b4
--- /dev/null
@@ -0,0 +1,167 @@
+# Copyright (C) 2011 Freescale Semiconductor, Inc.
+# Jason Liu <r64343@freescale.com>
+#
+# See file CREDITS for list of people who contributed to this
+# project.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not write to the Free Software
+# Foundation Inc. 51 Franklin Street Fifth Floor Boston,
+# MA 02110-1301 USA
+#
+# Refer docs/README.imxmage for more details about how-to configure
+# and create imximage boot image
+#
+# The syntax is taken as close as possible with the kwbimage
+
+# image version
+
+IMAGE_VERSION 2
+
+# Boot Device : one of
+# spi, sd (the board has no nand neither onenand)
+
+BOOT_FROM      sd
+
+# Device Configuration Data (DCD)
+#
+# Each entry must have the format:
+# Addr-type           Address        Value
+#
+# where:
+#      Addr-type register length (1,2 or 4 bytes)
+#      Address   absolute address of the register
+#      value     value to be stored in the register
+DATA 4 0x020e05a8 0x00000030
+DATA 4 0x020e05b0 0x00000030
+DATA 4 0x020e0524 0x00000030
+DATA 4 0x020e051c 0x00000030
+
+DATA 4 0x020e0518 0x00000030
+DATA 4 0x020e050c 0x00000030
+DATA 4 0x020e05b8 0x00000030
+DATA 4 0x020e05c0 0x00000030
+
+DATA 4 0x020e05ac 0x00020030
+DATA 4 0x020e05b4 0x00020030
+DATA 4 0x020e0528 0x00020030
+DATA 4 0x020e0520 0x00020030
+
+DATA 4 0x020e0514 0x00020030
+DATA 4 0x020e0510 0x00020030
+DATA 4 0x020e05bc 0x00020030
+DATA 4 0x020e05c4 0x00020030
+
+DATA 4 0x020e056c 0x00020030
+DATA 4 0x020e0578 0x00020030
+DATA 4 0x020e0588 0x00020030
+DATA 4 0x020e0594 0x00020030
+
+DATA 4 0x020e057c 0x00020030
+DATA 4 0x020e0590 0x00003000
+DATA 4 0x020e0598 0x00003000
+DATA 4 0x020e058c 0x00000000
+
+DATA 4 0x020e059c 0x00003030
+DATA 4 0x020e05a0 0x00003030
+DATA 4 0x020e0784 0x00000030
+DATA 4 0x020e0788 0x00000030
+
+DATA 4 0x020e0794 0x00000030
+DATA 4 0x020e079c 0x00000030
+DATA 4 0x020e07a0 0x00000030
+DATA 4 0x020e07a4 0x00000030
+
+DATA 4 0x020e07a8 0x00000030
+DATA 4 0x020e0748 0x00000030
+DATA 4 0x020e074c 0x00000030
+DATA 4 0x020e0750 0x00020000
+
+DATA 4 0x020e0758 0x00000000
+DATA 4 0x020e0774 0x00020000
+DATA 4 0x020e078c 0x00000030
+DATA 4 0x020e0798 0x000C0000
+
+DATA 4 0x021b081c 0x33333333
+DATA 4 0x021b0820 0x33333333
+DATA 4 0x021b0824 0x33333333
+DATA 4 0x021b0828 0x33333333
+
+DATA 4 0x021b481c 0x33333333
+DATA 4 0x021b4820 0x33333333
+DATA 4 0x021b4824 0x33333333
+DATA 4 0x021b4828 0x33333333
+
+DATA 4 0x021b0018 0x00081740
+
+DATA 4 0x021b001c 0x00008000
+DATA 4 0x021b000c 0x555A7975
+DATA 4 0x021b0010 0xFF538E64
+DATA 4 0x021b0014 0x01FF00DB
+DATA 4 0x021b002c 0x000026D2
+
+DATA 4 0x021b0030 0x005B0E21
+DATA 4 0x021b0008 0x09444040
+DATA 4 0x021b0004 0x00025576
+DATA 4 0x021b0040 0x00000027
+DATA 4 0x021b0000 0xC31A0000
+
+DATA 4 0x021b001c 0x04088032
+DATA 4 0x021b001c 0x0408803A
+DATA 4 0x021b001c 0x00008033
+DATA 4 0x021b001c 0x0000803B
+DATA 4 0x021b001c 0x00428031
+DATA 4 0x021b001c 0x00428039
+DATA 4 0x021b001c 0x09408030
+DATA 4 0x021b001c 0x09408038
+
+DATA 4 0x021b001c 0x04008040
+DATA 4 0x021b001c 0x04008048
+DATA 4 0x021b0800 0xA1380003
+DATA 4 0x021b4800 0xA1380003
+DATA 4 0x021b0020 0x00005800
+DATA 4 0x021b0818 0x00022227
+DATA 4 0x021b4818 0x00022227
+
+DATA 4 0x021b083c 0x434B0350
+DATA 4 0x021b0840 0x034C0359
+DATA 4 0x021b483c 0x434B0350
+DATA 4 0x021b4840 0x03650348
+DATA 4 0x021b0848 0x4436383B
+DATA 4 0x021b4848 0x39393341
+DATA 4 0x021b0850 0x35373933
+DATA 4 0x021b4850 0x48254A36
+
+DATA 4 0x021b080c 0x001F001F
+DATA 4 0x021b0810 0x001F001F
+
+DATA 4 0x021b480c 0x00440044
+DATA 4 0x021b4810 0x00440044
+
+DATA 4 0x021b08b8 0x00000800
+DATA 4 0x021b48b8 0x00000800
+
+DATA 4 0x021b001c 0x00000000
+DATA 4 0x021b0404 0x00011006
+
+DATA 4 0x020e0010 0xF00000FF
+DATA 4 0x020e0018 0x00070007
+DATA 4 0x020e001c 0x00070007
+
+DATA 4 0x020c4068 0x00C03F3F
+DATA 4 0x020c406c 0x0030FC00
+DATA 4 0x020c4070 0x0FFFC000
+DATA 4 0x020c4074 0x3FF00000
+DATA 4 0x020c4078 0x00FFF300
+DATA 4 0x020c407c 0x0F0000C3
+DATA 4 0x020c4080 0x000003FC
diff --git a/board/freescale/mx6qarm2/mx6qarm2.c b/board/freescale/mx6qarm2/mx6qarm2.c
new file mode 100644 (file)
index 0000000..89e0e76
--- /dev/null
@@ -0,0 +1,155 @@
+/*
+ * Copyright (C) 2010-2011 Freescale Semiconductor, Inc.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#include <common.h>
+#include <asm/io.h>
+#include <asm/arch/imx-regs.h>
+#include <asm/arch/mx6x_pins.h>
+#include <asm/arch/iomux-v3.h>
+#include <asm/errno.h>
+#include <asm/gpio.h>
+#include <mmc.h>
+#include <fsl_esdhc.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+#define UART_PAD_CTRL  (PAD_CTL_PKE | PAD_CTL_PUE |            \
+       PAD_CTL_PUS_100K_UP | PAD_CTL_SPEED_MED |               \
+       PAD_CTL_DSE_40ohm   | PAD_CTL_SRE_FAST  | PAD_CTL_HYS)
+
+#define USDHC_PAD_CTRL (PAD_CTL_PKE | PAD_CTL_PUE |            \
+       PAD_CTL_PUS_47K_UP  | PAD_CTL_SPEED_LOW |               \
+       PAD_CTL_DSE_80ohm   | PAD_CTL_SRE_FAST  | PAD_CTL_HYS)
+
+int dram_init(void)
+{
+       gd->ram_size = get_ram_size((void *)PHYS_SDRAM, PHYS_SDRAM_SIZE);
+
+       return 0;
+}
+
+iomux_v3_cfg_t uart4_pads[] = {
+       MX6Q_PAD_KEY_COL0__UART4_TXD | MUX_PAD_CTRL(UART_PAD_CTRL),
+       MX6Q_PAD_KEY_ROW0__UART4_RXD | MUX_PAD_CTRL(UART_PAD_CTRL),
+};
+
+iomux_v3_cfg_t usdhc3_pads[] = {
+       MX6Q_PAD_SD3_CLK__USDHC3_CLK   | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6Q_PAD_SD3_CMD__USDHC3_CMD   | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6Q_PAD_SD3_DAT0__USDHC3_DAT0 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6Q_PAD_SD3_DAT1__USDHC3_DAT1 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6Q_PAD_SD3_DAT2__USDHC3_DAT2 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6Q_PAD_SD3_DAT3__USDHC3_DAT3 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6Q_PAD_SD3_DAT4__USDHC3_DAT4 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6Q_PAD_SD3_DAT5__USDHC3_DAT5 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6Q_PAD_SD3_DAT6__USDHC3_DAT6 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6Q_PAD_SD3_DAT7__USDHC3_DAT7 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6Q_PAD_NANDF_CS0__GPIO_6_11  | MUX_PAD_CTRL(NO_PAD_CTRL), /* CD */
+};
+
+iomux_v3_cfg_t usdhc4_pads[] = {
+       MX6Q_PAD_SD4_CLK__USDHC4_CLK   | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6Q_PAD_SD4_CMD__USDHC4_CMD   | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6Q_PAD_SD4_DAT0__USDHC4_DAT0 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6Q_PAD_SD4_DAT1__USDHC4_DAT1 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6Q_PAD_SD4_DAT2__USDHC4_DAT2 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6Q_PAD_SD4_DAT3__USDHC4_DAT3 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6Q_PAD_SD4_DAT4__USDHC4_DAT4 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6Q_PAD_SD4_DAT5__USDHC4_DAT5 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6Q_PAD_SD4_DAT6__USDHC4_DAT6 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6Q_PAD_SD4_DAT7__USDHC4_DAT7 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+};
+
+static void setup_iomux_uart(void)
+{
+       imx_iomux_v3_setup_multiple_pads(uart4_pads, ARRAY_SIZE(uart4_pads));
+}
+
+#ifdef CONFIG_FSL_ESDHC
+struct fsl_esdhc_cfg usdhc_cfg[2] = {
+       {USDHC3_BASE_ADDR, 1},
+       {USDHC4_BASE_ADDR, 1},
+};
+
+int board_mmc_getcd(u8 *cd, struct mmc *mmc)
+{
+       struct fsl_esdhc_cfg *cfg = (struct fsl_esdhc_cfg *)mmc->priv;
+
+       if (cfg->esdhc_base == USDHC3_BASE_ADDR) {
+               gpio_direction_input(171); /*GPIO6_11*/
+               *cd = gpio_get_value(171);
+       } else /* Don't have the CD GPIO pin on board */
+               *cd = 0;
+
+       return 0;
+}
+
+int board_mmc_init(bd_t *bis)
+{
+       s32 status = 0;
+       u32 index = 0;
+
+       for (index = 0; index < CONFIG_SYS_FSL_USDHC_NUM; ++index) {
+               switch (index) {
+               case 0:
+                       imx_iomux_v3_setup_multiple_pads(
+                               usdhc3_pads, ARRAY_SIZE(usdhc3_pads));
+                       break;
+               case 1:
+                       imx_iomux_v3_setup_multiple_pads(
+                               usdhc4_pads, ARRAY_SIZE(usdhc4_pads));
+                       break;
+               default:
+                       printf("Warning: you configured more USDHC controllers"
+                               "(%d) then supported by the board (%d)\n",
+                               index + 1, CONFIG_SYS_FSL_USDHC_NUM);
+                       return status;
+               }
+
+               status |= fsl_esdhc_initialize(bis, &usdhc_cfg[index]);
+       }
+
+       return status;
+}
+#endif
+
+int board_early_init_f(void)
+{
+       setup_iomux_uart();
+
+       return 0;
+}
+
+int board_init(void)
+{
+       /* address of boot parameters */
+       gd->bd->bi_boot_params = PHYS_SDRAM + 0x100;
+
+       return 0;
+}
+
+int checkboard(void)
+{
+       puts("Board: MX6Q-Armadillo2\n");
+
+       return 0;
+}
index 370a25906dc377917d7cd2ca397e84d60ed4611f..c806a6b3cb2ce0e53500223df34e252b1aed0187 100644 (file)
 #include <asm/arch/uart.h>
 #include "board.h"
 
-#ifdef CONFIG_TEGRA2_MMC
-#include <mmc.h>
-#endif
-
 DECLARE_GLOBAL_DATA_PTR;
 
 const struct tegra2_sysinfo sysinfo = {
@@ -100,33 +96,6 @@ static void pin_mux_uart(void)
 #endif /* CONFIG_TEGRA2_ENABLE_UARTD */
 }
 
-#ifdef CONFIG_TEGRA2_MMC
-/*
- * Routine: pin_mux_mmc
- * Description: setup the pin muxes/tristate values for the SDMMC(s)
- */
-static void pin_mux_mmc(void)
-{
-       /* SDMMC4: config 3, x8 on 2nd set of pins */
-       pinmux_set_func(PINGRP_ATB, PMUX_FUNC_SDIO4);
-       pinmux_set_func(PINGRP_GMA, PMUX_FUNC_SDIO4);
-       pinmux_set_func(PINGRP_GME, PMUX_FUNC_SDIO4);
-
-       pinmux_tristate_disable(PINGRP_ATB);
-       pinmux_tristate_disable(PINGRP_GMA);
-       pinmux_tristate_disable(PINGRP_GME);
-
-       /* SDMMC3: SDIO3_CLK, SDIO3_CMD, SDIO3_DAT[3:0] */
-       pinmux_set_func(PINGRP_SDB, PMUX_FUNC_SDIO3);
-       pinmux_set_func(PINGRP_SDC, PMUX_FUNC_SDIO3);
-       pinmux_set_func(PINGRP_SDD, PMUX_FUNC_SDIO3);
-
-       pinmux_tristate_disable(PINGRP_SDC);
-       pinmux_tristate_disable(PINGRP_SDD);
-       pinmux_tristate_disable(PINGRP_SDB);
-}
-#endif
-
 /*
  * Routine: board_init
  * Description: Early hardware init.
@@ -142,30 +111,12 @@ int board_init(void)
        return 0;
 }
 
-#ifdef CONFIG_TEGRA2_MMC
-/* this is a weak define that we are overriding */
-int board_mmc_init(bd_t *bd)
-{
-       debug("board_mmc_init called\n");
-       /* Enable muxes, etc. for SDMMC controllers */
-       pin_mux_mmc();
-       gpio_config_mmc();
-
-       debug("board_mmc_init: init eMMC\n");
-       /* init dev 0, eMMC chip, with 4-bit bus */
-       tegra2_mmc_init(0, 4);
-
-       debug("board_mmc_init: init SD slot\n");
-       /* init dev 1, SD slot, with 4-bit bus */
-       tegra2_mmc_init(1, 4);
-
-       return 0;
-}
-#endif
-
 #ifdef CONFIG_BOARD_EARLY_INIT_F
 int board_early_init_f(void)
 {
+       /* We didn't do this init in start.S, so do it now */
+       cpu_init_cp15();
+
        /* Initialize essential common plls */
        clock_early_init();
 
@@ -177,9 +128,6 @@ int board_early_init_f(void)
 
        /* Initialize periph GPIOs */
        gpio_config_uart();
-
-       /* Init UART, scratch regs, and start CPU */
-       tegra2_start();
        return 0;
 }
 #endif /* EARLY_INIT */
index 344e70283e318c7b66cf84b209f2f52a1791b99a..1f57086602408044b7c5fd1c9667fd4ba8e58a3f 100644 (file)
@@ -24,9 +24,7 @@
 #ifndef _BOARD_H_
 #define _BOARD_H_
 
-void tegra2_start(void);
 void gpio_config_uart(void);
-void gpio_config_mmc(void);
-int tegra2_mmc_init(int dev_index, int bus_width);
+int tegra2_mmc_init(int dev_index, int bus_width, int pwr_gpio, int cd_gpio);
 
 #endif /* BOARD_H */
index cbb30d63014ee98b26937d9849c47d88268b98c6..3cbe820c95156e725ac206d4376ca0b0da7100b6 100644 (file)
 #include <common.h>
 #include <asm/io.h>
 #include <asm/arch/tegra2.h>
+#include <asm/arch/pinmux.h>
+#include <asm/gpio.h>
 #ifdef CONFIG_TEGRA2_MMC
 #include <mmc.h>
 #endif
+#include "../common/board.h"
 
 /*
  * Routine: gpio_config_uart
@@ -38,23 +41,55 @@ void gpio_config_uart(void)
 
 #ifdef CONFIG_TEGRA2_MMC
 /*
- * Routine: gpio_config_mmc
- * Description: Set GPIOs for SD card
+ * Routine: pin_mux_mmc
+ * Description: setup the pin muxes/tristate values for the SDMMC(s)
  */
-void gpio_config_mmc(void)
+static void pin_mux_mmc(void)
 {
-       /* Not implemented for now */
+       /* SDMMC4: config 3, x8 on 2nd set of pins */
+       pinmux_set_func(PINGRP_ATB, PMUX_FUNC_SDIO4);
+       pinmux_set_func(PINGRP_GMA, PMUX_FUNC_SDIO4);
+       pinmux_set_func(PINGRP_GME, PMUX_FUNC_SDIO4);
+
+       pinmux_tristate_disable(PINGRP_ATB);
+       pinmux_tristate_disable(PINGRP_GMA);
+       pinmux_tristate_disable(PINGRP_GME);
+
+       /* For power GPIO PI6 */
+       pinmux_tristate_disable(PINGRP_ATA);
+       /* For CD GPIO PH2 */
+       pinmux_tristate_disable(PINGRP_ATD);
+
+       /* SDMMC2: SDIO2_CLK, SDIO2_CMD, SDIO2_DAT[7:0] */
+       pinmux_set_func(PINGRP_DTA, PMUX_FUNC_SDIO2);
+       pinmux_set_func(PINGRP_DTD, PMUX_FUNC_SDIO2);
+
+       pinmux_tristate_disable(PINGRP_DTA);
+       pinmux_tristate_disable(PINGRP_DTD);
+
+       /* For power GPIO PT3 */
+       pinmux_tristate_disable(PINGRP_DTB);
+       /* For CD GPIO PI5 */
+       pinmux_tristate_disable(PINGRP_ATC);
 }
 
 /* this is a weak define that we are overriding */
-int board_mmc_getcd(u8 *cd, struct mmc *mmc)
+int board_mmc_init(bd_t *bd)
 {
-       debug("board_mmc_getcd called\n");
-       /*
-        * Hard-code CD presence for now. Need to add GPIO inputs
-        * for Harmony
-        */
-       *cd = 1;
+       debug("board_mmc_init called\n");
+
+       /* Enable muxes, etc. for SDMMC controllers */
+       pin_mux_mmc();
+
+       debug("board_mmc_init: init SD slot J26\n");
+       /* init dev 0, SD slot J26, with 4-bit bus */
+       /* The board has an 8-bit bus, but 8-bit doesn't work yet */
+       tegra2_mmc_init(0, 4, GPIO_PI6, GPIO_PH2);
+
+       debug("board_mmc_init: init SD slot J5\n");
+       /* init dev 2, SD slot J5, with 4-bit bus */
+       tegra2_mmc_init(2, 4, GPIO_PT3, GPIO_PI5);
+
        return 0;
 }
 #endif
index bc67d0f94c0be159786f231117decba110b7bea7..7f2827b8be096f72ee77607a730cfdfe3f7b34d2 100644 (file)
 #include <common.h>
 #include <asm/io.h>
 #include <asm/arch/tegra2.h>
+#include <asm/arch/pinmux.h>
 #include <asm/gpio.h>
 #ifdef CONFIG_TEGRA2_MMC
 #include <mmc.h>
 #endif
+#include "../common/board.h"
 
 /*
- * Routine: gpio_config_uart
+ * Routine: gpio_config_uart_seaboard
  * Description: Force GPIO_PI3 low on Seaboard so UART4 works.
  */
-void gpio_config_uart(void)
+static void gpio_config_uart_seaboard(void)
 {
-       int gp = GPIO_PI3;
-       struct gpio_ctlr *gpio = (struct gpio_ctlr *)NV_PA_GPIO_BASE;
-       struct gpio_ctlr_bank *bank = &gpio->gpio_bank[GPIO_BANK(gp)];
-       u32 val;
-
        /* Enable UART via GPIO_PI3 (port 8, bit 3) so serial console works */
-       val = readl(&bank->gpio_config[GPIO_PORT(gp)]);
-       val |= 1 << GPIO_BIT(gp);
-       writel(val, &bank->gpio_config[GPIO_PORT(gp)]);
-
-       val = readl(&bank->gpio_out[GPIO_PORT(gp)]);
-       val &= ~(1 << GPIO_BIT(gp));
-       writel(val, &bank->gpio_out[GPIO_PORT(gp)]);
+       gpio_request(GPIO_PI3, NULL);
+       gpio_direction_output(GPIO_PI3, 0);
+}
 
-       val = readl(&bank->gpio_dir_out[GPIO_PORT(gp)]);
-       val |= 1 << GPIO_BIT(gp);
-       writel(val, &bank->gpio_dir_out[GPIO_PORT(gp)]);
+void gpio_config_uart(void)
+{
+       if (machine_is_ventana())
+               return;
+       gpio_config_uart_seaboard();
 }
 
 #ifdef CONFIG_TEGRA2_MMC
 /*
- * Routine: gpio_config_mmc
- * Description: Set GPIOs for SDMMC3 SDIO slot.
+ * Routine: pin_mux_mmc
+ * Description: setup the pin muxes/tristate values for the SDMMC(s)
  */
-void gpio_config_mmc(void)
+static void pin_mux_mmc(void)
 {
-       /* Set EN_VDDIO_SD (GPIO I6) */
-       gpio_direction_output(GPIO_PI6, 1);
+       /* SDMMC4: config 3, x8 on 2nd set of pins */
+       pinmux_set_func(PINGRP_ATB, PMUX_FUNC_SDIO4);
+       pinmux_set_func(PINGRP_GMA, PMUX_FUNC_SDIO4);
+       pinmux_set_func(PINGRP_GME, PMUX_FUNC_SDIO4);
 
-       /* Config pin as GPI for Card Detect (GPIO I5) */
-       gpio_direction_input(GPIO_PI5);
+       pinmux_tristate_disable(PINGRP_ATB);
+       pinmux_tristate_disable(PINGRP_GMA);
+       pinmux_tristate_disable(PINGRP_GME);
+
+       /* SDMMC3: SDIO3_CLK, SDIO3_CMD, SDIO3_DAT[3:0] */
+       pinmux_set_func(PINGRP_SDB, PMUX_FUNC_SDIO3);
+       pinmux_set_func(PINGRP_SDC, PMUX_FUNC_SDIO3);
+       pinmux_set_func(PINGRP_SDD, PMUX_FUNC_SDIO3);
+
+       pinmux_tristate_disable(PINGRP_SDC);
+       pinmux_tristate_disable(PINGRP_SDD);
+       pinmux_tristate_disable(PINGRP_SDB);
+
+       /* For power GPIO PI6 */
+       pinmux_tristate_disable(PINGRP_ATA);
+       /* For CD GPIO PI5 */
+       pinmux_tristate_disable(PINGRP_ATC);
 }
 
 /* this is a weak define that we are overriding */
-int board_mmc_getcd(u8 *cd, struct mmc *mmc)
+int board_mmc_init(bd_t *bd)
 {
-       debug("board_mmc_getcd called\n");
-       *cd = 1;                        /* Assume card is inserted, or eMMC */
+       debug("board_mmc_init called\n");
+
+       /* Enable muxes, etc. for SDMMC controllers */
+       pin_mux_mmc();
+
+       debug("board_mmc_init: init eMMC\n");
+       /* init dev 0, eMMC chip, with 4-bit bus */
+       /* The board has an 8-bit bus, but 8-bit doesn't work yet */
+       tegra2_mmc_init(0, 4, -1, -1);
 
-       if (IS_SD(mmc)) {
-               /* Seaboard SDMMC3 = SDIO3_CD = GPIO_PI5 */
-               if (gpio_get_value(GPIO_PI5))
-                       *cd = 0;
-       }
+       debug("board_mmc_init: init SD slot\n");
+       /* init dev 1, SD slot, with 4-bit bus */
+       tegra2_mmc_init(1, 4, GPIO_PI6, GPIO_PI5);
 
        return 0;
 }
diff --git a/board/nvidia/ventana/Makefile b/board/nvidia/ventana/Makefile
new file mode 100644 (file)
index 0000000..9e5a87f
--- /dev/null
@@ -0,0 +1,49 @@
+#
+#  (C) Copyright 2010,2011
+#  NVIDIA Corporation <www.nvidia.com>
+#
+#
+#  See file CREDITS for list of people who contributed to this
+#  project.
+#
+#  This program is free software; you can redistribute it and/or
+#  modify it under the terms of the GNU General Public License as
+#  published by the Free Software Foundation; either version 2 of
+#  the License, or (at your option) any later version.
+#
+#  This program is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#  GNU General Public License for more details.
+#
+#  You should have received a copy of the GNU General Public License
+#  along with this program; if not, write to the Free Software
+#  Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+#  MA 02111-1307 USA
+#
+
+include $(TOPDIR)/config.mk
+
+ifneq ($(OBJTREE),$(SRCTREE))
+$(shell mkdir -p $(obj)../common)
+endif
+
+LIB    = $(obj)lib$(BOARD).o
+
+COBJS  += ../seaboard/seaboard.o
+COBJS  += ../common/board.o
+
+SRCS   := $(COBJS:.o=.c)
+OBJS   := $(addprefix $(obj),$(COBJS))
+
+$(LIB):        $(obj).depend $(OBJS)
+       $(call cmd_link_o_target, $(OBJS))
+
+#########################################################################
+
+# defines $(obj).depend target
+include $(SRCTREE)/rules.mk
+
+sinclude $(obj).depend
+
+#########################################################################
index ddca1e21fce2b4e9bba95e1deb059220066f999d..0eebbfc24487e349e22a035aa8fe9b3ff6adf914 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Lowlevel setup for ORIGEN board based on S5PV310
+ * Lowlevel setup for ORIGEN board based on EXYNOS4210
  *
  * Copyright (C) 2011 Samsung Electronics
  *
@@ -43,11 +43,11 @@ lowlevel_init:
 
        /* r5 has always zero */
        mov     r5, #0
-       ldr     r7, =S5PC210_GPIO_PART1_BASE
-       ldr     r6, =S5PC210_GPIO_PART2_BASE
+       ldr     r7, =EXYNOS4_GPIO_PART1_BASE
+       ldr     r6, =EXYNOS4_GPIO_PART2_BASE
 
        /* check reset status */
-       ldr     r0, =(S5PC210_POWER_BASE + INFORM1_OFFSET)
+       ldr     r0, =(EXYNOS4_POWER_BASE + INFORM1_OFFSET)
        ldr     r1, [r0]
 
        /* AFTR wakeup reset */
@@ -97,9 +97,9 @@ wakeup_reset:
 
 exit_wakeup:
        /* Load return address and jump to kernel */
-       ldr     r0, =(S5PC210_POWER_BASE + INFORM0_OFFSET)
+       ldr     r0, =(EXYNOS4_POWER_BASE + INFORM0_OFFSET)
 
-       /* r1 = physical address of s5pc210_cpu_resume function */
+       /* r1 = physical address of exynos4210_cpu_resume function */
        ldr     r1, [r0]
 
        /* Jump to kernel*/
@@ -113,7 +113,7 @@ exit_wakeup:
  */
 system_clock_init:
        push    {lr}
-       ldr     r0, =S5PC210_CLOCK_BASE
+       ldr     r0, =EXYNOS4_CLOCK_BASE
 
        /* APLL(1), MPLL(1), CORE(0), HPM(0) */
        ldr     r1, =CLK_SRC_CPU_VAL
@@ -290,13 +290,13 @@ uart_asm_init:
 
        /* setup UART0-UART3 GPIOs (part1) */
        mov     r0, r7
-       ldr     r1, =S5PC210_GPIO_A0_CON_VAL
-       str     r1, [r0, #S5PC210_GPIO_A0_CON_OFFSET]
-       ldr     r1, =S5PC210_GPIO_A1_CON_VAL
-       str     r1, [r0, #S5PC210_GPIO_A1_CON_OFFSET]
+       ldr     r1, =EXYNOS4_GPIO_A0_CON_VAL
+       str     r1, [r0, #EXYNOS4_GPIO_A0_CON_OFFSET]
+       ldr     r1, =EXYNOS4_GPIO_A1_CON_VAL
+       str     r1, [r0, #EXYNOS4_GPIO_A1_CON_OFFSET]
 
-       ldr r0, =S5PC210_UART_BASE
-       add r0, r0, #S5PC210_DEFAULT_UART_OFFSET
+       ldr r0, =EXYNOS4_UART_BASE
+       add r0, r0, #EXYNOS4_DEFAULT_UART_OFFSET
 
        ldr     r1, =ULCON_VAL
        str     r1, [r0, #ULCON_OFFSET]
index a798848ba102c2f2afd0c12e1f2533fd4102a2c5..b49b193a79a97ec7809f505b7b7298bbe20597ea 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Memory setup for ORIGEN board based on S5PV310
+ * Memory setup for ORIGEN board based on EXYNOS4210
  *
  * Copyright (C) 2011 Samsung Electronics
  *
@@ -38,7 +38,7 @@ mem_ctrl_asm_init:
        str r1, [r0]
 
 #ifdef SET_MIU
-       ldr     r0, =S5PC210_MIU_BASE
+       ldr     r0, =EXYNOS4_MIU_BASE
        /* Interleave: 2Bit, Interleave_bit1: 0x21, Interleave_bit2: 0x7 */
        ldr     r1, =0x20001507
        str     r1, [r0, #APB_SFR_INTERLEAVE_CONF_OFFSET]
@@ -48,7 +48,7 @@ mem_ctrl_asm_init:
        str     r1, [r0, #APB_SFR_ARBRITATION_CONF_OFFSET]
 #endif
        /* DREX0 */
-       ldr     r0, =S5PC210_DMC0_BASE
+       ldr     r0, =EXYNOS4_DMC0_BASE
 
        /*
         * DLL Parameter Setting:
@@ -229,7 +229,7 @@ mem_ctrl_asm_init:
        bne     8b
 
        /* DREX1 */
-       ldr     r0, =S5PC210_DMC1_BASE  @0x10410000
+       ldr     r0, =EXYNOS4_DMC1_BASE  @0x10410000
 
        /*
         * DLL Parameter Setting:
@@ -410,11 +410,11 @@ mem_ctrl_asm_init:
        bne     8b
 
        /* turn on DREX0, DREX1 */
-       ldr     r0, =S5PC210_DMC0_BASE
+       ldr     r0, =EXYNOS4_DMC0_BASE
        ldr     r1, =0x0FFF303a
        str     r1, [r0, #DMC_CONCONTROL]
 
-       ldr     r0, =S5PC210_DMC1_BASE
+       ldr     r0, =EXYNOS4_DMC1_BASE
        ldr     r1, =0x0FFF303a
        str     r1, [r0, #DMC_CONCONTROL]
 
index 8882646eca5aadf53becd59f312201bbfd3fc373..638e7b1edbc2e87e0714dcf5999a5dce75129de0 100644 (file)
 #include <asm/arch/mmc.h>
 
 DECLARE_GLOBAL_DATA_PTR;
-struct s5pc210_gpio_part1 *gpio1;
-struct s5pc210_gpio_part2 *gpio2;
+struct exynos4_gpio_part1 *gpio1;
+struct exynos4_gpio_part2 *gpio2;
 
 int board_init(void)
 {
-       gpio1 = (struct s5pc210_gpio_part1 *) S5PC210_GPIO_PART1_BASE;
-       gpio2 = (struct s5pc210_gpio_part2 *) S5PC210_GPIO_PART2_BASE;
+       gpio1 = (struct exynos4_gpio_part1 *) EXYNOS4_GPIO_PART1_BASE;
+       gpio2 = (struct exynos4_gpio_part2 *) EXYNOS4_GPIO_PART2_BASE;
 
        gd->bd->bi_boot_params = (PHYS_SDRAM_1 + 0x100UL);
        return 0;
index 63d85d8a8c1e65d45c701fd502b48431ac3d06e9..d949ad27b848220b341f3c39430eaf7a189e967f 100644 (file)
@@ -98,8 +98,8 @@
 #define INFORM1_OFFSET                 0x804
 
 /* GPIO Offsets for UART: GPIO Contol Register */
-#define S5PC210_GPIO_A0_CON_OFFSET     0x00
-#define S5PC210_GPIO_A1_CON_OFFSET     0x20
+#define EXYNOS4_GPIO_A0_CON_OFFSET     0x00
+#define EXYNOS4_GPIO_A1_CON_OFFSET     0x20
 
 /* UART Register offsets */
 #define ULCON_OFFSET           0x00
  * UART GPIO_A0/GPIO_A1 Control Register Value
  * 0x2: UART Function
  */
-#define S5PC210_GPIO_A0_CON_VAL        0x22222222
-#define S5PC210_GPIO_A1_CON_VAL        0x222222
+#define EXYNOS4_GPIO_A0_CON_VAL        0x22222222
+#define EXYNOS4_GPIO_A1_CON_VAL        0x222222
 
 /* ULCON: UART Line Control Value 8N1 */
 #define WORD_LEN_5_BIT         0x00
index 58b737bd122861e4dc9da0d7a9fc2552de5f6aa2..7a1ea98aed74f4d16056e26a42993c162fc167d7 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Lowlevel setup for SMDKV310 board based on S5PC210
+ * Lowlevel setup for SMDKV310 board based on EXYNOS4210
  *
  * Copyright (C) 2011 Samsung Electronics
  *
@@ -45,11 +45,11 @@ lowlevel_init:
 
        /* r5 has always zero */
        mov     r5, #0
-       ldr     r7, =S5PC210_GPIO_PART1_BASE
-       ldr     r6, =S5PC210_GPIO_PART2_BASE
+       ldr     r7, =EXYNOS4_GPIO_PART1_BASE
+       ldr     r6, =EXYNOS4_GPIO_PART2_BASE
 
        /* check reset status  */
-       ldr     r0, =(S5PC210_POWER_BASE + 0x81C)       @ INFORM7
+       ldr     r0, =(EXYNOS4_POWER_BASE + 0x81C)       @ INFORM7
        ldr     r1, [r0]
 
        /* AFTR wakeup reset */
@@ -95,9 +95,9 @@ wakeup_reset:
 
 exit_wakeup:
        /* Load return address and jump to kernel */
-       ldr     r0, =(S5PC210_POWER_BASE + 0x800)       @ INFORM0
+       ldr     r0, =(EXYNOS4_POWER_BASE + 0x800)       @ INFORM0
 
-       /* r1 = physical address of s5pc210_cpu_resume function */
+       /* r1 = physical address of exynos4210_cpu_resume function */
        ldr     r1, [r0]
 
        /* Jump to kernel*/
@@ -111,7 +111,7 @@ exit_wakeup:
  */
 system_clock_init:
        push    {lr}
-       ldr     r0, =S5PC210_CLOCK_BASE
+       ldr     r0, =EXYNOS4_CLOCK_BASE
 
        /* APLL(1), MPLL(1), CORE(0), HPM(0) */
        ldr     r1, =0x0101
@@ -388,12 +388,12 @@ uart_asm_init:
        /* setup UART0-UART3 GPIOs (part1) */
        mov     r0, r7
        ldr     r1, =0x22222222
-       str     r1, [r0, #0x00]                 @ S5PC210_GPIO_A0_OFFSET
+       str     r1, [r0, #0x00]                 @ EXYNOS4_GPIO_A0_OFFSET
        ldr     r1, =0x00222222
-       str     r1, [r0, #0x20]                 @ S5PC210_GPIO_A1_OFFSET
+       str     r1, [r0, #0x20]                 @ EXYNOS4_GPIO_A1_OFFSET
 
-       ldr r0, =S5PC210_UART_BASE
-       add r0, r0, #S5PC210_DEFAULT_UART_OFFSET
+       ldr r0, =EXYNOS4_UART_BASE
+       add r0, r0, #EXYNOS4_DEFAULT_UART_OFFSET
 
        ldr r1, =0x3C5
        str     r1, [r0, #0x4]
index 73aebe3c60956a598b4b7e411310bc5d696aeaab..d3b626597146127acfd16b46c66493aa1c1cfda6 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Memory setup for SMDKV310 board based on S5PC210
+ * Memory setup for SMDKV310 board based on EXYNOS4210
  *
  * Copyright (C) 2011 Samsung Electronics
  *
@@ -54,7 +54,7 @@ mem_ctrl_asm_init:
        str r1, [r0]
 
 #ifdef SET_MIU
-       ldr     r0, =S5PC210_MIU_BASE   @0x10600000
+       ldr     r0, =EXYNOS4_MIU_BASE   @0x10600000
 #ifdef CONFIG_MIU_1BIT_INTERLEAVED
        ldr     r1, =0x0000000c
        str     r1, [r0, #0x400]        @MIU_INTLV_CONFIG
@@ -89,7 +89,7 @@ mem_ctrl_asm_init:
 #endif
 #endif
        /* DREX0 */
-       ldr     r0, =S5PC210_DMC0_BASE  @0x10400000
+       ldr     r0, =EXYNOS4_DMC0_BASE  @0x10400000
 
        ldr     r1, =0xe0000086
        str     r1, [r0, #0x1C]         @DMC_PHYCONTROL1
@@ -221,7 +221,7 @@ mem_ctrl_asm_init:
        bne     8b
 
        /* DREX1 */
-       ldr     r0, =S5PC210_DMC1_BASE  @0x10410000
+       ldr     r0, =EXYNOS4_DMC1_BASE  @0x10410000
 
        ldr     r1, =0xe0000086
        str     r1, [r0, #0x1C]         @DMC_PHYCONTROL1
index d9caca7f185fdcbdfd9b06f0e2962ddbb84f68d0..81ac8f6f4a698158bb59d52fa4e7db45d985aa56 100644 (file)
@@ -29,8 +29,8 @@
 #include <asm/arch/sromc.h>
 
 DECLARE_GLOBAL_DATA_PTR;
-struct s5pc210_gpio_part1 *gpio1;
-struct s5pc210_gpio_part2 *gpio2;
+struct exynos4_gpio_part1 *gpio1;
+struct exynos4_gpio_part2 *gpio2;
 
 static void smc9115_pre_init(void)
 {
@@ -52,8 +52,8 @@ static void smc9115_pre_init(void)
 
 int board_init(void)
 {
-       gpio1 = (struct s5pc210_gpio_part1 *) S5PC210_GPIO_PART1_BASE;
-       gpio2 = (struct s5pc210_gpio_part2 *) S5PC210_GPIO_PART2_BASE;
+       gpio1 = (struct exynos4_gpio_part1 *) EXYNOS4_GPIO_PART1_BASE;
+       gpio2 = (struct exynos4_gpio_part2 *) EXYNOS4_GPIO_PART2_BASE;
 
        smc9115_pre_init();
 
index 67635bbfb230567c175eb6aa45efdbe7348b1b71..dc7f69ea44714c19d3301ab88a18b7ac5bf6f222 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Lowlevel setup for universal board based on S5PC210
+ * Lowlevel setup for universal board based on EXYNOS4210
  *
  * Copyright (C) 2010 Samsung Electronics
  * Kyungmin Park <kyungmin.park@samsung.com>
@@ -43,11 +43,11 @@ lowlevel_init:
        /* r5 has always zero */
        mov     r5, #0
 
-       ldr     r7, =S5PC210_GPIO_PART1_BASE
-       ldr     r6, =S5PC210_GPIO_PART2_BASE
+       ldr     r7, =EXYNOS4_GPIO_PART1_BASE
+       ldr     r6, =EXYNOS4_GPIO_PART2_BASE
 
        /* System Timer */
-       ldr     r0, =S5PC210_SYSTIMER_BASE
+       ldr     r0, =EXYNOS4_SYSTIMER_BASE
        ldr     r1, =0x5000
        str     r1, [r0, #0x0]
        ldr     r1, =0xffffffff
@@ -57,7 +57,7 @@ lowlevel_init:
 
        /* PMIC manual reset */
        /* nPOWER: XEINT_23: GPX2[7] */
-       add     r0, r6, #0xC40                  @ S5PC210_GPIO_X2_OFFSET
+       add     r0, r6, #0xC40                  @ EXYNOS4_GPIO_X2_OFFSET
        ldr     r1, [r0, #0x0]
        bic     r1, r1, #(0xf << 28)            @ 28 = 7 * 4-bit
        orr     r1, r1, #(0x1 << 28)            @ Output
@@ -71,7 +71,7 @@ lowlevel_init:
        bl      system_clock_init
 
        /* Disable Watchdog */
-       ldr     r0, =S5PC210_WATCHDOG_BASE              @0x10060000
+       ldr     r0, =EXYNOS4_WATCHDOG_BASE              @0x10060000
        str     r5, [r0]
 
        /* UART */
@@ -99,12 +99,12 @@ uart_asm_init:
         */
        mov     r0, r7
        ldr     r1, =0x22222222
-       str     r1, [r0, #0x00]                 @ S5PC210_GPIO_A0_OFFSET
+       str     r1, [r0, #0x00]                 @ EXYNOS4_GPIO_A0_OFFSET
        ldr     r1, =0x00223322
-       str     r1, [r0, #0x20]                 @ S5PC210_GPIO_A1_OFFSET
+       str     r1, [r0, #0x20]                 @ EXYNOS4_GPIO_A1_OFFSET
 
-       /* UART_SEL GPY4[7] (part2) at S5PC210 */
-       add     r0, r6, #0x1A0                  @ S5PC210_GPIO_Y4_OFFSET
+       /* UART_SEL GPY4[7] (part2) at EXYNOS4 */
+       add     r0, r6, #0x1A0                  @ EXYNOS4_GPIO_Y4_OFFSET
        ldr     r1, [r0, #0x0]
        bic     r1, r1, #(0xf << 28)            @ 28 = 7 * 4-bit
        orr     r1, r1, #(0x1 << 28)
@@ -125,7 +125,7 @@ uart_asm_init:
        nop
 
 system_clock_init:
-       ldr     r0, =S5PC210_CLOCK_BASE
+       ldr     r0, =EXYNOS4_CLOCK_BASE
 
        /* APLL(1), MPLL(1), CORE(0), HPM(0) */
        ldr     r1, =0x0101
@@ -326,7 +326,7 @@ system_clock_init:
        nop
 
 system_power_init:
-       ldr     r0, =S5PC210_POWER_BASE         @ 0x10020000
+       ldr     r0, =EXYNOS4_POWER_BASE         @ 0x10020000
 
        ldr     r2, =0x330C                     @ PS_HOLD_CONTROL
        ldr     r1, [r0, r2]
index d767eaac497d746a5aac1c09254040c3d7043e17..f9b8a76429d109056c07587a60cd19e467faa754 100644 (file)
@@ -31,8 +31,8 @@
 
 DECLARE_GLOBAL_DATA_PTR;
 
-struct s5pc210_gpio_part1 *gpio1;
-struct s5pc210_gpio_part2 *gpio2;
+struct exynos4_gpio_part1 *gpio1;
+struct exynos4_gpio_part2 *gpio2;
 unsigned int board_rev;
 
 u32 get_board_rev(void)
@@ -49,8 +49,8 @@ static void check_hw_revision(void);
 
 int board_init(void)
 {
-       gpio1 = (struct s5pc210_gpio_part1 *) S5PC210_GPIO_PART1_BASE;
-       gpio2 = (struct s5pc210_gpio_part2 *) S5PC210_GPIO_PART2_BASE;
+       gpio1 = (struct exynos4_gpio_part1 *) EXYNOS4_GPIO_PART1_BASE;
+       gpio2 = (struct exynos4_gpio_part2 *) EXYNOS4_GPIO_PART2_BASE;
 
        gd->bd->bi_arch_number = MACH_TYPE_UNIVERSAL_C210;
        gd->bd->bi_boot_params = PHYS_SDRAM_1 + 0x100;
index d847850068c38373758e8a2b8a654d9bdf0c7061..5b04dca1795440e477a981360f6069452f7c07f2 100644 (file)
@@ -180,6 +180,7 @@ mx53evk                      arm         armv7       mx53evk             freesca
 mx53loco                     arm         armv7       mx53loco            freescale      mx5            mx53loco:IMX_CONFIG=board/freescale/mx53loco/imximage.cfg
 mx53smd                      arm         armv7       mx53smd             freescale      mx5            mx53smd:IMX_CONFIG=board/freescale/mx53smd/imximage.cfg
 vision2                      arm         armv7       vision2             ttcontrol      mx5            vision2:IMX_CONFIG=board/ttcontrol/vision2/imximage_hynix.cfg
+mx6qarm2                     arm         armv7       mx6qarm2            freescale      mx6            mx6qarm2:IMX_CONFIG=board/freescale/mx6qarm2/imximage.cfg
 cm_t35                       arm         armv7       cm_t35              -              omap3
 omap3_overo                  arm         armv7       overo               -              omap3
 omap3_pandora                arm         armv7       pandora             -              omap3
@@ -202,11 +203,12 @@ omap4_sdp4430                arm         armv7       sdp4430             ti
 omap5_evm                    arm         armv7       omap5_evm           ti            omap5
 s5p_goni                     arm         armv7       goni                samsung        s5pc1xx
 smdkc100                     arm         armv7       smdkc100            samsung        s5pc1xx
-origen                      arm         armv7       origen              samsung        s5pc2xx
-s5pc210_universal            arm         armv7       universal_c210      samsung        s5pc2xx
-smdkv310                    arm         armv7       smdkv310            samsung        s5pc2xx
+origen                      arm         armv7       origen              samsung        exynos
+s5pc210_universal            arm         armv7       universal_c210      samsung        exynos
+smdkv310                    arm         armv7       smdkv310            samsung        exynos
 harmony                      arm         armv7       harmony             nvidia         tegra2
 seaboard                     arm         armv7       seaboard            nvidia         tegra2
+ventana                      arm         armv7       ventana             nvidia         tegra2
 u8500_href                   arm         armv7       u8500               st-ericsson    u8500
 actux1_4_16                  arm         ixp         actux1              -              -           actux1:FLASH2X2
 actux1_8_16                  arm         ixp         actux1              -              -           actux1:FLASH1X8
index b749ce022c87aee951c229f1347e68d8d12f1486..548982f18118e03866e22322ea5c4b0e2c5e41cc 100644 (file)
@@ -113,7 +113,8 @@ must have the following parameters:
        * Partition size ........ at least 1024 kb
        * Partition type ........ 0x53 (sometimes "OnTrack DM6 Aux3")
 
-For example in Linux fdisk, the sequence for a clear card is the following:
+For example in Linux fdisk, the sequence for a clear card follows. Be sure to
+run fdisk with the option "-u=sectors" to set units to sectors:
 
        * o ..................... create a clear partition table
        * n ..................... create new partition
index a7f36b2933938a3f374ff873c8379e0e8bd08c5d..908808d50e1a706f0e8d94628181fe30ebf76843 100644 (file)
@@ -40,10 +40,10 @@ static unsigned long gpio_ports[] = {
        [0] = GPIO1_BASE_ADDR,
        [1] = GPIO2_BASE_ADDR,
        [2] = GPIO3_BASE_ADDR,
-#if defined(CONFIG_MX51) || defined(CONFIG_MX53)
+#if defined(CONFIG_MX51) || defined(CONFIG_MX53) || defined(CONFIG_MX6Q)
        [3] = GPIO4_BASE_ADDR,
 #endif
-#if defined(CONFIG_MX53)
+#if defined(CONFIG_MX53) || defined(CONFIG_MX6Q)
        [4] = GPIO5_BASE_ADDR,
        [5] = GPIO6_BASE_ADDR,
        [6] = GPIO7_BASE_ADDR,
index f686e80637a0eb5619f1e357f2c6b4ea3a9cc36c..22669b6160e6dd27c20e1a4ebf9318055cf83bc4 100644 (file)
@@ -146,8 +146,10 @@ int gpio_request(int gp, const char *label)
        if (gp >= MAX_NUM_GPIOS)
                return -1;
 
-       strncpy(gpio_names[gp].name, label, GPIO_NAME_SIZE);
-       gpio_names[gp].name[GPIO_NAME_SIZE - 1] = '\0';
+       if (label != NULL) {
+               strncpy(gpio_names[gp].name, label, GPIO_NAME_SIZE);
+               gpio_names[gp].name[GPIO_NAME_SIZE - 1] = '\0';
+       }
 
        /* Configure as a GPIO */
        set_config(gp, 1);
index ccf48bbb17ca918f72513c1841c52f461a5623b9..035a8687df724361098b780fc1d7860f314faabd 100644 (file)
@@ -21,6 +21,7 @@
 
 #include <common.h>
 #include <mmc.h>
+#include <asm/gpio.h>
 #include <asm/io.h>
 #include <asm/arch/clk_rst.h>
 #include <asm/arch/clock.h>
@@ -473,20 +474,37 @@ static int mmc_core_init(struct mmc *mmc)
        return 0;
 }
 
-static int tegra2_mmc_initialize(int dev_index, int bus_width)
+int tegra2_mmc_init(int dev_index, int bus_width, int pwr_gpio, int cd_gpio)
 {
        struct mmc_host *host;
+       char gpusage[12]; /* "SD/MMCn PWR" or "SD/MMCn CD" */
        struct mmc *mmc;
 
-       debug(" mmc_initialize called\n");
+       debug(" tegra2_mmc_init: index %d, bus width %d "
+               "pwr_gpio %d cd_gpio %d\n",
+               dev_index, bus_width, pwr_gpio, cd_gpio);
 
        host = &mmc_host[dev_index];
 
        host->clock = 0;
+       host->pwr_gpio = pwr_gpio;
+       host->cd_gpio = cd_gpio;
        tegra2_get_setup(host, dev_index);
 
        clock_start_periph_pll(host->mmc_id, CLOCK_ID_PERIPH, 20000000);
 
+       if (host->pwr_gpio >= 0) {
+               sprintf(gpusage, "SD/MMC%d PWR", dev_index);
+               gpio_request(host->pwr_gpio, gpusage);
+               gpio_direction_output(host->pwr_gpio, 1);
+       }
+
+       if (host->cd_gpio >= 0) {
+               sprintf(gpusage, "SD/MMC%d CD", dev_index);
+               gpio_request(host->cd_gpio, gpusage);
+               gpio_direction_input(host->cd_gpio);
+       }
+
        mmc = &mmc_dev[dev_index];
 
        sprintf(mmc->name, "Tegra2 SD/MMC");
@@ -518,9 +536,21 @@ static int tegra2_mmc_initialize(int dev_index, int bus_width)
        return 0;
 }
 
-int tegra2_mmc_init(int dev_index, int bus_width)
+/* this is a weak define that we are overriding */
+int board_mmc_getcd(u8 *cd, struct mmc *mmc)
 {
-       debug(" tegra2_mmc_init: index %d, bus width %d\n",
-               dev_index, bus_width);
-       return tegra2_mmc_initialize(dev_index, bus_width);
+       struct mmc_host *host = (struct mmc_host *)mmc->priv;
+
+       debug("board_mmc_getcd called\n");
+
+       *cd = 1; /* Assume card is inserted, or eMMC */
+
+       if (IS_SD(mmc)) {
+               if (host->cd_gpio >= 0) {
+                       if (gpio_get_value(host->cd_gpio))
+                               *cd = 0;
+               }
+       }
+
+       return 0;
 }
index 671583c42219af4df4848c27fc09d4ba521c1e18..b2f6c5baad059c81479f83fb9f9a187d2cf162fa 100644 (file)
@@ -123,9 +123,11 @@ struct mmc_host {
        unsigned int clock;     /* Current clock (MHz) */
        unsigned int base;      /* Base address, SDMMC1/2/3/4 */
        enum periph_id mmc_id;  /* Peripheral ID: PERIPH_ID_... */
+       int pwr_gpio;           /* Power GPIO */
+       int cd_gpio;            /* Change Detect GPIO */
 };
 
-int tegra2_mmc_init(int dev_index, int bus_width);
+int tegra2_mmc_init(int dev_index, int bus_width, int pwr_gpio, int cd_gpio);
 
 #endif /* __ASSEMBLY__ */
 #endif /* __TEGRA2_MMC_H_ */
index 6309549fceec0edb3a09a90dd17c0e73bc8edb76..616b85703b29b3dd82ce50be9b65d10f20664f88 100644 (file)
@@ -55,7 +55,6 @@ COBJS-$(CONFIG_S3C44B0_SERIAL) += serial_s3c44b0.o
 COBJS-$(CONFIG_XILINX_UARTLITE) += serial_xuartlite.o
 COBJS-$(CONFIG_SANDBOX_SERIAL) += sandbox.o
 COBJS-$(CONFIG_SCIF_CONSOLE) += serial_sh.o
-COBJS-$(CONFIG_TEGRA2) += serial_tegra2.o
 
 ifndef CONFIG_SPL_BUILD
 COBJS-$(CONFIG_USB_TTY) += usbtty.o
diff --git a/drivers/serial/serial_tegra2.c b/drivers/serial/serial_tegra2.c
deleted file mode 100644 (file)
index 8ff34ea..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- *  (C) Copyright 2010,2011
- *  NVIDIA Corporation <www.nvidia.com>
- *
- * See file CREDITS for list of people who contributed to this
- * project.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- */
-
-#include <common.h>
-#include <ns16550.h>
-#include <asm/io.h>
-#include <asm/arch/tegra2.h>
-#include "serial_tegra2.h"
-
-static void setup_uart(struct uart_ctlr *u)
-{
-       u32 reg;
-
-       /* Prepare the divisor value */
-       reg = NVRM_PLLP_FIXED_FREQ_KHZ * 1000 / NV_DEFAULT_DEBUG_BAUD / 16;
-
-       /* Set up UART parameters */
-       writel(UART_LCR_DLAB, &u->uart_lcr);
-       writel(reg, &u->uart_thr_dlab_0);
-       writel(0, &u->uart_ier_dlab_0);
-       writel(0, &u->uart_lcr);                        /* clear DLAB */
-       writel((UART_FCR_TRIGGER_3 | UART_FCR_FIFO_EN | \
-               UART_FCR_CLEAR_XMIT | UART_FCR_CLEAR_RCVR), &u->uart_iir_fcr);
-       writel(0, &u->uart_ier_dlab_0);
-       writel(UART_LCR_WLS_8, &u->uart_lcr);   /* 8N1 */
-       writel(UART_MCR_RTS, &u->uart_mcr);
-       writel(0, &u->uart_msr);
-       writel(0, &u->uart_spr);
-       writel(0, &u->uart_irda_csr);
-       writel(0, &u->uart_asr);
-       writel((UART_FCR_TRIGGER_3 | UART_FCR_FIFO_EN), &u->uart_iir_fcr);
-
-       /* Flush any old characters out of the RX FIFO */
-       reg = readl(&u->uart_lsr);
-
-       while (reg & UART_LSR_DR) {
-               reg = readl(&u->uart_thr_dlab_0);
-               reg = readl(&u->uart_lsr);
-       }
-}
-
-/*
- * Routine: uart_init
- * Description: init the UART clocks, muxes, and baudrate/parity/etc.
- */
-void uart_init(void)
-{
-       struct uart_ctlr *uart = (struct uart_ctlr *)NV_PA_APB_UARTD_BASE;
-#if defined(CONFIG_TEGRA2_ENABLE_UARTD)
-       setup_uart(uart);
-#endif /* CONFIG_TEGRA2_ENABLE_UARTD */
-#if defined(CONFIG_TEGRA2_ENABLE_UARTA)
-       uart = (struct uart_ctlr *)NV_PA_APB_UARTA_BASE;
-
-       setup_uart(uart);
-#endif /* CONFIG_TEGRA2_ENABLE_UARTA */
-}
index d4bd207d58b92544a2e5a45d6c0d63c3add3598b..39c841f44cd87589c6959ed48eba6ac19dbfa021 100644 (file)
  */
 #define        CONFIG_SPL
 #define        CONFIG_SPL_NO_CPU_SUPPORT_CODE
-#define        CONFIG_SPL_START_S_PATH         "board/denx/m28evk"
-#define        CONFIG_SPL_LDSCRIPT             "board/denx/m28evk/u-boot-spl.lds"
+#define        CONFIG_SPL_START_S_PATH         "arch/arm/cpu/arm926ejs/mx28"
+#define        CONFIG_SPL_LDSCRIPT     "arch/arm/cpu/arm926ejs/mx28/u-boot-spl.lds"
+#define        CONFIG_SPL_LIBCOMMON_SUPPORT
+#define        CONFIG_SPL_LIBGENERIC_SUPPORT
 
 /*
  * U-Boot Commands
diff --git a/include/configs/mx6qarm2.h b/include/configs/mx6qarm2.h
new file mode 100644 (file)
index 0000000..a7b363d
--- /dev/null
@@ -0,0 +1,162 @@
+/*
+ * Copyright (C) 2010-2011 Freescale Semiconductor, Inc.
+ *
+ * Configuration settings for the Freescale i.MX6Q Armadillo2 board.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.         See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#ifndef __CONFIG_H
+#define __CONFIG_H
+
+#define CONFIG_MX6Q
+#define CONFIG_SYS_MX6_HCLK            24000000
+#define CONFIG_SYS_MX6_CLK32           32768
+#define CONFIG_DISPLAY_CPUINFO
+#define CONFIG_DISPLAY_BOARDINFO
+
+#include <asm/arch/imx-regs.h>
+
+#define CONFIG_CMDLINE_TAG
+#define CONFIG_SETUP_MEMORY_TAGS
+#define CONFIG_INITRD_TAG
+
+/* Size of malloc() pool */
+#define CONFIG_SYS_MALLOC_LEN          (CONFIG_ENV_SIZE + 2 * 1024 * 1024)
+
+#define CONFIG_ARCH_CPU_INIT
+#define CONFIG_BOARD_EARLY_INIT_F
+#define CONFIG_MXC_GPIO
+
+#define CONFIG_MXC_UART
+#define CONFIG_MXC_UART_BASE           UART4_BASE
+
+/* MMC Configs */
+#define CONFIG_FSL_ESDHC
+#define CONFIG_FSL_USDHC
+#define CONFIG_SYS_FSL_ESDHC_ADDR      0
+#define CONFIG_SYS_FSL_USDHC_NUM       2
+
+#define CONFIG_MMC
+#define CONFIG_CMD_MMC
+#define CONFIG_GENERIC_MMC
+#define CONFIG_CMD_FAT
+#define CONFIG_DOS_PARTITION
+
+/* allow to overwrite serial and ethaddr */
+#define CONFIG_ENV_OVERWRITE
+#define CONFIG_CONS_INDEX              1
+#define CONFIG_BAUDRATE                        115200
+#define CONFIG_SYS_BAUDRATE_TABLE      {9600, 19200, 38400, 57600, 115200}
+
+/* Command definition */
+#include <config_cmd_default.h>
+
+#undef CONFIG_CMD_IMLS
+#undef CONFIG_CMD_NET
+#undef CONFIG_CMD_NFS
+
+#define CONFIG_BOOTDELAY               3
+
+#define CONFIG_LOADADDR                        0x10800000
+#define CONFIG_SYS_TEXT_BASE           0x17800000
+
+#define CONFIG_EXTRA_ENV_SETTINGS \
+       "script=boot.scr\0" \
+       "uimage=uImage\0" \
+       "console=ttymxc3\0" \
+       "mmcdev=1\0" \
+       "mmcpart=2\0" \
+       "mmcroot=/dev/mmcblk0p3 rootwait rw\0" \
+       "mmcargs=setenv bootargs console=${console},${baudrate} " \
+               "root=${mmcroot}\0" \
+       "loadbootscript=" \
+               "fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script};\0" \
+       "bootscript=echo Running bootscript from mmc ...; " \
+               "source\0" \
+       "loaduimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${uimage}\0" \
+       "mmcboot=echo Booting from mmc ...; " \
+               "run mmcargs; " \
+               "bootm\0" \
+       "netargs=setenv bootargs console=${console},${baudrate} " \
+               "root=/dev/nfs " \
+               "ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp\0" \
+       "netboot=echo Booting from net ...; " \
+               "run netargs; " \
+               "dhcp ${uimage}; bootm\0" \
+
+#define CONFIG_BOOTCOMMAND \
+       "mmc dev ${mmcdev};" \
+       "if mmc rescan ${mmcdev}; then " \
+               "if run loadbootscript; then " \
+                       "run bootscript; " \
+               "else " \
+                       "if run loaduimage; then " \
+                               "run mmcboot; " \
+                       "else run netboot; " \
+                       "fi; " \
+               "fi; " \
+       "else run netboot; fi"
+
+#define CONFIG_ARP_TIMEOUT     200UL
+
+/* Miscellaneous configurable options */
+#define CONFIG_SYS_LONGHELP
+#define CONFIG_SYS_HUSH_PARSER
+#define CONFIG_SYS_PROMPT_HUSH_PS2     "> "
+#define CONFIG_SYS_PROMPT              "MX6QARM2 U-Boot > "
+#define CONFIG_AUTO_COMPLETE
+#define CONFIG_SYS_CBSIZE              256
+
+/* Print Buffer Size */
+#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16)
+#define CONFIG_SYS_MAXARGS             16
+#define CONFIG_SYS_BARGSIZE CONFIG_SYS_CBSIZE
+
+#define CONFIG_SYS_MEMTEST_START       0x10000000
+#define CONFIG_SYS_MEMTEST_END         0x10010000
+
+#define CONFIG_SYS_LOAD_ADDR           CONFIG_LOADADDR
+#define CONFIG_SYS_HZ                  1000
+
+#define CONFIG_CMDLINE_EDITING
+#define CONFIG_STACKSIZE               (128 * 1024)
+
+/* Physical Memory Map */
+#define CONFIG_NR_DRAM_BANKS           1
+#define PHYS_SDRAM                     MMDC0_ARB_BASE_ADDR
+#define PHYS_SDRAM_SIZE                        (2u * 1024 * 1024 * 1024)
+
+#define CONFIG_SYS_SDRAM_BASE          PHYS_SDRAM
+#define CONFIG_SYS_INIT_RAM_ADDR       IRAM_BASE_ADDR
+#define CONFIG_SYS_INIT_RAM_SIZE       IRAM_SIZE
+
+#define CONFIG_SYS_INIT_SP_OFFSET \
+       (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
+#define CONFIG_SYS_INIT_SP_ADDR \
+       (CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_INIT_SP_OFFSET)
+
+/* FLASH and environment organization */
+#define CONFIG_SYS_NO_FLASH
+
+#define CONFIG_ENV_OFFSET              (6 * 64 * 1024)
+#define CONFIG_ENV_SIZE                        (8 * 1024)
+#define CONFIG_ENV_IS_IN_MMC
+#define CONFIG_SYS_MMC_ENV_DEV         1
+
+#define CONFIG_OF_LIBFDT
+
+#endif                         /* __CONFIG_H */
index 380ef4f612553544b2fb7032659d235ba3d737ac..cd502d10d8331b4042e546fc8c09643fe89078f2 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Copyright (C) 2011 Samsung Electronics
  *
- * Configuration settings for the SAMSUNG ORIGEN (S5PV310) board.
+ * Configuration settings for the SAMSUNG ORIGEN (EXYNOS4210) board.
  *
  * See file CREDITS for list of people who contributed to this
  * project.
@@ -28,7 +28,7 @@
 /* High Level Configuration Options */
 #define CONFIG_SAMSUNG                 1       /* SAMSUNG core */
 #define CONFIG_S5P                     1       /* S5P Family */
-#define CONFIG_S5PC210                 1       /* which is in a S5PC210 SoC */
+#define CONFIG_EXYNOS4210              1       /* which is a EXYNOS4210 SoC */
 #define CONFIG_ORIGEN                  1       /* working with ORIGEN*/
 
 #include <asm/arch/cpu.h>              /* get chip and board defs */
@@ -68,7 +68,7 @@
 #define CONFIG_SERIAL_MULTI            1
 #define CONFIG_SERIAL2                 1       /* use SERIAL 2 */
 #define CONFIG_BAUDRATE                        115200
-#define S5PC210_DEFAULT_UART_OFFSET    0x020000
+#define EXYNOS4_DEFAULT_UART_OFFSET    0x020000
 
 /* SD/MMC configuration */
 #define CONFIG_GENERIC_MMC             1
index cc14f9797ed7f4b57394ec2c504db27741c52c0e..b36ad3a19367cd16bb4dbd3f2c57e4eaf5445027 100644 (file)
@@ -2,7 +2,7 @@
  * Copyright (C) 2010 Samsung Electronics
  * Minkyu Kang <mk7.kang@samsung.com>
  *
- * Configuation settings for the SAMSUNG Universal (s5pc100) board.
+ * Configuation settings for the SAMSUNG Universal (EXYNOS4210) board.
  *
  * See file CREDITS for list of people who contributed to this
  * project.
@@ -32,7 +32,7 @@
  */
 #define CONFIG_SAMSUNG         1       /* in a SAMSUNG core */
 #define CONFIG_S5P             1       /* which is in a S5P Family */
-#define CONFIG_S5PC210         1       /* which is in a S5PC210 */
+#define CONFIG_EXYNOS4210      1       /* which is in a EXYNOS4210 */
 #define CONFIG_UNIVERSAL       1       /* working with Universal */
 
 #include <asm/arch/cpu.h>              /* get chip and board defs */
@@ -47,7 +47,7 @@
 #define CONFIG_SYS_SDRAM_BASE          0x40000000
 #define CONFIG_SYS_TEXT_BASE           0x44800000
 
-/* input clock of PLL: Universal has 24MHz input clock at S5PC210 */
+/* input clock of PLL: Universal has 24MHz input clock at EXYNOS4210 */
 #define CONFIG_SYS_CLK_FREQ_C210       24000000
 
 #define CONFIG_SETUP_MEMORY_TAGS
 /*
  * I2C Settings
  */
-#define CONFIG_SOFT_I2C_GPIO_SCL s5pc210_gpio_part1_get_nr(b, 7)
-#define CONFIG_SOFT_I2C_GPIO_SDA s5pc210_gpio_part1_get_nr(b, 6)
+#define CONFIG_SOFT_I2C_GPIO_SCL exynos4_gpio_part1_get_nr(b, 7)
+#define CONFIG_SOFT_I2C_GPIO_SDA exynos4_gpio_part1_get_nr(b, 6)
 
 #define CONFIG_SOFT_I2C
 #define CONFIG_SOFT_I2C_READ_REPEATED_START
index fc8bb06d596c725eb1bd550f5686409d4f53123c..93c25da1cfb6054cb76802eab55c5b138231f08d 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Copyright (C) 2011 Samsung Electronics
  *
- * Configuration settings for the SAMSUNG SMDKV310 (S5PC210) board.
+ * Configuration settings for the SAMSUNG SMDKV310 (EXYNOS4210) board.
  *
  * See file CREDITS for list of people who contributed to this
  * project.
@@ -28,7 +28,7 @@
 /* High Level Configuration Options */
 #define CONFIG_SAMSUNG                 1       /* in a SAMSUNG core */
 #define CONFIG_S5P                     1       /* S5P Family */
-#define CONFIG_S5PC210                 1       /* which is in a S5PC210 SoC */
+#define CONFIG_EXYNOS4210              1       /* which is a EXYNOS4210 SoC */
 #define CONFIG_SMDKV310                        1       /* working with SMDKV310*/
 
 #include <asm/arch/cpu.h>              /* get chip and board defs */
@@ -65,7 +65,7 @@
 #define CONFIG_SERIAL_MULTI            1
 #define CONFIG_SERIAL1                 1       /* use SERIAL 1 */
 #define CONFIG_BAUDRATE                        115200
-#define S5PC210_DEFAULT_UART_OFFSET    0x010000
+#define EXYNOS4_DEFAULT_UART_OFFSET    0x010000
 
 /* SD/MMC configuration */
 #define CONFIG_GENERIC_MMC             1
index 9c3b9fa3e947f56d4063ac176d0769c52a113eb1..e233b1c83de832386267987d5c80273313d8af68 100644 (file)
@@ -35,7 +35,7 @@
 
 #define CONFIG_SYS_CACHELINE_SIZE      32
 
-#define CONFIG_ENABLE_CORTEXA9         /* enable CPU (A9 complex) */
+#define CONFIG_ARCH_CPU_INIT           /* Fire up the A9 core */
 
 #include <asm/arch/tegra2.h>           /* get chip and board defs */
 
@@ -45,7 +45,6 @@
 #define CONFIG_DISPLAY_CPUINFO
 #define CONFIG_DISPLAY_BOARDINFO
 
-#define CONFIG_SKIP_RELOCATE_UBOOT
 #define CONFIG_SKIP_LOWLEVEL_INIT
 
 #define CONFIG_CMDLINE_TAG             /* enable passing of ATAGs */
diff --git a/include/configs/ventana.h b/include/configs/ventana.h
new file mode 100644 (file)
index 0000000..afd6ff6
--- /dev/null
@@ -0,0 +1,55 @@
+/*
+ *  (C) Copyright 2010,2011
+ *  NVIDIA Corporation <www.nvidia.com>
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#ifndef __CONFIG_H
+#define __CONFIG_H
+
+#include <asm/sizes.h>
+#include "tegra2-common.h"
+
+/* High-level configuration options */
+#define TEGRA2_SYSMEM          "mem=384M@0M nvmem=128M@384M mem=512M@512M"
+#define V_PROMPT               "Tegra2 (Ventana) # "
+#define CONFIG_TEGRA2_BOARD_STRING     "NVIDIA Ventana"
+
+/* Board-specific serial config */
+#define CONFIG_SERIAL_MULTI
+#define CONFIG_TEGRA2_ENABLE_UARTD
+#define CONFIG_SYS_NS16550_COM1                NV_PA_APB_UARTD_BASE
+
+#define CONFIG_MACH_TYPE               MACH_TYPE_VENTANA
+#define CONFIG_SYS_BOARD_ODMDATA       0x300d8011 /* lp1, 1GB */
+
+#define CONFIG_BOARD_EARLY_INIT_F
+
+/* SD/MMC */
+#define CONFIG_MMC
+#define CONFIG_GENERIC_MMC
+#define CONFIG_TEGRA2_MMC
+#define CONFIG_CMD_MMC
+
+#define CONFIG_DOS_PARTITION
+#define CONFIG_EFI_PARTITION
+#define CONFIG_CMD_EXT2
+#define CONFIG_CMD_FAT
+#endif /* __CONFIG_H */