When the Unisoc DRM driver is initialized for the first time to display
an image on the screen, reinitialize the display properly instead of
relying on the bootloader.
Signed-off-by: Otto Pflüger <otto.pflueger@abscue.de>
---
drivers/gpu/drm/sprd/sprd_dpu.c | 8 ++++++++
drivers/gpu/drm/sprd/sprd_dsi.c | 1 -
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/sprd/sprd_dpu.c b/drivers/gpu/drm/sprd/sprd_dpu.c
index 01906243a93e3306fbce5bf617838b517822a2b6..be7758ef445b1b87b8ce6bd2001a15fa0f24f4d3 100644
--- a/drivers/gpu/drm/sprd/sprd_dpu.c
+++ b/drivers/gpu/drm/sprd/sprd_dpu.c
@@ -458,6 +458,14 @@ static void sprd_dpu_init(struct sprd_dpu *dpu)
}
writel(int_mask, ctx->base + REG_DPU_INT_EN);
+
+ /*
+ * The DPU is usually enabled by the bootloader to show
+ * a splash screen. Stop it here when the kernel initializes
+ * the display.
+ */
+ if (!ctx->stopped)
+ sprd_dpu_stop(dpu);
}
static void sprd_dpu_fini(struct sprd_dpu *dpu)
diff --git a/drivers/gpu/drm/sprd/sprd_dsi.c b/drivers/gpu/drm/sprd/sprd_dsi.c
index e781e6c84860402f37352e768244d88ca6ffd4c9..dd9e3179cef985ec39155994c122a6288ac4b2f8 100644
--- a/drivers/gpu/drm/sprd/sprd_dsi.c
+++ b/drivers/gpu/drm/sprd/sprd_dsi.c
@@ -954,7 +954,6 @@ static int sprd_dsi_context_init(struct sprd_dsi *dsi,
ctx->max_rd_time = 6000;
ctx->int0_mask = 0xffffffff;
ctx->int1_mask = 0xffffffff;
- ctx->enabled = true;
return 0;
}
--
2.50.0