From df2c27cd761e2ceabfa5b713630384b862b5b2af Mon Sep 17 00:00:00 2001 From: Shixiang Zheng Date: Fri, 9 Aug 2019 10:15:14 +0800 Subject: [PATCH] drm/rockchip: vop: workaround a issue of px30 treat rgb888 as bgr888 Change-Id: Ica98fe1ea2d624dd7bd38a531907d6c574046d8d Signed-off-by: Shixiang Zheng --- drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c index 143e89953f5e..64f5d6623274 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c @@ -1760,6 +1760,14 @@ static void vop_plane_atomic_update(struct drm_plane *plane, VOP_WIN_SET(vop, win, dsp_st, dsp_st); rb_swap = has_rb_swapped(fb->format->format); + /* + * Px30 treats rgb888 as bgr888 + * so we reverse the rb swap to workaround + */ + if ((fb->format->format == DRM_FORMAT_RGB888 || + fb->format->format == DRM_FORMAT_BGR888) && + (VOP_MAJOR(vop->version) == 2 && VOP_MINOR(vop->version) == 6)) + rb_swap = !rb_swap; VOP_WIN_SET(vop, win, rb_swap, rb_swap); global_alpha_en = (vop_plane_state->global_alpha == 0xff) ? 0 : 1;