From a8332c3a4cb60d8e6c00aa30217d82027ffca296 Mon Sep 17 00:00:00 2001 From: Huang Jiachai Date: Thu, 20 Oct 2016 16:23:05 +0800 Subject: [PATCH] video: rockchip: fb: add dataspace for hdr Change-Id: I65fb95a550d6afecf6b45f65afbd24047e8d5097 Signed-off-by: Huang Jiachai --- drivers/video/rockchip/rk_fb.c | 4 ++++ include/linux/rk_fb.h | 12 ++++++++++-- include/linux/rk_screen.h | 1 + 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/drivers/video/rockchip/rk_fb.c b/drivers/video/rockchip/rk_fb.c index 25563a453128..29cb535a510c 100644 --- a/drivers/video/rockchip/rk_fb.c +++ b/drivers/video/rockchip/rk_fb.c @@ -1693,6 +1693,8 @@ static void rk_fb_update_win(struct rk_lcdc_driver *dev_drv, if (reg_win_data->reg_area_data[i].smem_start > 0) { win->area[i].format = reg_win_data->reg_area_data[i].data_format; + win->area[i].data_space = + reg_win_data->reg_area_data[i].data_space; win->area[i].ion_hdl = reg_win_data->reg_area_data[i].ion_handle; win->area[i].smem_start = @@ -2336,6 +2338,8 @@ static int rk_fb_set_win_buffer(struct fb_info *info, data_format &= ~CSC_MASK; fb_data_fmt = rk_fb_data_fmt(data_format, 0); reg_win_data->reg_area_data[i].data_format = fb_data_fmt; + reg_win_data->reg_area_data[i].data_space = + win_par->area_par[i].data_space; if (IS_FBDC_FMT(fb_data_fmt)) { reg_win_data->reg_area_data[i].fbdc_en = 1; reg_win_data->reg_area_data[i].fbdc_cor_en = 1; diff --git a/include/linux/rk_fb.h b/include/linux/rk_fb.h index d7634a83817f..abab70e36149 100755 --- a/include/linux/rk_fb.h +++ b/include/linux/rk_fb.h @@ -118,6 +118,11 @@ enum { #define BT709(x) ((CSC_BT709 << CSC_SHIFT) | ((x) & ~CSC_MASK)) #define BT2020(x) ((CSC_BT2020 << CSC_SHIFT) | ((x) & ~CSC_MASK)) +enum { + SDR_DATA, + HDR_DATA, +}; + /** * pixel format definitions,this is copy from android/system/core/include/system/graphics.h */ @@ -397,6 +402,7 @@ struct rk_lcdc_bcsh { struct rk_lcdc_win_area { bool state; enum data_format format; + u8 data_space; /* SDR or HDR */ u8 fmt_cfg; u8 yuyv_fmt; u8 swap_rb; @@ -582,8 +588,8 @@ struct rk_fb_area_par { u8 fbdc_en; u8 fbdc_cor_en; u8 fbdc_data_format; - u16 reserved0; - u32 reserved1; + u16 data_space; /* SDR or HDR */ + u32 reserved0; }; @@ -618,6 +624,7 @@ struct rk_fb_reg_wb_data { struct rk_fb_reg_area_data { struct sync_fence *acq_fence; u8 data_format; /*layer data fmt*/ + u8 data_space; /* indicate SDR or HDR */ u8 index_buf; /*judge if the buffer is index*/ u32 y_offset; /*yuv/rgb offset -->LCDC_WINx_YRGB_MSTx*/ u32 c_offset; /*cb cr offset--->LCDC_WINx_CBR_MSTx*/ @@ -694,6 +701,7 @@ struct rk_lcdc_driver { u16 rotate_mode; u16 cabc_mode; u16 overlay_mode; + u16 pre_overlay; u16 output_color; u16 fb_win_map; diff --git a/include/linux/rk_screen.h b/include/linux/rk_screen.h index 5e5cd30d08ed..67e75c224470 100644 --- a/include/linux/rk_screen.h +++ b/include/linux/rk_screen.h @@ -66,6 +66,7 @@ struct rk_screen { u16 lvds_format; u16 face; u16 color_mode; + u8 data_space; u8 lcdc_id; u8 screen_id; struct fb_videomode mode; -- 2.34.1