kernel: bump 5.4 to 5.4.69
[openwrt/openwrt.git] / target / linux / bcm27xx / patches-5.4 / 950-0579-drm-vc4-hdmi-Remove-vc4_hdmi_connector.patch
1 From 6fdf2c94a028e04e1e20791aae5e0adaf905df77 Mon Sep 17 00:00:00 2001
2 From: Maxime Ripard <maxime@cerno.tech>
3 Date: Mon, 6 Jan 2020 18:57:16 +0100
4 Subject: [PATCH] drm/vc4: hdmi: Remove vc4_hdmi_connector
5
6 The vc4_hdmi_connector was only used to switch between drm_connector to
7 drm_encoder. However, we can now use vc4_hdmi to do the switch, so that
8 structure is redundant.
9
10 Signed-off-by: Maxime Ripard <maxime@cerno.tech>
11 ---
12 drivers/gpu/drm/vc4/vc4_hdmi.c | 19 ++++++++-----------
13 drivers/gpu/drm/vc4/vc4_hdmi.h | 23 ++---------------------
14 2 files changed, 10 insertions(+), 32 deletions(-)
15
16 --- a/drivers/gpu/drm/vc4/vc4_hdmi.c
17 +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
18 @@ -188,13 +188,10 @@ static const struct drm_connector_helper
19 static int vc4_hdmi_connector_init(struct drm_device *dev,
20 struct vc4_hdmi *vc4_hdmi)
21 {
22 - struct vc4_hdmi_connector *hdmi_connector = &vc4_hdmi->connector;
23 - struct drm_connector *connector = &hdmi_connector->base;
24 + struct drm_connector *connector = &vc4_hdmi->connector;
25 struct drm_encoder *encoder = &vc4_hdmi->encoder.base.base;
26 int ret;
27
28 - hdmi_connector->encoder = encoder;
29 -
30 drm_connector_init(dev, connector, &vc4_hdmi_connector_funcs,
31 DRM_MODE_CONNECTOR_HDMIA);
32 drm_connector_helper_add(connector, &vc4_hdmi_connector_helper_funcs);
33 @@ -290,7 +287,7 @@ static void vc4_hdmi_set_avi_infoframe(s
34 {
35 struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder);
36 struct vc4_hdmi_encoder *vc4_encoder = to_vc4_hdmi_encoder(encoder);
37 - struct drm_connector *connector = &vc4_hdmi->connector.base;
38 + struct drm_connector *connector = &vc4_hdmi->connector;
39 struct drm_connector_state *cstate = connector->state;
40 struct drm_crtc *crtc = encoder->crtc;
41 const struct drm_display_mode *mode = &crtc->state->adjusted_mode;
42 @@ -672,7 +669,7 @@ static int vc4_hdmi_audio_startup(struct
43 {
44 struct vc4_hdmi *vc4_hdmi = dai_to_hdmi(dai);
45 struct drm_encoder *encoder = &vc4_hdmi->encoder.base.base;
46 - struct drm_connector *connector = &vc4_hdmi->connector.base;
47 + struct drm_connector *connector = &vc4_hdmi->connector;
48 int ret;
49
50 if (vc4_hdmi->audio.substream && vc4_hdmi->audio.substream != substream)
51 @@ -846,7 +843,7 @@ static int vc4_hdmi_audio_eld_ctl_info(s
52 {
53 struct snd_soc_component *component = snd_kcontrol_chip(kcontrol);
54 struct vc4_hdmi *vc4_hdmi = snd_component_to_hdmi(component);
55 - struct drm_connector *connector = &vc4_hdmi->connector.base;
56 + struct drm_connector *connector = &vc4_hdmi->connector;
57
58 uinfo->type = SNDRV_CTL_ELEM_TYPE_BYTES;
59 uinfo->count = sizeof(connector->eld);
60 @@ -859,7 +856,7 @@ static int vc4_hdmi_audio_eld_ctl_get(st
61 {
62 struct snd_soc_component *component = snd_kcontrol_chip(kcontrol);
63 struct vc4_hdmi *vc4_hdmi = snd_component_to_hdmi(component);
64 - struct drm_connector *connector = &vc4_hdmi->connector.base;
65 + struct drm_connector *connector = &vc4_hdmi->connector;
66
67 memcpy(ucontrol->value.bytes.data, connector->eld,
68 sizeof(connector->eld));
69 @@ -1314,7 +1311,7 @@ static int vc4_hdmi_bind(struct device *
70 if (ret < 0)
71 goto err_destroy_conn;
72
73 - cec_fill_conn_info_from_drm(&conn_info, &vc4_hdmi->connector.base);
74 + cec_fill_conn_info_from_drm(&conn_info, &vc4_hdmi->connector);
75 cec_s_conn_info(vc4_hdmi->cec_adap, &conn_info);
76
77 HDMI_WRITE(VC4_HDMI_CPU_MASK_SET, 0xffffffff);
78 @@ -1351,7 +1348,7 @@ static int vc4_hdmi_bind(struct device *
79 err_delete_cec_adap:
80 cec_delete_adapter(vc4_hdmi->cec_adap);
81 err_destroy_conn:
82 - vc4_hdmi_connector_destroy(&vc4_hdmi->connector.base);
83 + vc4_hdmi_connector_destroy(&vc4_hdmi->connector);
84 #endif
85 err_destroy_encoder:
86 vc4_hdmi_encoder_destroy(encoder);
87 @@ -1375,7 +1372,7 @@ static void vc4_hdmi_unbind(struct devic
88 struct vc4_hdmi *vc4_hdmi = snd_soc_card_get_drvdata(card);
89
90 cec_unregister_adapter(vc4_hdmi->cec_adap);
91 - vc4_hdmi_connector_destroy(&vc4_hdmi->connector.base);
92 + vc4_hdmi_connector_destroy(&vc4_hdmi->connector);
93 vc4_hdmi_encoder_destroy(&vc4_hdmi->encoder.base.base);
94
95 clk_disable_unprepare(vc4_hdmi->hsm_clock);
96 --- a/drivers/gpu/drm/vc4/vc4_hdmi.h
97 +++ b/drivers/gpu/drm/vc4/vc4_hdmi.h
98 @@ -21,23 +21,6 @@ to_vc4_hdmi_encoder(struct drm_encoder *
99 return container_of(encoder, struct vc4_hdmi_encoder, base.base);
100 }
101
102 -/* VC4 HDMI connector KMS struct */
103 -struct vc4_hdmi_connector {
104 - struct drm_connector base;
105 -
106 - /* Since the connector is attached to just the one encoder,
107 - * this is the reference to it so we can do the best_encoder()
108 - * hook.
109 - */
110 - struct drm_encoder *encoder;
111 -};
112 -
113 -static inline struct vc4_hdmi_connector *
114 -to_vc4_hdmi_connector(struct drm_connector *connector)
115 -{
116 - return container_of(connector, struct vc4_hdmi_connector, base);
117 -}
118 -
119 /* HDMI audio information */
120 struct vc4_hdmi_audio {
121 struct snd_soc_card card;
122 @@ -56,7 +39,7 @@ struct vc4_hdmi {
123 struct platform_device *pdev;
124
125 struct vc4_hdmi_encoder encoder;
126 - struct vc4_hdmi_connector connector;
127 + struct drm_connector connector;
128
129 struct vc4_hdmi_audio audio;
130
131 @@ -81,9 +64,7 @@ struct vc4_hdmi {
132 static inline struct vc4_hdmi *
133 connector_to_vc4_hdmi(struct drm_connector *connector)
134 {
135 - struct vc4_hdmi_connector *_connector = to_vc4_hdmi_connector(connector);
136 -
137 - return container_of(_connector, struct vc4_hdmi, connector);
138 + return container_of(connector, struct vc4_hdmi, connector);
139 }
140
141 static inline struct vc4_hdmi *