Skip to content

Commit e5e7602

Browse files
Li Huangrkhuangtao
authored andcommitted
video: rockchip: rga2: Update device
1. Modify format enum. 2. Add YUYV input feature. 3. Add NN quantize feature. 4. Add Y4 && YUV400 output feature. Change-Id: I5ae0d09e5fadf9875cae7ed001d12bd2ba17ce23 Signed-off-by: Li Huang <putin.li@rock-chips.com>
1 parent 2ace200 commit e5e7602

4 files changed

Lines changed: 193 additions & 117 deletions

File tree

drivers/video/rockchip/rga2/rga2.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,9 @@ enum
9494
RGA2_FORMAT_BGRA_5551 = 0xa,
9595
RGA2_FORMAT_BGRA_4444 = 0xb,
9696

97+
RGA2_FORMAT_Y4 = 0xe,
98+
RGA2_FORMAT_YCbCr_400 = 0xf,
99+
97100
RGA2_FORMAT_YCbCr_422_SP = 0x10,
98101
RGA2_FORMAT_YCbCr_422_P = 0x11,
99102
RGA2_FORMAT_YCbCr_420_SP = 0x12,
@@ -389,6 +392,8 @@ struct rga_req {
389392
/* ([6] alpha output mode sel) 0 src / 1 dst*/
390393

391394
uint8_t src_trans_mode;
395+
396+
uint8_t dither_mode;
392397
};
393398
struct rga_req_32
394399
{

drivers/video/rockchip/rga2/rga2_mmu_info.c

Lines changed: 40 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)