From 2117a44a2bbad94ddf02cba5cd9f14060dd93a08 Mon Sep 17 00:00:00 2001 From: Mark Yao Date: Mon, 28 Aug 2017 11:06:27 +0800 Subject: [PATCH] drm/rockchip: keep crtc private bus_format atomic crtc private bus_format are used for multi connectors, so we need keep it atomic, otherwise may cause display abnormal. Change-Id: I188d70ac54eedba502609921ccd33e33314c265b Signed-off-by: Mark Yao --- drivers/gpu/drm/rockchip/analogix_dp-rockchip.c | 2 ++ drivers/gpu/drm/rockchip/cdn-dp-core.c | 1 + drivers/gpu/drm/rockchip/dw-mipi-dsi.c | 2 ++ drivers/gpu/drm/rockchip/rockchip_drm_tve.c | 3 ++- drivers/gpu/drm/rockchip/rockchip_lvds.c | 2 ++ 5 files changed, 9 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c b/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c index 9dd70df98daf..6bce54178457 100644 --- a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c +++ b/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c @@ -213,6 +213,8 @@ rockchip_dp_drm_encoder_atomic_check(struct drm_encoder *encoder, s->output_type = DRM_MODE_CONNECTOR_eDP; if (info->num_bus_formats) s->bus_format = info->bus_formats[0]; + else + s->bus_format = MEDIA_BUS_FMT_RGB888_1X24; s->tv_state = &conn_state->tv; return 0; diff --git a/drivers/gpu/drm/rockchip/cdn-dp-core.c b/drivers/gpu/drm/rockchip/cdn-dp-core.c index 27172a8cc939..5b8d5746eabc 100644 --- a/drivers/gpu/drm/rockchip/cdn-dp-core.c +++ b/drivers/gpu/drm/rockchip/cdn-dp-core.c @@ -743,6 +743,7 @@ static int cdn_dp_encoder_atomic_check(struct drm_encoder *encoder, s->output_mode = ROCKCHIP_OUT_MODE_AAAA; s->output_type = DRM_MODE_CONNECTOR_DisplayPort; + s->bus_format = MEDIA_BUS_FMT_RGB888_1X24; s->tv_state = &conn_state->tv; return 0; diff --git a/drivers/gpu/drm/rockchip/dw-mipi-dsi.c b/drivers/gpu/drm/rockchip/dw-mipi-dsi.c index 726e16d0022c..48e106a726a8 100644 --- a/drivers/gpu/drm/rockchip/dw-mipi-dsi.c +++ b/drivers/gpu/drm/rockchip/dw-mipi-dsi.c @@ -1220,6 +1220,8 @@ dw_mipi_dsi_encoder_atomic_check(struct drm_encoder *encoder, s->output_type = DRM_MODE_CONNECTOR_DSI; if (info->num_bus_formats) s->bus_format = info->bus_formats[0]; + else + s->bus_format = MEDIA_BUS_FMT_RGB888_1X24; s->tv_state = &conn_state->tv; if (dsi->slave) diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_tve.c b/drivers/gpu/drm/rockchip/rockchip_drm_tve.c index 62e9c0ba9289..1ecc95668d09 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_tve.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_tve.c @@ -274,7 +274,8 @@ rockchip_tve_encoder_atomic_check(struct drm_encoder *encoder, s->output_type = DRM_MODE_CONNECTOR_TV; if (info->num_bus_formats) s->bus_format = info->bus_formats[0]; - s->bus_format = MEDIA_BUS_FMT_YUV8_1X24; + else + s->bus_format = MEDIA_BUS_FMT_YUV8_1X24; return 0; } diff --git a/drivers/gpu/drm/rockchip/rockchip_lvds.c b/drivers/gpu/drm/rockchip/rockchip_lvds.c index 54dec40f0adc..63e33b3c73b6 100644 --- a/drivers/gpu/drm/rockchip/rockchip_lvds.c +++ b/drivers/gpu/drm/rockchip/rockchip_lvds.c @@ -621,6 +621,8 @@ rockchip_lvds_encoder_atomic_check(struct drm_encoder *encoder, 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; s->tv_state = &conn_state->tv; return 0;