summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Krummenacher <max.krummenacher@toradex.com>2014-01-22 09:46:20 +0100
committerMax Krummenacher <max.krummenacher@toradex.com>2014-01-22 09:46:20 +0100
commit36e319203f8fc14a9747616c6d4a2a737252e3b4 (patch)
treeeb57e8ceb5b8f73fb806754a10e5975495eae5df
parentf944a6753ba79b504fee0e80bbd0443b0d929ad4 (diff)
Apalis iMX6: further bringup
- Pinmuxing
-rw-r--r--arch/arm/configs/apalis_imx6_defconfig (renamed from arch/arm/configs/colibri_imx6_defconfig)8
-rw-r--r--arch/arm/mach-mx6/board-mx6_nitrogen6x.c128
-rw-r--r--arch/arm/mach-mx6/pads-mx6_apalis_imx6.h519
3 files changed, 603 insertions, 52 deletions
diff --git a/arch/arm/configs/colibri_imx6_defconfig b/arch/arm/configs/apalis_imx6_defconfig
index bd1be4079fe4..bfe253bdb772 100644
--- a/arch/arm/configs/colibri_imx6_defconfig
+++ b/arch/arm/configs/apalis_imx6_defconfig
@@ -155,7 +155,7 @@ CONFIG_PPPOLAC=y
CONFIG_PPPOPNS=y
CONFIG_INPUT_POLLDEV=y
CONFIG_INPUT_EVDEV=y
-CONFIG_KEYBOARD_GPIO=y
+# CONFIG_KEYBOARD_GPIO is not set
# CONFIG_INPUT_MOUSE is not set
CONFIG_INPUT_TOUCHSCREEN=y
CONFIG_INPUT_MISC=y
@@ -182,9 +182,9 @@ CONFIG_MEDIA_SUPPORT=y
CONFIG_VIDEO_DEV=y
# CONFIG_RC_CORE is not set
# CONFIG_MEDIA_TUNER_CUSTOMISE is not set
-CONFIG_VIDEO_MXC_CAMERA=m
-CONFIG_MXC_CAMERA_OV5642=m
-CONFIG_MXC_IPU_DEVICE_QUEUE_SDC=m
+# CONFIG_VIDEO_MXC_CAMERA=m
+# CONFIG_MXC_CAMERA_OV5642=m
+# CONFIG_MXC_IPU_DEVICE_QUEUE_SDC=m
CONFIG_USB_VIDEO_CLASS=y
# CONFIG_RADIO_ADAPTERS is not set
CONFIG_DRM=m
diff --git a/arch/arm/mach-mx6/board-mx6_nitrogen6x.c b/arch/arm/mach-mx6/board-mx6_nitrogen6x.c
index b46e882f5d68..fb6ac45aa736 100644
--- a/arch/arm/mach-mx6/board-mx6_nitrogen6x.c
+++ b/arch/arm/mach-mx6/board-mx6_nitrogen6x.c
@@ -79,15 +79,17 @@
#include "crm_regs.h"
#include "cpu_op-mx6.h"
-#define GP_SD3_CD IMX_GPIO_NR(7, 0)
-#define GP_SD3_WP IMX_GPIO_NR(7, 1)
-#define GP_SD4_CD IMX_GPIO_NR(2, 6)
-#define GP_SD4_WP IMX_GPIO_NR(2, 7)
+#define GP_SD1_CD IMX_GPIO_NR(4, 20) /* Apalis MMC1 */
+#define GP_SD1_WP (-1)
+#define GP_SD4_CD IMX_GPIO_NR(6, 14) /* Apalis SD1 */
+#define GP_SD4_WP (-1)
#define GP_ECSPI1_CS1 IMX_GPIO_NR(3, 19)
#define GP_USB_OTG_PWR IMX_GPIO_NR(3, 22)
#define GP_CAP_TCH_INT1 IMX_GPIO_NR(1, 9)
#define GP_DRGB_IRQGPIO IMX_GPIO_NR(4, 20)
-#define GP_USB_HUB_RESET IMX_GPIO_NR(7, 12)
+#define GP_USB_PEN IMX_GPIO_NR(1, 0) /* USBH_EN */
+#define GP_USB_HUB_VBUS IMX_GPIO_NR(3, 28) /* USB_VBUS_DET */
+#ifdef TODO
#define GP_CAN1_STBY IMX_GPIO_NR(1, 2)
#define GP_CAN1_EN IMX_GPIO_NR(1, 4)
#define GP_CAN1_ERR IMX_GPIO_NR(1, 7)
@@ -99,12 +101,13 @@
#define GP_VOL_DOWN_KEY IMX_GPIO_NR(4, 5)
#define GP_CSI0_RST IMX_GPIO_NR(1, 8)
#define GP_CSI0_PWN IMX_GPIO_NR(1, 6)
+#endif
#define GP_ENET_PHY_INT IMX_GPIO_NR(1, 28)
-
+#if 0
#define N6_WL1271_WL_IRQ IMX_GPIO_NR(6, 14)
#define N6_WL1271_WL_EN IMX_GPIO_NR(6, 15)
#define N6_WL1271_BT_EN IMX_GPIO_NR(6, 16)
-
+#endif
#define CAN1_ERR_TEST_PADCFG (PAD_CTL_PKE | PAD_CTL_PUE | \
PAD_CTL_PUS_100K_DOWN | PAD_CTL_SPEED_MED | \
PAD_CTL_DSE_40ohm | PAD_CTL_HYS)
@@ -127,9 +130,9 @@
#define CSI0_CAMERA
#endif
-#include "pads-mx6_nitrogen6x.h"
+#include "pads-mx6_apalis_imx6.h"
#define FOR_DL_SOLO
-#include "pads-mx6_nitrogen6x.h"
+#include "pads-mx6_apalis_imx6.h"
void __init early_console_setup(unsigned long base, struct clk *clk);
static struct clk *sata_clk;
@@ -159,31 +162,18 @@ static int mxc_iomux_v3_setup_pads(iomux_v3_cfg_t *mx6q_pad_list,
}
return 0;
}
-
+#if 0
struct gpio n6w_wl1271_gpios[] __initdata = {
{.label = "wl1271_int", .gpio = N6_WL1271_WL_IRQ, .flags = GPIOF_DIR_IN},
{.label = "wl1271_bt_en", .gpio = N6_WL1271_BT_EN, .flags = 0},
{.label = "wl1271_wl_en", .gpio = N6_WL1271_WL_EN, .flags = 0},
};
+#endif
__init static int is_nitrogen6w(void)
{
- int ret = gpio_request_array(n6w_wl1271_gpios,
- ARRAY_SIZE(n6w_wl1271_gpios));
- if (ret) {
- printk(KERN_ERR "%s gpio_request_array failed("
- "%d) for n6w_wl1271_gpios\n", __func__, ret);
- return ret;
- }
- ret = gpio_get_value(N6_WL1271_WL_IRQ);
- if (ret <= 0) {
- /* Sabrelite, not nitrogen6w */
- gpio_free(N6_WL1271_WL_IRQ);
- gpio_free(N6_WL1271_WL_EN);
- gpio_free(N6_WL1271_BT_EN);
- ret = 0;
- }
- return ret;
+ /* TODO implement module type detection */
+ return 1;
}
enum sd_pad_mode {
@@ -222,13 +212,14 @@ static int plt_sd_pad_change(unsigned int index, int clock)
return IOMUX_SETUP(sd_pads[i]);
}
+#if 0
static void sdio_set_power(int on)
{
pr_debug("%s:%s: set power(%d)\n",
__FILE__, __func__, on);
gpio_set_value(N6_WL1271_WL_EN,on);
}
-
+#endif
#ifdef CONFIG_WL12XX_PLATFORM_DATA
static struct esdhc_platform_data sd2_data = {
.always_present = 1,
@@ -242,8 +233,8 @@ static struct esdhc_platform_data sd2_data = {
#endif
static struct esdhc_platform_data sd3_data = {
- .cd_gpio = GP_SD3_CD,
- .wp_gpio = GP_SD3_WP,
+ .cd_gpio = -1,
+ .wp_gpio = -1,
.keep_power_at_suspend = 1,
.platform_pad_change = plt_sd_pad_change,
};
@@ -260,10 +251,16 @@ static const struct anatop_thermal_platform_data
.name = "anatop_thermal",
};
-static const struct imxuart_platform_data mx6_arm2_uart2_data __initconst = {
+/* TODO Enable all 8 lines, i.e. DTR, DSR, DCD, RI */
+static const struct imxuart_platform_data mx6_arm2_uart1_data __initconst = { /* Apalis UART 1 */
+ .flags = IMXUART_HAVE_RTSCTS,
+};
+
+static const struct imxuart_platform_data mx6_arm2_uart2_data __initconst = { /* Apalis UART 2 */
.flags = IMXUART_HAVE_RTSCTS,
};
+#ifdef TODO
#if !(defined(CSI0_CAMERA))
static const struct imxuart_platform_data mx6_arm2_uart3_data __initconst = {
.flags = IMXUART_HAVE_RTSCTS,
@@ -273,6 +270,7 @@ static const struct imxuart_platform_data mx6_arm2_uart4_data __initconst = {
.flags = IMXUART_HAVE_RTSCTS,
};
#endif
+#endif
static unsigned short ksz9031_por_cmds[] = {
0x0204, 0x0, /* RX_CTL/TX_CTL output pad skew */
@@ -772,6 +770,7 @@ static struct ahci_platform_data sata_data = {
.exit = exit_sata,
};
+#ifdef TODO
static struct gpio flexcan_gpios[] = {
{ GP_CAN1_ERR, GPIOF_DIR_IN, "flexcan1-err" },
{ GP_CAN1_EN, GPIOF_OUT_INIT_LOW, "flexcan1-en" },
@@ -798,6 +797,7 @@ static const struct flexcan_platform_data
flexcan0_tja1040_pdata __initconst = {
.transceiver_switch = flexcan0_tja1040_switch,
};
+#endif
static struct viv_gpu_platform_data imx6_gpu_pdata __initdata = {
.reserved_mem_size = SZ_128M,
@@ -895,17 +895,37 @@ static void lcd_enable_pins(void)
static void lcd_disable_pins(void)
{
pr_info("%s\n", __func__);
- IOMUX_SETUP(lcd_pads_disable);
+// IOMUX_SETUP(lcd_pads_disable);
+}
+
+static void vga_dac_enable_pins(void)
+{
+ pr_info("%s\n", __func__);
+ IOMUX_SETUP(vga_dac_enable);
+}
+
+static void vga_dac_disable_pins(void)
+{
+ pr_info("%s\n", __func__);
+ IOMUX_SETUP(vga_dac_disable);
}
static struct fsl_mxc_lcd_platform_data lcdif_data = {
- .ipu_id = 0,
- .disp_id = 0,
- .default_ifmt = IPU_PIX_FMT_RGB565,
+ .ipu_id = 1,
+ .disp_id = 1,
+ .default_ifmt = IPU_PIX_FMT_RGB24,
.enable_pins = lcd_enable_pins,
.disable_pins = lcd_disable_pins,
};
+static struct fsl_mxc_lcd_platform_data vgadacif_data = {
+ .ipu_id = 1,
+ .disp_id = 0,
+ .default_ifmt = IPU_PIX_FMT_RGB565,
+ .enable_pins = vga_dac_enable_pins,
+ .disable_pins = vga_dac_disable_pins,
+};
+
static struct fsl_mxc_ldb_platform_data ldb_data = {
.ipu_id = 1,
.disp_id = 0,
@@ -984,6 +1004,7 @@ static const struct pm_platform_data pm_data __initconst = {
.wakeup = wake, \
}
+#ifdef TODO
static struct gpio_keys_button buttons[] = {
GPIO_BUTTON(GP_ONOFF_KEY, KEY_POWER, 1, "key-power", 1),
GPIO_BUTTON(GP_MENU_KEY, KEY_MENU, 1, "key-memu", 0),
@@ -994,7 +1015,9 @@ static struct gpio_keys_button buttons[] = {
GPIO_BUTTON(GP_VOL_DOWN_KEY, KEY_VOLUMEDOWN, 1, "volume-down", 0),
#endif
};
+#endif
+#ifdef TODO
#if defined(CONFIG_KEYBOARD_GPIO) || defined(CONFIG_KEYBOARD_GPIO_MODULE)
static struct gpio_keys_platform_data button_data = {
.buttons = buttons,
@@ -1025,6 +1048,7 @@ static void __init add_device_buttons(void)
}
}
#endif
+#endif /* TODO */
#ifdef CONFIG_WL12XX_PLATFORM_DATA
static void wl1271_set_power(bool enable)
@@ -1280,8 +1304,10 @@ static void __init board_init(void)
#endif
IOMUX_SETUP(common_pads);
lcd_disable_pins();
+ //vga_dac_enable_pins();
isn6 = is_nitrogen6w();
+#ifdef TODO /* Audio */
if (isn6) {
audio_data.ext_port = 3;
sd3_data.wp_gpio = -1 ;
@@ -1289,6 +1315,7 @@ static void __init board_init(void)
} else {
IOMUX_SETUP(sabrelite_pads);
}
+#endif
printk(KERN_ERR "------------ Board type %s\n",
isn6 ? "Nitrogen6X/W" : "Sabre Lite");
@@ -1305,8 +1332,6 @@ static void __init board_init(void)
soc_reg_id = dvfscore_data.soc_id;
pu_reg_id = dvfscore_data.pu_id;
- imx6q_add_imx_uart(0, NULL);
-
#ifdef ONE_WIRE
one_wire_gp = IMX_GPIO_NR(4, 5);
gpio_request(one_wire_gp, "one-wire-12v");
@@ -1314,14 +1339,15 @@ static void __init board_init(void)
gpio_export(one_wire_gp, 1);
#endif
- imx6q_add_imx_uart(1, NULL);
- if (isn6)
- imx6q_add_imx_uart(2, &mx6_arm2_uart2_data);
-
-#if !defined(CSI0_CAMERA)
- imx6q_add_imx_uart(3, &mx6_arm2_uart3_data);
- imx6q_add_imx_uart(4, &mx6_arm2_uart4_data);
-#endif
+ printk(KERN_ERR "------------ 1 \n");
+ imx6q_add_imx_uart(0, &mx6_arm2_uart1_data);
+ printk(KERN_ERR "------------ 2 \n");
+ imx6q_add_imx_uart(1, &mx6_arm2_uart2_data);
+ printk(KERN_ERR "------------ 3 \n");
+ imx6q_add_imx_uart(3, NULL); /* Apalis UART 3 */
+ printk(KERN_ERR "------------ 4 \n");
+ imx6q_add_imx_uart(4, NULL); /* Apalis UART 4 */
+ printk(KERN_ERR "------------ 5 \n");
if (!cpu_is_mx6q()) {
ldb_data.ipu_id = 0;
@@ -1397,8 +1423,9 @@ static void __init board_init(void)
imx_asrc_data.asrc_audio_clk = clk_get(NULL, "asrc_serial_clk");
imx6q_add_asrc(&imx_asrc_data);
- /* release USB Hub reset */
- gpio_set_value(GP_USB_HUB_RESET, 1);
+ /* USB host */
+ gpio_set_value(GP_USB_HUB_VBUS, 1);
+ gpio_set_value(GP_USB_PEN, 1);
imx6q_add_mxc_pwm(0);
imx6q_add_mxc_pwm(1);
@@ -1415,11 +1442,14 @@ static void __init board_init(void)
imx6q_add_dvfs_core(&dvfscore_data);
+#ifdef TODO
add_device_buttons();
+#endif
imx6q_add_hdmi_soc();
imx6q_add_hdmi_soc_dai();
+#ifdef TODO
ret = gpio_request_array(flexcan_gpios,
ARRAY_SIZE(flexcan_gpios));
if (ret) {
@@ -1437,7 +1467,9 @@ static void __init board_init(void)
pr_info("Flexcan gpio_get_value CAN1_ERR failed\n");
}
}
-
+#else
+ (void) ret;
+#endif
clko2 = clk_get(NULL, "clko2_clk");
if (IS_ERR(clko2))
pr_err("can't get CLKO2 clock.\n");
@@ -1491,7 +1523,7 @@ static void __init timer_init(void)
mx6_clocks_init(32768, 24000000, 0, 0);
uart_clk = clk_get_sys("imx-uart.0", NULL);
- early_console_setup(UART2_BASE_ADDR, uart_clk);
+ early_console_setup(UART1_BASE_ADDR, uart_clk);
}
static struct sys_timer timer __initdata = {
diff --git a/arch/arm/mach-mx6/pads-mx6_apalis_imx6.h b/arch/arm/mach-mx6/pads-mx6_apalis_imx6.h
new file mode 100644
index 000000000000..f4a1e8f99a49
--- /dev/null
+++ b/arch/arm/mach-mx6/pads-mx6_apalis_imx6.h
@@ -0,0 +1,519 @@
+#undef MX6PAD
+#undef MX6NAME
+#undef MX6
+
+//#define ONE_WIRE
+
+#ifdef FOR_DL_SOLO
+#define MX6(a) MX6DL_##a
+#define MX6PAD(a) MX6DL_PAD_##a
+#define MX6NAME(a) mx6dl_solo_##a
+#else
+#define MX6(a) MX6Q_##a
+#define MX6PAD(a) MX6Q_PAD_##a
+#define MX6NAME(a) mx6q_##a
+#endif
+
+#define MX6Q_USDHC_PAD_CTRL_22KPU_40OHM_50MHZ (PAD_CTL_PKE | PAD_CTL_PUE | \
+ PAD_CTL_PUS_22K_UP | PAD_CTL_SPEED_LOW | \
+ PAD_CTL_DSE_40ohm | PAD_CTL_SRE_FAST | PAD_CTL_HYS)
+
+#define MX6Q_USDHC_PAD_CTRL_50MHZ MX6Q_USDHC_PAD_CTRL
+#define MX6Q_PAD_SD3_CLK__USDHC3_CLK MX6Q_PAD_SD3_CLK__USDHC3_CLK_50MHZ
+#define MX6Q_PAD_SD3_CMD__USDHC3_CMD MX6Q_PAD_SD3_CMD__USDHC3_CMD_50MHZ
+#define MX6Q_PAD_SD3_DAT0__USDHC3_DAT0 MX6Q_PAD_SD3_DAT0__USDHC3_DAT0_50MHZ
+#define MX6Q_PAD_SD3_DAT1__USDHC3_DAT1 MX6Q_PAD_SD3_DAT1__USDHC3_DAT1_50MHZ
+#define MX6Q_PAD_SD3_DAT2__USDHC3_DAT2 MX6Q_PAD_SD3_DAT2__USDHC3_DAT2_50MHZ
+#define MX6Q_PAD_SD3_DAT3__USDHC3_DAT3 MX6Q_PAD_SD3_DAT3__USDHC3_DAT3_50MHZ
+#define MX6Q_PAD_SD3_DAT4__USDHC3_DAT4 MX6Q_PAD_SD3_DAT0__USDHC3_DAT0_50MHZ
+#define MX6Q_PAD_SD3_DAT5__USDHC3_DAT5 MX6Q_PAD_SD3_DAT1__USDHC3_DAT1_50MHZ
+#define MX6Q_PAD_SD3_DAT6__USDHC3_DAT6 MX6Q_PAD_SD3_DAT2__USDHC3_DAT2_50MHZ
+#define MX6Q_PAD_SD3_DAT7__USDHC3_DAT7 MX6Q_PAD_SD3_DAT3__USDHC3_DAT3_50MHZ
+#define MX6Q_PAD_SD4_CLK__USDHC4_CLK MX6Q_PAD_SD4_CLK__USDHC4_CLK_50MHZ
+#define MX6Q_PAD_SD4_CMD__USDHC4_CMD MX6Q_PAD_SD4_CMD__USDHC4_CMD_50MHZ
+#define MX6Q_PAD_SD4_DAT0__USDHC4_DAT0 MX6Q_PAD_SD4_DAT0__USDHC4_DAT0_50MHZ
+#define MX6Q_PAD_SD4_DAT1__USDHC4_DAT1 MX6Q_PAD_SD4_DAT1__USDHC4_DAT1_50MHZ
+#define MX6Q_PAD_SD4_DAT2__USDHC4_DAT2 MX6Q_PAD_SD4_DAT2__USDHC4_DAT2_50MHZ
+#define MX6Q_PAD_SD4_DAT3__USDHC4_DAT3 MX6Q_PAD_SD4_DAT3__USDHC4_DAT3_50MHZ
+
+#define MX6DL_USDHC_PAD_CTRL_22KPU_40OHM_50MHZ MX6Q_USDHC_PAD_CTRL_22KPU_40OHM_50MHZ
+#define MX6DL_USDHC_PAD_CTRL_50MHZ MX6DL_USDHC_PAD_CTRL
+#define MX6DL_PAD_SD3_CLK__USDHC3_CLK MX6DL_PAD_SD3_CLK__USDHC3_CLK_50MHZ
+#define MX6DL_PAD_SD3_CMD__USDHC3_CMD MX6DL_PAD_SD3_CMD__USDHC3_CMD_50MHZ
+#define MX6DL_PAD_SD3_DAT0__USDHC3_DAT0 MX6DL_PAD_SD3_DAT0__USDHC3_DAT0_50MHZ
+#define MX6DL_PAD_SD3_DAT1__USDHC3_DAT1 MX6DL_PAD_SD3_DAT1__USDHC3_DAT1_50MHZ
+#define MX6DL_PAD_SD3_DAT2__USDHC3_DAT2 MX6DL_PAD_SD3_DAT2__USDHC3_DAT2_50MHZ
+#define MX6DL_PAD_SD3_DAT3__USDHC3_DAT3 MX6DL_PAD_SD3_DAT3__USDHC3_DAT3_50MHZ
+#define MX6DL_PAD_SD3_DAT4__USDHC3_DAT4 MX6DL_PAD_SD3_DAT0__USDHC3_DAT0_50MHZ
+#define MX6DL_PAD_SD3_DAT5__USDHC3_DAT5 MX6DL_PAD_SD3_DAT1__USDHC3_DAT1_50MHZ
+#define MX6DL_PAD_SD3_DAT6__USDHC3_DAT6 MX6DL_PAD_SD3_DAT2__USDHC3_DAT2_50MHZ
+#define MX6DL_PAD_SD3_DAT7__USDHC3_DAT7 MX6DL_PAD_SD3_DAT3__USDHC3_DAT3_50MHZ
+#define MX6DL_PAD_SD4_CLK__USDHC4_CLK MX6DL_PAD_SD4_CLK__USDHC4_CLK_50MHZ
+#define MX6DL_PAD_SD4_CMD__USDHC4_CMD MX6DL_PAD_SD4_CMD__USDHC4_CMD_50MHZ
+#define MX6DL_PAD_SD4_DAT0__USDHC4_DAT0 MX6DL_PAD_SD4_DAT0__USDHC4_DAT0_50MHZ
+#define MX6DL_PAD_SD4_DAT1__USDHC4_DAT1 MX6DL_PAD_SD4_DAT1__USDHC4_DAT1_50MHZ
+#define MX6DL_PAD_SD4_DAT2__USDHC4_DAT2 MX6DL_PAD_SD4_DAT2__USDHC4_DAT2_50MHZ
+#define MX6DL_PAD_SD4_DAT3__USDHC4_DAT3 MX6DL_PAD_SD4_DAT3__USDHC4_DAT3_50MHZ
+
+#define NP(id, pin, pad_ctl) \
+ NEW_PAD_CTRL(MX6PAD(SD##id##_##pin##__USDHC##id##_##pin), MX6(pad_ctl))
+
+#define SD_PINS(id, pad_ctl) \
+ NP(id, CLK, pad_ctl), \
+ NP(id, CMD, pad_ctl), \
+ NP(id, DAT0, pad_ctl), \
+ NP(id, DAT1, pad_ctl), \
+ NP(id, DAT2, pad_ctl), \
+ NP(id, DAT3, pad_ctl)
+
+static iomux_v3_cfg_t MX6NAME(nitrogen6x_pads)[] = {
+#ifdef TODO
+ NEW_PAD_CTRL(MX6PAD(NANDF_CS1__GPIO_6_14), N6_IRQ_PADCFG), /* wl1271 wl_irq */
+#endif
+
+#ifdef TODO
+ MX6PAD(SD1_CLK__OSC32K_32K_OUT), /* wl1271 clock */
+
+ /* UART3 for wl1271 */
+ MX6PAD(EIM_D24__UART3_TXD),
+ MX6PAD(EIM_D25__UART3_RXD),
+ MX6PAD(EIM_D23__UART3_CTS),
+ MX6PAD(EIM_D31__UART3_RTS),
+#endif
+ /* End of list */
+ 0
+};
+
+static iomux_v3_cfg_t MX6NAME(common_pads)[] = {
+#ifdef TODO
+ /* CAN1 */
+ MX6PAD(KEY_ROW2__CAN1_RXCAN),
+ MX6PAD(KEY_COL2__CAN1_TXCAN),
+ MX6PAD(GPIO_2__GPIO_1_2), /* STNDBY */
+ MX6PAD(GPIO_7__GPIO_1_7), /* NERR */
+ NEW_PAD_CTRL(MX6PAD(GPIO_7__GPIO_1_7), CAN1_ERR_TEST_PADCFG),
+ MX6PAD(GPIO_4__GPIO_1_4), /* Enable */
+#endif
+ /* CCM */
+ MX6PAD(GPIO_5__CCM_CLKO), /* local AC97 sys_mclk */
+ MX6PAD(NANDF_CS2__CCM_CLKO2), /* MXM193 CAM1_MCLK */
+
+#ifdef TODO
+ /* ECSPI1 */
+ MX6PAD(EIM_D17__ECSPI1_MISO),
+ MX6PAD(EIM_D18__ECSPI1_MOSI),
+ MX6PAD(EIM_D16__ECSPI1_SCLK),
+ MX6PAD(EIM_D19__GPIO_3_19), /*SS1*/
+#endif
+ /* ENET */
+ MX6PAD(ENET_MDIO__ENET_MDIO),
+ MX6PAD(ENET_MDC__ENET_MDC),
+ MX6PAD(RGMII_TXC__ENET_RGMII_TXC),
+ MX6PAD(RGMII_TD0__ENET_RGMII_TD0),
+ MX6PAD(RGMII_TD1__ENET_RGMII_TD1),
+ MX6PAD(RGMII_TD2__ENET_RGMII_TD2),
+ MX6PAD(RGMII_TD3__ENET_RGMII_TD3),
+ MX6PAD(RGMII_TX_CTL__ENET_RGMII_TX_CTL),
+ MX6PAD(ENET_REF_CLK__ENET_TX_CLK),
+ MX6PAD(RGMII_RXC__ENET_RGMII_RXC),
+ MX6PAD(RGMII_RD0__ENET_RGMII_RD0),
+ MX6PAD(RGMII_RD1__ENET_RGMII_RD1),
+ MX6PAD(RGMII_RD2__ENET_RGMII_RD2),
+ MX6PAD(RGMII_RD3__ENET_RGMII_RD3),
+ MX6PAD(RGMII_RX_CTL__ENET_RGMII_RX_CTL),
+ MX6PAD(ENET_TXD0__GPIO_1_30), /* Micrel RGMII Phy Interrupt */
+ MX6PAD(ENET_CRS_DV__GPIO_1_25), /* Micrel RGMII Phy Reset */
+#ifdef TODO
+ /* GPIO1 */
+ MX6PAD(ENET_RX_ER__GPIO_1_24), /* J9 - Microphone Detect */
+
+ /* GPIO2 */
+ MX6PAD(NANDF_D1__GPIO_2_1), /* J14 - Menu Button */
+ MX6PAD(NANDF_D2__GPIO_2_2), /* J14 - Back Button */
+ MX6PAD(NANDF_D3__GPIO_2_3), /* J14 - Search Button */
+ MX6PAD(NANDF_D4__GPIO_2_4), /* J14 - Home Button */
+
+ /* GPIO4 */
+ MX6PAD(GPIO_19__GPIO_4_5), /* J14 - Volume Down */
+#endif
+
+ /* CSI1/Bootmode pins - J12 */
+#ifdef FOR_DL_SOLO
+ /* Dualite/Solo doesn't have IPU2 */
+ MX6PAD(EIM_EB2__IPU1_CSI1_D_19), /* GPIO2[30] */
+ MX6PAD(EIM_A23__IPU1_CSI1_D_18), /* GPIO6[6] */
+ MX6PAD(EIM_A22__IPU1_CSI1_D_17), /* GPIO2[16] */
+ MX6PAD(EIM_A21__IPU1_CSI1_D_16), /* GPIO2[17] */
+ MX6PAD(EIM_A20__IPU1_CSI1_D_15), /* GPIO2[18] */
+ MX6PAD(EIM_A19__IPU1_CSI1_D_14), /* GPIO2[19] */
+ MX6PAD(EIM_A18__IPU1_CSI1_D_13), /* GPIO2[20] */
+ MX6PAD(EIM_A17__IPU1_CSI1_D_12), /* GPIO2[21] */
+ MX6PAD(EIM_EB0__IPU1_CSI1_D_11), /* GPIO2[28] */
+ MX6PAD(EIM_EB1__IPU1_CSI1_D_10), /* GPIO2[29] */
+ MX6PAD(EIM_DA0__IPU1_CSI1_D_9), /* GPIO3[0] */
+ MX6PAD(EIM_DA1__IPU1_CSI1_D_8), /* GPIO3[1] */
+ MX6PAD(EIM_DA2__IPU1_CSI1_D_7), /* GPIO3[2] */
+ MX6PAD(EIM_DA3__IPU1_CSI1_D_6), /* GPIO3[3] */
+ MX6PAD(EIM_DA4__IPU1_CSI1_D_5), /* GPIO3[4] */
+ MX6PAD(EIM_DA5__IPU1_CSI1_D_4), /* GPIO3[5] */
+ MX6PAD(EIM_DA6__IPU1_CSI1_D_3), /* GPIO3[6] */
+ MX6PAD(EIM_DA7__IPU1_CSI1_D_2), /* GPIO3[7] */
+ MX6PAD(EIM_DA8__IPU1_CSI1_D_1), /* GPIO3[8] */
+ MX6PAD(EIM_DA9__IPU1_CSI1_D_0), /* GPIO3[9] */
+ MX6PAD(EIM_DA10__IPU1_CSI1_DATA_EN), /* GPIO3[10] */
+ MX6PAD(EIM_DA11__IPU1_CSI1_HSYNC), /* GPIO3[11] */
+ MX6PAD(EIM_DA12__IPU1_CSI1_VSYNC), /* GPIO3[12] */
+ MX6PAD(EIM_A16__IPU1_CSI1_PIXCLK), /* GPIO2[22] */
+#else
+ MX6PAD(EIM_EB2__IPU2_CSI1_D_19), /* GPIO2[30] */
+#ifdef TODO
+ MX6PAD(EIM_A23__IPU2_CSI1_D_18), /* GPIO6[6] */
+ MX6PAD(EIM_A22__IPU2_CSI1_D_17), /* GPIO2[16] */
+ MX6PAD(EIM_A21__IPU2_CSI1_D_16), /* GPIO2[17] */
+ MX6PAD(EIM_A20__IPU2_CSI1_D_15), /* GPIO2[18] */
+ MX6PAD(EIM_A19__IPU2_CSI1_D_14), /* GPIO2[19] */
+ MX6PAD(EIM_A18__IPU2_CSI1_D_13), /* GPIO2[20] */
+ MX6PAD(EIM_A17__IPU2_CSI1_D_12), /* GPIO2[21] */
+ MX6PAD(EIM_EB0__IPU2_CSI1_D_11), /* GPIO2[28] */
+ MX6PAD(EIM_EB1__IPU2_CSI1_D_10), /* GPIO2[29] */
+ MX6PAD(EIM_DA0__IPU2_CSI1_D_9), /* GPIO3[0] */
+ MX6PAD(EIM_DA1__IPU2_CSI1_D_8), /* GPIO3[1] */
+ MX6PAD(EIM_DA2__IPU2_CSI1_D_7), /* GPIO3[2] */
+ MX6PAD(EIM_DA3__IPU2_CSI1_D_6), /* GPIO3[3] */
+ MX6PAD(EIM_DA4__IPU2_CSI1_D_5), /* GPIO3[4] */
+ MX6PAD(EIM_DA5__IPU2_CSI1_D_4), /* GPIO3[5] */
+ MX6PAD(EIM_DA6__IPU2_CSI1_D_3), /* GPIO3[6] */
+ MX6PAD(EIM_DA7__IPU2_CSI1_D_2), /* GPIO3[7] */
+ MX6PAD(EIM_DA8__IPU2_CSI1_D_1), /* GPIO3[8] */
+ MX6PAD(EIM_DA9__IPU2_CSI1_D_0), /* GPIO3[9] */
+ MX6PAD(EIM_DA10__IPU2_CSI1_DATA_EN), /* GPIO3[10] */
+ MX6PAD(EIM_DA11__IPU2_CSI1_HSYNC), /* GPIO3[11] */
+ MX6PAD(EIM_DA12__IPU2_CSI1_VSYNC), /* GPIO3[12] */
+ MX6PAD(EIM_A16__IPU2_CSI1_PIXCLK), /* GPIO2[22] */
+#endif
+#endif
+ MX6PAD(EIM_DA13__GPIO_3_13), /* Power */
+ MX6PAD(EIM_DA14__GPIO_3_14), /* Reset */
+ MX6PAD(EIM_WAIT__GPIO_5_0), /* Irq */
+#ifdef TODO
+ MX6PAD(EIM_A24__GPIO_5_4), /* Field */
+#endif
+ MX6PAD(EIM_RW__GPIO_2_26), /* GPIO2[26] - unused */
+ MX6PAD(EIM_LBA__GPIO_2_27), /* GPIO2[27] - unused */
+#ifdef TODO
+ MX6PAD(EIM_EB3__GPIO_2_31), /* GPIO2[31] - unused */
+#endif
+ MX6PAD(EIM_DA15__GPIO_3_15), /* GPIO3[15] - unused */
+
+ /* NANDF_CS1/2/3 are unused for sabrelite */
+ NEW_PAD_CTRL(MX6PAD(NANDF_CS1__GPIO_6_14), N6_IRQ_TEST_PADCFG), /* wl1271 wl_irq */
+ NEW_PAD_CTRL(MX6PAD(NANDF_CS3__GPIO_6_16), N6_EN_PADCFG), /* wl1271 bt_en */
+
+ /* GPIO7 */
+ MX6PAD(GPIO_17__GPIO_7_12), /* USB Hub Reset */
+ MX6PAD(GPIO_18__GPIO_7_13), /* J14 - Volume Up */
+
+ /* I2C1, SGTL5000 */
+#ifdef TODO
+ MX6PAD(EIM_D21__I2C1_SCL), /* GPIO3[21] */
+ MX6PAD(EIM_D28__I2C1_SDA), /* GPIO3[28] */
+
+ /* I2C2 Camera, MIPI */
+ MX6PAD(KEY_COL3__I2C2_SCL), /* GPIO4[12] */
+ MX6PAD(KEY_ROW3__I2C2_SDA), /* GPIO4[13] */
+#endif
+ /* I2C3 */
+#ifdef TODO
+ MX6PAD(GPIO_5__I2C3_SCL), /* GPIO1[5] - J7 - Display card */
+#endif
+#ifdef CONFIG_FEC_1588
+ MX6PAD(GPIO_16__ENET_ANATOP_ETHERNET_REF_OUT),
+#else
+#ifdef TODO
+ MX6PAD(GPIO_16__I2C3_SDA), /* GPIO7[11] - J15 - RGB connector */
+#endif
+#endif
+
+ /* DISPLAY */
+ NEW_PAD_CTRL(MX6PAD(DI0_PIN4__GPIO_4_20),
+ WEAK_PULLUP), /* I2C Touch IRQ */
+ MX6PAD(GPIO_7__GPIO_1_7), /* J7 - Display Connector GP */
+ MX6PAD(GPIO_9__GPIO_1_9), /* J7 - Display Connector GP */
+#ifdef TODO
+ MX6PAD(NANDF_D0__GPIO_2_0), /* J6 - LVDS Display contrast */
+#endif
+
+#ifdef TODO
+ /* PWM1 */
+ MX6PAD(SD1_DAT3__PWM1_PWMO), /* GPIO1[21] */
+
+ /* PWM2 */
+ MX6PAD(SD1_DAT2__PWM2_PWMO), /* GPIO1[19] */
+
+ /* PWM3 */
+ MX6PAD(SD1_DAT1__PWM3_PWMO), /* GPIO1[17] */
+
+ /* PWM4 */
+ MX6PAD(SD1_CMD__PWM4_PWMO), /* GPIO1[18] */
+#endif
+ /* RTC ISL1208 irq*/
+ MX6PAD(NANDF_CLE__GPIO_6_7),
+
+ /* Apalis UART1 */
+#if 0 /* ONE_WIRE */
+ NEW_PAD_CTRL(MX6PAD(SD3_DAT7__UART1_TXD), 0x0001f8b1),
+ NEW_PAD_CTRL(MX6PAD(SD3_DAT6__UART1_RXD), 0x0001f0b1),
+#else
+ MX6PAD(CSI0_DAT10__UART1_TXD),
+ MX6PAD(CSI0_DAT11__UART1_RXD),
+ MX6PAD(EIM_D19__UART1_CTS),
+ MX6PAD(EIM_D20__UART1_RTS),
+ MX6PAD(EIM_D23__UART1_DCD),
+ MX6PAD(EIM_D24__UART1_DTR),
+ MX6PAD(EIM_D25__UART1_DSR),
+ MX6PAD(EIM_EB3__UART1_RI),
+#endif
+
+ /*Apalis UART2 */
+ MX6PAD(SD4_DAT4__UART2_RXD),
+ MX6PAD(SD4_DAT5__UART2_RTS),
+ MX6PAD(SD4_DAT6__UART2_CTS),
+ MX6PAD(SD4_DAT7__UART2_TXD),
+
+ /*Apalis UART3 */
+ MX6PAD(KEY_COL0__UART4_TXD),
+ MX6PAD(KEY_ROW0__UART4_RXD),
+
+ /*Apalis UART4 */
+ MX6PAD(KEY_COL1__UART5_TXD),
+ MX6PAD(KEY_ROW1__UART5_RXD),
+
+ /* Apalis, AUDMUX, local AC97 */
+ MX6PAD(DISP0_DAT23__AUDMUX_AUD4_RXD),
+ MX6PAD(DISP0_DAT20__AUDMUX_AUD4_TXC),
+ MX6PAD(DISP0_DAT21__AUDMUX_AUD4_TXD),
+ MX6PAD(DISP0_DAT22__AUDMUX_AUD4_TXFS),
+ /* Apalis MMC1 */
+ SD_PINS(1, USDHC_PAD_CTRL_22KPU_40OHM_50MHZ),
+ NEW_PAD_CTRL(MX6PAD(NANDF_D0__USDHC1_DAT4), MX6(USDHC_PAD_CTRL_22KPU_40OHM_50MHZ)),
+ NEW_PAD_CTRL(MX6PAD(NANDF_D1__USDHC1_DAT5), MX6(USDHC_PAD_CTRL_22KPU_40OHM_50MHZ)),
+ NEW_PAD_CTRL(MX6PAD(NANDF_D2__USDHC1_DAT6), MX6(USDHC_PAD_CTRL_22KPU_40OHM_50MHZ)),
+ NEW_PAD_CTRL(MX6PAD(NANDF_D3__USDHC1_DAT7), MX6(USDHC_PAD_CTRL_22KPU_40OHM_50MHZ)),
+ /* Apalis eMMC */
+ SD_PINS(3, USDHC_PAD_CTRL_22KPU_40OHM_50MHZ),
+ NEW_PAD_CTRL(MX6PAD(SD3_DAT4__USDHC3_DAT4), MX6(USDHC_PAD_CTRL_22KPU_40OHM_50MHZ)),
+ NEW_PAD_CTRL(MX6PAD(SD3_DAT5__USDHC3_DAT5), MX6(USDHC_PAD_CTRL_22KPU_40OHM_50MHZ)),
+ NEW_PAD_CTRL(MX6PAD(SD3_DAT6__USDHC3_DAT6), MX6(USDHC_PAD_CTRL_22KPU_40OHM_50MHZ)),
+ NEW_PAD_CTRL(MX6PAD(SD3_DAT7__USDHC3_DAT7), MX6(USDHC_PAD_CTRL_22KPU_40OHM_50MHZ)),
+ MX6PAD(SD3_RST__USDHC3_RST),
+ /* Apalis SD1 */
+ SD_PINS(2, USDHC_PAD_CTRL_22KPU_40OHM_50MHZ),
+
+
+ /* USBOTG ID pin */
+ MX6PAD(ENET_RX_ER__ANATOP_USBOTG_ID),
+
+ /* USB OC pin */
+ MX6PAD(EIM_D21__USBOH3_USBOTG_OC),
+ MX6PAD(GPIO_3__USBOH3_USBH1_OC),
+ 0
+};
+
+/* Apalis MXM LCD1 */
+static iomux_v3_cfg_t MX6NAME(lcd_pads_enable)[] = {
+ MX6PAD(EIM_A16__IPU1_DI1_DISP_CLK),
+ MX6PAD(EIM_DA10__IPU1_DI1_PIN15), /* DE */
+ MX6PAD(EIM_DA11__IPU1_DI1_PIN2), /* HSync */
+ MX6PAD(EIM_DA12__IPU1_DI1_PIN3), /* VSync */
+ MX6PAD(EIM_DA9__IPU1_DISP1_DAT_0),
+ MX6PAD(EIM_DA8__IPU1_DISP1_DAT_1),
+ MX6PAD(EIM_DA7__IPU1_DISP1_DAT_2),
+ MX6PAD(EIM_DA6__IPU1_DISP1_DAT_3),
+ MX6PAD(EIM_DA5__IPU1_DISP1_DAT_4),
+ MX6PAD(EIM_DA4__IPU1_DISP1_DAT_5),
+ MX6PAD(EIM_DA3__IPU1_DISP1_DAT_6),
+ MX6PAD(EIM_DA2__IPU1_DISP1_DAT_7),
+ MX6PAD(EIM_DA1__IPU1_DISP1_DAT_8),
+ MX6PAD(EIM_DA0__IPU1_DISP1_DAT_9),
+ MX6PAD(EIM_EB1__IPU1_DISP1_DAT_10),
+ MX6PAD(EIM_EB0__IPU1_DISP1_DAT_11),
+ MX6PAD(EIM_A17__IPU1_DISP1_DAT_12),
+ MX6PAD(EIM_A18__IPU1_DISP1_DAT_13),
+ MX6PAD(EIM_A19__IPU1_DISP1_DAT_14),
+ MX6PAD(EIM_A20__IPU1_DISP1_DAT_15),
+ MX6PAD(EIM_A21__IPU1_DISP1_DAT_16),
+ MX6PAD(EIM_A22__IPU1_DISP1_DAT_17),
+ MX6PAD(EIM_A23__IPU1_DISP1_DAT_18),
+ MX6PAD(EIM_A24__IPU1_DISP1_DAT_19),
+ MX6PAD(EIM_D31__IPU1_DISP1_DAT_20),
+ MX6PAD(EIM_D30__IPU1_DISP1_DAT_21),
+ MX6PAD(EIM_D26__IPU1_DISP1_DAT_22),
+ MX6PAD(EIM_D27__IPU1_DISP1_DAT_23),
+ 0
+};
+
+static iomux_v3_cfg_t MX6NAME(lcd_pads_disable)[] = {
+ MX6PAD(EIM_A16__GPIO_2_22),
+ MX6PAD(EIM_DA10__GPIO_3_10), /* DE */
+ MX6PAD(EIM_DA11__GPIO_3_11), /* HSync */
+ MX6PAD(EIM_DA12__GPIO_3_12), /* VSync */
+ MX6PAD(EIM_DA9__GPIO_3_9),
+ MX6PAD(EIM_DA8__GPIO_3_8),
+ MX6PAD(EIM_DA7__GPIO_3_7),
+ MX6PAD(EIM_DA6__GPIO_3_6),
+ MX6PAD(EIM_DA5__GPIO_3_5),
+ MX6PAD(EIM_DA4__GPIO_3_4),
+ MX6PAD(EIM_DA3__GPIO_3_3),
+ MX6PAD(EIM_DA2__GPIO_3_2),
+ MX6PAD(EIM_DA1__GPIO_3_1),
+ MX6PAD(EIM_DA0__GPIO_3_0),
+ MX6PAD(EIM_EB1__GPIO_2_29),
+ MX6PAD(EIM_EB0__GPIO_2_28),
+ MX6PAD(EIM_A17__GPIO_2_21),
+ MX6PAD(EIM_A18__GPIO_2_20),
+ MX6PAD(EIM_A19__GPIO_2_19),
+ MX6PAD(EIM_A20__GPIO_2_18),
+ MX6PAD(EIM_A21__GPIO_2_17),
+ MX6PAD(EIM_A22__GPIO_2_16),
+ MX6PAD(EIM_A23__GPIO_6_6),
+ MX6PAD(EIM_A24__GPIO_5_4),
+ MX6PAD(EIM_D31__GPIO_3_31),
+ MX6PAD(EIM_D30__GPIO_3_30),
+ MX6PAD(EIM_D26__GPIO_3_26),
+ MX6PAD(EIM_D27__GPIO_3_27),
+ 0
+};
+
+/* Apalis MXM VGA DAC */
+static iomux_v3_cfg_t MX6NAME(vga_dac_enable)[] = {
+ MX6PAD(DI0_DISP_CLK__IPU1_DI0_DISP_CLK),
+ MX6PAD(DI0_PIN2__IPU1_DI0_PIN2), /* HSync */
+ MX6PAD(DI0_PIN3__IPU1_DI0_PIN3), /* VSync */
+ MX6PAD(DISP0_DAT0__IPU1_DISP0_DAT_0),
+ MX6PAD(DISP0_DAT1__IPU1_DISP0_DAT_1),
+ MX6PAD(DISP0_DAT2__IPU1_DISP0_DAT_2),
+ MX6PAD(DISP0_DAT3__IPU1_DISP0_DAT_3),
+ MX6PAD(DISP0_DAT4__IPU1_DISP0_DAT_4),
+ MX6PAD(DISP0_DAT5__IPU1_DISP0_DAT_5),
+ MX6PAD(DISP0_DAT6__IPU1_DISP0_DAT_6),
+ MX6PAD(DISP0_DAT7__IPU1_DISP0_DAT_7),
+ MX6PAD(DISP0_DAT8__IPU1_DISP0_DAT_8),
+ MX6PAD(DISP0_DAT9__IPU1_DISP0_DAT_9),
+ MX6PAD(DISP0_DAT10__IPU1_DISP0_DAT_10),
+ MX6PAD(DISP0_DAT11__IPU1_DISP0_DAT_11),
+ MX6PAD(DISP0_DAT12__IPU1_DISP0_DAT_12),
+ MX6PAD(DISP0_DAT13__IPU1_DISP0_DAT_13),
+ MX6PAD(DISP0_DAT14__IPU1_DISP0_DAT_14),
+ MX6PAD(DISP0_DAT15__IPU1_DISP0_DAT_15),
+ 0
+};
+
+static iomux_v3_cfg_t MX6NAME(vga_dac_disable)[] = {
+ MX6PAD(DI0_DISP_CLK__GPIO_4_16),
+ MX6PAD(DI0_PIN2__GPIO_4_18), /* HSync */
+ MX6PAD(DI0_PIN3__GPIO_4_19), /* VSync */
+ MX6PAD(DISP0_DAT0__GPIO_4_21),
+ MX6PAD(DISP0_DAT1__GPIO_4_22),
+ MX6PAD(DISP0_DAT2__GPIO_4_23),
+ MX6PAD(DISP0_DAT3__GPIO_4_24),
+ MX6PAD(DISP0_DAT4__GPIO_4_25),
+ MX6PAD(DISP0_DAT5__GPIO_4_26),
+ MX6PAD(DISP0_DAT6__GPIO_4_27),
+ MX6PAD(DISP0_DAT7__GPIO_4_28),
+ MX6PAD(DISP0_DAT8__GPIO_4_29),
+ MX6PAD(DISP0_DAT9__GPIO_4_30),
+ MX6PAD(DISP0_DAT10__GPIO_4_31),
+ MX6PAD(DISP0_DAT11__GPIO_5_5),
+ MX6PAD(DISP0_DAT12__GPIO_5_6),
+ MX6PAD(DISP0_DAT13__GPIO_5_7),
+ MX6PAD(DISP0_DAT14__GPIO_5_8),
+ MX6PAD(DISP0_DAT15__GPIO_5_9),
+ 0
+};
+
+#if defined(CONFIG_MXC_CAMERA_OV5640_MIPI) || defined(CONFIG_MXC_CAMERA_OV5640_MIPI_MODULE)
+static iomux_v3_cfg_t MX6NAME(mipi_pads)[] = {
+ MX6PAD(NANDF_WP_B__GPIO_6_9), /* J16 - MIPI Powerdown - Nitrogen6x, SOM is NC */
+ MX6PAD(NANDF_D5__GPIO_2_5), /* J16 - MIPI camera reset - Nitrogen6x/SOM */
+ MX6PAD(NANDF_CS0__GPIO_6_11), /* Camera Reset, SOM jumpered */
+ MX6PAD(GPIO_6__GPIO_1_6), /* Camera GP */
+ 0
+};
+#endif
+
+#if defined(CSI0_CAMERA)
+static iomux_v3_cfg_t MX6NAME(csi0_sensor_pads)[] = {
+ /* IPU1 Camera */
+ MX6PAD(CSI0_DAT8__IPU1_CSI0_D_8),
+ MX6PAD(CSI0_DAT9__IPU1_CSI0_D_9),
+ MX6PAD(CSI0_DAT10__IPU1_CSI0_D_10),
+ MX6PAD(CSI0_DAT11__IPU1_CSI0_D_11),
+ MX6PAD(CSI0_DAT12__IPU1_CSI0_D_12),
+ MX6PAD(CSI0_DAT13__IPU1_CSI0_D_13),
+ MX6PAD(CSI0_DAT14__IPU1_CSI0_D_14),
+ MX6PAD(CSI0_DAT15__IPU1_CSI0_D_15),
+ MX6PAD(CSI0_DAT16__IPU1_CSI0_D_16),
+ MX6PAD(CSI0_DAT17__IPU1_CSI0_D_17),
+ MX6PAD(CSI0_DAT18__IPU1_CSI0_D_18),
+ MX6PAD(CSI0_DAT19__IPU1_CSI0_D_19),
+ MX6PAD(CSI0_DATA_EN__IPU1_CSI0_DATA_EN),
+ MX6PAD(CSI0_MCLK__IPU1_CSI0_HSYNC),
+ MX6PAD(CSI0_PIXCLK__IPU1_CSI0_PIXCLK),
+ MX6PAD(CSI0_VSYNC__IPU1_CSI0_VSYNC),
+ MX6PAD(GPIO_6__GPIO_1_6), /* J5 - Camera GP */
+ MX6PAD(GPIO_8__GPIO_1_8), /* J5 - Camera Reset */
+ MX6PAD(NANDF_CS0__GPIO_6_11), /* J5 - Camera Reset */
+ MX6PAD(SD1_DAT0__GPIO_1_16), /* J5 - Camera GP */
+ 0
+};
+#endif
+
+static iomux_v3_cfg_t MX6NAME(hdmi_ddc_pads)[] = {
+ MX6PAD(KEY_COL3__HDMI_TX_DDC_SCL), /* HDMI DDC SCL */
+ MX6PAD(KEY_ROW3__HDMI_TX_DDC_SDA), /* HDMI DDC SDA */
+ 0
+};
+/* TODO fix that i2c mess */
+static iomux_v3_cfg_t MX6NAME(i2c2_pads)[] = {
+#ifdef TODO
+ MX6PAD(KEY_COL3__I2C2_SCL), /* I2C2 SCL */
+ MX6PAD(KEY_ROW3__I2C2_SDA), /* I2C2 SDA */
+#endif
+ 0
+};
+
+#ifdef TODO
+static iomux_v3_cfg_t MX6NAME(mc33902_flexcan_pads)[] = {
+ NEW_PAD_CTRL(MX6PAD(GPIO_7__GPIO_1_7), CAN1_ERR_PADCFG),
+ 0
+};
+#endif
+#define MX6_USDHC_PAD_SETTING(id, speed, pad_ctl) \
+ MX6NAME(sd##id##_##speed##mhz)[] = { SD_PINS(id, pad_ctl), 0 }
+
+static iomux_v3_cfg_t MX6_USDHC_PAD_SETTING(2, 50, USDHC_PAD_CTRL_22KPU_40OHM_50MHZ);
+static iomux_v3_cfg_t MX6_USDHC_PAD_SETTING(2, 100, USDHC_PAD_CTRL_100MHZ);
+static iomux_v3_cfg_t MX6_USDHC_PAD_SETTING(2, 200, USDHC_PAD_CTRL_200MHZ);
+static iomux_v3_cfg_t MX6_USDHC_PAD_SETTING(3, 50, USDHC_PAD_CTRL_50MHZ);
+static iomux_v3_cfg_t MX6_USDHC_PAD_SETTING(3, 100, USDHC_PAD_CTRL_100MHZ);
+static iomux_v3_cfg_t MX6_USDHC_PAD_SETTING(3, 200, USDHC_PAD_CTRL_200MHZ);
+static iomux_v3_cfg_t MX6_USDHC_PAD_SETTING(4, 50, USDHC_PAD_CTRL_50MHZ);
+static iomux_v3_cfg_t MX6_USDHC_PAD_SETTING(4, 100, USDHC_PAD_CTRL_100MHZ);
+static iomux_v3_cfg_t MX6_USDHC_PAD_SETTING(4, 200, USDHC_PAD_CTRL_200MHZ);
+
+#define _50MHZ 0
+#define _100MHZ 1
+#define _200MHZ 2
+#define SD_SPEED_CNT 3
+static iomux_v3_cfg_t * MX6NAME(sd_pads)[] =
+{
+ MX6NAME(sd2_50mhz),
+ MX6NAME(sd2_100mhz),
+ MX6NAME(sd2_200mhz),
+ MX6NAME(sd3_50mhz),
+ MX6NAME(sd3_100mhz),
+ MX6NAME(sd3_200mhz),
+ MX6NAME(sd4_50mhz),
+ MX6NAME(sd4_100mhz),
+ MX6NAME(sd4_200mhz),
+};