From 9366f2676bfec130646177a4180efcfdf7aad51d Mon Sep 17 00:00:00 2001 From: Fancy Fang Date: Fri, 25 Aug 2017 17:30:53 +0800 Subject: [PATCH] MLK-16255-5 video: fbdev: dcss: init default video layer buffer to black For video layer, the black pixel value is not 0x0, but (Y: 0x0, U: 128, V: 128). So init the video layer frame buffer contents to the black pixel value by default. Signed-off-by: Fancy Fang --- drivers/video/fbdev/mxc/imx_dcss.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/drivers/video/fbdev/mxc/imx_dcss.c b/drivers/video/fbdev/mxc/imx_dcss.c index bacbcc0b658c..92a12498b3f7 100644 --- a/drivers/video/fbdev/mxc/imx_dcss.c +++ b/drivers/video/fbdev/mxc/imx_dcss.c @@ -995,6 +995,7 @@ static int dcss_init_chans(struct dcss_info *info) static int dcss_init_fbinfo(struct fb_info *fbi) { int ret; + uint32_t luma_size; struct dcss_channel_info *cinfo = fbi->par; struct dcss_info *info = cinfo->dev_data; struct fb_fix_screeninfo *fix = &fbi->fix; @@ -1054,9 +1055,21 @@ static int dcss_init_fbinfo(struct fb_info *fbi) return -ENOMEM; } - - /* clear screen content */ - memset((void*)fbi->screen_base, 0x0, fix->smem_len); + /* clear screen content to black */ + switch (var->grayscale) { + case V4L2_PIX_FMT_ARGB32: + memset((void*)fbi->screen_base, 0x0, fix->smem_len); + break; + case V4L2_PIX_FMT_NV12: + /* set luma: 0x0 */ + luma_size = var->xres * var->yres; + memset((void*)fbi->screen_base, 0x0, luma_size); + /* set chroma: 0x80 */ + memset((void*)fbi->screen_base + luma_size, 0x80, luma_size); + break; + default: + return -EINVAL; + } if (dcss_check_var(var, fbi)) { devm_kfree(fbi->device, fbi->pseudo_palette); -- 2.17.1