| .. | .. |
|---|
| 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 | |
|---|