bcm27xx: update 6.1 patches from RPi foundation
[openwrt/staging/xback.git] / target / linux / bcm27xx / patches-6.1 / 950-0979-drm-vc4-tests-Add-BCM2712-mock-driver.patch
1 From 04bec005b049604f862765b35ebd71c2a69b9e7c Mon Sep 17 00:00:00 2001
2 From: Maxime Ripard <maxime@cerno.tech>
3 Date: Fri, 17 Feb 2023 13:38:10 +0100
4 Subject: [PATCH] drm/vc4: tests: Add BCM2712 mock driver
5
6 The BCM2712 has a simpler pipeline that can only output to a writeback
7 connector and two HDMI controllers.
8
9 Let's allow our kunit tests to create a mock of that pipeline.
10
11 Signed-off-by: Maxime Ripard <maxime@cerno.tech>
12 ---
13 drivers/gpu/drm/vc4/tests/vc4_mock.c | 29 ++++++++++++++++++++++++++++
14 drivers/gpu/drm/vc4/tests/vc4_mock.h | 1 +
15 drivers/gpu/drm/vc4/vc4_drv.h | 2 ++
16 3 files changed, 32 insertions(+)
17
18 --- a/drivers/gpu/drm/vc4/tests/vc4_mock.c
19 +++ b/drivers/gpu/drm/vc4/tests/vc4_mock.c
20 @@ -106,6 +106,26 @@ static const struct vc4_mock_desc vc5_mo
21 DRM_MODE_CONNECTOR_HDMIA)),
22 );
23
24 +static const struct vc4_mock_desc vc6_mock =
25 + VC4_MOCK_DESC(
26 + VC4_MOCK_CRTC_DESC(&bcm2712_mop_data.base,
27 + VC4_MOCK_OUTPUT_DESC(VC4_ENCODER_TYPE_TXP0,
28 + DRM_MODE_ENCODER_VIRTUAL,
29 + DRM_MODE_CONNECTOR_WRITEBACK)),
30 + VC4_MOCK_CRTC_DESC(&bcm2712_moplet_data.base,
31 + VC4_MOCK_OUTPUT_DESC(VC4_ENCODER_TYPE_TXP1,
32 + DRM_MODE_ENCODER_VIRTUAL,
33 + DRM_MODE_CONNECTOR_WRITEBACK)),
34 + VC4_MOCK_PIXELVALVE_DESC(&bcm2712_pv0_data,
35 + VC4_MOCK_OUTPUT_DESC(VC4_ENCODER_TYPE_HDMI0,
36 + DRM_MODE_ENCODER_TMDS,
37 + DRM_MODE_CONNECTOR_HDMIA)),
38 + VC4_MOCK_PIXELVALVE_DESC(&bcm2712_pv1_data,
39 + VC4_MOCK_OUTPUT_DESC(VC4_ENCODER_TYPE_HDMI1,
40 + DRM_MODE_ENCODER_TMDS,
41 + DRM_MODE_CONNECTOR_HDMIA)),
42 +);
43 +
44 static int __build_one_pipe(struct kunit *test, struct drm_device *drm,
45 const struct vc4_mock_pipe_desc *pipe)
46 {
47 @@ -171,6 +191,10 @@ static struct vc4_dev *__mock_device(str
48 drv = &vc5_drm_driver;
49 desc = &vc5_mock;
50 break;
51 + case VC4_GEN_6:
52 + drv = &vc5_drm_driver;
53 + desc = &vc6_mock;
54 + break;
55
56 default:
57 return NULL;
58 @@ -212,3 +236,8 @@ struct vc4_dev *vc5_mock_device(struct k
59 {
60 return __mock_device(test, VC4_GEN_5);
61 }
62 +
63 +struct vc4_dev *vc6_mock_device(struct kunit *test)
64 +{
65 + return __mock_device(test, VC4_GEN_6);
66 +}
67 --- a/drivers/gpu/drm/vc4/tests/vc4_mock.h
68 +++ b/drivers/gpu/drm/vc4/tests/vc4_mock.h
69 @@ -52,6 +52,7 @@ struct vc4_dummy_output *vc4_dummy_outpu
70
71 struct vc4_dev *vc4_mock_device(struct kunit *test);
72 struct vc4_dev *vc5_mock_device(struct kunit *test);
73 +struct vc4_dev *vc6_mock_device(struct kunit *test);
74
75 struct vc4_dummy_output *
76 vc4_mock_atomic_add_output(struct kunit *test,
77 --- a/drivers/gpu/drm/vc4/vc4_drv.h
78 +++ b/drivers/gpu/drm/vc4/vc4_drv.h
79 @@ -570,6 +570,8 @@ struct vc4_txp_data {
80 unsigned int supports_40bit_addresses:1;
81 };
82
83 +extern const struct vc4_txp_data bcm2712_mop_data;
84 +extern const struct vc4_txp_data bcm2712_moplet_data;
85 extern const struct vc4_txp_data bcm2835_txp_data;
86
87 struct vc4_pv_data {