From 3056b9b9f970f29c3b7b1e1203e8fa62d7d3d8b4 Mon Sep 17 00:00:00 2001 From: Huang Jiachai Date: Thu, 31 Mar 2016 10:00:07 +0800 Subject: [PATCH] video: rockchip: fb: add support data format YUYV and UYVY Change-Id: Iaef1a0e6f80e4246cfe6b2692bdb6085ea5355b0 Signed-off-by: Huang Jiachai --- drivers/video/rockchip/rk_fb.c | 30 ++++++++++++++++++++++++++++++ include/linux/rk_fb.h | 10 ++++++++++ 2 files changed, 40 insertions(+) diff --git a/drivers/video/rockchip/rk_fb.c b/drivers/video/rockchip/rk_fb.c index ab7940680389..94d9f3ac3b2f 100644 --- a/drivers/video/rockchip/rk_fb.c +++ b/drivers/video/rockchip/rk_fb.c @@ -192,6 +192,12 @@ int rk_fb_pixel_width(int data_format) case YUV444_A: pixel_width = 8; break; + case YUYV422: + case UYVY422: + case YUYV420: + case UYVY420: + pixel_width = 16; + break; default: pr_warn("%s: unsupported format: 0x%x\n", __func__, data_format); @@ -263,6 +269,18 @@ static int rk_fb_data_fmt(int data_format, int bits_per_pixel) case HAL_PIXEL_FORMAT_FBDC_U8U8U8: /* fbdc rgb888 */ fb_data_fmt = FBDC_RGBX_888; break; + case HAL_PIXEL_FORMAT_YUYV422: /* yuyv422 */ + fb_data_fmt = YUYV422; + break; + case HAL_PIXEL_FORMAT_YUYV420: /* yuyv420 */ + fb_data_fmt = YUYV420; + break; + case HAL_PIXEL_FORMAT_UYVY422: /* uyvy422 */ + fb_data_fmt = UYVY422; + break; + case HAL_PIXEL_FORMAT_UYVY420: /* uyvy420 */ + fb_data_fmt = UYVY420; + break; default: pr_warn("%s: unsupported format: 0x%x\n", __func__, data_format); @@ -602,6 +620,18 @@ char *get_format_string(enum data_format format, char *fmt) case FBDC_RGBX_888: strcpy(fmt, "FBDC_RGBX_888"); break; + case YUYV422: + strcpy(fmt, "YUYV422"); + break; + case YUYV420: + strcpy(fmt, "YUYV420"); + break; + case UYVY422: + strcpy(fmt, "UYVY422"); + break; + case UYVY420: + strcpy(fmt, "UYVY420"); + break; default: strcpy(fmt, "invalid"); break; diff --git a/include/linux/rk_fb.h b/include/linux/rk_fb.h index d01f38b98188..dc28bfd92251 100755 --- a/include/linux/rk_fb.h +++ b/include/linux/rk_fb.h @@ -192,6 +192,11 @@ enum { HAL_PIXEL_FORMAT_BGR_888 = 0x31, HAL_PIXEL_FORMAT_BGR_565 = 0x32, + HAL_PIXEL_FORMAT_YUYV422 = 0x33, + HAL_PIXEL_FORMAT_YUYV420 = 0x34, + HAL_PIXEL_FORMAT_UYVY422 = 0x35, + HAL_PIXEL_FORMAT_UYVY420 = 0x36, + HAL_PIXEL_FORMAT_YCrCb_NV12_BT709 = BT709(HAL_PIXEL_FORMAT_YCrCb_NV12), HAL_PIXEL_FORMAT_YCrCb_NV12_VIDEO_BT709 = @@ -237,6 +242,10 @@ enum data_format { YUV422_A, YUV444_A, YUV420_NV21, + YUYV422, + YUYV420, + UYVY422, + UYVY420 }; #define IS_YUV_FMT(fmt) ((fmt >= YUV420) ? 1 : 0) #define IS_RGB_FMT(fmt) ((fmt < YUV420) ? 1 : 0) @@ -386,6 +395,7 @@ struct rk_lcdc_win_area { bool state; enum data_format format; u8 fmt_cfg; + u8 yuyv_fmt; u8 swap_rb; u8 swap_uv; u32 y_offset; /*yuv/rgb offset -->LCDC_WINx_YRGB_MSTx*/ -- 2.34.1