Commit 69f06054 authored by Tomi Valkeinen's avatar Tomi Valkeinen

OMAP: DSS2: DSS: Fix context save/restore

The current method of saving and restoring the context could cause a
restore before saving, effectively "restoring" zero values to registers.

Add ctx_valid field to indicate if the saved context is valid and can be
restored.
Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
parent 49ea86f3
...@@ -74,6 +74,7 @@ static struct { ...@@ -74,6 +74,7 @@ static struct {
enum omap_dss_clk_source dispc_clk_source; enum omap_dss_clk_source dispc_clk_source;
enum omap_dss_clk_source lcd_clk_source[MAX_DSS_LCD_MANAGERS]; enum omap_dss_clk_source lcd_clk_source[MAX_DSS_LCD_MANAGERS];
bool ctx_valid;
u32 ctx[DSS_SZ_REGS / sizeof(u32)]; u32 ctx[DSS_SZ_REGS / sizeof(u32)];
} dss; } dss;
...@@ -109,12 +110,19 @@ static void dss_save_context(void) ...@@ -109,12 +110,19 @@ static void dss_save_context(void)
SR(SDI_CONTROL); SR(SDI_CONTROL);
SR(PLL_CONTROL); SR(PLL_CONTROL);
} }
dss.ctx_valid = true;
DSSDBG("context saved\n");
} }
static void dss_restore_context(void) static void dss_restore_context(void)
{ {
DSSDBG("dss_restore_context\n"); DSSDBG("dss_restore_context\n");
if (!dss.ctx_valid)
return;
RR(CONTROL); RR(CONTROL);
if (dss_feat_get_supported_displays(OMAP_DSS_CHANNEL_LCD) & if (dss_feat_get_supported_displays(OMAP_DSS_CHANNEL_LCD) &
...@@ -122,6 +130,8 @@ static void dss_restore_context(void) ...@@ -122,6 +130,8 @@ static void dss_restore_context(void)
RR(SDI_CONTROL); RR(SDI_CONTROL);
RR(PLL_CONTROL); RR(PLL_CONTROL);
} }
DSSDBG("context restored\n");
} }
#undef SR #undef SR
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment