From 9310dee775c714f9ac12ceda2e22e25f2152d770 Mon Sep 17 00:00:00 2001 From: Yu Qiaowei Date: Wed, 14 Jul 2021 15:03:56 +0800 Subject: [PATCH] video/rockchip: rga2: Add format support Add BGR565/BGRA5551/BGRA4444. Signed-off-by: Yu Qiaowei Change-Id: I248c739d96afa2ec65a7092c7b584fb4730fb0f3 --- drivers/video/rockchip/rga2/rga2_drv.c | 12 ++++++ drivers/video/rockchip/rga2/rga2_mmu_info.c | 44 +++------------------ drivers/video/rockchip/rga2/rga2_reg_info.c | 4 ++ 3 files changed, 22 insertions(+), 38 deletions(-) diff --git a/drivers/video/rockchip/rga2/rga2_drv.c b/drivers/video/rockchip/rga2/rga2_drv.c index 30c2f22b3d54..f1cbf578eebf 100644 --- a/drivers/video/rockchip/rga2/rga2_drv.c +++ b/drivers/video/rockchip/rga2/rga2_drv.c @@ -130,6 +130,7 @@ static void rga2_try_set_reg(void); static const char *rga2_get_cmd_mode_str(u32 cmd) { switch (cmd) { + /* RGA1 */ case RGA_BLIT_SYNC: return "RGA_BLIT_SYNC"; case RGA_BLIT_ASYNC: @@ -140,6 +141,17 @@ static const char *rga2_get_cmd_mode_str(u32 cmd) return "RGA_GET_RESULT"; case RGA_GET_VERSION: return "RGA_GET_VERSION"; + /* RGA2 */ + case RGA2_BLIT_SYNC: + return "RGA2_BLIT_SYNC"; + case RGA2_BLIT_ASYNC: + return "RGA2_BLIT_ASYNC"; + case RGA2_FLUSH: + return "RGA2_FLUSH"; + case RGA2_GET_RESULT: + return "RGA2_GET_RESULT"; + case RGA2_GET_VERSION: + return "RGA2_GET_VERSION"; default: return "UNF"; } diff --git a/drivers/video/rockchip/rga2/rga2_mmu_info.c b/drivers/video/rockchip/rga2/rga2_mmu_info.c index 1f1a8e9b9836..24c777f521c1 100644 --- a/drivers/video/rockchip/rga2/rga2_mmu_info.c +++ b/drivers/video/rockchip/rga2/rga2_mmu_info.c @@ -181,14 +181,9 @@ static int rga2_buf_size_cal(unsigned long yrgb_addr, unsigned long uv_addr, uns switch(format) { case RGA2_FORMAT_RGBA_8888 : - stride = (w * 4 + 3) & (~3); - size_yrgb = stride*h; - start = yrgb_addr >> PAGE_SHIFT; - end = yrgb_addr + size_yrgb; - end = (end + (PAGE_SIZE - 1)) >> PAGE_SHIFT; - pageCount = end - start; - break; case RGA2_FORMAT_RGBX_8888 : + case RGA2_FORMAT_BGRA_8888 : + case RGA2_FORMAT_BGRX_8888 : stride = (w * 4 + 3) & (~3); size_yrgb = stride*h; start = yrgb_addr >> PAGE_SHIFT; @@ -197,6 +192,7 @@ static int rga2_buf_size_cal(unsigned long yrgb_addr, unsigned long uv_addr, uns pageCount = end - start; break; case RGA2_FORMAT_RGB_888 : + case RGA2_FORMAT_BGR_888 : stride = (w * 3 + 3) & (~3); size_yrgb = stride*h; start = yrgb_addr >> PAGE_SHIFT; @@ -204,32 +200,12 @@ static int rga2_buf_size_cal(unsigned long yrgb_addr, unsigned long uv_addr, uns end = (end + (PAGE_SIZE - 1)) >> PAGE_SHIFT; pageCount = end - start; break; - case RGA2_FORMAT_BGRA_8888 : - case RGA2_FORMAT_BGRX_8888 : - stride = (w * 4 + 3) & (~3); - size_yrgb = stride * h; - start = yrgb_addr >> PAGE_SHIFT; - end = yrgb_addr + size_yrgb; - end = (end + (PAGE_SIZE - 1)) >> PAGE_SHIFT; - pageCount = end - start; - break; case RGA2_FORMAT_RGB_565 : - stride = (w*2 + 3) & (~3); - size_yrgb = stride * h; - start = yrgb_addr >> PAGE_SHIFT; - end = yrgb_addr + size_yrgb; - end = (end + (PAGE_SIZE - 1)) >> PAGE_SHIFT; - pageCount = end - start; - break; case RGA2_FORMAT_RGBA_5551 : - stride = (w*2 + 3) & (~3); - size_yrgb = stride * h; - start = yrgb_addr >> PAGE_SHIFT; - end = yrgb_addr + size_yrgb; - end = (end + (PAGE_SIZE - 1)) >> PAGE_SHIFT; - pageCount = end - start; - break; case RGA2_FORMAT_RGBA_4444 : + case RGA2_FORMAT_BGR_565 : + case RGA2_FORMAT_BGRA_5551 : + case RGA2_FORMAT_BGRA_4444 : stride = (w*2 + 3) & (~3); size_yrgb = stride * h; start = yrgb_addr >> PAGE_SHIFT; @@ -237,14 +213,6 @@ static int rga2_buf_size_cal(unsigned long yrgb_addr, unsigned long uv_addr, uns end = (end + (PAGE_SIZE - 1)) >> PAGE_SHIFT; pageCount = end - start; break; - case RGA2_FORMAT_BGR_888 : - stride = (w*3 + 3) & (~3); - size_yrgb = stride * h; - start = yrgb_addr >> PAGE_SHIFT; - end = yrgb_addr + size_yrgb; - end = (end + (PAGE_SIZE - 1)) >> PAGE_SHIFT; - pageCount = end - start; - break; /* YUV FORMAT */ case RGA2_FORMAT_YCbCr_422_SP : diff --git a/drivers/video/rockchip/rga2/rga2_reg_info.c b/drivers/video/rockchip/rga2/rga2_reg_info.c index 697cfab2e3fe..244b2e4c9967 100644 --- a/drivers/video/rockchip/rga2/rga2_reg_info.c +++ b/drivers/video/rockchip/rga2/rga2_reg_info.c @@ -1137,6 +1137,10 @@ static void format_name_convert(uint32_t *df, uint32_t sf) case 0x21:*df = RGA2_FORMAT_YCrCb_420_SP_10B; break; case 0x22:*df = RGA2_FORMAT_YCbCr_422_SP_10B; break; case 0x23:*df = RGA2_FORMAT_YCrCb_422_SP_10B; break; + + case 0x24:*df = RGA2_FORMAT_BGR_565; break; + case 0x25:*df = RGA2_FORMAT_BGRA_5551; break; + case 0x26:*df = RGA2_FORMAT_BGRA_4444; break; } }