mirror of
https://github.com/Ysurac/openmptcprouter.git
synced 2025-02-15 04:42:02 +00:00
64 lines
2 KiB
Diff
64 lines
2 KiB
Diff
From 2118551cfedf4b76821987d4de72379c82fbe1be Mon Sep 17 00:00:00 2001
|
|
From: Tim Gover <tim.gover@raspberrypi.com>
|
|
Date: Thu, 13 Jul 2023 17:47:22 +0100
|
|
Subject: [PATCH 0602/1002] drm/vc4: Enable SCALER_CONTROL early in HVS init
|
|
|
|
Always enable SCALER_CONTROL before attempting other HVS
|
|
operations. It's safe to write to some parts of the HVS but
|
|
in general it's dangerous to do this because it can cause bus
|
|
lockups.
|
|
|
|
Signed-off-by: Tim Gover <tim.gover@raspberrypi.com>
|
|
---
|
|
drivers/gpu/drm/vc4/vc4_hvs.c | 14 ++++++++------
|
|
1 file changed, 8 insertions(+), 6 deletions(-)
|
|
|
|
diff --git a/drivers/gpu/drm/vc4/vc4_hvs.c b/drivers/gpu/drm/vc4/vc4_hvs.c
|
|
index 113d3c948120..b4250b3b8222 100644
|
|
--- a/drivers/gpu/drm/vc4/vc4_hvs.c
|
|
+++ b/drivers/gpu/drm/vc4/vc4_hvs.c
|
|
@@ -1293,6 +1293,10 @@ static int vc4_hvs_hw_init(struct vc4_hvs *hvs)
|
|
struct vc4_dev *vc4 = hvs->vc4;
|
|
u32 dispctrl, reg;
|
|
|
|
+ dispctrl = HVS_READ(SCALER_DISPCTRL);
|
|
+ dispctrl |= SCALER_DISPCTRL_ENABLE;
|
|
+ HVS_WRITE(SCALER_DISPCTRL, dispctrl);
|
|
+
|
|
reg = HVS_READ(SCALER_DISPECTRL);
|
|
reg &= ~SCALER_DISPECTRL_DSP2_MUX_MASK;
|
|
HVS_WRITE(SCALER_DISPECTRL,
|
|
@@ -1314,8 +1318,6 @@ static int vc4_hvs_hw_init(struct vc4_hvs *hvs)
|
|
reg | VC4_SET_FIELD(3, SCALER_DISPDITHER_DSP5_MUX));
|
|
|
|
dispctrl = HVS_READ(SCALER_DISPCTRL);
|
|
-
|
|
- dispctrl |= SCALER_DISPCTRL_ENABLE;
|
|
dispctrl |= SCALER_DISPCTRL_DISPEIRQ(0) |
|
|
SCALER_DISPCTRL_DISPEIRQ(1) |
|
|
SCALER_DISPCTRL_DISPEIRQ(2);
|
|
@@ -1511,6 +1513,10 @@ static int vc4_hvs_bind(struct device *dev, struct device *master, void *data)
|
|
else
|
|
hvs->dlist = hvs->regs + SCALER5_DLIST_START;
|
|
|
|
+ ret = vc4_hvs_hw_init(hvs);
|
|
+ if (ret)
|
|
+ return ret;
|
|
+
|
|
/* Upload filter kernels. We only have the one for now, so we
|
|
* keep it around for the lifetime of the driver.
|
|
*/
|
|
@@ -1520,10 +1526,6 @@ static int vc4_hvs_bind(struct device *dev, struct device *master, void *data)
|
|
if (ret)
|
|
return ret;
|
|
|
|
- ret = vc4_hvs_hw_init(hvs);
|
|
- if (ret)
|
|
- return ret;
|
|
-
|
|
ret = vc4_hvs_cob_init(hvs);
|
|
if (ret)
|
|
return ret;
|
|
--
|
|
2.44.0
|
|
|