diff options
author | Wayne Zou <b36644@freescale.com> | 2011-10-14 14:55:08 +0800 |
---|---|---|
committer | Eric Miao <eric.miao@canonical.com> | 2011-11-10 07:38:58 +0800 |
commit | 50e3a072ca81e144711f5f325f68bedb5fc76f34 (patch) | |
tree | 433e9522e48b96e7edf5a30e6c2b0168b169db45 /arch/arm/mach-mx6 | |
parent | b1cef679a62ee8b11d79f8844d3139234b027e43 (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/Kconfig | 1 | ||||
-rw-r--r-- | arch/arm/mach-mx6/board-mx6q_arm2.c | 24 | ||||
-rw-r--r-- | arch/arm/mach-mx6/clock.c | 11 | ||||
-rw-r--r-- | arch/arm/mach-mx6/devices-imx6q.h | 4 |
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) |