.. | .. |
---|
173 | 173 | static void rockchip_rgb_encoder_disable(struct drm_encoder *encoder) |
---|
174 | 174 | { |
---|
175 | 175 | 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); |
---|
176 | 178 | |
---|
177 | 179 | if (rgb->panel) { |
---|
178 | 180 | drm_panel_disable(rgb->panel); |
---|
.. | .. |
---|
186 | 188 | rgb->funcs->disable(rgb); |
---|
187 | 189 | |
---|
188 | 190 | 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; |
---|
189 | 198 | } |
---|
190 | 199 | |
---|
191 | 200 | static int |
---|
.. | .. |
---|
205 | 214 | switch (s->bus_format) { |
---|
206 | 215 | case MEDIA_BUS_FMT_RGB666_1X18: |
---|
207 | 216 | s->output_mode = ROCKCHIP_OUT_MODE_P666; |
---|
208 | | - s->output_if = VOP_OUTPUT_IF_RGB; |
---|
| 217 | + s->output_if |= VOP_OUTPUT_IF_RGB; |
---|
209 | 218 | break; |
---|
210 | 219 | case MEDIA_BUS_FMT_RGB565_1X16: |
---|
211 | 220 | s->output_mode = ROCKCHIP_OUT_MODE_P565; |
---|
212 | | - s->output_if = VOP_OUTPUT_IF_RGB; |
---|
| 221 | + s->output_if |= VOP_OUTPUT_IF_RGB; |
---|
213 | 222 | break; |
---|
214 | 223 | case MEDIA_BUS_FMT_SRGB888_3X8: |
---|
215 | 224 | s->output_mode = ROCKCHIP_OUT_MODE_S888; |
---|
216 | | - s->output_if = VOP_OUTPUT_IF_RGB; |
---|
| 225 | + s->output_if |= VOP_OUTPUT_IF_RGB; |
---|
217 | 226 | break; |
---|
218 | 227 | case MEDIA_BUS_FMT_SRGB888_DUMMY_4X8: |
---|
219 | 228 | s->output_mode = ROCKCHIP_OUT_MODE_S888_DUMMY; |
---|
220 | | - s->output_if = VOP_OUTPUT_IF_RGB; |
---|
| 229 | + s->output_if |= VOP_OUTPUT_IF_RGB; |
---|
221 | 230 | break; |
---|
222 | 231 | case MEDIA_BUS_FMT_YUYV8_2X8: |
---|
223 | 232 | case MEDIA_BUS_FMT_YVYU8_2X8: |
---|
224 | 233 | case MEDIA_BUS_FMT_UYVY8_2X8: |
---|
225 | 234 | case MEDIA_BUS_FMT_VYUY8_2X8: |
---|
226 | 235 | s->output_mode = ROCKCHIP_OUT_MODE_BT656; |
---|
227 | | - s->output_if = VOP_OUTPUT_IF_BT656; |
---|
| 236 | + s->output_if |= VOP_OUTPUT_IF_BT656; |
---|
228 | 237 | break; |
---|
229 | 238 | case MEDIA_BUS_FMT_YUYV8_1X16: |
---|
230 | 239 | case MEDIA_BUS_FMT_YVYU8_1X16: |
---|
231 | 240 | case MEDIA_BUS_FMT_UYVY8_1X16: |
---|
232 | 241 | case MEDIA_BUS_FMT_VYUY8_1X16: |
---|
233 | 242 | s->output_mode = ROCKCHIP_OUT_MODE_BT1120; |
---|
234 | | - s->output_if = VOP_OUTPUT_IF_BT1120; |
---|
| 243 | + s->output_if |= VOP_OUTPUT_IF_BT1120; |
---|
235 | 244 | break; |
---|
236 | 245 | case MEDIA_BUS_FMT_RGB888_1X24: |
---|
237 | 246 | case MEDIA_BUS_FMT_RGB666_1X24_CPADHI: |
---|
238 | 247 | default: |
---|
239 | 248 | s->output_mode = ROCKCHIP_OUT_MODE_P888; |
---|
240 | | - s->output_if = VOP_OUTPUT_IF_RGB; |
---|
| 249 | + s->output_if |= VOP_OUTPUT_IF_RGB; |
---|
241 | 250 | break; |
---|
242 | 251 | } |
---|
243 | 252 | |
---|