]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
ENGR00152845-1 MSL plat-mxc: ipuv3 display support in imx6q
authorJason Chen <b02280@freescale.com>
Wed, 13 Jul 2011 04:02:43 +0000 (12:02 +0800)
committerLothar Waßmann <LW@KARO-electronics.de>
Fri, 24 May 2013 06:32:57 +0000 (08:32 +0200)
1. work for multiple ipu instance

2. add mxc_dispdrv support
 A display device driver could call mxc_dispdrv_register(drv) in its
 dev_probe() function.
 - Move all dev_probe() things into mxc_dispdrv_driver->init(), init()
   function should init and feedback setting;
 - Move all dev_remove() things into mxc_dispdrv_driver->deinit();
 - Move all dev_suspend() things into fb_notifier for SUSPEND, if there is;
 - Move all dev_resume() things into fb_notifier for RESUME, if there is;

 ipuv3 fb driver would call mxc_dispdrv_init(drv_name, setting) before a
 fb need be added, with fbi param passing by setting, after mxc_dispdrv_init()
 return, FB driver should get the basic setting about fbi info and ipuv3-hw
 (ipu_id and disp_id).

 there are many display interfaces on imx5x or imx6x platform, all of them
 are connected with ipuv3-DI, mxc_dispdrv can register display device as:

 "lcd" -- display extend port for lcdif
 "ldb" -- lvds bridge on chip (imx5x or imx6x)
 "tve" -- tve for tveout on chip (imx5x)
 "vga" -- vga through tve on chip (imx5x)
 "hdmi" -- hdmi on platform with ddc support
(sii902x on imx53 - not enable yet)
hdmi on chip with ddc support
(imx6x - not enable yet)
 "dvi" -- dvi port with ddc support (not enable yet)

 take tvout as example, a dispdrv structure and register flow could like below:

 static struct mxc_dispdrv_driver tve_drv = {
       .name   = "tve",
       .init   = tvout_init,
       .deinit = tvout_deinit,
 };

  mxc_dispdrv_register(&tve_drv);

 in ipuv3 fb driver could init tve driver like below:

 setting.if_fmt = interface_pix_fmt;
 setting.dft_mode_str = mode_str;
 setting.default_bpp = default_bpp;
 setting.fbi = fbi;
 mxc_dispdrv_init("tve", &setting);

 based on mxc_dispdrv framework, display cmdline option will become
 as below (take mx53 loco board as example -- fb0 for wvga lcd, fb1 for
 XGA vga):

  video=mxcfb0:dev=lcd,800x480M@55,if=RGB565
video=mxcfb1:dev=vga,VGA-XGA,if=GBR24

 "mxcfb0" means setting for fb0 device, ipuv3 fb driver will request setting
 from registered dispdrv, these setting include what's the ipu and what's the
 DI number this dev used. Normally, if one IPU is first used, ipuv3 fb driver
 will create one overlay fb right after current fb driver create.
 Take above cmdline as an example,
 /dev/fb0 will be first fb device on 800x480 lcd.
 /dev/fb1 will be overlay fb device on 800x480 lcd.
 /dev/fb2 will be second fb device on VGA-XGA vga.

 "dev=" means which display device(lcd,ldb,vga etc) you want choose for this fb.
 "800x480M@55 or VGA-XGA" means the mode_str of video mode you want.
 "if=" means the display device hw interface format.

 such setting could be passed by platform data as a default value, cmdline
 option will replace these values if there are.

3. modify ldb/tve driver and add mxc_lcdif driver.
 For ldb driver, there are below modes could be set by cmdline options:

 "ldb=spl0/1" -- split mode on DI0/1
 "ldb=dul0/1" -- dual mode on DI0/1
 "ldb=sin0/1" -- single mode on DI0/1
 "ldb=sep" -- separate mode

 there are two LVDS channels(LVDS0 and LVDS1) which can transfer video datas,
 there two channels can be used as split/dual/single/separate mode.

 split mode means display data from DI0 or DI1 will send to both channels
 LVDS0+LVDS1.
 dual mode means display data from DI0 or DI1 will be duplicated on LVDS0 and
 LVDS1, it said, LVDS0 and LVDS1 has the same content.
 single mode means only work for DI0->LVDS0 or DI1->LVDS1.
 separate mode means you can make DI0->LVDS0 and DI1->LVDS1 work at the same
 time.

Signed-off-by: Jason Chen <jason.chen@freescale.com>
arch/arm/plat-mxc/devices/platform-imx_ipuv3.c
arch/arm/plat-mxc/devices/platform-imx_ldb.c
arch/arm/plat-mxc/include/mach/devices-common.h
arch/arm/plat-mxc/include/mach/iomux-mx6q.h
arch/arm/plat-mxc/include/mach/ipu-v3.h
arch/arm/plat-mxc/include/mach/irqs.h
arch/arm/plat-mxc/include/mach/mx6.h

index 6da2c34287a1f79195872ee175d10ccf14127daa..311c28d827f6fccce23ee865c330d0d337896e5f 100755 (executable)
                .iobase = soc ## _IPU_CTRL_BASE_ADDR,                   \
                .irq_err = soc ## _INT_IPU_ERR,                         \
                .irq = soc ## _INT_IPU_SYN,                             \
+               .irq_start = MXC_IPU_IRQ_START,                         \
+               .iosize = size,                                         \
+               .init = ipu_init,                                       \
+               .pg = ipu_pg,                                           \
+       }
+
+#define imx6_ipuv3_data_entry_single(soc, id, size, ipu_init, ipu_pg)  \
+       {                                                               \
+               .iobase = soc ## _IPU ## id ## _ARB_BASE_ADDR,                  \
+               .irq_err = soc ## _INT_IPU ## id ## _ERR,                       \
+               .irq = soc ## _INT_IPU ## id ## _SYN,                           \
+               .irq_start = MXC_IPU_IRQ_START,                         \
                .iosize = size,                                         \
                .init = ipu_init,                                       \
                .pg = ipu_pg,                                           \
@@ -56,10 +68,10 @@ static int __init ipu_mipi_setup(void)
        clk_enable(hsc_clk);
 
        /* setup MIPI module to legacy mode */
-       __raw_writel(0xF00, hsc_addr);
+       writel(0xF00, hsc_addr);
 
        /* CSI mode: reserved; DI control mode: legacy (from Freescale BSP) */
-       __raw_writel(__raw_readl(hsc_addr + 0x800) | 0x30ff,
+       writel(readl(hsc_addr + 0x800) | 0x30ff,
                        hsc_addr + 0x800);
 
        clk_disable(hsc_clk);
@@ -70,7 +82,7 @@ unmap:
        return ret;
 }
 
-int __init mx51_ipuv3_init(void)
+int __init mx51_ipuv3_init(int id)
 {
        int ret = 0;
        u32 val;
@@ -88,13 +100,13 @@ int __init mx51_ipuv3_init(void)
 void mx51_ipuv3_pg(int enable)
 {
        if (enable) {
-               __raw_writel(MXC_PGCR_PCR, MX51_PGC_IPU_PGCR);
-               __raw_writel(MXC_PGSR_PSR, MX51_PGC_IPU_PGSR);
+               writel(MXC_PGCR_PCR, MX51_PGC_IPU_PGCR);
+               writel(MXC_PGSR_PSR, MX51_PGC_IPU_PGSR);
        } else {
-               __raw_writel(0x0, MX51_PGC_IPU_PGCR);
-               if (__raw_readl(MX51_PGC_IPU_PGSR) & MXC_PGSR_PSR)
+               writel(0x0, MX51_PGC_IPU_PGCR);
+               if (readl(MX51_PGC_IPU_PGSR) & MXC_PGSR_PSR)
                        printk(KERN_DEBUG "power gating successful\n");
-               __raw_writel(MXC_PGSR_PSR, MX51_PGC_IPU_PGSR);
+               writel(MXC_PGSR_PSR, MX51_PGC_IPU_PGSR);
        }
 }
 
@@ -104,7 +116,7 @@ const struct imx_ipuv3_data imx51_ipuv3_data __initconst =
 #endif
 
 #ifdef CONFIG_SOC_IMX53
-int __init mx53_ipuv3_init(void)
+int __init mx53_ipuv3_init(int id)
 {
        int ret = 0;
        u32 val;
@@ -120,13 +132,13 @@ int __init mx53_ipuv3_init(void)
 void mx53_ipuv3_pg(int enable)
 {
        if (enable) {
-               __raw_writel(MXC_PGCR_PCR, MX53_PGC_IPU_PGCR);
-               __raw_writel(MXC_PGSR_PSR, MX53_PGC_IPU_PGSR);
+               writel(MXC_PGCR_PCR, MX53_PGC_IPU_PGCR);
+               writel(MXC_PGSR_PSR, MX53_PGC_IPU_PGSR);
        } else {
-               __raw_writel(0x0, MX53_PGC_IPU_PGCR);
-               if (__raw_readl(MX53_PGC_IPU_PGSR) & MXC_PGSR_PSR)
+               writel(0x0, MX53_PGC_IPU_PGCR);
+               if (readl(MX53_PGC_IPU_PGSR) & MXC_PGSR_PSR)
                        printk(KERN_DEBUG "power gating successful\n");
-               __raw_writel(MXC_PGSR_PSR, MX53_PGC_IPU_PGSR);
+               writel(MXC_PGSR_PSR, MX53_PGC_IPU_PGSR);
        }
 }
 
@@ -135,7 +147,38 @@ const struct imx_ipuv3_data imx53_ipuv3_data __initconst =
                                        mx53_ipuv3_init, mx53_ipuv3_pg);
 #endif
 
+#ifdef CONFIG_SOC_IMX6Q
+int __init mx6q_ipuv3_init(int id)
+{
+       int ret = 0;
+       u32 val;
+
+       /* hard reset the IPU */
+       val = readl(MX6_IO_ADDRESS(SRC_BASE_ADDR));
+       if (id == 0)
+               val |= 1 << 3;
+       else
+               val |= 1 << 12;
+       writel(val, MX6_IO_ADDRESS(SRC_BASE_ADDR));
+
+       return ret;
+}
+
+void mx6q_ipuv3_pg(int enable)
+{
+       /*TODO*/
+}
+
+const struct imx_ipuv3_data imx6q_ipuv3_data[] __initconst = {
+       imx6_ipuv3_data_entry_single(MX6Q, 1, SZ_4M,
+                       mx6q_ipuv3_init, mx6q_ipuv3_pg),
+       imx6_ipuv3_data_entry_single(MX6Q, 2, SZ_4M,
+                       mx6q_ipuv3_init, mx6q_ipuv3_pg),
+};
+#endif
+
 struct platform_device *__init imx_add_ipuv3(
+               const int id,
                const struct imx_ipuv3_data *data,
                struct imx_ipuv3_platform_data *pdata)
 {
@@ -158,7 +201,28 @@ struct platform_device *__init imx_add_ipuv3(
        pdata->init = data->init;
        pdata->pg = data->pg;
 
-       return imx_add_platform_device("imx-ipuv3", -1,
+       return imx_add_platform_device("imx-ipuv3", id,
                        res, ARRAY_SIZE(res), pdata, sizeof(*pdata));
 }
 
+struct platform_device *__init imx_add_ipuv3_fb(
+               const int id,
+               const struct ipuv3_fb_platform_data *pdata)
+{
+       if (pdata->res_size > 0) {
+               struct resource res[] = {
+                       {
+                               .start = pdata->res_base,
+                               .end = pdata->res_base + pdata->res_size - 1,
+                               .flags = IORESOURCE_MEM,
+                       },
+               };
+
+               return imx_add_platform_device_dmamask("mxc_sdc_fb",
+                               id, res, ARRAY_SIZE(res), pdata,
+                               sizeof(*pdata), DMA_BIT_MASK(32));
+       } else
+               return imx_add_platform_device_dmamask("mxc_sdc_fb", id,
+                               NULL, 0, pdata, sizeof(*pdata),
+                               DMA_BIT_MASK(32));
+}
index 93de74df8c6fe586b4b3e3e6b076bdb5f28075c8..a0919a7b55bc7c7d9253933d54254254bdf270bd 100644 (file)
@@ -33,6 +33,11 @@ const struct imx_ldb_data imx53_ldb_data __initconst =
                        imx_ldb_data_entry_single(MX53, SZ_4K);
 #endif
 
+#ifdef CONFIG_SOC_IMX6Q
+const struct imx_ldb_data imx6q_ldb_data __initconst =
+                       imx_ldb_data_entry_single(MX6Q, SZ_4K);
+#endif
+
 struct platform_device *__init imx_add_ldb(
                const struct imx_ldb_data *data,
                struct fsl_mxc_ldb_platform_data *pdata)
index f9412992a2beba52a075786f6f23cb0c5abadfdd..87de01f56aa32821b8d5bd68cc07814fccb1d9b4 100755 (executable)
@@ -314,13 +314,19 @@ struct imx_ipuv3_data {
        resource_size_t iosize;
        resource_size_t irq_err;
        resource_size_t irq;
-       int (*init) (void);
+       unsigned int irq_start;
+       int (*init) (int);
        void (*pg) (int);
 };
 struct platform_device *__init imx_add_ipuv3(
+               const int id,
                const struct imx_ipuv3_data *data,
                struct imx_ipuv3_platform_data *pdata);
 
+struct platform_device *__init imx_add_ipuv3_fb(
+               const int id,
+               const struct ipuv3_fb_platform_data *pdata);
+
 #include <mach/mxc_vpu.h>
 struct imx_vpu_data {
        resource_size_t iobase;
index 7d403e1ae9ada21c3bbc32526f26a49319398a76..75e37280197445dba5849fd22c3f729669257c09 100644 (file)
@@ -42,6 +42,7 @@ typedef enum iomux_config {
 #define NON_MUX_I       0x3FF
 #define NON_PAD_I       0x7FF
 
+#define MX6Q_HIGH_DRV  (PAD_CTL_DSE_240ohm)
 #define MX6Q_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)
@@ -54,6 +55,7 @@ typedef enum iomux_config {
                PAD_CTL_PUS_100K_UP | PAD_CTL_SPEED_MED |       \
                PAD_CTL_DSE_40ohm | PAD_CTL_HYS)
 
+#define MX6Q_DISP_PAD_CLT      MX6Q_HIGH_DRV
 #define MX6Q_I2C_PAD_CTRL      (PAD_CTL_SRE_FAST | PAD_CTL_ODE | \
                PAD_CTL_PKE | PAD_CTL_PUE | PAD_CTL_DSE_40ohm | \
                PAD_CTL_PUS_100K_UP | PAD_CTL_HYS | PAD_CTL_SPEED_MED)
@@ -4682,9 +4684,9 @@ typedef enum iomux_config {
                (_MX6Q_PAD_EIM_BCLK__TPSMP_HDATA_31 | MUX_PAD_CTRL(NO_PAD_CTRL))
 
 #define  MX6Q_PAD_DI0_DISP_CLK__IPU1_DI0_DISP_CLK              \
-               (_MX6Q_PAD_DI0_DISP_CLK__IPU1_DI0_DISP_CLK | MUX_PAD_CTRL(NO_PAD_CTRL))
+               (_MX6Q_PAD_DI0_DISP_CLK__IPU1_DI0_DISP_CLK | MUX_PAD_CTRL(MX6Q_DISP_PAD_CLT))
 #define  MX6Q_PAD_DI0_DISP_CLK__IPU2_DI0_DISP_CLK              \
-               (_MX6Q_PAD_DI0_DISP_CLK__IPU2_DI0_DISP_CLK | MUX_PAD_CTRL(NO_PAD_CTRL))
+               (_MX6Q_PAD_DI0_DISP_CLK__IPU2_DI0_DISP_CLK | MUX_PAD_CTRL(MX6Q_DISP_PAD_CLT))
 #define  MX6Q_PAD_DI0_DISP_CLK__MIPI_CORE_DPHY_TEST_OUT_28             \
                (_MX6Q_PAD_DI0_DISP_CLK__MIPI_CORE_DPHY_TEST_OUT_28 | MUX_PAD_CTRL(NO_PAD_CTRL))
 #define  MX6Q_PAD_DI0_DISP_CLK__SDMA_DEBUG_CORE_STATE_0                \
@@ -4695,9 +4697,9 @@ typedef enum iomux_config {
                (_MX6Q_PAD_DI0_DISP_CLK__MMDC_MMDC_DEBUG_0 | MUX_PAD_CTRL(NO_PAD_CTRL))
 
 #define  MX6Q_PAD_DI0_PIN15__IPU1_DI0_PIN15            \
-               (_MX6Q_PAD_DI0_PIN15__IPU1_DI0_PIN15 | MUX_PAD_CTRL(NO_PAD_CTRL))
+               (_MX6Q_PAD_DI0_PIN15__IPU1_DI0_PIN15 | MUX_PAD_CTRL(MX6Q_DISP_PAD_CLT))
 #define  MX6Q_PAD_DI0_PIN15__IPU2_DI0_PIN15            \
-               (_MX6Q_PAD_DI0_PIN15__IPU2_DI0_PIN15 | MUX_PAD_CTRL(NO_PAD_CTRL))
+               (_MX6Q_PAD_DI0_PIN15__IPU2_DI0_PIN15 | MUX_PAD_CTRL(MX6Q_DISP_PAD_CLT))
 #define  MX6Q_PAD_DI0_PIN15__AUDMUX_AUD6_TXC           \
                (_MX6Q_PAD_DI0_PIN15__AUDMUX_AUD6_TXC | MUX_PAD_CTRL(NO_PAD_CTRL))
 #define  MX6Q_PAD_DI0_PIN15__MIPI_CORE_DPHY_TEST_OUT_29                \
@@ -4710,9 +4712,9 @@ typedef enum iomux_config {
                (_MX6Q_PAD_DI0_PIN15__MMDC_MMDC_DEBUG_1 | MUX_PAD_CTRL(NO_PAD_CTRL))
 
 #define  MX6Q_PAD_DI0_PIN2__IPU1_DI0_PIN2              \
-               (_MX6Q_PAD_DI0_PIN2__IPU1_DI0_PIN2 | MUX_PAD_CTRL(NO_PAD_CTRL))
+               (_MX6Q_PAD_DI0_PIN2__IPU1_DI0_PIN2 | MUX_PAD_CTRL(MX6Q_DISP_PAD_CLT))
 #define  MX6Q_PAD_DI0_PIN2__IPU2_DI0_PIN2              \
-               (_MX6Q_PAD_DI0_PIN2__IPU2_DI0_PIN2 | MUX_PAD_CTRL(NO_PAD_CTRL))
+               (_MX6Q_PAD_DI0_PIN2__IPU2_DI0_PIN2 | MUX_PAD_CTRL(MX6Q_DISP_PAD_CLT))
 #define  MX6Q_PAD_DI0_PIN2__AUDMUX_AUD6_TXD            \
                (_MX6Q_PAD_DI0_PIN2__AUDMUX_AUD6_TXD | MUX_PAD_CTRL(NO_PAD_CTRL))
 #define  MX6Q_PAD_DI0_PIN2__MIPI_CORE_DPHY_TEST_OUT_30         \
@@ -4727,9 +4729,9 @@ typedef enum iomux_config {
                (_MX6Q_PAD_DI0_PIN2__PL301_MX6QPER1_HADDR_9 | MUX_PAD_CTRL(NO_PAD_CTRL))
 
 #define  MX6Q_PAD_DI0_PIN3__IPU1_DI0_PIN3              \
-               (_MX6Q_PAD_DI0_PIN3__IPU1_DI0_PIN3 | MUX_PAD_CTRL(NO_PAD_CTRL))
+               (_MX6Q_PAD_DI0_PIN3__IPU1_DI0_PIN3 | MUX_PAD_CTRL(MX6Q_DISP_PAD_CLT))
 #define  MX6Q_PAD_DI0_PIN3__IPU2_DI0_PIN3              \
-               (_MX6Q_PAD_DI0_PIN3__IPU2_DI0_PIN3 | MUX_PAD_CTRL(NO_PAD_CTRL))
+               (_MX6Q_PAD_DI0_PIN3__IPU2_DI0_PIN3 | MUX_PAD_CTRL(MX6Q_DISP_PAD_CLT))
 #define  MX6Q_PAD_DI0_PIN3__AUDMUX_AUD6_TXFS           \
                (_MX6Q_PAD_DI0_PIN3__AUDMUX_AUD6_TXFS | MUX_PAD_CTRL(NO_PAD_CTRL))
 #define  MX6Q_PAD_DI0_PIN3__MIPI_CORE_DPHY_TEST_OUT_31         \
@@ -4761,9 +4763,9 @@ typedef enum iomux_config {
                (_MX6Q_PAD_DI0_PIN4__PL301_MX6QPER1_HADDR_11 | MUX_PAD_CTRL(NO_PAD_CTRL))
 
 #define  MX6Q_PAD_DISP0_DAT0__IPU1_DISP0_DAT_0         \
-               (_MX6Q_PAD_DISP0_DAT0__IPU1_DISP0_DAT_0 | MUX_PAD_CTRL(NO_PAD_CTRL))
+               (_MX6Q_PAD_DISP0_DAT0__IPU1_DISP0_DAT_0 | MUX_PAD_CTRL(MX6Q_DISP_PAD_CLT))
 #define  MX6Q_PAD_DISP0_DAT0__IPU2_DISP0_DAT_0         \
-               (_MX6Q_PAD_DISP0_DAT0__IPU2_DISP0_DAT_0 | MUX_PAD_CTRL(NO_PAD_CTRL))
+               (_MX6Q_PAD_DISP0_DAT0__IPU2_DISP0_DAT_0 | MUX_PAD_CTRL(MX6Q_DISP_PAD_CLT))
 #define  MX6Q_PAD_DISP0_DAT0__ECSPI3_SCLK              \
                (_MX6Q_PAD_DISP0_DAT0__ECSPI3_SCLK | MUX_PAD_CTRL(NO_PAD_CTRL))
 #define  MX6Q_PAD_DISP0_DAT0__USDHC1_USDHC_DEBUG_0             \
@@ -4776,9 +4778,9 @@ typedef enum iomux_config {
                (_MX6Q_PAD_DISP0_DAT0__MMDC_MMDC_DEBUG_5 | MUX_PAD_CTRL(NO_PAD_CTRL))
 
 #define  MX6Q_PAD_DISP0_DAT1__IPU1_DISP0_DAT_1         \
-               (_MX6Q_PAD_DISP0_DAT1__IPU1_DISP0_DAT_1 | MUX_PAD_CTRL(NO_PAD_CTRL))
+               (_MX6Q_PAD_DISP0_DAT1__IPU1_DISP0_DAT_1 | MUX_PAD_CTRL(MX6Q_DISP_PAD_CLT))
 #define  MX6Q_PAD_DISP0_DAT1__IPU2_DISP0_DAT_1         \
-               (_MX6Q_PAD_DISP0_DAT1__IPU2_DISP0_DAT_1 | MUX_PAD_CTRL(NO_PAD_CTRL))
+               (_MX6Q_PAD_DISP0_DAT1__IPU2_DISP0_DAT_1 | MUX_PAD_CTRL(MX6Q_DISP_PAD_CLT))
 #define  MX6Q_PAD_DISP0_DAT1__ECSPI3_MOSI              \
                (_MX6Q_PAD_DISP0_DAT1__ECSPI3_MOSI | MUX_PAD_CTRL(NO_PAD_CTRL))
 #define  MX6Q_PAD_DISP0_DAT1__USDHC1_USDHC_DEBUG_1             \
@@ -4793,9 +4795,9 @@ typedef enum iomux_config {
                (_MX6Q_PAD_DISP0_DAT1__PL301_MX6QPER1_HADDR_12 | MUX_PAD_CTRL(NO_PAD_CTRL))
 
 #define  MX6Q_PAD_DISP0_DAT2__IPU1_DISP0_DAT_2         \
-               (_MX6Q_PAD_DISP0_DAT2__IPU1_DISP0_DAT_2 | MUX_PAD_CTRL(NO_PAD_CTRL))
+               (_MX6Q_PAD_DISP0_DAT2__IPU1_DISP0_DAT_2 | MUX_PAD_CTRL(MX6Q_DISP_PAD_CLT))
 #define  MX6Q_PAD_DISP0_DAT2__IPU2_DISP0_DAT_2         \
-               (_MX6Q_PAD_DISP0_DAT2__IPU2_DISP0_DAT_2 | MUX_PAD_CTRL(NO_PAD_CTRL))
+               (_MX6Q_PAD_DISP0_DAT2__IPU2_DISP0_DAT_2 | MUX_PAD_CTRL(MX6Q_DISP_PAD_CLT))
 #define  MX6Q_PAD_DISP0_DAT2__ECSPI3_MISO              \
                (_MX6Q_PAD_DISP0_DAT2__ECSPI3_MISO | MUX_PAD_CTRL(NO_PAD_CTRL))
 #define  MX6Q_PAD_DISP0_DAT2__USDHC1_USDHC_DEBUG_2             \
@@ -4810,9 +4812,9 @@ typedef enum iomux_config {
                (_MX6Q_PAD_DISP0_DAT2__PL301_MX6QPER1_HADDR_13 | MUX_PAD_CTRL(NO_PAD_CTRL))
 
 #define  MX6Q_PAD_DISP0_DAT3__IPU1_DISP0_DAT_3         \
-               (_MX6Q_PAD_DISP0_DAT3__IPU1_DISP0_DAT_3 | MUX_PAD_CTRL(NO_PAD_CTRL))
+               (_MX6Q_PAD_DISP0_DAT3__IPU1_DISP0_DAT_3 | MUX_PAD_CTRL(MX6Q_DISP_PAD_CLT))
 #define  MX6Q_PAD_DISP0_DAT3__IPU2_DISP0_DAT_3         \
-               (_MX6Q_PAD_DISP0_DAT3__IPU2_DISP0_DAT_3 | MUX_PAD_CTRL(NO_PAD_CTRL))
+               (_MX6Q_PAD_DISP0_DAT3__IPU2_DISP0_DAT_3 | MUX_PAD_CTRL(MX6Q_DISP_PAD_CLT))
 #define  MX6Q_PAD_DISP0_DAT3__ECSPI3_SS0               \
                (_MX6Q_PAD_DISP0_DAT3__ECSPI3_SS0 | MUX_PAD_CTRL(NO_PAD_CTRL))
 #define  MX6Q_PAD_DISP0_DAT3__USDHC1_USDHC_DEBUG_3             \
@@ -4827,9 +4829,9 @@ typedef enum iomux_config {
                (_MX6Q_PAD_DISP0_DAT3__PL301_MX6QPER1_HADDR_14 | MUX_PAD_CTRL(NO_PAD_CTRL))
 
 #define  MX6Q_PAD_DISP0_DAT4__IPU1_DISP0_DAT_4         \
-               (_MX6Q_PAD_DISP0_DAT4__IPU1_DISP0_DAT_4 | MUX_PAD_CTRL(NO_PAD_CTRL))
+               (_MX6Q_PAD_DISP0_DAT4__IPU1_DISP0_DAT_4 | MUX_PAD_CTRL(MX6Q_DISP_PAD_CLT))
 #define  MX6Q_PAD_DISP0_DAT4__IPU2_DISP0_DAT_4         \
-               (_MX6Q_PAD_DISP0_DAT4__IPU2_DISP0_DAT_4 | MUX_PAD_CTRL(NO_PAD_CTRL))
+               (_MX6Q_PAD_DISP0_DAT4__IPU2_DISP0_DAT_4 | MUX_PAD_CTRL(MX6Q_DISP_PAD_CLT))
 #define  MX6Q_PAD_DISP0_DAT4__ECSPI3_SS1               \
                (_MX6Q_PAD_DISP0_DAT4__ECSPI3_SS1 | MUX_PAD_CTRL(NO_PAD_CTRL))
 #define  MX6Q_PAD_DISP0_DAT4__USDHC1_USDHC_DEBUG_4             \
@@ -4844,9 +4846,9 @@ typedef enum iomux_config {
                (_MX6Q_PAD_DISP0_DAT4__PL301_MX6QPER1_HADDR_15 | MUX_PAD_CTRL(NO_PAD_CTRL))
 
 #define  MX6Q_PAD_DISP0_DAT5__IPU1_DISP0_DAT_5         \
-               (_MX6Q_PAD_DISP0_DAT5__IPU1_DISP0_DAT_5 | MUX_PAD_CTRL(NO_PAD_CTRL))
+               (_MX6Q_PAD_DISP0_DAT5__IPU1_DISP0_DAT_5 | MUX_PAD_CTRL(MX6Q_DISP_PAD_CLT))
 #define  MX6Q_PAD_DISP0_DAT5__IPU2_DISP0_DAT_5         \
-               (_MX6Q_PAD_DISP0_DAT5__IPU2_DISP0_DAT_5 | MUX_PAD_CTRL(NO_PAD_CTRL))
+               (_MX6Q_PAD_DISP0_DAT5__IPU2_DISP0_DAT_5 | MUX_PAD_CTRL(MX6Q_DISP_PAD_CLT))
 #define  MX6Q_PAD_DISP0_DAT5__ECSPI3_SS2               \
                (_MX6Q_PAD_DISP0_DAT5__ECSPI3_SS2 | MUX_PAD_CTRL(NO_PAD_CTRL))
 #define  MX6Q_PAD_DISP0_DAT5__AUDMUX_AUD6_RXFS         \
@@ -4861,9 +4863,9 @@ typedef enum iomux_config {
                (_MX6Q_PAD_DISP0_DAT5__PL301_MX6QPER1_HADDR_16 | MUX_PAD_CTRL(NO_PAD_CTRL))
 
 #define  MX6Q_PAD_DISP0_DAT6__IPU1_DISP0_DAT_6         \
-               (_MX6Q_PAD_DISP0_DAT6__IPU1_DISP0_DAT_6 | MUX_PAD_CTRL(NO_PAD_CTRL))
+               (_MX6Q_PAD_DISP0_DAT6__IPU1_DISP0_DAT_6 | MUX_PAD_CTRL(MX6Q_DISP_PAD_CLT))
 #define  MX6Q_PAD_DISP0_DAT6__IPU2_DISP0_DAT_6         \
-               (_MX6Q_PAD_DISP0_DAT6__IPU2_DISP0_DAT_6 | MUX_PAD_CTRL(NO_PAD_CTRL))
+               (_MX6Q_PAD_DISP0_DAT6__IPU2_DISP0_DAT_6 | MUX_PAD_CTRL(MX6Q_DISP_PAD_CLT))
 #define  MX6Q_PAD_DISP0_DAT6__ECSPI3_SS3               \
                (_MX6Q_PAD_DISP0_DAT6__ECSPI3_SS3 | MUX_PAD_CTRL(NO_PAD_CTRL))
 #define  MX6Q_PAD_DISP0_DAT6__AUDMUX_AUD6_RXC          \
@@ -4878,9 +4880,9 @@ typedef enum iomux_config {
                (_MX6Q_PAD_DISP0_DAT6__PL301_MX6QPER1_HADDR_17 | MUX_PAD_CTRL(NO_PAD_CTRL))
 
 #define  MX6Q_PAD_DISP0_DAT7__IPU1_DISP0_DAT_7         \
-               (_MX6Q_PAD_DISP0_DAT7__IPU1_DISP0_DAT_7 | MUX_PAD_CTRL(NO_PAD_CTRL))
+               (_MX6Q_PAD_DISP0_DAT7__IPU1_DISP0_DAT_7 | MUX_PAD_CTRL(MX6Q_DISP_PAD_CLT))
 #define  MX6Q_PAD_DISP0_DAT7__IPU2_DISP0_DAT_7         \
-               (_MX6Q_PAD_DISP0_DAT7__IPU2_DISP0_DAT_7 | MUX_PAD_CTRL(NO_PAD_CTRL))
+               (_MX6Q_PAD_DISP0_DAT7__IPU2_DISP0_DAT_7 | MUX_PAD_CTRL(MX6Q_DISP_PAD_CLT))
 #define  MX6Q_PAD_DISP0_DAT7__ECSPI3_RDY               \
                (_MX6Q_PAD_DISP0_DAT7__ECSPI3_RDY | MUX_PAD_CTRL(NO_PAD_CTRL))
 #define  MX6Q_PAD_DISP0_DAT7__USDHC1_USDHC_DEBUG_5             \
@@ -4895,9 +4897,9 @@ typedef enum iomux_config {
                (_MX6Q_PAD_DISP0_DAT7__PL301_MX6QPER1_HADDR_18 | MUX_PAD_CTRL(NO_PAD_CTRL))
 
 #define  MX6Q_PAD_DISP0_DAT8__IPU1_DISP0_DAT_8         \
-               (_MX6Q_PAD_DISP0_DAT8__IPU1_DISP0_DAT_8 | MUX_PAD_CTRL(NO_PAD_CTRL))
+               (_MX6Q_PAD_DISP0_DAT8__IPU1_DISP0_DAT_8 | MUX_PAD_CTRL(MX6Q_DISP_PAD_CLT))
 #define  MX6Q_PAD_DISP0_DAT8__IPU2_DISP0_DAT_8         \
-               (_MX6Q_PAD_DISP0_DAT8__IPU2_DISP0_DAT_8 | MUX_PAD_CTRL(NO_PAD_CTRL))
+               (_MX6Q_PAD_DISP0_DAT8__IPU2_DISP0_DAT_8 | MUX_PAD_CTRL(MX6Q_DISP_PAD_CLT))
 #define  MX6Q_PAD_DISP0_DAT8__PWM1_PWMO                \
                (_MX6Q_PAD_DISP0_DAT8__PWM1_PWMO | MUX_PAD_CTRL(NO_PAD_CTRL))
 #define  MX6Q_PAD_DISP0_DAT8__WDOG1_WDOG_B             \
@@ -4912,9 +4914,9 @@ typedef enum iomux_config {
                (_MX6Q_PAD_DISP0_DAT8__PL301_MX6QPER1_HADDR_19 | MUX_PAD_CTRL(NO_PAD_CTRL))
 
 #define  MX6Q_PAD_DISP0_DAT9__IPU1_DISP0_DAT_9         \
-               (_MX6Q_PAD_DISP0_DAT9__IPU1_DISP0_DAT_9 | MUX_PAD_CTRL(NO_PAD_CTRL))
+               (_MX6Q_PAD_DISP0_DAT9__IPU1_DISP0_DAT_9 | MUX_PAD_CTRL(MX6Q_DISP_PAD_CLT))
 #define  MX6Q_PAD_DISP0_DAT9__IPU2_DISP0_DAT_9         \
-               (_MX6Q_PAD_DISP0_DAT9__IPU2_DISP0_DAT_9 | MUX_PAD_CTRL(NO_PAD_CTRL))
+               (_MX6Q_PAD_DISP0_DAT9__IPU2_DISP0_DAT_9 | MUX_PAD_CTRL(MX6Q_DISP_PAD_CLT))
 #define  MX6Q_PAD_DISP0_DAT9__PWM2_PWMO                \
                (_MX6Q_PAD_DISP0_DAT9__PWM2_PWMO | MUX_PAD_CTRL(NO_PAD_CTRL))
 #define  MX6Q_PAD_DISP0_DAT9__WDOG2_WDOG_B             \
@@ -4929,9 +4931,9 @@ typedef enum iomux_config {
                (_MX6Q_PAD_DISP0_DAT9__PL301_MX6QPER1_HADDR_20 | MUX_PAD_CTRL(NO_PAD_CTRL))
 
 #define  MX6Q_PAD_DISP0_DAT10__IPU1_DISP0_DAT_10               \
-               (_MX6Q_PAD_DISP0_DAT10__IPU1_DISP0_DAT_10 | MUX_PAD_CTRL(NO_PAD_CTRL))
+               (_MX6Q_PAD_DISP0_DAT10__IPU1_DISP0_DAT_10 | MUX_PAD_CTRL(MX6Q_DISP_PAD_CLT))
 #define  MX6Q_PAD_DISP0_DAT10__IPU2_DISP0_DAT_10               \
-               (_MX6Q_PAD_DISP0_DAT10__IPU2_DISP0_DAT_10 | MUX_PAD_CTRL(NO_PAD_CTRL))
+               (_MX6Q_PAD_DISP0_DAT10__IPU2_DISP0_DAT_10 | MUX_PAD_CTRL(MX6Q_DISP_PAD_CLT))
 #define  MX6Q_PAD_DISP0_DAT10__USDHC1_USDHC_DEBUG_6            \
                (_MX6Q_PAD_DISP0_DAT10__USDHC1_USDHC_DEBUG_6 | MUX_PAD_CTRL(MX6Q_USDHC_PAD_CTRL))
 #define  MX6Q_PAD_DISP0_DAT10__SDMA_DEBUG_EVENT_CHANNEL_3              \
@@ -4944,9 +4946,9 @@ typedef enum iomux_config {
                (_MX6Q_PAD_DISP0_DAT10__PL301_MX6QPER1_HADDR_21 | MUX_PAD_CTRL(NO_PAD_CTRL))
 
 #define  MX6Q_PAD_DISP0_DAT11__IPU1_DISP0_DAT_11               \
-               (_MX6Q_PAD_DISP0_DAT11__IPU1_DISP0_DAT_11 | MUX_PAD_CTRL(NO_PAD_CTRL))
+               (_MX6Q_PAD_DISP0_DAT11__IPU1_DISP0_DAT_11 | MUX_PAD_CTRL(MX6Q_DISP_PAD_CLT))
 #define  MX6Q_PAD_DISP0_DAT11__IPU2_DISP0_DAT_11               \
-               (_MX6Q_PAD_DISP0_DAT11__IPU2_DISP0_DAT_11 | MUX_PAD_CTRL(NO_PAD_CTRL))
+               (_MX6Q_PAD_DISP0_DAT11__IPU2_DISP0_DAT_11 | MUX_PAD_CTRL(MX6Q_DISP_PAD_CLT))
 #define  MX6Q_PAD_DISP0_DAT11__USDHC1_USDHC_DEBUG_7            \
                (_MX6Q_PAD_DISP0_DAT11__USDHC1_USDHC_DEBUG_7 | MUX_PAD_CTRL(MX6Q_USDHC_PAD_CTRL))
 #define  MX6Q_PAD_DISP0_DAT11__SDMA_DEBUG_EVENT_CHANNEL_4              \
@@ -4959,9 +4961,9 @@ typedef enum iomux_config {
                (_MX6Q_PAD_DISP0_DAT11__PL301_MX6QPER1_HADDR_22 | MUX_PAD_CTRL(NO_PAD_CTRL))
 
 #define  MX6Q_PAD_DISP0_DAT12__IPU1_DISP0_DAT_12               \
-               (_MX6Q_PAD_DISP0_DAT12__IPU1_DISP0_DAT_12 | MUX_PAD_CTRL(NO_PAD_CTRL))
+               (_MX6Q_PAD_DISP0_DAT12__IPU1_DISP0_DAT_12 | MUX_PAD_CTRL(MX6Q_DISP_PAD_CLT))
 #define  MX6Q_PAD_DISP0_DAT12__IPU2_DISP0_DAT_12               \
-               (_MX6Q_PAD_DISP0_DAT12__IPU2_DISP0_DAT_12 | MUX_PAD_CTRL(NO_PAD_CTRL))
+               (_MX6Q_PAD_DISP0_DAT12__IPU2_DISP0_DAT_12 | MUX_PAD_CTRL(MX6Q_DISP_PAD_CLT))
 #define  MX6Q_PAD_DISP0_DAT12__RESERVED_RESERVED               \
                (_MX6Q_PAD_DISP0_DAT12__RESERVED_RESERVED | MUX_PAD_CTRL(NO_PAD_CTRL))
 #define  MX6Q_PAD_DISP0_DAT12__SDMA_DEBUG_EVENT_CHANNEL_5              \
@@ -4974,9 +4976,9 @@ typedef enum iomux_config {
                (_MX6Q_PAD_DISP0_DAT12__PL301_MX6QPER1_HADDR_23 | MUX_PAD_CTRL(NO_PAD_CTRL))
 
 #define  MX6Q_PAD_DISP0_DAT13__IPU1_DISP0_DAT_13               \
-               (_MX6Q_PAD_DISP0_DAT13__IPU1_DISP0_DAT_13 | MUX_PAD_CTRL(NO_PAD_CTRL))
+               (_MX6Q_PAD_DISP0_DAT13__IPU1_DISP0_DAT_13 | MUX_PAD_CTRL(MX6Q_DISP_PAD_CLT))
 #define  MX6Q_PAD_DISP0_DAT13__IPU2_DISP0_DAT_13               \
-               (_MX6Q_PAD_DISP0_DAT13__IPU2_DISP0_DAT_13 | MUX_PAD_CTRL(NO_PAD_CTRL))
+               (_MX6Q_PAD_DISP0_DAT13__IPU2_DISP0_DAT_13 | MUX_PAD_CTRL(MX6Q_DISP_PAD_CLT))
 #define  MX6Q_PAD_DISP0_DAT13__AUDMUX_AUD5_RXFS                \
                (_MX6Q_PAD_DISP0_DAT13__AUDMUX_AUD5_RXFS | MUX_PAD_CTRL(NO_PAD_CTRL))
 #define  MX6Q_PAD_DISP0_DAT13__SDMA_DEBUG_EVT_CHN_LINES_0              \
@@ -4989,9 +4991,9 @@ typedef enum iomux_config {
                (_MX6Q_PAD_DISP0_DAT13__PL301_MX6QPER1_HADDR_24 | MUX_PAD_CTRL(NO_PAD_CTRL))
 
 #define  MX6Q_PAD_DISP0_DAT14__IPU1_DISP0_DAT_14               \
-               (_MX6Q_PAD_DISP0_DAT14__IPU1_DISP0_DAT_14 | MUX_PAD_CTRL(NO_PAD_CTRL))
+               (_MX6Q_PAD_DISP0_DAT14__IPU1_DISP0_DAT_14 | MUX_PAD_CTRL(MX6Q_DISP_PAD_CLT))
 #define  MX6Q_PAD_DISP0_DAT14__IPU2_DISP0_DAT_14               \
-               (_MX6Q_PAD_DISP0_DAT14__IPU2_DISP0_DAT_14 | MUX_PAD_CTRL(NO_PAD_CTRL))
+               (_MX6Q_PAD_DISP0_DAT14__IPU2_DISP0_DAT_14 | MUX_PAD_CTRL(MX6Q_DISP_PAD_CLT))
 #define  MX6Q_PAD_DISP0_DAT14__AUDMUX_AUD5_RXC         \
                (_MX6Q_PAD_DISP0_DAT14__AUDMUX_AUD5_RXC | MUX_PAD_CTRL(NO_PAD_CTRL))
 #define  MX6Q_PAD_DISP0_DAT14__SDMA_DEBUG_EVT_CHN_LINES_1              \
@@ -5002,9 +5004,9 @@ typedef enum iomux_config {
                (_MX6Q_PAD_DISP0_DAT14__MMDC_MMDC_DEBUG_19 | MUX_PAD_CTRL(NO_PAD_CTRL))
 
 #define  MX6Q_PAD_DISP0_DAT15__IPU1_DISP0_DAT_15               \
-               (_MX6Q_PAD_DISP0_DAT15__IPU1_DISP0_DAT_15 | MUX_PAD_CTRL(NO_PAD_CTRL))
+               (_MX6Q_PAD_DISP0_DAT15__IPU1_DISP0_DAT_15 | MUX_PAD_CTRL(MX6Q_DISP_PAD_CLT))
 #define  MX6Q_PAD_DISP0_DAT15__IPU2_DISP0_DAT_15               \
-               (_MX6Q_PAD_DISP0_DAT15__IPU2_DISP0_DAT_15 | MUX_PAD_CTRL(NO_PAD_CTRL))
+               (_MX6Q_PAD_DISP0_DAT15__IPU2_DISP0_DAT_15 | MUX_PAD_CTRL(MX6Q_DISP_PAD_CLT))
 #define  MX6Q_PAD_DISP0_DAT15__ECSPI1_SS1              \
                (_MX6Q_PAD_DISP0_DAT15__ECSPI1_SS1 | MUX_PAD_CTRL(NO_PAD_CTRL))
 #define  MX6Q_PAD_DISP0_DAT15__ECSPI2_SS1              \
@@ -5019,9 +5021,9 @@ typedef enum iomux_config {
                (_MX6Q_PAD_DISP0_DAT15__PL301_MX6QPER1_HADDR_25 | MUX_PAD_CTRL(NO_PAD_CTRL))
 
 #define  MX6Q_PAD_DISP0_DAT16__IPU1_DISP0_DAT_16               \
-               (_MX6Q_PAD_DISP0_DAT16__IPU1_DISP0_DAT_16 | MUX_PAD_CTRL(NO_PAD_CTRL))
+               (_MX6Q_PAD_DISP0_DAT16__IPU1_DISP0_DAT_16 | MUX_PAD_CTRL(MX6Q_DISP_PAD_CLT))
 #define  MX6Q_PAD_DISP0_DAT16__IPU2_DISP0_DAT_16               \
-               (_MX6Q_PAD_DISP0_DAT16__IPU2_DISP0_DAT_16 | MUX_PAD_CTRL(NO_PAD_CTRL))
+               (_MX6Q_PAD_DISP0_DAT16__IPU2_DISP0_DAT_16 | MUX_PAD_CTRL(MX6Q_DISP_PAD_CLT))
 #define  MX6Q_PAD_DISP0_DAT16__ECSPI2_MOSI             \
                (_MX6Q_PAD_DISP0_DAT16__ECSPI2_MOSI | MUX_PAD_CTRL(NO_PAD_CTRL))
 #define  MX6Q_PAD_DISP0_DAT16__AUDMUX_AUD5_TXC         \
@@ -5036,9 +5038,9 @@ typedef enum iomux_config {
                (_MX6Q_PAD_DISP0_DAT16__PL301_MX6QPER1_HADDR_26 | MUX_PAD_CTRL(NO_PAD_CTRL))
 
 #define  MX6Q_PAD_DISP0_DAT17__IPU1_DISP0_DAT_17               \
-               (_MX6Q_PAD_DISP0_DAT17__IPU1_DISP0_DAT_17 | MUX_PAD_CTRL(NO_PAD_CTRL))
+               (_MX6Q_PAD_DISP0_DAT17__IPU1_DISP0_DAT_17 | MUX_PAD_CTRL(MX6Q_DISP_PAD_CLT))
 #define  MX6Q_PAD_DISP0_DAT17__IPU2_DISP0_DAT_17               \
-               (_MX6Q_PAD_DISP0_DAT17__IPU2_DISP0_DAT_17 | MUX_PAD_CTRL(NO_PAD_CTRL))
+               (_MX6Q_PAD_DISP0_DAT17__IPU2_DISP0_DAT_17 | MUX_PAD_CTRL(MX6Q_DISP_PAD_CLT))
 #define  MX6Q_PAD_DISP0_DAT17__ECSPI2_MISO             \
                (_MX6Q_PAD_DISP0_DAT17__ECSPI2_MISO | MUX_PAD_CTRL(NO_PAD_CTRL))
 #define  MX6Q_PAD_DISP0_DAT17__AUDMUX_AUD5_TXD         \
@@ -5053,9 +5055,9 @@ typedef enum iomux_config {
                (_MX6Q_PAD_DISP0_DAT17__PL301_MX6QPER1_HADDR_27 | MUX_PAD_CTRL(NO_PAD_CTRL))
 
 #define  MX6Q_PAD_DISP0_DAT18__IPU1_DISP0_DAT_18               \
-               (_MX6Q_PAD_DISP0_DAT18__IPU1_DISP0_DAT_18 | MUX_PAD_CTRL(NO_PAD_CTRL))
+               (_MX6Q_PAD_DISP0_DAT18__IPU1_DISP0_DAT_18 | MUX_PAD_CTRL(MX6Q_DISP_PAD_CLT))
 #define  MX6Q_PAD_DISP0_DAT18__IPU2_DISP0_DAT_18               \
-               (_MX6Q_PAD_DISP0_DAT18__IPU2_DISP0_DAT_18 | MUX_PAD_CTRL(NO_PAD_CTRL))
+               (_MX6Q_PAD_DISP0_DAT18__IPU2_DISP0_DAT_18 | MUX_PAD_CTRL(MX6Q_DISP_PAD_CLT))
 #define  MX6Q_PAD_DISP0_DAT18__ECSPI2_SS0              \
                (_MX6Q_PAD_DISP0_DAT18__ECSPI2_SS0 | MUX_PAD_CTRL(NO_PAD_CTRL))
 #define  MX6Q_PAD_DISP0_DAT18__AUDMUX_AUD5_TXFS                \
@@ -5070,9 +5072,9 @@ typedef enum iomux_config {
                (_MX6Q_PAD_DISP0_DAT18__WEIM_WEIM_CS_2 | MUX_PAD_CTRL(NO_PAD_CTRL))
 
 #define  MX6Q_PAD_DISP0_DAT19__IPU1_DISP0_DAT_19               \
-               (_MX6Q_PAD_DISP0_DAT19__IPU1_DISP0_DAT_19 | MUX_PAD_CTRL(NO_PAD_CTRL))
+               (_MX6Q_PAD_DISP0_DAT19__IPU1_DISP0_DAT_19 | MUX_PAD_CTRL(MX6Q_DISP_PAD_CLT))
 #define  MX6Q_PAD_DISP0_DAT19__IPU2_DISP0_DAT_19               \
-               (_MX6Q_PAD_DISP0_DAT19__IPU2_DISP0_DAT_19 | MUX_PAD_CTRL(NO_PAD_CTRL))
+               (_MX6Q_PAD_DISP0_DAT19__IPU2_DISP0_DAT_19 | MUX_PAD_CTRL(MX6Q_DISP_PAD_CLT))
 #define  MX6Q_PAD_DISP0_DAT19__ECSPI2_SCLK             \
                (_MX6Q_PAD_DISP0_DAT19__ECSPI2_SCLK | MUX_PAD_CTRL(NO_PAD_CTRL))
 #define  MX6Q_PAD_DISP0_DAT19__AUDMUX_AUD5_RXD         \
@@ -5087,9 +5089,9 @@ typedef enum iomux_config {
                (_MX6Q_PAD_DISP0_DAT19__WEIM_WEIM_CS_3 | MUX_PAD_CTRL(NO_PAD_CTRL))
 
 #define  MX6Q_PAD_DISP0_DAT20__IPU1_DISP0_DAT_20               \
-               (_MX6Q_PAD_DISP0_DAT20__IPU1_DISP0_DAT_20 | MUX_PAD_CTRL(NO_PAD_CTRL))
+               (_MX6Q_PAD_DISP0_DAT20__IPU1_DISP0_DAT_20 | MUX_PAD_CTRL(MX6Q_DISP_PAD_CLT))
 #define  MX6Q_PAD_DISP0_DAT20__IPU2_DISP0_DAT_20               \
-               (_MX6Q_PAD_DISP0_DAT20__IPU2_DISP0_DAT_20 | MUX_PAD_CTRL(NO_PAD_CTRL))
+               (_MX6Q_PAD_DISP0_DAT20__IPU2_DISP0_DAT_20 | MUX_PAD_CTRL(MX6Q_DISP_PAD_CLT))
 #define  MX6Q_PAD_DISP0_DAT20__ECSPI1_SCLK             \
                (_MX6Q_PAD_DISP0_DAT20__ECSPI1_SCLK | MUX_PAD_CTRL(NO_PAD_CTRL))
 #define  MX6Q_PAD_DISP0_DAT20__AUDMUX_AUD4_TXC         \
@@ -5104,9 +5106,9 @@ typedef enum iomux_config {
                (_MX6Q_PAD_DISP0_DAT20__PL301_MX6QPER1_HADDR_28 | MUX_PAD_CTRL(NO_PAD_CTRL))
 
 #define  MX6Q_PAD_DISP0_DAT21__IPU1_DISP0_DAT_21               \
-               (_MX6Q_PAD_DISP0_DAT21__IPU1_DISP0_DAT_21 | MUX_PAD_CTRL(NO_PAD_CTRL))
+               (_MX6Q_PAD_DISP0_DAT21__IPU1_DISP0_DAT_21 | MUX_PAD_CTRL(MX6Q_DISP_PAD_CLT))
 #define  MX6Q_PAD_DISP0_DAT21__IPU2_DISP0_DAT_21               \
-               (_MX6Q_PAD_DISP0_DAT21__IPU2_DISP0_DAT_21 | MUX_PAD_CTRL(NO_PAD_CTRL))
+               (_MX6Q_PAD_DISP0_DAT21__IPU2_DISP0_DAT_21 | MUX_PAD_CTRL(MX6Q_DISP_PAD_CLT))
 #define  MX6Q_PAD_DISP0_DAT21__ECSPI1_MOSI             \
                (_MX6Q_PAD_DISP0_DAT21__ECSPI1_MOSI | MUX_PAD_CTRL(NO_PAD_CTRL))
 #define  MX6Q_PAD_DISP0_DAT21__AUDMUX_AUD4_TXD         \
@@ -5121,9 +5123,9 @@ typedef enum iomux_config {
                (_MX6Q_PAD_DISP0_DAT21__PL301_MX6QPER1_HADDR_29 | MUX_PAD_CTRL(NO_PAD_CTRL))
 
 #define  MX6Q_PAD_DISP0_DAT22__IPU1_DISP0_DAT_22               \
-               (_MX6Q_PAD_DISP0_DAT22__IPU1_DISP0_DAT_22 | MUX_PAD_CTRL(NO_PAD_CTRL))
+               (_MX6Q_PAD_DISP0_DAT22__IPU1_DISP0_DAT_22 | MUX_PAD_CTRL(MX6Q_DISP_PAD_CLT))
 #define  MX6Q_PAD_DISP0_DAT22__IPU2_DISP0_DAT_22               \
-               (_MX6Q_PAD_DISP0_DAT22__IPU2_DISP0_DAT_22 | MUX_PAD_CTRL(NO_PAD_CTRL))
+               (_MX6Q_PAD_DISP0_DAT22__IPU2_DISP0_DAT_22 | MUX_PAD_CTRL(MX6Q_DISP_PAD_CLT))
 #define  MX6Q_PAD_DISP0_DAT22__ECSPI1_MISO             \
                (_MX6Q_PAD_DISP0_DAT22__ECSPI1_MISO | MUX_PAD_CTRL(NO_PAD_CTRL))
 #define  MX6Q_PAD_DISP0_DAT22__AUDMUX_AUD4_TXFS                \
@@ -5138,9 +5140,9 @@ typedef enum iomux_config {
                (_MX6Q_PAD_DISP0_DAT22__PL301_MX6QPER1_HADDR_30 | MUX_PAD_CTRL(NO_PAD_CTRL))
 
 #define  MX6Q_PAD_DISP0_DAT23__IPU1_DISP0_DAT_23               \
-               (_MX6Q_PAD_DISP0_DAT23__IPU1_DISP0_DAT_23 | MUX_PAD_CTRL(NO_PAD_CTRL))
+               (_MX6Q_PAD_DISP0_DAT23__IPU1_DISP0_DAT_23 | MUX_PAD_CTRL(MX6Q_DISP_PAD_CLT))
 #define  MX6Q_PAD_DISP0_DAT23__IPU2_DISP0_DAT_23               \
-               (_MX6Q_PAD_DISP0_DAT23__IPU2_DISP0_DAT_23 | MUX_PAD_CTRL(NO_PAD_CTRL))
+               (_MX6Q_PAD_DISP0_DAT23__IPU2_DISP0_DAT_23 | MUX_PAD_CTRL(MX6Q_DISP_PAD_CLT))
 #define  MX6Q_PAD_DISP0_DAT23__ECSPI1_SS0              \
                (_MX6Q_PAD_DISP0_DAT23__ECSPI1_SS0 | MUX_PAD_CTRL(NO_PAD_CTRL))
 #define  MX6Q_PAD_DISP0_DAT23__AUDMUX_AUD4_RXD         \
@@ -5854,7 +5856,7 @@ typedef enum iomux_config {
 #define  MX6Q_PAD_GPIO_9__PWM1_PWMO            \
                (_MX6Q_PAD_GPIO_9__PWM1_PWMO | MUX_PAD_CTRL(NO_PAD_CTRL))
 #define  MX6Q_PAD_GPIO_9__GPIO_1_9             \
-               (_MX6Q_PAD_GPIO_9__GPIO_1_9 | MUX_PAD_CTRL(NO_PAD_CTRL))
+               (_MX6Q_PAD_GPIO_9__GPIO_1_9 | MUX_PAD_CTRL(MX6Q_HIGH_DRV))
 #define  MX6Q_PAD_GPIO_9__USDHC1_WP            \
                (_MX6Q_PAD_GPIO_9__USDHC1_WP | MUX_PAD_CTRL(MX6Q_USDHC_PAD_CTRL))
 #define  MX6Q_PAD_GPIO_9__SRC_EARLY_RST                \
index f1a062b24d3aad1bb19894dea8254891691bfd31..8ef0dd32068318f8079f4ad4998e5433029b4e36 100755 (executable)
 #define __MACH_IPU_V3_H_
 
 struct ipuv3_fb_platform_data {
-       const struct fb_videomode       *modes;
-       int                             num_modes;
-       char                            *mode_str;
+       char                            disp_dev[32];
        u32                             interface_pix_fmt;
+       char                            *mode_str;
+       int                             default_bpp;
+       bool                            int_clk;
 
        /* reserved mem */
        resource_size_t                 res_base;
@@ -29,14 +30,10 @@ struct ipuv3_fb_platform_data {
 
 struct imx_ipuv3_platform_data {
        int rev;
-       int (*init) (void);
+       int (*init) (int);
        void (*pg) (int);
-       struct ipuv3_fb_platform_data   *fb_head0_platform_data;
-       struct ipuv3_fb_platform_data   *fb_head1_platform_data;
-#define MXC_PRI_DI0    1
-#define MXC_PRI_DI1    2
-       int primary_di;
-       struct clk  *csi_clk[2];
+
+       char *csi_clk[2];
 };
 
 #endif /* __MACH_IPU_V3_H_ */
index 835708c445bd570c2f62f185efbaeb3f1f9a40ac..9e44eaa4824ca423d3f7cbbbcc9b18b6f68e3997 100644 (file)
 #else
 #define MX3_IPU_IRQS 0
 #endif
-/* REVISIT: Add IPU irqs on IMX51 */
 
-#define NR_IRQS                        (MXC_IPU_IRQ_START + MX3_IPU_IRQS)
+#ifdef CONFIG_ARCH_MX5
+#define MX5_IPU_IRQS (32*15)
+#else
+#define MX5_IPU_IRQS 0
+#endif
+
+#define NR_IRQS        (MXC_IPU_IRQ_START + MX3_IPU_IRQS + MX5_IPU_IRQS)
 
 extern int imx_irq_set_priority(unsigned char irq, unsigned char prio);
 
index fe95cc0d2ccbccd7ab690fec5110f65953224e71..35aa7265103c7e6534625972aa671b61ff71ae58 100644 (file)
 #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 MX6Q_IPU1_ARB_BASE_ADDR         0x02400000
+#define MX6Q_IPU1_ARB_END_ADDR          0x027FFFFF
+#define MX6Q_IPU2_ARB_BASE_ADDR         0x02800000
+#define MX6Q_IPU2_ARB_END_ADDR          0x02BFFFFF
 #define WEIM_ARB_BASE_ADDR              0x08000000
 #define WEIM_ARB_END_ADDR               0x0FFFFFFF
 
 #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 MX6Q_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 MX6Q_SDMA_BASE_ADDR                    (AIPS1_OFF_BASE_ADDR + 0x6C000)
 #define MX6Q_INT_SDMA                              34
 #define MXC_INT_VPU_JPG                            35
 #define MXC_INT_INTERRUPT_36_NUM                   36
-#define MXC_INT_IPU1_ERR                           37
-#define MXC_INT_IPU1_FUNC                          38
-#define MXC_INT_IPU2_ERR                           39
-#define MXC_INT_IPU2_FUNC                          40
+#define MX6Q_INT_IPU1_ERR                          37
+#define MX6Q_INT_IPU1_SYN                          38
+#define MX6Q_INT_IPU2_ERR                          39
+#define MX6Q_INT_IPU2_SYN                          40
 #define MXC_INT_GPU3D_IRQ                          41
 #define MXC_INT_GPU2D_IRQ                          42
 #define MXC_INT_OPENVG_XAQ2                        43