forked from Openwrt/openwrt
8c405cdccc
The patches were generated from the RPi repo with the following command: git format-patch v6.6.34..rpi-6.1.y Some patches needed rebasing and, as usual, the applied and reverted, wireless drivers, Github workflows, READMEs and defconfigs patches were removed. Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
53 lines
1.9 KiB
Diff
53 lines
1.9 KiB
Diff
From 48016174777294ea86103946f71e25bb04f647a1 Mon Sep 17 00:00:00 2001
|
|
From: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
|
Date: Thu, 26 Oct 2023 17:46:13 +0100
|
|
Subject: [PATCH 0708/1085] drm/vc4: Correct logic on stopping an HVS channel
|
|
|
|
When factoring out __vc4_hvs_stop_channel, the logic got inverted from
|
|
if (condition)
|
|
// stop channel
|
|
to
|
|
if (condition)
|
|
goto out
|
|
//stop channel
|
|
out:
|
|
and also changed the exact register writes used to stop the channel.
|
|
|
|
Correct the logic so that the channel is actually stopped, and revert
|
|
to the original register writes.
|
|
|
|
Fixes: 6d01a106b4c8 ("drm/vc4: crtc: Move HVS init and close to a function")
|
|
Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
|
---
|
|
drivers/gpu/drm/vc4/vc4_hvs.c | 10 ++++------
|
|
1 file changed, 4 insertions(+), 6 deletions(-)
|
|
|
|
--- a/drivers/gpu/drm/vc4/vc4_hvs.c
|
|
+++ b/drivers/gpu/drm/vc4/vc4_hvs.c
|
|
@@ -992,13 +992,11 @@ static void __vc4_hvs_stop_channel(struc
|
|
if (!drm_dev_enter(drm, &idx))
|
|
return;
|
|
|
|
- if (HVS_READ(SCALER_DISPCTRLX(chan)) & SCALER_DISPCTRLX_ENABLE)
|
|
+ if (!(HVS_READ(SCALER_DISPCTRLX(chan)) & SCALER_DISPCTRLX_ENABLE))
|
|
goto out;
|
|
|
|
- HVS_WRITE(SCALER_DISPCTRLX(chan),
|
|
- HVS_READ(SCALER_DISPCTRLX(chan)) | SCALER_DISPCTRLX_RESET);
|
|
- HVS_WRITE(SCALER_DISPCTRLX(chan),
|
|
- HVS_READ(SCALER_DISPCTRLX(chan)) & ~SCALER_DISPCTRLX_ENABLE);
|
|
+ HVS_WRITE(SCALER_DISPCTRLX(chan), SCALER_DISPCTRLX_RESET);
|
|
+ HVS_WRITE(SCALER_DISPCTRLX(chan), 0);
|
|
|
|
/* Once we leave, the scaler should be disabled and its fifo empty. */
|
|
WARN_ON_ONCE(HVS_READ(SCALER_DISPCTRLX(chan)) & SCALER_DISPCTRLX_RESET);
|
|
@@ -1026,7 +1024,7 @@ static void __vc6_hvs_stop_channel(struc
|
|
if (!drm_dev_enter(drm, &idx))
|
|
return;
|
|
|
|
- if (HVS_READ(SCALER6_DISPX_CTRL0(chan)) & SCALER6_DISPX_CTRL0_ENB)
|
|
+ if (!(HVS_READ(SCALER6_DISPX_CTRL0(chan)) & SCALER6_DISPX_CTRL0_ENB))
|
|
goto out;
|
|
|
|
HVS_WRITE(SCALER6_DISPX_CTRL0(chan),
|