diff --git a/drivers/video/rockchip/rga3/include/rga.h b/drivers/video/rockchip/rga3/include/rga.h index 2a60a1ae72db..3642dc921c81 100644 --- a/drivers/video/rockchip/rga3/include/rga.h +++ b/drivers/video/rockchip/rga3/include/rga.h @@ -206,6 +206,7 @@ enum rga_surf_format { RGA_FORMAT_ABGR_4444 = 0x2f, RGA_FORMAT_RGBA_2BPP = 0x30, + RGA_FORMAT_A8 = 0x31, RGA_FORMAT_UNKNOWN = 0x100, }; diff --git a/drivers/video/rockchip/rga3/rga2_reg_info.c b/drivers/video/rockchip/rga3/rga2_reg_info.c index 8792e8d64dfc..e752ef271ed4 100644 --- a/drivers/video/rockchip/rga3/rga2_reg_info.c +++ b/drivers/video/rockchip/rga3/rga2_reg_info.c @@ -804,6 +804,10 @@ static void RGA2_set_reg_dst_info(u8 *base, struct rga2_req *msg) bbp_shift = 2; src1_alpha_swp = msg->osd_info.bpp2_info.ac_swap; break; + case RGA_FORMAT_A8: + src1_format = 0x3; + spw = 1; + break; default: spw = 4; break; diff --git a/drivers/video/rockchip/rga3/rga_common.c b/drivers/video/rockchip/rga3/rga_common.c index 80d4821fb321..e50503a44f4f 100644 --- a/drivers/video/rockchip/rga3/rga_common.c +++ b/drivers/video/rockchip/rga3/rga_common.c @@ -88,6 +88,8 @@ bool rga_is_alpha_format(uint32_t format) case RGA_FORMAT_ABGR_8888: case RGA_FORMAT_ABGR_5551: case RGA_FORMAT_ABGR_4444: + + case RGA_FORMAT_A8: return true; default: return false; @@ -335,6 +337,8 @@ const char *rga_get_format_name(uint32_t format) case RGA_FORMAT_RGBA_2BPP: return "RGBA2BPP"; + case RGA_FORMAT_A8: + return "alpha-8"; default: return "UNF"; } @@ -398,6 +402,7 @@ int rga_get_format_bits(uint32_t format) break; case RGA_FORMAT_YCbCr_400: case RGA_FORMAT_BPP8: + case RGA_FORMAT_A8: bits = 8; break; case RGA_FORMAT_Y4: @@ -468,6 +473,7 @@ int rga_get_pixel_stride_from_format(uint32_t format) case RGA_FORMAT_BPP4: case RGA_FORMAT_BPP8: case RGA_FORMAT_YCbCr_400: + case RGA_FORMAT_A8: case RGA_FORMAT_YCbCr_420_SP: case RGA_FORMAT_YCbCr_420_P: case RGA_FORMAT_YCrCb_420_SP: @@ -737,6 +743,7 @@ int rga_image_size_cal(int w, int h, int format, v = uv; break; case RGA_FORMAT_YCbCr_400: + case RGA_FORMAT_A8: yrgb = w * h; break; case RGA_FORMAT_Y4: