]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
ENGR00179631 MX6 SabreSD: Add MIPI DSI Display support
authorWayne Zou <b36644@freescale.com>
Fri, 13 Apr 2012 06:16:21 +0000 (14:16 +0800)
committerLothar Waßmann <LW@KARO-electronics.de>
Fri, 24 May 2013 06:34:26 +0000 (08:34 +0200)
Add MIPI DSI Display support on mx6 SabreSD board.
MIPI DSI needs pll3_pfd_540M clock source for 540MHz.
if using ldb, the pll3_pfd_540M clock will be changed to 454Mhz.
So add command line option disable_ldb when using MIPI DSI display.

Signed-off-by: Wayne Zou <b36644@freescale.com>
arch/arm/mach-mx6/board-mx6q_sabresd.c
arch/arm/mach-mx6/board-mx6q_sabresd.h

index fba11a5789f1367296b4bcf52b772404330abee0..82fb04e391a9266b987dcaf9253321beb4a7434a 100644 (file)
@@ -67,6 +67,7 @@
 #include <mach/ipu-v3.h>
 #include <mach/mxc_hdmi.h>
 #include <mach/mxc_asrc.h>
+#include <mach/mipi_dsi.h>
 
 #include <asm/irq.h>
 #include <asm/setup.h>
 static struct clk *sata_clk;
 static int mma8451_position = 3;
 static int mag3110_position;
+static int disable_ldb;
 
 extern char *gp_reg_id;
 extern int epdc_enabled;
@@ -1158,6 +1160,28 @@ static struct imx_asrc_platform_data imx_asrc_data = {
        .clk_map_ver = 2,
 };
 
+static void mx6_reset_mipi_dsi(void)
+{
+       gpio_set_value(SABRESD_DISP_PWR_EN, 1);
+       gpio_set_value(SABRESD_DISP_RST_B, 1);
+       udelay(10);
+       gpio_set_value(SABRESD_DISP_RST_B, 0);
+       udelay(50);
+       gpio_set_value(SABRESD_DISP_RST_B, 1);
+
+       /*
+        * it needs to delay 120ms minimum for reset complete
+        */
+       msleep(120);
+}
+
+static struct mipi_dsi_platform_data mipi_dsi_pdata = {
+       .ipu_id         = 0,
+       .disp_id        = 1,
+       .lcd_panel      = "TRULY-WVGA",
+       .reset          = mx6_reset_mipi_dsi,
+};
+
 static struct ipuv3_fb_platform_data sabresd_fb_data[] = {
        { /*fb0*/
        .disp_dev = "ldb",
@@ -1439,6 +1463,14 @@ static const struct imx_pcie_platform_data mx6_sabresd_pcie_data __initconst = {
        .pcie_dis       = SABRESD_PCIE_DIS_B,
 };
 
+static int __init early_disable_ldb(char *p)
+{
+       /*mipi dsi need pll3_pfd_540M as 540MHz, ldb will change to 454Mhz*/
+       disable_ldb = 1;
+       return 0;
+}
+
+early_param("disable_ldb", early_disable_ldb);
 /*!
  * Board specific initialization.
  */
@@ -1482,6 +1514,8 @@ static void __init mx6_sabresd_board_init(void)
                ldb_data.sec_ipu_id = 0;
                ldb_data.sec_disp_id = 1;
                hdmi_core_data.disp_id = 1;
+               mipi_dsi_pdata.ipu_id = 0;
+               mipi_dsi_pdata.disp_id = 1;
        }
        imx6q_add_mxc_hdmi_core(&hdmi_core_data);
 
@@ -1495,8 +1529,10 @@ static void __init mx6_sabresd_board_init(void)
                        imx6q_add_ipuv3fb(i, &sabresd_fb_data[i]);
 
        imx6q_add_vdoa();
+       imx6q_add_mipi_dsi(&mipi_dsi_pdata);
        imx6q_add_lcdif(&lcdif_data);
-       imx6q_add_ldb(&ldb_data);
+       if (!disable_ldb)
+               imx6q_add_ldb(&ldb_data);
        imx6q_add_v4l2_output(0);
        imx6q_add_v4l2_capture(0);
        imx6q_add_mipi_csi2(&mipi_csi2_pdata);
index d84a606f92063479bb46ebd028ff24528200c0c0..8ccb3423424ff97c6268e0d1b268b85f43816014 100644 (file)
@@ -253,6 +253,11 @@ static iomux_v3_cfg_t mx6q_sabresd_pads[] = {
 
        MX6Q_PAD_GPIO_17__GPIO_7_12, /* PCIE_RST */
        MX6Q_PAD_KEY_COL4__GPIO_4_14, /* PCIE_DIS */
+
+       /* DISP_RST_B */
+       MX6Q_PAD_NANDF_CS0__GPIO_6_11,
+       /* DISP_PWR_EN */
+       MX6Q_PAD_NANDF_CS1__GPIO_6_14,
 };
 
 static iomux_v3_cfg_t mx6q_sabresd_csi0_sensor_pads[] = {