diff options
author | Tomi Valkeinen <tomi.valkeinen@ti.com> | 2010-07-30 04:57:57 -0400 |
---|---|---|
committer | Tomi Valkeinen <tomi.valkeinen@ti.com> | 2011-05-11 07:20:17 -0400 |
commit | d1f5857e4bc9b2620fb3e84b1dbaa0ac11b831b4 (patch) | |
tree | a7f48a1c82be0d87924f015d6b5b3f2773a77fc2 /drivers | |
parent | 22d6d676261a5e204a7078df21459747750c92fb (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')
-rw-r--r-- | drivers/video/omap2/dss/dsi.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/drivers/video/omap2/dss/dsi.c b/drivers/video/omap2/dss/dsi.c index f54839fa50b1..fcda46c34d1c 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(); |
2123 | err_scp_clk_dom: | 2128 | err_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 | ||
2134 | static int _dsi_wait_reset(void) | 2143 | static int _dsi_wait_reset(void) |
@@ -3993,10 +4002,16 @@ static void dsi_calc_clock_param_ranges(void) | |||
3993 | 4002 | ||
3994 | static int dsi_init(struct platform_device *pdev) | 4003 | static 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; |