diff --git a/drivers/gpu/drm/rockchip/rockchip_rgb.c b/drivers/gpu/drm/rockchip/rockchip_rgb.c index 668ed2bcc820..5b8332179b7c 100644 --- a/drivers/gpu/drm/rockchip/rockchip_rgb.c +++ b/drivers/gpu/drm/rockchip/rockchip_rgb.c @@ -144,10 +144,24 @@ rockchip_rgb_encoder_atomic_check(struct drm_encoder *encoder, { struct rockchip_crtc_state *s = to_rockchip_crtc_state(crtc_state); struct rockchip_rgb *rgb = encoder_to_rgb(encoder); + struct drm_connector *connector = conn_state->connector; + struct drm_display_info *info = &connector->display_info; s->output_mode = rgb->output_mode; s->output_type = DRM_MODE_CONNECTOR_LVDS; + if (info->num_bus_formats) + s->bus_format = info->bus_formats[0]; + else + s->bus_format = MEDIA_BUS_FMT_RGB888_1X24; + + if (s->bus_format == MEDIA_BUS_FMT_RGB666_1X18) + s->output_mode = ROCKCHIP_OUT_MODE_P666; + else if (s->bus_format == MEDIA_BUS_FMT_RGB565_1X16) + s->output_mode = ROCKCHIP_OUT_MODE_P565; + else + s->output_mode = ROCKCHIP_OUT_MODE_P888; + return 0; }