diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c index 2aba265c38f9..eb3919ccdbb1 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c @@ -315,10 +315,10 @@ get_framebuffer_by_node(struct drm_device *drm_dev, struct device_node *node) switch (bpp) { case 16: - mode_cmd.pixel_format = DRM_FORMAT_BGR565; + mode_cmd.pixel_format = DRM_FORMAT_RGB565; break; case 24: - mode_cmd.pixel_format = DRM_FORMAT_BGR888; + mode_cmd.pixel_format = DRM_FORMAT_RGB888; break; case 32: mode_cmd.pixel_format = DRM_FORMAT_XRGB8888; diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c index 5cdaec2a878b..d9ace9bab839 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c @@ -1779,12 +1779,10 @@ static void vop_plane_atomic_update(struct drm_plane *plane, rb_swap = has_rb_swapped(fb->format->format); /* - * Px30 treats rgb888 as bgr888 - * so we reverse the rb swap to workaround + * VOP full need to do rb swap to show rgb888/bgr888 format color correctly */ - if ((fb->format->format == DRM_FORMAT_RGB888 || - fb->format->format == DRM_FORMAT_BGR888) && - (VOP_MAJOR(vop->version) == 2 && VOP_MINOR(vop->version) == 6)) + if ((fb->format->format == DRM_FORMAT_RGB888 || fb->format->format == DRM_FORMAT_BGR888) && + VOP_MAJOR(vop->version) == 3) rb_swap = !rb_swap; VOP_WIN_SET(vop, win, rb_swap, rb_swap);