diff options
Diffstat (limited to 'drivers/video/omap2/dss/sdi.c')
| -rw-r--r-- | drivers/video/omap2/dss/sdi.c | 40 | 
1 files changed, 26 insertions, 14 deletions
| diff --git a/drivers/video/omap2/dss/sdi.c b/drivers/video/omap2/dss/sdi.c index 0bd4b0350f80..3a688c871a45 100644 --- a/drivers/video/omap2/dss/sdi.c +++ b/drivers/video/omap2/dss/sdi.c @@ -20,13 +20,11 @@  #define DSS_SUBSYS_NAME "SDI"  #include <linux/kernel.h> -#include <linux/clk.h>  #include <linux/delay.h>  #include <linux/err.h>  #include <linux/regulator/consumer.h>  #include <video/omapdss.h> -#include <plat/cpu.h>  #include "dss.h"  static struct { @@ -60,14 +58,20 @@ int omapdss_sdi_display_enable(struct omap_dss_device *dssdev)  	r = omap_dss_start_device(dssdev);  	if (r) {  		DSSERR("failed to start device\n"); -		goto err0; +		goto err_start_dev;  	}  	r = regulator_enable(sdi.vdds_sdi_reg);  	if (r) -		goto err1; +		goto err_reg_enable; -	dss_clk_enable(DSS_CLK_ICK | DSS_CLK_FCK); +	r = dss_runtime_get(); +	if (r) +		goto err_get_dss; + +	r = dispc_runtime_get(); +	if (r) +		goto err_get_dispc;  	sdi_basic_init(dssdev); @@ -80,7 +84,7 @@ int omapdss_sdi_display_enable(struct omap_dss_device *dssdev)  	r = dss_calc_clock_div(1, t->pixel_clock * 1000,  			&dss_cinfo, &dispc_cinfo);  	if (r) -		goto err2; +		goto err_calc_clock_div;  	fck = dss_cinfo.fck;  	lck_div = dispc_cinfo.lck_div; @@ -101,27 +105,34 @@ int omapdss_sdi_display_enable(struct omap_dss_device *dssdev)  	r = dss_set_clock_div(&dss_cinfo);  	if (r) -		goto err2; +		goto err_set_dss_clock_div;  	r = dispc_set_clock_div(dssdev->manager->id, &dispc_cinfo);  	if (r) -		goto err2; +		goto err_set_dispc_clock_div;  	dss_sdi_init(dssdev->phy.sdi.datapairs);  	r = dss_sdi_enable();  	if (r) -		goto err1; +		goto err_sdi_enable;  	mdelay(2);  	dssdev->manager->enable(dssdev->manager);  	return 0; -err2: -	dss_clk_disable(DSS_CLK_ICK | DSS_CLK_FCK); + +err_sdi_enable: +err_set_dispc_clock_div: +err_set_dss_clock_div: +err_calc_clock_div: +	dispc_runtime_put(); +err_get_dispc: +	dss_runtime_put(); +err_get_dss:  	regulator_disable(sdi.vdds_sdi_reg); -err1: +err_reg_enable:  	omap_dss_stop_device(dssdev); -err0: +err_start_dev:  	return r;  }  EXPORT_SYMBOL(omapdss_sdi_display_enable); @@ -132,7 +143,8 @@ void omapdss_sdi_display_disable(struct omap_dss_device *dssdev)  	dss_sdi_disable(); -	dss_clk_disable(DSS_CLK_ICK | DSS_CLK_FCK); +	dispc_runtime_put(); +	dss_runtime_put();  	regulator_disable(sdi.vdds_sdi_reg); | 
