aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video/omap2
diff options
context:
space:
mode:
authorTomi Valkeinen <tomi.valkeinen@ti.com>2010-07-30 04:57:57 -0400
committerTomi Valkeinen <tomi.valkeinen@ti.com>2011-05-11 07:20:17 -0400
commitd1f5857e4bc9b2620fb3e84b1dbaa0ac11b831b4 (patch)
treea7f48a1c82be0d87924f015d6b5b3f2773a77fc2 /drivers/video/omap2
parent22d6d676261a5e204a7078df21459747750c92fb (diff)
OMAP: DSS2: DSI: Add DSI pad muxing support
Add dsi_mux_pads function pointer to omap_dss_board_info, and use the function pointer in DSI code to configure the DSI pads either to normal DSI operation, or to pull down when in ULPS. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Diffstat (limited to 'drivers/video/omap2')
-rw-r--r--drivers/video/omap2/dss/dsi.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/drivers/video/omap2/dss/dsi.c b/drivers/video/omap2/dss/dsi.c
index f54839fa50b..fcda46c34d1 100644
--- a/drivers/video/omap2/dss/dsi.c
+++ b/drivers/video/omap2/dss/dsi.c
@@ -244,6 +244,8 @@ static struct
244 void __iomem *base; 244 void __iomem *base;
245 int irq; 245 int irq;
246 246
247 void (*dsi_mux_pads)(bool enable);
248
247 struct dsi_clock_info current_cinfo; 249 struct dsi_clock_info current_cinfo;
248 250
249 bool vdds_dsi_enabled; 251 bool vdds_dsi_enabled;
@@ -2035,6 +2037,9 @@ static int dsi_cio_init(struct omap_dss_device *dssdev)
2035 2037
2036 DSSDBGF(); 2038 DSSDBGF();
2037 2039
2040 if (dsi.dsi_mux_pads)
2041 dsi.dsi_mux_pads(true);
2042
2038 dsi_enable_scp_clk(); 2043 dsi_enable_scp_clk();
2039 2044
2040 /* A dummy read using the SCP interface to any DSIPHY register is 2045 /* A dummy read using the SCP interface to any DSIPHY register is
@@ -2122,6 +2127,8 @@ err_cio_pwr:
2122 dsi_cio_disable_lane_override(); 2127 dsi_cio_disable_lane_override();
2123err_scp_clk_dom: 2128err_scp_clk_dom:
2124 dsi_disable_scp_clk(); 2129 dsi_disable_scp_clk();
2130 if (dsi.dsi_mux_pads)
2131 dsi.dsi_mux_pads(false);
2125 return r; 2132 return r;
2126} 2133}
2127 2134
@@ -2129,6 +2136,8 @@ static void dsi_cio_uninit(void)
2129{ 2136{
2130 dsi_cio_power(DSI_COMPLEXIO_POWER_OFF); 2137 dsi_cio_power(DSI_COMPLEXIO_POWER_OFF);
2131 dsi_disable_scp_clk(); 2138 dsi_disable_scp_clk();
2139 if (dsi.dsi_mux_pads)
2140 dsi.dsi_mux_pads(false);
2132} 2141}
2133 2142
2134static int _dsi_wait_reset(void) 2143static int _dsi_wait_reset(void)
@@ -3993,10 +4002,16 @@ static void dsi_calc_clock_param_ranges(void)
3993 4002
3994static int dsi_init(struct platform_device *pdev) 4003static int dsi_init(struct platform_device *pdev)
3995{ 4004{
4005 struct omap_display_platform_data *dss_plat_data;
4006 struct omap_dss_board_info *board_info;
3996 u32 rev; 4007 u32 rev;
3997 int r, i; 4008 int r, i;
3998 struct resource *dsi_mem; 4009 struct resource *dsi_mem;
3999 4010
4011 dss_plat_data = pdev->dev.platform_data;
4012 board_info = dss_plat_data->board_data;
4013 dsi.dsi_mux_pads = board_info->dsi_mux_pads;
4014
4000 spin_lock_init(&dsi.irq_lock); 4015 spin_lock_init(&dsi.irq_lock);
4001 spin_lock_init(&dsi.errors_lock); 4016 spin_lock_init(&dsi.errors_lock);
4002 dsi.errors = 0; 4017 dsi.errors = 0;