video: rockchip: fb: add BGR data format support
authorHuang Jiachai <hjc@rock-chips.com>
Mon, 14 Mar 2016 12:58:26 +0000 (20:58 +0800)
committerGerrit Code Review <gerrit@rock-chips.com>
Fri, 18 Mar 2016 06:11:34 +0000 (14:11 +0800)
Change-Id: Ia97a20b5ed1e3ab92e31136e0cb60a785b570a65
Signed-off-by: Huang Jiachai <hjc@rock-chips.com>
drivers/video/rockchip/rk_fb.c
include/linux/rk_fb.h

index 443201a1a3d93a87454035515c9932270f5acc26..0e0a3d2b25a9876acfcc06cb5aba968e95912992 100644 (file)
@@ -164,6 +164,7 @@ int rk_fb_pixel_width(int data_format)
 
        switch (data_format) {
        case XBGR888:
+       case XRGB888:
        case ABGR888:
        case ARGB888:
        case FBDC_ARGB_888:
@@ -172,9 +173,11 @@ int rk_fb_pixel_width(int data_format)
                pixel_width = 4 * 8;
                break;
        case RGB888:
+       case BGR888:
                pixel_width = 3 * 8;
                break;
        case RGB565:
+       case BGR565:
        case FBDC_RGB_565:
                pixel_width = 2 * 8;
                break;
@@ -206,6 +209,9 @@ static int rk_fb_data_fmt(int data_format, int bits_per_pixel)
                case HAL_PIXEL_FORMAT_RGBX_8888:
                        fb_data_fmt = XBGR888;
                        break;
+               case HAL_PIXEL_FORMAT_BGRX_8888:
+                       fb_data_fmt = XRGB888;
+                       break;
                case HAL_PIXEL_FORMAT_RGBA_8888:
                        fb_data_fmt = ABGR888;
                        break;
@@ -215,9 +221,15 @@ static int rk_fb_data_fmt(int data_format, int bits_per_pixel)
                case HAL_PIXEL_FORMAT_RGB_888:
                        fb_data_fmt = RGB888;
                        break;
+               case HAL_PIXEL_FORMAT_BGR_888:
+                       fb_data_fmt = BGR888;
+                       break;
                case HAL_PIXEL_FORMAT_RGB_565:
                        fb_data_fmt = RGB565;
                        break;
+               case HAL_PIXEL_FORMAT_BGR_565:
+                       fb_data_fmt = BGR565;
+                       break;
                case HAL_PIXEL_FORMAT_YCbCr_422_SP:     /* yuv422 */
                        fb_data_fmt = YUV422;
                        break;
@@ -543,9 +555,15 @@ char *get_format_string(enum data_format format, char *fmt)
        case RGB888:
                strcpy(fmt, "RGB888");
                break;
+       case BGR888:
+               strcpy(fmt, "BGR888");
+               break;
        case RGB565:
                strcpy(fmt, "RGB565");
                break;
+       case BGR565:
+               strcpy(fmt, "BGR565");
+               break;
        case YUV420:
        case YUV420_NV21:
                strcpy(fmt, "YUV420");
@@ -935,12 +953,15 @@ static int get_ipp_format(int fmt)
 
        switch (fmt) {
        case HAL_PIXEL_FORMAT_RGBX_8888:
+       case HAL_PIXEL_FORMAT_BGRX_8888:
        case HAL_PIXEL_FORMAT_RGBA_8888:
        case HAL_PIXEL_FORMAT_BGRA_8888:
        case HAL_PIXEL_FORMAT_RGB_888:
+       case HAL_PIXEL_FORMAT_BGR_888:
                ipp_fmt = IPP_XRGB_8888;
                break;
        case HAL_PIXEL_FORMAT_RGB_565:
+       case HAL_PIXEL_FORMAT_BGR_565:
                ipp_fmt = IPP_RGB_565;
                break;
        case HAL_PIXEL_FORMAT_YCbCr_422_SP:
@@ -2121,6 +2142,7 @@ static int rk_fb_set_wb_buffer(struct fb_info *info,
                                        wb_cfg->xsize * wb_cfg->ysize;
        wb_data->xsize = wb_cfg->xsize;
        wb_data->ysize = wb_cfg->ysize;
+       wb_data->data_format = fb_data_fmt;
        wb_data->state = 1;
 
        return 0;
index a466c6bfd9807b2828f58c300e2b4936b2689f49..d01f38b9818842924458ff2112e345d7b0ee59f2 100755 (executable)
@@ -188,6 +188,9 @@ enum {
        HAL_PIXEL_FORMAT_FBDC_U8U8U8U8  = 0x27, /*ARGB888*/
        HAL_PIXEL_FORMAT_FBDC_U8U8U8    = 0x28, /*RGBP888*/
        HAL_PIXEL_FORMAT_FBDC_RGBA888   = 0x29, /*ABGR888*/
+       HAL_PIXEL_FORMAT_BGRX_8888 = 0x30,
+       HAL_PIXEL_FORMAT_BGR_888 = 0x31,
+       HAL_PIXEL_FORMAT_BGR_565 = 0x32,
 
        HAL_PIXEL_FORMAT_YCrCb_NV12_BT709 =
                        BT709(HAL_PIXEL_FORMAT_YCrCb_NV12),
@@ -222,6 +225,7 @@ enum data_format {
        XRGB888,
        XBGR888,
        ABGR888,
+       BGR565,
        FBDC_RGB_565,
        FBDC_ARGB_888,
        FBDC_RGBX_888,