if (r)
return r;
+ dssdev->driver->disable(dssdev);
dssdev->driver->set_timings(dssdev, &t);
+ r = dssdev->driver->enable(dssdev);
+ if (r)
+ return r;
return size;
}
void omapdss_dpi_set_timings(struct omap_dss_device *dssdev,
struct omap_video_timings *timings)
{
- int r;
-
DSSDBG("dpi_set_timings\n");
mutex_lock(&dpi.lock);
dpi.timings = *timings;
- if (dssdev->state == OMAP_DSS_DISPLAY_ACTIVE) {
- r = dispc_runtime_get();
- if (r)
- return;
-
- dpi_set_mode(dssdev);
-
- dispc_runtime_put();
- } else {
- dss_mgr_set_timings(dssdev->manager, timings);
- }
-
mutex_unlock(&dpi.lock);
}
EXPORT_SYMBOL(omapdss_dpi_set_timings);
if (t != NULL)
hdmi.ip_data.cfg = *t;
- if (dssdev->state == OMAP_DSS_DISPLAY_ACTIVE) {
- int r;
-
- hdmi_power_off(dssdev);
-
- r = hdmi_power_on(dssdev);
- if (r)
- DSSERR("failed to power on device\n");
- } else {
- dss_mgr_set_timings(dssdev->manager, &t->timings);
- }
-
mutex_unlock(&hdmi.lock);
}
void omapdss_sdi_set_timings(struct omap_dss_device *dssdev,
struct omap_video_timings *timings)
{
- int r;
-
sdi.timings = *timings;
-
- if (dssdev->state == OMAP_DSS_DISPLAY_ACTIVE) {
- omapdss_sdi_display_disable(dssdev);
-
- r = omapdss_sdi_display_enable(dssdev);
- if (r)
- DSSERR("failed to set new timings\n");
- }
}
EXPORT_SYMBOL(omapdss_sdi_set_timings);
venc.timings = *timings;
- if (dssdev->state == OMAP_DSS_DISPLAY_ACTIVE) {
- int r;
-
- /* turn the venc off and on to get new timings to use */
- venc_power_off(dssdev);
-
- r = venc_power_on(dssdev);
- if (r)
- DSSERR("failed to power on VENC\n");
- } else {
- dss_mgr_set_timings(dssdev->manager, timings);
- }
-
mutex_unlock(&venc.venc_lock);
}