mirror of
https://github.com/openwrt/openwrt.git
synced 2025-01-10 23:12:48 +00:00
3a5584e0df
Adds latest 6.6 patches from the Raspberry Pi repository.
These patches were generated from:
https://github.com/raspberrypi/linux/commits/rpi-6.6.y/
With the following command:
git format-patch -N v6.6.67..HEAD
(HEAD -> 811ff707533bcd67cdcd368bbd46223082009b12)
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
(cherry picked from commit 692205305d
)
65 lines
2.2 KiB
Diff
65 lines
2.2 KiB
Diff
From 57b528e557890f25e010b6bc7356b5a716c79db2 Mon Sep 17 00:00:00 2001
|
|
From: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
|
Date: Tue, 12 Nov 2024 17:58:52 +0000
|
|
Subject: [PATCH] drm/vc4: hvs: Defer updating the enable_bg_fill until vblank
|
|
|
|
The register to enable/disable background fill was being set
|
|
from atomic flush, however that will be applied immediately and
|
|
can be a while before the vblank. If it was required for the
|
|
current frame but not for the next one, that can result in
|
|
corruption for part of the current frame.
|
|
|
|
Store the state in vc4_hvs, and update it on vblank.
|
|
|
|
Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
|
---
|
|
drivers/gpu/drm/vc4/vc4_drv.h | 2 ++
|
|
drivers/gpu/drm/vc4/vc4_hvs.c | 18 ++++++++++--------
|
|
2 files changed, 12 insertions(+), 8 deletions(-)
|
|
|
|
--- a/drivers/gpu/drm/vc4/vc4_drv.h
|
|
+++ b/drivers/gpu/drm/vc4/vc4_drv.h
|
|
@@ -339,6 +339,8 @@ struct vc4_hvs {
|
|
unsigned int enabled: 1;
|
|
} eof_irq[HVS_NUM_CHANNELS];
|
|
|
|
+ bool bg_fill[HVS_NUM_CHANNELS];
|
|
+
|
|
unsigned long max_core_rate;
|
|
|
|
/* Memory manager for CRTCs to allocate space in the display
|
|
--- a/drivers/gpu/drm/vc4/vc4_hvs.c
|
|
+++ b/drivers/gpu/drm/vc4/vc4_hvs.c
|
|
@@ -1470,14 +1470,7 @@ void vc4_hvs_atomic_flush(struct drm_crt
|
|
/* This sets a black background color fill, as is the case
|
|
* with other DRM drivers.
|
|
*/
|
|
- if (enable_bg_fill)
|
|
- HVS_WRITE(SCALER6_DISPX_CTRL1(channel),
|
|
- HVS_READ(SCALER6_DISPX_CTRL1(channel)) |
|
|
- SCALER6(DISPX_CTRL1_BGENB));
|
|
- else
|
|
- HVS_WRITE(SCALER6_DISPX_CTRL1(channel),
|
|
- HVS_READ(SCALER6_DISPX_CTRL1(channel)) &
|
|
- ~SCALER6(DISPX_CTRL1_BGENB));
|
|
+ hvs->bg_fill[channel] = enable_bg_fill;
|
|
} else {
|
|
/* we can actually run with a lower core clock when background
|
|
* fill is enabled on VC4_GEN_5 so leave it enabled always.
|
|
@@ -1662,6 +1655,15 @@ static irqreturn_t vc6_hvs_eof_irq_handl
|
|
if (hvs->eof_irq[i].desc != irq)
|
|
continue;
|
|
|
|
+ if (hvs->bg_fill[i])
|
|
+ HVS_WRITE(SCALER6_DISPX_CTRL1(i),
|
|
+ HVS_READ(SCALER6_DISPX_CTRL1(i)) |
|
|
+ SCALER6(DISPX_CTRL1_BGENB));
|
|
+ else
|
|
+ HVS_WRITE(SCALER6_DISPX_CTRL1(i),
|
|
+ HVS_READ(SCALER6_DISPX_CTRL1(i)) &
|
|
+ ~SCALER6(DISPX_CTRL1_BGENB));
|
|
+
|
|
vc4_hvs_schedule_dlist_sweep(hvs, i);
|
|
return IRQ_HANDLED;
|
|
}
|