* [PATCH 1/2] OMAPDSS: use DISPC register to detect context loss
@ 2014-02-14 8:29 Tomi Valkeinen
2014-02-14 8:29 ` [PATCH 2/2] OMAPDSS: Remove unused get_context_loss_count support Tomi Valkeinen
2014-02-18 11:39 ` [PATCH 1/2] OMAPDSS: use DISPC register to detect context loss Archit Taneja
0 siblings, 2 replies; 3+ messages in thread
From: Tomi Valkeinen @ 2014-02-14 8:29 UTC (permalink / raw)
To: linux-fbdev, linux-omap, Archit Taneja; +Cc: Nishanth Menon, Tomi Valkeinen
Instead of relying on the OMAP specific
omap_pm_get_dev_context_loss_count() to detect register context loss, we
can achieve the same in a much simpler way by just observing the DISPC
registers.
We always set DISPC's load mode to LOAD_FRAME_ONLY, which is not the
reset value. Thus we can just observe the load mode to see if we have
lost register context.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
---
drivers/video/omap2/dss/dispc.c | 24 +++++++++++-------------
1 file changed, 11 insertions(+), 13 deletions(-)
diff --git a/drivers/video/omap2/dss/dispc.c b/drivers/video/omap2/dss/dispc.c
index bbeb8dd7f108..1659aa912d2b 100644
--- a/drivers/video/omap2/dss/dispc.c
+++ b/drivers/video/omap2/dss/dispc.c
@@ -100,8 +100,6 @@ static struct {
struct platform_device *pdev;
void __iomem *base;
- int ctx_loss_cnt;
-
int irq;
unsigned long core_clk_rate;
@@ -357,29 +355,20 @@ static void dispc_save_context(void)
if (dss_has_feature(FEAT_CORE_CLK_DIV))
SR(DIVISOR);
- dispc.ctx_loss_cnt = dss_get_ctx_loss_count();
dispc.ctx_valid = true;
- DSSDBG("context saved, ctx_loss_count %d\n", dispc.ctx_loss_cnt);
+ DSSDBG("context saved\n");
}
static void dispc_restore_context(void)
{
- int i, j, ctx;
+ int i, j;
DSSDBG("dispc_restore_context\n");
if (!dispc.ctx_valid)
return;
- ctx = dss_get_ctx_loss_count();
-
- if (ctx >= 0 && ctx == dispc.ctx_loss_cnt)
- return;
-
- DSSDBG("ctx_loss_count: saved %d, current %d\n",
- dispc.ctx_loss_cnt, ctx);
-
/*RR(IRQENABLE);*/
/*RR(CONTROL);*/
RR(CONFIG);
@@ -3768,6 +3757,15 @@ static int dispc_runtime_suspend(struct device *dev)
static int dispc_runtime_resume(struct device *dev)
{
+ /*
+ * The reset value for load mode is 0 (OMAP_DSS_LOAD_CLUT_AND_FRAME)
+ * but we always initialize it to 2 (OMAP_DSS_LOAD_FRAME_ONLY) in
+ * _omap_dispc_initial_config(). We can thus use it to detect if
+ * we have lost register context.
+ */
+ if (REG_GET(DISPC_CONFIG, 2, 1) == OMAP_DSS_LOAD_FRAME_ONLY)
+ return 0;
+
_omap_dispc_initial_config();
dispc_restore_context();
--
1.8.3.2
^ permalink raw reply related [flat|nested] 3+ messages in thread* [PATCH 2/2] OMAPDSS: Remove unused get_context_loss_count support
2014-02-14 8:29 [PATCH 1/2] OMAPDSS: use DISPC register to detect context loss Tomi Valkeinen
@ 2014-02-14 8:29 ` Tomi Valkeinen
2014-02-18 11:39 ` [PATCH 1/2] OMAPDSS: use DISPC register to detect context loss Archit Taneja
1 sibling, 0 replies; 3+ messages in thread
From: Tomi Valkeinen @ 2014-02-14 8:29 UTC (permalink / raw)
To: linux-fbdev, linux-omap, Archit Taneja; +Cc: Nishanth Menon, Tomi Valkeinen
The omapdss driver no longer uses get_context_loss_count call, so we can
remove it.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
---
arch/arm/mach-omap2/display.c | 1 -
drivers/video/omap2/dss/dss.c | 16 ----------------
drivers/video/omap2/dss/dss.h | 2 --
include/video/omapdss.h | 1 -
4 files changed, 20 deletions(-)
diff --git a/arch/arm/mach-omap2/display.c b/arch/arm/mach-omap2/display.c
index 4cf165502b35..93ebb4007ea9 100644
--- a/arch/arm/mach-omap2/display.c
+++ b/arch/arm/mach-omap2/display.c
@@ -301,7 +301,6 @@ int __init omap_display_init(struct omap_dss_board_info *board_data)
board_data->version = ver;
board_data->dsi_enable_pads = omap_dsi_enable_pads;
board_data->dsi_disable_pads = omap_dsi_disable_pads;
- board_data->get_context_loss_count = omap_pm_get_dev_context_loss_count;
board_data->set_min_bus_tput = omap_dss_set_min_bus_tput;
omap_display_device.dev.platform_data = board_data;
diff --git a/drivers/video/omap2/dss/dss.c b/drivers/video/omap2/dss/dss.c
index 9a145da35ad3..96e400c51001 100644
--- a/drivers/video/omap2/dss/dss.c
+++ b/drivers/video/omap2/dss/dss.c
@@ -154,22 +154,6 @@ static void dss_restore_context(void)
#undef SR
#undef RR
-int dss_get_ctx_loss_count(void)
-{
- struct platform_device *core_pdev = dss_get_core_pdev();
- struct omap_dss_board_info *board_data = core_pdev->dev.platform_data;
- int cnt;
-
- if (!board_data->get_context_loss_count)
- return -ENOENT;
-
- cnt = board_data->get_context_loss_count(&dss.pdev->dev);
-
- WARN_ONCE(cnt < 0, "get_context_loss_count failed: %d\n", cnt);
-
- return cnt;
-}
-
void dss_sdi_init(int datapairs)
{
u32 l;
diff --git a/drivers/video/omap2/dss/dss.h b/drivers/video/omap2/dss/dss.h
index 057f24c8a332..570f7ed2bcbc 100644
--- a/drivers/video/omap2/dss/dss.h
+++ b/drivers/video/omap2/dss/dss.h
@@ -225,8 +225,6 @@ void dss_dump_clocks(struct seq_file *s);
void dss_debug_dump_clocks(struct seq_file *s);
#endif
-int dss_get_ctx_loss_count(void);
-
void dss_sdi_init(int datapairs);
int dss_sdi_enable(void);
void dss_sdi_disable(void);
diff --git a/include/video/omapdss.h b/include/video/omapdss.h
index 3d7c51a6f9ff..1eb9aa605eee 100644
--- a/include/video/omapdss.h
+++ b/include/video/omapdss.h
@@ -323,7 +323,6 @@ enum omapdss_version {
/* Board specific data */
struct omap_dss_board_info {
- int (*get_context_loss_count)(struct device *dev);
int num_devices;
struct omap_dss_device **devices;
struct omap_dss_device *default_device;
--
1.8.3.2
^ permalink raw reply related [flat|nested] 3+ messages in thread* Re: [PATCH 1/2] OMAPDSS: use DISPC register to detect context loss
2014-02-14 8:29 [PATCH 1/2] OMAPDSS: use DISPC register to detect context loss Tomi Valkeinen
2014-02-14 8:29 ` [PATCH 2/2] OMAPDSS: Remove unused get_context_loss_count support Tomi Valkeinen
@ 2014-02-18 11:39 ` Archit Taneja
1 sibling, 0 replies; 3+ messages in thread
From: Archit Taneja @ 2014-02-18 11:39 UTC (permalink / raw)
To: Tomi Valkeinen, linux-fbdev, linux-omap; +Cc: Nishanth Menon
On Friday 14 February 2014 01:59 PM, Tomi Valkeinen wrote:
> Instead of relying on the OMAP specific
> omap_pm_get_dev_context_loss_count() to detect register context loss, we
> can achieve the same in a much simpler way by just observing the DISPC
> registers.
>
> We always set DISPC's load mode to LOAD_FRAME_ONLY, which is not the
> reset value. Thus we can just observe the load mode to see if we have
> lost register context.
Nice trick :p
Reviewed-by: Archit Taneja <archit@ti.com>
Archit
>
> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
> ---
> drivers/video/omap2/dss/dispc.c | 24 +++++++++++-------------
> 1 file changed, 11 insertions(+), 13 deletions(-)
>
> diff --git a/drivers/video/omap2/dss/dispc.c b/drivers/video/omap2/dss/dispc.c
> index bbeb8dd7f108..1659aa912d2b 100644
> --- a/drivers/video/omap2/dss/dispc.c
> +++ b/drivers/video/omap2/dss/dispc.c
> @@ -100,8 +100,6 @@ static struct {
> struct platform_device *pdev;
> void __iomem *base;
>
> - int ctx_loss_cnt;
> -
> int irq;
>
> unsigned long core_clk_rate;
> @@ -357,29 +355,20 @@ static void dispc_save_context(void)
> if (dss_has_feature(FEAT_CORE_CLK_DIV))
> SR(DIVISOR);
>
> - dispc.ctx_loss_cnt = dss_get_ctx_loss_count();
> dispc.ctx_valid = true;
>
> - DSSDBG("context saved, ctx_loss_count %d\n", dispc.ctx_loss_cnt);
> + DSSDBG("context saved\n");
> }
>
> static void dispc_restore_context(void)
> {
> - int i, j, ctx;
> + int i, j;
>
> DSSDBG("dispc_restore_context\n");
>
> if (!dispc.ctx_valid)
> return;
>
> - ctx = dss_get_ctx_loss_count();
> -
> - if (ctx >= 0 && ctx == dispc.ctx_loss_cnt)
> - return;
> -
> - DSSDBG("ctx_loss_count: saved %d, current %d\n",
> - dispc.ctx_loss_cnt, ctx);
> -
> /*RR(IRQENABLE);*/
> /*RR(CONTROL);*/
> RR(CONFIG);
> @@ -3768,6 +3757,15 @@ static int dispc_runtime_suspend(struct device *dev)
>
> static int dispc_runtime_resume(struct device *dev)
> {
> + /*
> + * The reset value for load mode is 0 (OMAP_DSS_LOAD_CLUT_AND_FRAME)
> + * but we always initialize it to 2 (OMAP_DSS_LOAD_FRAME_ONLY) in
> + * _omap_dispc_initial_config(). We can thus use it to detect if
> + * we have lost register context.
> + */
> + if (REG_GET(DISPC_CONFIG, 2, 1) == OMAP_DSS_LOAD_FRAME_ONLY)
> + return 0;
> +
> _omap_dispc_initial_config();
>
> dispc_restore_context();
>
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2014-02-18 11:39 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-02-14 8:29 [PATCH 1/2] OMAPDSS: use DISPC register to detect context loss Tomi Valkeinen
2014-02-14 8:29 ` [PATCH 2/2] OMAPDSS: Remove unused get_context_loss_count support Tomi Valkeinen
2014-02-18 11:39 ` [PATCH 1/2] OMAPDSS: use DISPC register to detect context loss Archit Taneja
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).