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: Tomi Valkeinen <tomi.valkeinen@ti.com>
This commit is contained in:
parent
49ea86f3fa
commit
69f06054aa
1 changed files with 10 additions and 0 deletions
|
@ -74,6 +74,7 @@ static struct {
|
|||
enum omap_dss_clk_source dispc_clk_source;
|
||||
enum omap_dss_clk_source lcd_clk_source[MAX_DSS_LCD_MANAGERS];
|
||||
|
||||
bool ctx_valid;
|
||||
u32 ctx[DSS_SZ_REGS / sizeof(u32)];
|
||||
} dss;
|
||||
|
||||
|
@ -109,12 +110,19 @@ static void dss_save_context(void)
|
|||
SR(SDI_CONTROL);
|
||||
SR(PLL_CONTROL);
|
||||
}
|
||||
|
||||
dss.ctx_valid = true;
|
||||
|
||||
DSSDBG("context saved\n");
|
||||
}
|
||||
|
||||
static void dss_restore_context(void)
|
||||
{
|
||||
DSSDBG("dss_restore_context\n");
|
||||
|
||||
if (!dss.ctx_valid)
|
||||
return;
|
||||
|
||||
RR(CONTROL);
|
||||
|
||||
if (dss_feat_get_supported_displays(OMAP_DSS_CHANNEL_LCD) &
|
||||
|
@ -122,6 +130,8 @@ static void dss_restore_context(void)
|
|||
RR(SDI_CONTROL);
|
||||
RR(PLL_CONTROL);
|
||||
}
|
||||
|
||||
DSSDBG("context restored\n");
|
||||
}
|
||||
|
||||
#undef SR
|
||||
|
|
Loading…
Reference in a new issue