diff options
Diffstat (limited to 'drivers/video/omap2/dss/sdi.c')
| -rw-r--r-- | drivers/video/omap2/dss/sdi.c | 40 |
1 files changed, 14 insertions, 26 deletions
diff --git a/drivers/video/omap2/dss/sdi.c b/drivers/video/omap2/dss/sdi.c index 3a688c871a4..0bd4b0350f8 100644 --- a/drivers/video/omap2/dss/sdi.c +++ b/drivers/video/omap2/dss/sdi.c @@ -20,11 +20,13 @@ #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 { @@ -58,20 +60,14 @@ 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 err_start_dev; + goto err0; } r = regulator_enable(sdi.vdds_sdi_reg); if (r) - goto err_reg_enable; + goto err1; - r = dss_runtime_get(); - if (r) - goto err_get_dss; - - r = dispc_runtime_get(); - if (r) - goto err_get_dispc; + dss_clk_enable(DSS_CLK_ICK | DSS_CLK_FCK); sdi_basic_init(dssdev); @@ -84,7 +80,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 err_calc_clock_div; + goto err2; fck = dss_cinfo.fck; lck_div = dispc_cinfo.lck_div; @@ -105,34 +101,27 @@ int omapdss_sdi_display_enable(struct omap_dss_device *dssdev) r = dss_set_clock_div(&dss_cinfo); if (r) - goto err_set_dss_clock_div; + goto err2; r = dispc_set_clock_div(dssdev->manager->id, &dispc_cinfo); if (r) - goto err_set_dispc_clock_div; + goto err2; dss_sdi_init(dssdev->phy.sdi.datapairs); r = dss_sdi_enable(); if (r) - goto err_sdi_enable; + goto err1; mdelay(2); dssdev->manager->enable(dssdev->manager); return 0; - -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: +err2: + dss_clk_disable(DSS_CLK_ICK | DSS_CLK_FCK); regulator_disable(sdi.vdds_sdi_reg); -err_reg_enable: +err1: omap_dss_stop_device(dssdev); -err_start_dev: +err0: return r; } EXPORT_SYMBOL(omapdss_sdi_display_enable); @@ -143,8 +132,7 @@ void omapdss_sdi_display_disable(struct omap_dss_device *dssdev) dss_sdi_disable(); - dispc_runtime_put(); - dss_runtime_put(); + dss_clk_disable(DSS_CLK_ICK | DSS_CLK_FCK); regulator_disable(sdi.vdds_sdi_reg); |
