diff options
-rw-r--r-- | drivers/gpu/drm/rockchip/analogix_dp-rockchip.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c b/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c index 0755573151af..0a0fb3a777ca 100644 --- a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c +++ b/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c | |||
@@ -110,6 +110,23 @@ static int rockchip_dp_powerdown(struct analogix_dp_plat_data *plat_data) | |||
110 | return 0; | 110 | return 0; |
111 | } | 111 | } |
112 | 112 | ||
113 | static int rockchip_dp_get_modes(struct analogix_dp_plat_data *plat_data, | ||
114 | struct drm_connector *connector) | ||
115 | { | ||
116 | struct drm_display_info *di = &connector->display_info; | ||
117 | /* VOP couldn't output YUV video format for eDP rightly */ | ||
118 | u32 mask = DRM_COLOR_FORMAT_YCRCB444 | DRM_COLOR_FORMAT_YCRCB422; | ||
119 | |||
120 | if ((di->color_formats & mask)) { | ||
121 | DRM_DEBUG_KMS("Swapping display color format from YUV to RGB\n"); | ||
122 | di->color_formats &= ~mask; | ||
123 | di->color_formats |= DRM_COLOR_FORMAT_RGB444; | ||
124 | di->bpc = 8; | ||
125 | } | ||
126 | |||
127 | return 0; | ||
128 | } | ||
129 | |||
113 | static bool | 130 | static bool |
114 | rockchip_dp_drm_encoder_mode_fixup(struct drm_encoder *encoder, | 131 | rockchip_dp_drm_encoder_mode_fixup(struct drm_encoder *encoder, |
115 | const struct drm_display_mode *mode, | 132 | const struct drm_display_mode *mode, |
@@ -310,6 +327,7 @@ static int rockchip_dp_bind(struct device *dev, struct device *master, | |||
310 | dp->plat_data.dev_type = dp->data->chip_type; | 327 | dp->plat_data.dev_type = dp->data->chip_type; |
311 | dp->plat_data.power_on = rockchip_dp_poweron; | 328 | dp->plat_data.power_on = rockchip_dp_poweron; |
312 | dp->plat_data.power_off = rockchip_dp_powerdown; | 329 | dp->plat_data.power_off = rockchip_dp_powerdown; |
330 | dp->plat_data.get_modes = rockchip_dp_get_modes; | ||
313 | 331 | ||
314 | return analogix_dp_bind(dev, dp->drm_dev, &dp->plat_data); | 332 | return analogix_dp_bind(dev, dp->drm_dev, &dp->plat_data); |
315 | } | 333 | } |