diff options
Diffstat (limited to 'drivers/video/omap2/dss')
| -rw-r--r-- | drivers/video/omap2/dss/core.c | 3 | ||||
| -rw-r--r-- | drivers/video/omap2/dss/dsi.c | 21 |
2 files changed, 19 insertions, 5 deletions
diff --git a/drivers/video/omap2/dss/core.c b/drivers/video/omap2/dss/core.c index e08d71fef88..fc053fe1991 100644 --- a/drivers/video/omap2/dss/core.c +++ b/drivers/video/omap2/dss/core.c @@ -216,6 +216,7 @@ static int omap_dss_pm_notif(struct notifier_block *b, unsigned long v, void *d) DSSDBG("pm notif %lu\n", v); switch (v) { +#if !defined(CONFIG_HAS_AMBIENTMODE) case PM_SUSPEND_PREPARE: DSSDBG("suspending displays\n"); return dss_suspend_all_devices(); @@ -223,7 +224,7 @@ static int omap_dss_pm_notif(struct notifier_block *b, unsigned long v, void *d) case PM_POST_SUSPEND: DSSDBG("resuming displays\n"); return dss_resume_all_devices(); - +#endif default: return 0; } diff --git a/drivers/video/omap2/dss/dsi.c b/drivers/video/omap2/dss/dsi.c index 69b44185ed1..e2a0260a298 100644 --- a/drivers/video/omap2/dss/dsi.c +++ b/drivers/video/omap2/dss/dsi.c @@ -4570,6 +4570,22 @@ static void dsi_display_uninit_dsi(struct platform_device *dsidev, dsi_pll_uninit(dsidev, disconnect_lanes); } +static int dsi_soft_reset(struct platform_device *dsidev) +{ + int i = 5; + /* enable DSI soft reset */ + REG_FLD_MOD(dsidev, DSI_SYSCONFIG, 1, 1, 1); + /* waiting for DSI soft reset done*/ + while (REG_GET(dsidev, DSI_SYSSTATUS, 0, 0) == 0) { + if (!i--) { + DSSERR("DSI soft reset failed!\n"); + return -ENODEV; + } + udelay(1); + } + return 0; +} + int omapdss_dsi_display_enable(struct omap_dss_device *dssdev) { struct platform_device *dsidev = dsi_get_dsidev_from_dssdev(dssdev); @@ -4594,10 +4610,7 @@ int omapdss_dsi_display_enable(struct omap_dss_device *dssdev) dsi_enable_pll_clock(dsidev, 1); -#ifndef CONFIG_OMAP2_DSS_RESET - dsi_vc_enable(dsidev, 0, 0); - dsi_vc_enable(dsidev, 1, 0); -#endif + dsi_soft_reset(dsidev); _dsi_initialize_irq(dsidev); |