mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-05 22:55:53 -04:00
drm/vc4: hvs: 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> Reviewed-by: Maxime Ripard <mripard@kernel.org> Link: https://patchwork.freedesktop.org/patch/msgid/20240621152055.4180873-31-dave.stevenson@raspberrypi.com Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
This commit is contained in:
committed by
Dave Stevenson
parent
8e7eb0c54a
commit
886a79237e
@@ -860,6 +860,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,
|
||||
@@ -881,8 +885,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);
|
||||
@@ -1078,6 +1080,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.
|
||||
*/
|
||||
@@ -1087,10 +1093,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;
|
||||
|
||||
Reference in New Issue
Block a user