hc
2023-11-22 9ca5fbcb63a8dcaee0527f96afb91dc4b4bd8fa9
kernel/drivers/gpu/drm/rockchip/rockchip_rgb.c
....@@ -173,6 +173,8 @@
173173 static void rockchip_rgb_encoder_disable(struct drm_encoder *encoder)
174174 {
175175 struct rockchip_rgb *rgb = encoder_to_rgb(encoder);
176
+ struct drm_crtc *crtc = encoder->crtc;
177
+ struct rockchip_crtc_state *s = to_rockchip_crtc_state(crtc->state);
176178
177179 if (rgb->panel) {
178180 drm_panel_disable(rgb->panel);
....@@ -186,6 +188,13 @@
186188 rgb->funcs->disable(rgb);
187189
188190 pinctrl_pm_select_sleep_state(rgb->dev);
191
+
192
+ if (s->output_if & VOP_OUTPUT_IF_RGB)
193
+ s->output_if &= ~VOP_OUTPUT_IF_RGB;
194
+ else if (s->output_if & VOP_OUTPUT_IF_BT656)
195
+ s->output_if &= ~VOP_OUTPUT_IF_BT656;
196
+ else if (s->output_if & VOP_OUTPUT_IF_BT1120)
197
+ s->output_if &= ~VOP_OUTPUT_IF_BT1120;
189198 }
190199
191200 static int
....@@ -205,39 +214,39 @@
205214 switch (s->bus_format) {
206215 case MEDIA_BUS_FMT_RGB666_1X18:
207216 s->output_mode = ROCKCHIP_OUT_MODE_P666;
208
- s->output_if = VOP_OUTPUT_IF_RGB;
217
+ s->output_if |= VOP_OUTPUT_IF_RGB;
209218 break;
210219 case MEDIA_BUS_FMT_RGB565_1X16:
211220 s->output_mode = ROCKCHIP_OUT_MODE_P565;
212
- s->output_if = VOP_OUTPUT_IF_RGB;
221
+ s->output_if |= VOP_OUTPUT_IF_RGB;
213222 break;
214223 case MEDIA_BUS_FMT_SRGB888_3X8:
215224 s->output_mode = ROCKCHIP_OUT_MODE_S888;
216
- s->output_if = VOP_OUTPUT_IF_RGB;
225
+ s->output_if |= VOP_OUTPUT_IF_RGB;
217226 break;
218227 case MEDIA_BUS_FMT_SRGB888_DUMMY_4X8:
219228 s->output_mode = ROCKCHIP_OUT_MODE_S888_DUMMY;
220
- s->output_if = VOP_OUTPUT_IF_RGB;
229
+ s->output_if |= VOP_OUTPUT_IF_RGB;
221230 break;
222231 case MEDIA_BUS_FMT_YUYV8_2X8:
223232 case MEDIA_BUS_FMT_YVYU8_2X8:
224233 case MEDIA_BUS_FMT_UYVY8_2X8:
225234 case MEDIA_BUS_FMT_VYUY8_2X8:
226235 s->output_mode = ROCKCHIP_OUT_MODE_BT656;
227
- s->output_if = VOP_OUTPUT_IF_BT656;
236
+ s->output_if |= VOP_OUTPUT_IF_BT656;
228237 break;
229238 case MEDIA_BUS_FMT_YUYV8_1X16:
230239 case MEDIA_BUS_FMT_YVYU8_1X16:
231240 case MEDIA_BUS_FMT_UYVY8_1X16:
232241 case MEDIA_BUS_FMT_VYUY8_1X16:
233242 s->output_mode = ROCKCHIP_OUT_MODE_BT1120;
234
- s->output_if = VOP_OUTPUT_IF_BT1120;
243
+ s->output_if |= VOP_OUTPUT_IF_BT1120;
235244 break;
236245 case MEDIA_BUS_FMT_RGB888_1X24:
237246 case MEDIA_BUS_FMT_RGB666_1X24_CPADHI:
238247 default:
239248 s->output_mode = ROCKCHIP_OUT_MODE_P888;
240
- s->output_if = VOP_OUTPUT_IF_RGB;
249
+ s->output_if |= VOP_OUTPUT_IF_RGB;
241250 break;
242251 }
243252