From e8190ffbbbf46e0177f03dc3c985cc93921d2ab2 Mon Sep 17 00:00:00 2001 From: Sandy Huang Date: Fri, 9 Apr 2021 15:37:03 +0800 Subject: [PATCH] drm/rockchip: vop2: add support yvyu and vyuy format Change-Id: I0ed523a57b562a6d2aabcebf6d68a0e77cd31eeb Signed-off-by: Sandy Huang --- drivers/gpu/drm/rockchip/rockchip_drm_vop2.c | 7 +++++ drivers/gpu/drm/rockchip/rockchip_vop2_reg.c | 27 +++++++++++++++++--- 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c index ab67dd9f8ca3..e21a4980704e 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c @@ -946,6 +946,10 @@ static enum vop2_data_format vop2_convert_format(uint32_t format) case DRM_FORMAT_NV24_10: return VOP2_FMT_YUV444SP_10; case DRM_FORMAT_YUYV: + case DRM_FORMAT_YVYU: + return VOP2_FMT_VYUY422; + case DRM_FORMAT_VYUY: + case DRM_FORMAT_UYVY: return VOP2_FMT_YUYV422; default: DRM_ERROR("unsupported format[%08x]\n", format); @@ -1109,6 +1113,9 @@ static bool is_yuv_support(uint32_t format) case DRM_FORMAT_NV24: case DRM_FORMAT_NV24_10: case DRM_FORMAT_YUYV: + case DRM_FORMAT_YVYU: + case DRM_FORMAT_UYVY: + case DRM_FORMAT_VYUY: return true; default: return false; diff --git a/drivers/gpu/drm/rockchip/rockchip_vop2_reg.c b/drivers/gpu/drm/rockchip/rockchip_vop2_reg.c index f3b530cc8e39..d549990284fb 100644 --- a/drivers/gpu/drm/rockchip/rockchip_vop2_reg.c +++ b/drivers/gpu/drm/rockchip/rockchip_vop2_reg.c @@ -42,6 +42,25 @@ static const uint32_t formats_win_full_10bit[] = { DRM_FORMAT_NV24_10, }; +static const uint32_t formats_win_full_10bit_yuyv[] = { + DRM_FORMAT_XRGB8888, + DRM_FORMAT_ARGB8888, + DRM_FORMAT_XBGR8888, + DRM_FORMAT_ABGR8888, + DRM_FORMAT_RGB888, + DRM_FORMAT_BGR888, + DRM_FORMAT_RGB565, + DRM_FORMAT_BGR565, + DRM_FORMAT_NV12, + DRM_FORMAT_NV16, + DRM_FORMAT_NV24, + DRM_FORMAT_NV12_10, + DRM_FORMAT_NV16_10, + DRM_FORMAT_NV24_10, + DRM_FORMAT_YVYU, + DRM_FORMAT_VYUY, +}; + static const uint32_t formats_win_lite[] = { DRM_FORMAT_XRGB8888, DRM_FORMAT_ARGB8888, @@ -1069,8 +1088,8 @@ static const struct vop2_win_data rk3568_vop_win_data[] = { { .name = "Esmart0-win0", .phys_id = 2, - .formats = formats_win_full_10bit, - .nformats = ARRAY_SIZE(formats_win_full_10bit), + .formats = formats_win_full_10bit_yuyv, + .nformats = ARRAY_SIZE(formats_win_full_10bit_yuyv), .format_modifiers = format_modifiers, .base = 0x0, .layer_sel_id = 2, @@ -1113,8 +1132,8 @@ static const struct vop2_win_data rk3568_vop_win_data[] = { { .name = "Esmart1-win0", .phys_id = 3, - .formats = formats_win_full_10bit, - .nformats = ARRAY_SIZE(formats_win_full_10bit), + .formats = formats_win_full_10bit_yuyv, + .nformats = ARRAY_SIZE(formats_win_full_10bit_yuyv), .format_modifiers = format_modifiers, .base = 0x200, .layer_sel_id = 6,