bcm27xx: switch to 5.15
[openwrt/staging/chunkeey.git] / target / linux / bcm27xx / patches-5.10 / 950-0564-drm-vc4-dsi-Add-configuration-for-BCM2711-DSI1.patch
1 From 24b8230e039c6bef2dcc0ea4ca7cb5d2441570f1 Mon Sep 17 00:00:00 2001
2 From: Dave Stevenson <dave.stevenson@raspberrypi.com>
3 Date: Thu, 3 Dec 2020 14:25:42 +0100
4 Subject: [PATCH] drm/vc4: dsi: Add configuration for BCM2711 DSI1
5
6 Commit d0666be8ef9e8e65d4b7fabc1606ec51f61384c0 upstream.
7
8 BCM2711 DSI1 doesn't have the issue with the ARM not being
9 able to write to the registers, therefore remove the DMA
10 workaround for that compatible string.
11
12 Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
13 Signed-off-by: Maxime Ripard <maxime@cerno.tech>
14 Link: https://patchwork.freedesktop.org/patch/msgid/20201203132543.861591-8-maxime@cerno.tech
15 ---
16 drivers/gpu/drm/vc4/vc4_dsi.c | 12 ++++++++++--
17 1 file changed, 10 insertions(+), 2 deletions(-)
18
19 --- a/drivers/gpu/drm/vc4/vc4_dsi.c
20 +++ b/drivers/gpu/drm/vc4/vc4_dsi.c
21 @@ -1316,6 +1316,13 @@ static const struct drm_encoder_helper_f
22 .mode_fixup = vc4_dsi_encoder_mode_fixup,
23 };
24
25 +static const struct vc4_dsi_variant bcm2711_dsi1_variant = {
26 + .port = 1,
27 + .debugfs_name = "dsi1_regs",
28 + .regs = dsi1_regs,
29 + .nregs = ARRAY_SIZE(dsi1_regs),
30 +};
31 +
32 static const struct vc4_dsi_variant bcm2835_dsi0_variant = {
33 .port = 0,
34 .debugfs_name = "dsi0_regs",
35 @@ -1332,6 +1339,7 @@ static const struct vc4_dsi_variant bcm2
36 };
37
38 static const struct of_device_id vc4_dsi_dt_match[] = {
39 + { .compatible = "brcm,bcm2711-dsi1", &bcm2711_dsi1_variant },
40 { .compatible = "brcm,bcm2835-dsi0", &bcm2835_dsi0_variant },
41 { .compatible = "brcm,bcm2835-dsi1", &bcm2835_dsi1_variant },
42 {}
43 @@ -1516,8 +1524,8 @@ static int vc4_dsi_bind(struct device *d
44 return -ENODEV;
45 }
46
47 - /* DSI1 has a broken AXI slave that doesn't respond to writes
48 - * from the ARM. It does handle writes from the DMA engine,
49 + /* DSI1 on BCM2835/6/7 has a broken AXI slave that doesn't respond to
50 + * writes from the ARM. It does handle writes from the DMA engine,
51 * so set up a channel for talking to it.
52 */
53 if (dsi->variant->broken_axi_workaround) {