diff options
author | Tomi Valkeinen <tomi.valkeinen@ti.com> | 2011-05-26 14:54:05 +0300 |
---|---|---|
committer | Tomi Valkeinen <tomi.valkeinen@ti.com> | 2011-07-25 10:22:06 +0300 |
commit | 39020710e707a01d80ea6c9e55dad4de93bb4730 (patch) | |
tree | 3686e8c7a03de39feafd395126d3105e0ef365c3 /drivers/video/omap2/dss/dss.c | |
parent | 6d9f29dd62142a173b54c0a5645fbdfb296f1316 (diff) |
OMAP: DSS2: Remove ctx loss count from dss.c
dss.c only saves 1 register (3 in OMAP3) so the extra overhead from
need_ctx_restore & co. is probably bigger than the time spent saving and
restoring those few registers every time.
So remove the code from dss.c and restore context every time dss has
been off.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Diffstat (limited to 'drivers/video/omap2/dss/dss.c')
-rw-r--r-- | drivers/video/omap2/dss/dss.c | 62 |
1 files changed, 1 insertions, 61 deletions
diff --git a/drivers/video/omap2/dss/dss.c b/drivers/video/omap2/dss/dss.c index a83c449d2ed..2424064c9ce 100644 --- a/drivers/video/omap2/dss/dss.c +++ b/drivers/video/omap2/dss/dss.c @@ -62,8 +62,6 @@ static struct { struct platform_device *pdev; void __iomem *base; - int ctx_loss_cnt; - struct clk *dpll4_m4_ck; struct clk *dss_clk; @@ -631,61 +629,6 @@ void dss_select_hdmi_venc_clk_source(enum dss_hdmi_venc_clk_source_select hdmi) REG_FLD_MOD(DSS_CONTROL, hdmi, 15, 15); /* VENC_HDMI_SWITCH */ } -/* CONTEXT */ -static void dss_init_ctx_loss_count(void) -{ - struct device *dev = &dss.pdev->dev; - struct omap_display_platform_data *pdata = dev->platform_data; - struct omap_dss_board_info *board_data = pdata->board_data; - int cnt = 0; - - /* - * get_context_loss_count returns negative on error. We'll ignore the - * error and store the error to ctx_loss_cnt, which will cause - * dss_need_ctx_restore() call to return true. - */ - - if (board_data->get_context_loss_count) - cnt = board_data->get_context_loss_count(dev); - - WARN_ON(cnt < 0); - - dss.ctx_loss_cnt = cnt; - - DSSDBG("initial ctx_loss_cnt %u\n", cnt); -} - -static bool dss_need_ctx_restore(void) -{ - struct device *dev = &dss.pdev->dev; - struct omap_display_platform_data *pdata = dev->platform_data; - struct omap_dss_board_info *board_data = pdata->board_data; - int cnt; - - /* - * If get_context_loss_count is not available, assume that we need - * context restore always. - */ - if (!board_data->get_context_loss_count) - return true; - - cnt = board_data->get_context_loss_count(dev); - if (cnt < 0) { - dev_err(dev, "getting context loss count failed, will force " - "context restore\n"); - dss.ctx_loss_cnt = cnt; - return true; - } - - if (cnt == dss.ctx_loss_cnt) - return false; - - DSSDBG("ctx_loss_cnt %d -> %d\n", dss.ctx_loss_cnt, cnt); - dss.ctx_loss_cnt = cnt; - - return true; -} - static int dss_get_clocks(void) { struct clk *clk; @@ -797,8 +740,6 @@ static int omap_dsshw_probe(struct platform_device *pdev) if (r) goto err_clocks; - dss_init_ctx_loss_count(); - pm_runtime_enable(&pdev->dev); r = dss_runtime_get(); @@ -875,8 +816,7 @@ static int dss_runtime_suspend(struct device *dev) static int dss_runtime_resume(struct device *dev) { clk_enable(dss.dss_clk); - if (dss_need_ctx_restore()) - dss_restore_context(); + dss_restore_context(); return 0; } |