/*cbcr scl mode*/
switch (win->format) {
case YUV422:
+ case YUV422_A:
cbcr_srcW = srcW/2;
cbcr_dstW = dstW;
cbcr_srcH = srcH;
cbcr_dstH = dstH;
break;
case YUV420:
+ case YUV420_A:
cbcr_srcW = srcW/2;
cbcr_dstW = dstW;
cbcr_srcH = srcH/2;
cbcr_dstH = dstH;
break;
case YUV444:
+ case YUV444_A:
cbcr_srcW = srcW;
cbcr_dstW = dstW;
cbcr_srcH = srcH;
win->cbr_hor_scl_mode,win->cbr_ver_scl_mode);
/*line buffer mode*/
- if((win->format == YUV422) || (win->format == YUV420)){
+ if((win->format == YUV422) || (win->format == YUV420) || (win->format == YUV422_A) || (win->format == YUV420_A)){
if(win->cbr_hor_scl_mode == SCALE_DOWN){
if(cbcr_dstW > 3840){
pr_err("ERROR cbcr_dst_width exceeds 3840\n");
fmt_cfg = 5;
win->swap_rb = 0;
break;
- case YUV420:
+ case YUV420:
fmt_cfg = 4;
win->swap_rb = 0;
break;
- case YUV444:
+ case YUV444:
fmt_cfg = 6;
- win->swap_rb = 0;
+ win->swap_rb = 0;
+ case YUV422_A:
+ fmt_cfg = 5;
+ win->swap_rb = 0;
+ win->fmt_10 = 1;
+ break;
+ case YUV420_A:
+ fmt_cfg = 4;
+ win->swap_rb = 0;
+ win->fmt_10 = 1;
+ break;
+ case YUV444_A:
+ fmt_cfg = 6;
+ win->swap_rb = 0;
+ win->fmt_10 = 1;
break;
default:
dev_err(lcdc_dev->driver.dev, "%s:un supported format!\n",
xact = win->area[0].xact;
yact = win->area[0].yact;
xvir = win->area[0].xvir;
- yvir = win->area[0].xvir;
+ yvir = win->area[0].yvir;
}
rk3288_win_0_1_reg_update(&lcdc_dev->driver,0);
spin_unlock(&lcdc_dev->reg_lock);
fmt_cfg = 6;
win->swap_rb = 0;
break;
+ case YUV422_A:
+ fmt_cfg = 5;
+ win->swap_rb = 0;
+ win->fmt_10 = 1;
+ break;
+ case YUV420_A:
+ fmt_cfg = 4;
+ win->swap_rb = 0;
+ win->fmt_10 = 1;
+ break;
+ case YUV444_A:
+ fmt_cfg = 6;
+ win->swap_rb = 0;
+ win->fmt_10 = 1;
+ break;
default:
dev_err(lcdc_dev->driver.dev, "%s:un supported format!\n",
__func__);
xact = win->area[0].xact;
yact = win->area[0].yact;
xvir = win->area[0].xvir;
- yvir = win->area[0].xvir;
+ yvir = win->area[0].yvir;
}
rk3288_win_0_1_reg_update(&lcdc_dev->driver,1);
spin_unlock(&lcdc_dev->reg_lock);
case YUV444:
pixel_width = 1*8;
break;
+ case YUV422_A:
+ case YUV420_A:
+ case YUV444_A:
+ pixel_width = 10;
+ break;
default:
printk(KERN_WARNING "%s:un supported format:0x%x\n",
__func__,data_format);
case HAL_PIXEL_FORMAT_YCrCb_444: // yuv444
fb_data_fmt = YUV444;
break;
+ case HAL_PIXEL_FORMAT_YCrCb_NV12_10: // yuv444
+ fb_data_fmt = YUV420_A;
+ break;
+ case HAL_PIXEL_FORMAT_YCbCr_422_SP_10: // yuv444
+ fb_data_fmt = YUV422_A;
+ break;
+ case HAL_PIXEL_FORMAT_YCrCb_420_SP_10: // yuv444
+ fb_data_fmt = YUV444_A;
+ break;
default:
printk(KERN_WARNING "%s:un supported format:0x%x\n",
__func__,data_format);
case YUV444:
strcpy(fmt, "YUV444");
break;
+ case YUV420_A:
+ strcpy(fmt, "YUV420_A");
+ break;
+ case YUV422_A:
+ strcpy(fmt, "YUV422_A");
+ break;
+ case YUV444_A:
+ strcpy(fmt, "YUV444_A");
+ break;
case XRGB888:
strcpy(fmt, "XRGB888");
break;
u32 stride,uv_stride;
u32 stride_32bit_1;
u32 stride_32bit_2;
- u32 stride_128bit_1;
- u32 stride_128bit_2;
u16 uv_x_off,uv_y_off,uv_y_act;
u8 is_pic_yuv=0;
}
pixel_width = rk_fb_pixel_width(win->format);
vir_width_bit = pixel_width * xvir;
- stride_128bit_1 = ((vir_width_bit + 127) & (~127))/8; //pixel_width = byte_num *8
- stride_128bit_2 = ((vir_width_bit*2 + 127) & (~127))/8; //pixel_width = byte_num *8
stride_32bit_1 = ((vir_width_bit + 31 ) & (~31 ))/8; //pixel_width = byte_num *8
stride_32bit_2 = ((vir_width_bit*2 + 31 ) & (~31 ))/8; //pixel_width = byte_num *8
switch (win->format){
case YUV422:
+ case YUV422_A:
is_pic_yuv = 1;
stride = stride_32bit_1;
uv_stride = stride_32bit_1>> 1 ;//
uv_y_act = win->area[0].yact>>1;
break;
case YUV420://420sp
+ case YUV420_A:
is_pic_yuv = 1;
stride = stride_32bit_1;
uv_stride = stride_32bit_1;
uv_y_act = win->area[0].yact>>1;
break;
case YUV444:
+ case YUV444_A:
is_pic_yuv = 1;
stride = stride_32bit_1;
uv_stride = stride_32bit_2;
win->area[0].smem_start = fix->smem_start;
- win->area[0].cbr_start = fix->smem_start + xvir * yvir;
+ win->area[0].cbr_start = fix->mmio_start;//fix->smem_start + xvir * yvir;
win->state=1;
win->area[0].state=1;
win->area_num = 1;
#endif
vir_width_bit = pixel_width * xvir;
- stride_128bit_1 = ((vir_width_bit + 127) & (~127))/8; //pixel_width = byte_num *8
- stride_128bit_2 = ((vir_width_bit*2 + 127) & (~127))/8; //pixel_width = byte_num *8
stride_32bit_1 = ((vir_width_bit + 31 ) & (~31 ))/8; //pixel_width = byte_num *8
stride_32bit_2 = ((vir_width_bit*2 + 31 ) & (~31 ))/8; //pixel_width = byte_num *8
}
switch (fb_data_fmt) {
case YUV422:
+ case YUV422_A:
is_pic_yuv = 1;
stride = stride_32bit_1;
uv_stride = stride_32bit_1>> 1 ;//
uv_y_act = win_par->area_par[0].yact>>1;
break;
case YUV420://420sp
+ case YUV420_A:
is_pic_yuv = 1;
stride = stride_32bit_1;
uv_stride = stride_32bit_1;
uv_y_act = win_par->area_par[0].yact>>1;
break;
case YUV444:
+ case YUV444_A:
is_pic_yuv = 1;
stride = stride_32bit_1;
uv_stride = stride_32bit_2;
fb_data_fmt = rk_fb_data_fmt(data_format,var->bits_per_pixel);
pixel_width = rk_fb_pixel_width(fb_data_fmt);
vir_width_bit = pixel_width * xvir;
- stride_128bit_1 = ((vir_width_bit + 127) & (~127))/8; //pixel_width = byte_num *8
- stride_128bit_2 = ((vir_width_bit*2 + 127) & (~127))/8; //pixel_width = byte_num *8
stride_32bit_1 = ((vir_width_bit + 31 ) & (~31 ))/8; //pixel_width = byte_num *8
stride_32bit_2 = ((vir_width_bit*2 + 31 ) & (~31 ))/8; //pixel_width = byte_num *8
fix->line_length = stride;
switch (fb_data_fmt){
case YUV422:
+ case YUV422_A:
is_pic_yuv = 1;
stride = stride_32bit_1;
uv_stride = stride_32bit_1>> 1 ;//
uv_y_act = win->area[0].yact>>1;
break;
case YUV420://420sp
+ case YUV420_A:
is_pic_yuv = 1;
stride = stride_32bit_1;
uv_stride = stride_32bit_1;
uv_y_act = win->area[0].yact>>1;
break;
case YUV444:
+ case YUV444_A:
is_pic_yuv = 1;
stride = stride_32bit_1;
uv_stride = stride_32bit_2;
HAL_PIXEL_FORMAT_YCbCr_422_I = 0x14, // YUY2
HAL_PIXEL_FORMAT_YCrCb_NV12 = 0x20, // YUY2
HAL_PIXEL_FORMAT_YCrCb_NV12_VIDEO = 0x21, // YUY2
- HAL_PIXEL_FORMAT_YCrCb_444 = 0x22, //yuv444
- HAL_PIXEL_FORMAT_H265 = 0x23, //yuv444
+
+ HAL_PIXEL_FORMAT_YCrCb_NV12_10 = 0x22, // YUV420_1obit
+ HAL_PIXEL_FORMAT_YCbCr_422_SP_10 = 0x23, // YUV422_1obit
+ HAL_PIXEL_FORMAT_YCrCb_420_SP_10 = 0x24, //YUV444_1obit
+
+ HAL_PIXEL_FORMAT_YCrCb_444 = 0x25, //yuv444
+
};
XRGB888,
XBGR888,
ABGR888,
+ YUV420_A = 10,
+ YUV422_A,
+ YUV444_A,
};
enum fb_win_map_order {