summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arch/arm/mach-imx/gpc.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/arch/arm/mach-imx/gpc.c b/arch/arm/mach-imx/gpc.c
index fc74dabdc0f1..52fa87215f05 100644
--- a/arch/arm/mach-imx/gpc.c
+++ b/arch/arm/mach-imx/gpc.c
@@ -133,12 +133,14 @@ static void imx_disp_clk(bool enable)
static void imx_gpc_dispmix_on(void)
{
+ u32 val = readl_relaxed(gpc_base + GPC_CNTR);
+
if ((cpu_is_imx6sl() &&
imx_get_soc_revision() >= IMX_CHIP_REVISION_1_2) || cpu_is_imx6sx()) {
imx_disp_clk(true);
writel_relaxed(0x0, gpc_base + GPC_PGC_DISP_PGCR_OFFSET);
- writel_relaxed(0x20, gpc_base + GPC_CNTR);
+ writel_relaxed(0x20 | val, gpc_base + GPC_CNTR);
while (readl_relaxed(gpc_base + GPC_CNTR) & 0x20)
;
writel_relaxed(0x1, gpc_base + GPC_PGC_DISP_SR_OFFSET);
@@ -149,6 +151,8 @@ static void imx_gpc_dispmix_on(void)
static void imx_gpc_dispmix_off(void)
{
+ u32 val = readl_relaxed(gpc_base + GPC_CNTR);
+
if ((cpu_is_imx6sl() &&
imx_get_soc_revision() >= IMX_CHIP_REVISION_1_2) || cpu_is_imx6sx()) {
imx_disp_clk(true);
@@ -158,7 +162,7 @@ static void imx_gpc_dispmix_off(void)
writel_relaxed(0xFFFFFFFF,
gpc_base + GPC_PGC_DISP_PDNSCR_OFFSET);
writel_relaxed(0x1, gpc_base + GPC_PGC_DISP_PGCR_OFFSET);
- writel_relaxed(0x10, gpc_base + GPC_CNTR);
+ writel_relaxed(0x10 | val, gpc_base + GPC_CNTR);
while (readl_relaxed(gpc_base + GPC_CNTR) & 0x10)
;