mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-24 07:46:48 +00:00
2e715fb4fc
Add support for BCM2712 (Raspberry Pi 5).
3bb5880ab3
Patches were generated from the diff between linux kernel branch linux-6.1.y
and rpi-6.1.y from raspberry pi kernel source:
- git format-patch linux-6.1.y...rpi-6.1.y
Build system: x86_64
Build-tested: bcm2708, bcm2709, bcm2710, bcm2711
Run-tested: bcm2710/RPi3B, bcm2711/RPi4B
Signed-off-by: Marty Jones <mj8263788@gmail.com>
[Remove applied and reverted patches, squash patches and config commits]
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
60 lines
1.8 KiB
Diff
60 lines
1.8 KiB
Diff
From 542ba979b4fa1e07ff2ad2dabbdc12e92b80ed46 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] 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(-)
|
|
|
|
--- a/drivers/gpu/drm/vc4/vc4_hvs.c
|
|
+++ b/drivers/gpu/drm/vc4/vc4_hvs.c
|
|
@@ -1303,6 +1303,10 @@ static int vc4_hvs_hw_init(struct vc4_hv
|
|
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,
|
|
@@ -1324,8 +1328,6 @@ static int vc4_hvs_hw_init(struct vc4_hv
|
|
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);
|
|
@@ -1521,6 +1523,10 @@ static int vc4_hvs_bind(struct device *d
|
|
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.
|
|
*/
|
|
@@ -1530,10 +1536,6 @@ static int vc4_hvs_bind(struct device *d
|
|
if (ret)
|
|
return ret;
|
|
|
|
- ret = vc4_hvs_hw_init(hvs);
|
|
- if (ret)
|
|
- return ret;
|
|
-
|
|
ret = vc4_hvs_cob_init(hvs);
|
|
if (ret)
|
|
return ret;
|