@@ -275,6 +275,7 @@ static int rga2_buf_size_cal(unsigned long yrgb_addr, unsigned long uv_addr, uns
275275 break ;
276276 case RGA2_FORMAT_YCbCr_420_P :
277277 case RGA2_FORMAT_YCrCb_420_P :
278+ case RGA2_FORMAT_YCbCr_400 :
278279 stride = (w + 3 ) & (~3 );
279280 size_yrgb = stride * h ;
280281 size_uv = ((stride >> 1 ) * (h >> 1 ));
@@ -285,33 +286,44 @@ static int rga2_buf_size_cal(unsigned long yrgb_addr, unsigned long uv_addr, uns
285286 end = (end + (PAGE_SIZE - 1 )) >> PAGE_SHIFT ;
286287 pageCount = end - start ;
287288 break ;
288- case RGA2_FORMAT_YVYU_422 :
289- case RGA2_FORMAT_VYUY_422 :
290- case RGA2_FORMAT_YUYV_422 :
291- case RGA2_FORMAT_UYVY_422 :
292- stride = (w + 3 ) & (~3 );
293- size_yrgb = stride * h ;
294- size_uv = stride * h ;
295- start = MIN (yrgb_addr , uv_addr );
296- start >>= PAGE_SHIFT ;
297- end = MAX ((yrgb_addr + size_yrgb ), (uv_addr + size_uv ));
298- end = (end + (PAGE_SIZE - 1 )) >> PAGE_SHIFT ;
299- pageCount = end - start ;
300- break ;
301- case RGA2_FORMAT_YVYU_420 :
302- case RGA2_FORMAT_VYUY_420 :
303- case RGA2_FORMAT_YUYV_420 :
304- case RGA2_FORMAT_UYVY_420 :
305- stride = (w + 3 ) & (~3 );
306- size_yrgb = stride * h ;
307- size_uv = (stride * (h >> 1 ));
308- start = MIN (yrgb_addr , uv_addr );
309- start >>= PAGE_SHIFT ;
310- end = MAX ((yrgb_addr + size_yrgb ), (uv_addr + size_uv ));
311- end = (end + (PAGE_SIZE - 1 )) >> PAGE_SHIFT ;
312- pageCount = end - start ;
313- break ;
314- #if 0
289+ case RGA2_FORMAT_Y4 :
290+ stride = ((w + 3 ) & (~3 ) ) >> 1 ;
291+ size_yrgb = stride * h ;
292+ size_uv = 0 ;
293+ size_v = 0 ;
294+ start = MIN (MIN (yrgb_addr , uv_addr ), v_addr );
295+ start >>= PAGE_SHIFT ;
296+ end = MAX (MAX ((yrgb_addr + size_yrgb ), (uv_addr + size_uv )), (v_addr + size_v ));
297+ end = (end + (PAGE_SIZE - 1 )) >> PAGE_SHIFT ;
298+ pageCount = end - start ;
299+ break ;
300+ case RGA2_FORMAT_YVYU_422 :
301+ case RGA2_FORMAT_VYUY_422 :
302+ case RGA2_FORMAT_YUYV_422 :
303+ case RGA2_FORMAT_UYVY_422 :
304+ stride = (w + 3 ) & (~3 );
305+ size_yrgb = stride * h ;
306+ size_uv = stride * h ;
307+ start = MIN (yrgb_addr , uv_addr );
308+ start >>= PAGE_SHIFT ;
309+ end = MAX ((yrgb_addr + size_yrgb ), (uv_addr + size_uv ));
310+ end = (end + (PAGE_SIZE - 1 )) >> PAGE_SHIFT ;
311+ pageCount = end - start ;
312+ break ;
313+ case RGA2_FORMAT_YVYU_420 :
314+ case RGA2_FORMAT_VYUY_420 :
315+ case RGA2_FORMAT_YUYV_420 :
316+ case RGA2_FORMAT_UYVY_420 :
317+ stride = (w + 3 ) & (~3 );
318+ size_yrgb = stride * h ;
319+ size_uv = (stride * (h >> 1 ));
320+ start = MIN (yrgb_addr , uv_addr );
321+ start >>= PAGE_SHIFT ;
322+ end = MAX ((yrgb_addr + size_yrgb ), (uv_addr + size_uv ));
323+ end = (end + (PAGE_SIZE - 1 )) >> PAGE_SHIFT ;
324+ pageCount = end - start ;
325+ break ;
326+ #if 0
315327 case RK_FORMAT_BPP1 :
316328 break ;
317329 case RK_FORMAT_BPP2 :
@@ -320,7 +332,7 @@ static int rga2_buf_size_cal(unsigned long yrgb_addr, unsigned long uv_addr, uns
320332 break ;
321333 case RK_FORMAT_BPP8 :
322334 break ;
323- #endif
335+ #endif
324336 case RGA2_FORMAT_YCbCr_420_SP_10B :
325337 case RGA2_FORMAT_YCrCb_420_SP_10B :
326338 stride = (w + 3 ) & (~3 );
0 commit comments