aboutsummaryrefslogtreecommitdiff
path: root/arch/arm/mach-mx6
diff options
context:
space:
mode:
authorWayne Zou <b36644@freescale.com>2011-10-14 14:55:08 +0800
committerEric Miao <eric.miao@canonical.com>2011-11-10 07:38:58 +0800
commit50e3a072ca81e144711f5f325f68bedb5fc76f34 (patch)
tree433e9522e48b96e7edf5a30e6c2b0168b169db45 /arch/arm/mach-mx6
parentb1cef679a62ee8b11d79f8844d3139234b027e43 (diff)
ENGR00159981-1 MX6: Add MIPI DSI driver and support TRULY WVGA LCD panel
MX6 MIPI DSI: Add MIPI DSI driver and support for TRULY WVGA LCD panel Signed-off-by: Wayne Zou <b36644@freescale.com>
Diffstat (limited to 'arch/arm/mach-mx6')
-rw-r--r--arch/arm/mach-mx6/Kconfig1
-rw-r--r--arch/arm/mach-mx6/board-mx6q_arm2.c24
-rw-r--r--arch/arm/mach-mx6/clock.c11
-rw-r--r--arch/arm/mach-mx6/devices-imx6q.h4
4 files changed, 40 insertions, 0 deletions
diff --git a/arch/arm/mach-mx6/Kconfig b/arch/arm/mach-mx6/Kconfig
index 90ef11fccb3..9441aa9436e 100644
--- a/arch/arm/mach-mx6/Kconfig
+++ b/arch/arm/mach-mx6/Kconfig
@@ -51,6 +51,7 @@ config MACH_MX6Q_ARM2
select IMX_HAVE_PLATFORM_MXC_HDMI
select IMX_HAVE_PLATFORM_IMX_ASRC
select IMX_HAVE_PLATFORM_IMX_SPDIF
+ select IMX_HAVE_PLATFORM_IMX_MIPI_DSI
help
Include support for i.MX 6Quad Armadillo2 platform. This includes specific
configurations for the board and its peripherals.
diff --git a/arch/arm/mach-mx6/board-mx6q_arm2.c b/arch/arm/mach-mx6/board-mx6q_arm2.c
index d37d7e5af5c..29fc86e9339 100644
--- a/arch/arm/mach-mx6/board-mx6q_arm2.c
+++ b/arch/arm/mach-mx6/board-mx6q_arm2.c
@@ -64,6 +64,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>
@@ -775,6 +776,28 @@ static struct imx_asrc_platform_data imx_asrc_data = {
.clk_map_ver = 2,
};
+static void mx6q_sabreauto_reset_mipi_dsi(void)
+{
+ gpio_set_value(MX6Q_ARM2_DISP0_PWR, 1);
+ gpio_set_value(MX6Q_ARM2_DISP0_RESET, 1);
+ udelay(10);
+ gpio_set_value(MX6Q_ARM2_DISP0_RESET, 0);
+ udelay(50);
+ gpio_set_value(MX6Q_ARM2_DISP0_RESET, 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 = 0,
+ .lcd_panel = "TRULY-WVGA",
+ .reset = mx6q_sabreauto_reset_mipi_dsi,
+};
+
static struct ipuv3_fb_platform_data sabr_fb_data[] = {
{ /*fb0*/
.disp_dev = "ldb",
@@ -1128,6 +1151,7 @@ static void __init mx6_board_init(void)
for (i = 0; i < ARRAY_SIZE(sabr_fb_data); i++)
imx6q_add_ipuv3fb(i, &sabr_fb_data[i]);
+ imx6q_add_mipi_dsi(&mipi_dsi_pdata);
imx6q_add_lcdif(&lcdif_data);
imx6q_add_ldb(&ldb_data);
imx6q_add_v4l2_output(0);
diff --git a/arch/arm/mach-mx6/clock.c b/arch/arm/mach-mx6/clock.c
index a837918a141..a632e4158f1 100644
--- a/arch/arm/mach-mx6/clock.c
+++ b/arch/arm/mach-mx6/clock.c
@@ -3782,6 +3782,16 @@ static struct clk hsi_tx_clk[] = {
},
};
+static struct clk mipi_pllref_clk = {
+ __INIT_CLK_DEBUG(mipi_pllref_clk)
+ .id = 0,
+ .parent = &pll3_pfd_540M,
+ .enable_reg = MXC_CCM_CCGR3,
+ .enable_shift = MXC_CCM_CCGRx_CG8_OFFSET,
+ .enable = _clk_enable,
+ .disable = _clk_disable,
+};
+
static struct clk hdmi_clk[] = {
{
__INIT_CLK_DEBUG(hdmi_isfr_clk)
@@ -4660,6 +4670,7 @@ static struct clk_lookup lookups[] = {
_REGISTER_CLOCK("imx2-wdt.1", NULL, dummy_clk),
_REGISTER_CLOCK(NULL, "hdmi_isfr_clk", hdmi_clk[0]),
_REGISTER_CLOCK(NULL, "hdmi_iahb_clk", hdmi_clk[1]),
+ _REGISTER_CLOCK(NULL, "mipi_pllref_clk", mipi_pllref_clk),
_REGISTER_CLOCK(NULL, NULL, vdoa_clk),
_REGISTER_CLOCK(NULL, NULL, aips_tz2_clk),
_REGISTER_CLOCK(NULL, NULL, aips_tz1_clk),
diff --git a/arch/arm/mach-mx6/devices-imx6q.h b/arch/arm/mach-mx6/devices-imx6q.h
index 9673f9e52b7..2f0610dbbc4 100644
--- a/arch/arm/mach-mx6/devices-imx6q.h
+++ b/arch/arm/mach-mx6/devices-imx6q.h
@@ -175,3 +175,7 @@ extern const struct imx_spdif_dai_data imx6q_spdif_dai_data __initconst;
extern const struct imx_hdmi_soc_data imx6q_imx_hdmi_soc_dai_data __initconst;
#define imx6q_add_hdmi_soc_dai() \
imx_add_hdmi_soc_dai(&imx6q_imx_hdmi_soc_dai_data)
+
+extern const struct imx_mipi_dsi_data imx6q_mipi_dsi_data __initconst;
+#define imx6q_add_mipi_dsi(pdata) \
+ imx_add_mipi_dsi(&imx6q_mipi_dsi_data, pdata)