diff options
| -rw-r--r-- | drivers/video/omap2/dss/dispc.c | 19 | 
1 files changed, 4 insertions, 15 deletions
diff --git a/drivers/video/omap2/dss/dispc.c b/drivers/video/omap2/dss/dispc.c index 070ce306da1..05def42e528 100644 --- a/drivers/video/omap2/dss/dispc.c +++ b/drivers/video/omap2/dss/dispc.c @@ -3902,15 +3902,12 @@ static void dispc_error_worker(struct work_struct *work)  		if (bit & errors) {  			int j; -			struct omap_dss_device *dssdev = mgr->get_device(mgr); -			bool enable;  			DSSERR("SYNC_LOST on channel %s, restarting the output "  					"with video overlays disabled\n",  					mgr->name); -			enable = dssdev->state == OMAP_DSS_DISPLAY_ACTIVE; -			dssdev->driver->disable(dssdev); +			dss_mgr_disable(mgr);  			for (j = 0; j < omap_dss_get_num_overlays(); ++j) {  				struct omap_overlay *ovl; @@ -3918,14 +3915,10 @@ static void dispc_error_worker(struct work_struct *work)  				if (ovl->id != OMAP_DSS_GFX &&  						ovl->manager == mgr) -					dispc_ovl_enable(ovl->id, false); +					ovl->disable(ovl);  			} -			dispc_mgr_go(mgr->id); -			msleep(50); - -			if (enable) -				dssdev->driver->enable(dssdev); +			dss_mgr_enable(mgr);  		}  	} @@ -3933,13 +3926,9 @@ static void dispc_error_worker(struct work_struct *work)  		DSSERR("OCP_ERR\n");  		for (i = 0; i < omap_dss_get_num_overlay_managers(); ++i) {  			struct omap_overlay_manager *mgr; -			struct omap_dss_device *dssdev;  			mgr = omap_dss_get_overlay_manager(i); -			dssdev = mgr->get_device(mgr); - -			if (dssdev && dssdev->driver) -				dssdev->driver->disable(dssdev); +			dss_mgr_disable(mgr);  		}  	}  |