summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorTomi Valkeinen <tomi.valkeinen@ti.com>2010-07-30 11:57:57 +0300
committerTomi Valkeinen <tomi.valkeinen@ti.com>2011-05-11 14:20:17 +0300
commitd1f5857e4bc9b2620fb3e84b1dbaa0ac11b831b4 (patch)
treea7f48a1c82be0d87924f015d6b5b3f2773a77fc2 /drivers
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')
-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 f54839fa50b1..fcda46c34d1c 100644
--- a/drivers/video/omap2/dss/dsi.c
+++ b/drivers/video/omap2/dss/dsi.c
@@ -244,6 +244,8 @@ static struct
void __iomem *base;
int irq;
+ void (*dsi_mux_pads)(bool enable);
+
struct dsi_clock_info current_cinfo;
bool vdds_dsi_enabled;
@@ -2035,6 +2037,9 @@ static int dsi_cio_init(struct omap_dss_device *dssdev)
DSSDBGF();
+ if (dsi.dsi_mux_pads)
+ dsi.dsi_mux_pads(true);
+
dsi_enable_scp_clk();
/* A dummy read using the SCP interface to any DSIPHY register is
@@ -2122,6 +2127,8 @@ err_cio_pwr:
dsi_cio_disable_lane_override();
err_scp_clk_dom:
dsi_disable_scp_clk();
+ if (dsi.dsi_mux_pads)
+ dsi.dsi_mux_pads(false);
return r;
}
@@ -2129,6 +2136,8 @@ static void dsi_cio_uninit(void)
{
dsi_cio_power(DSI_COMPLEXIO_POWER_OFF);
dsi_disable_scp_clk();
+ if (dsi.dsi_mux_pads)
+ dsi.dsi_mux_pads(false);
}
static int _dsi_wait_reset(void)
@@ -3993,10 +4002,16 @@ static void dsi_calc_clock_param_ranges(void)
static int dsi_init(struct platform_device *pdev)
{
+ struct omap_display_platform_data *dss_plat_data;
+ struct omap_dss_board_info *board_info;
u32 rev;
int r, i;
struct resource *dsi_mem;
+ dss_plat_data = pdev->dev.platform_data;
+ board_info = dss_plat_data->board_data;
+ dsi.dsi_mux_pads = board_info->dsi_mux_pads;
+
spin_lock_init(&dsi.irq_lock);
spin_lock_init(&dsi.errors_lock);
dsi.errors = 0;