video: rockchip: rga3: Synchronization of user-space image formats

Update driver version to 1.2.3

Signed-off-by: Yu Qiaowei <cerf.yu@rock-chips.com>
Change-Id: I73ff1105bf52f67809be42fb1b45ca08451e17cf
This commit is contained in:
Yu Qiaowei
2022-02-18 11:49:22 +08:00
committed by Tao Huang
parent a343e3c408
commit 8cea529be7
10 changed files with 525 additions and 695 deletions

View File

@@ -107,59 +107,64 @@ enum {
RGA_DITHER = 0x1 << 6,
};
enum {
RGA2_FORMAT_RGBA_8888 = 0x0,
RGA2_FORMAT_RGBX_8888 = 0x1,
RGA2_FORMAT_RGB_888 = 0x2,
RGA2_FORMAT_BGRA_8888 = 0x3,
RGA2_FORMAT_BGRX_8888 = 0x4,
RGA2_FORMAT_BGR_888 = 0x5,
RGA2_FORMAT_RGB_565 = 0x6,
RGA2_FORMAT_RGBA_5551 = 0x7,
RGA2_FORMAT_RGBA_4444 = 0x8,
RGA2_FORMAT_BGR_565 = 0x9,
RGA2_FORMAT_BGRA_5551 = 0xa,
RGA2_FORMAT_BGRA_4444 = 0xb,
enum rga_surf_format {
RGA_FORMAT_RGBA_8888 = 0x0,
RGA_FORMAT_RGBX_8888 = 0x1,
RGA_FORMAT_RGB_888 = 0x2,
RGA_FORMAT_BGRA_8888 = 0x3,
RGA_FORMAT_RGB_565 = 0x4,
RGA_FORMAT_RGBA_5551 = 0x5,
RGA_FORMAT_RGBA_4444 = 0x6,
RGA_FORMAT_BGR_888 = 0x7,
RGA2_FORMAT_Y4 = 0xe,
RGA2_FORMAT_YCbCr_400 = 0xf,
RGA_FORMAT_YCbCr_422_SP = 0x8,
RGA_FORMAT_YCbCr_422_P = 0x9,
RGA_FORMAT_YCbCr_420_SP = 0xa,
RGA_FORMAT_YCbCr_420_P = 0xb,
RGA2_FORMAT_YCbCr_422_SP = 0x10,
RGA2_FORMAT_YCbCr_422_P = 0x11,
RGA2_FORMAT_YCbCr_420_SP = 0x12,
RGA2_FORMAT_YCbCr_420_P = 0x13,
RGA2_FORMAT_YCrCb_422_SP = 0x14,
RGA2_FORMAT_YCrCb_422_P = 0x15,
RGA2_FORMAT_YCrCb_420_SP = 0x16,
RGA2_FORMAT_YCrCb_420_P = 0x17,
RGA_FORMAT_YCrCb_422_SP = 0xc,
RGA_FORMAT_YCrCb_422_P = 0xd,
RGA_FORMAT_YCrCb_420_SP = 0xe,
RGA_FORMAT_YCrCb_420_P = 0xf,
RGA2_FORMAT_YVYU_422 = 0x18,
RGA2_FORMAT_YVYU_420 = 0x19,
RGA2_FORMAT_VYUY_422 = 0x1a,
RGA2_FORMAT_VYUY_420 = 0x1b,
RGA2_FORMAT_YUYV_422 = 0x1c,
RGA2_FORMAT_YUYV_420 = 0x1d,
RGA2_FORMAT_UYVY_422 = 0x1e,
RGA2_FORMAT_UYVY_420 = 0x1f,
RGA_FORMAT_BPP1 = 0x10,
RGA_FORMAT_BPP2 = 0x11,
RGA_FORMAT_BPP4 = 0x12,
RGA_FORMAT_BPP8 = 0x13,
RGA2_FORMAT_YCbCr_420_SP_10B = 0x20,
RGA2_FORMAT_YCrCb_420_SP_10B = 0x21,
RGA2_FORMAT_YCbCr_422_SP_10B = 0x22,
RGA2_FORMAT_YCrCb_422_SP_10B = 0x23,
RGA_FORMAT_Y4 = 0x14,
RGA_FORMAT_YCbCr_400 = 0x15,
RGA2_FORMAT_BPP_1 = 0x24,
RGA2_FORMAT_BPP_2 = 0x25,
RGA2_FORMAT_BPP_4 = 0x26,
RGA2_FORMAT_BPP_8 = 0x27,
RGA_FORMAT_BGRX_8888 = 0x16,
RGA2_FORMAT_ARGB_8888 = 0x28,
RGA2_FORMAT_XRGB_8888 = 0x29,
RGA2_FORMAT_ARGB_5551 = 0x2a,
RGA2_FORMAT_ARGB_4444 = 0x2b,
RGA2_FORMAT_ABGR_8888 = 0x2c,
RGA2_FORMAT_XBGR_8888 = 0x2d,
RGA2_FORMAT_ABGR_5551 = 0x2e,
RGA2_FORMAT_ABGR_4444 = 0x2f,
RGA_FORMAT_YVYU_422 = 0x18,
RGA_FORMAT_YVYU_420 = 0x19,
RGA_FORMAT_VYUY_422 = 0x1a,
RGA_FORMAT_VYUY_420 = 0x1b,
RGA_FORMAT_YUYV_422 = 0x1c,
RGA_FORMAT_YUYV_420 = 0x1d,
RGA_FORMAT_UYVY_422 = 0x1e,
RGA_FORMAT_UYVY_420 = 0x1f,
RGA_FORMAT_YCbCr_420_SP_10B = 0x20,
RGA_FORMAT_YCrCb_420_SP_10B = 0x21,
RGA_FORMAT_YCbCr_422_SP_10B = 0x22,
RGA_FORMAT_YCrCb_422_SP_10B = 0x23,
RGA_FORMAT_BGR_565 = 0x24,
RGA_FORMAT_BGRA_5551 = 0x25,
RGA_FORMAT_BGRA_4444 = 0x26,
RGA_FORMAT_ARGB_8888 = 0x28,
RGA_FORMAT_XRGB_8888 = 0x29,
RGA_FORMAT_ARGB_5551 = 0x2a,
RGA_FORMAT_ARGB_4444 = 0x2b,
RGA_FORMAT_ABGR_8888 = 0x2c,
RGA_FORMAT_XBGR_8888 = 0x2d,
RGA_FORMAT_ABGR_5551 = 0x2e,
RGA_FORMAT_ABGR_4444 = 0x2f,
RGA_FORMAT_UNKNOWN = 0x100,
};
#define RGA_SCHED_PRIORITY_DEFAULT 0

View File

@@ -9,8 +9,6 @@
#ifndef __LINUX_RKRGA_COMMON_H_
#define __LINUX_RKRGA_COMMON_H_
void rga_user_format_convert(uint32_t *df, uint32_t sf);
bool rga_is_rgb_format(uint32_t format);
bool rga_is_yuv_format(uint32_t format);
bool rga_is_alpha_format(uint32_t format);

View File

@@ -79,7 +79,7 @@
#define DRIVER_MAJOR_VERISON 1
#define DRIVER_MINOR_VERSION 2
#define DRIVER_REVISION_VERSION 2
#define DRIVER_REVISION_VERSION 3
#define DRIVER_VERSION (STR(DRIVER_MAJOR_VERISON) "." STR(DRIVER_MINOR_VERSION) \
"." STR(DRIVER_REVISION_VERSION))

View File

@@ -233,8 +233,8 @@ static void RGA2_set_reg_src_info(u8 *base, struct rga2_req *msg)
bRGA_SRC_TR_COLOR0 = (u32 *) (base + RGA2_SRC_TR_COLOR0_OFFSET);
bRGA_SRC_TR_COLOR1 = (u32 *) (base + RGA2_SRC_TR_COLOR1_OFFSET);
if (msg->src.format == RGA2_FORMAT_YCbCr_420_SP_10B ||
msg->src.format == RGA2_FORMAT_YCrCb_420_SP_10B) {
if (msg->src.format == RGA_FORMAT_YCbCr_420_SP_10B ||
msg->src.format == RGA_FORMAT_YCrCb_420_SP_10B) {
if ((msg->src.act_w == msg->dst.act_w) &&
(msg->src.act_h == msg->dst.act_h) &&
(msg->rotate_mode == 0))
@@ -277,62 +277,62 @@ static void RGA2_set_reg_src_info(u8 *base, struct rga2_req *msg)
}
switch (msg->src.format) {
case RGA2_FORMAT_RGBA_8888:
case RGA_FORMAT_RGBA_8888:
src0_format = 0x0;
pixel_width = 4;
break;
case RGA2_FORMAT_BGRA_8888:
case RGA_FORMAT_BGRA_8888:
src0_format = 0x0;
src0_rb_swp = 0x1;
pixel_width = 4;
break;
case RGA2_FORMAT_RGBX_8888:
case RGA_FORMAT_RGBX_8888:
src0_format = 0x1;
pixel_width = 4;
msg->src_trans_mode &= 0x07;
break;
case RGA2_FORMAT_BGRX_8888:
case RGA_FORMAT_BGRX_8888:
src0_format = 0x1;
src0_rb_swp = 0x1;
pixel_width = 4;
msg->src_trans_mode &= 0x07;
break;
case RGA2_FORMAT_RGB_888:
case RGA_FORMAT_RGB_888:
src0_format = 0x2;
pixel_width = 3;
msg->src_trans_mode &= 0x07;
break;
case RGA2_FORMAT_BGR_888:
case RGA_FORMAT_BGR_888:
src0_format = 0x2;
src0_rb_swp = 1;
pixel_width = 3;
msg->src_trans_mode &= 0x07;
break;
case RGA2_FORMAT_RGB_565:
case RGA_FORMAT_RGB_565:
src0_format = 0x4;
pixel_width = 2;
msg->src_trans_mode &= 0x07;
break;
case RGA2_FORMAT_RGBA_5551:
case RGA_FORMAT_RGBA_5551:
src0_format = 0x5;
pixel_width = 2;
break;
case RGA2_FORMAT_RGBA_4444:
case RGA_FORMAT_RGBA_4444:
src0_format = 0x6;
pixel_width = 2;
break;
case RGA2_FORMAT_BGR_565:
case RGA_FORMAT_BGR_565:
src0_format = 0x4;
pixel_width = 2;
msg->src_trans_mode &= 0x07;
src0_rb_swp = 0x1;
break;
case RGA2_FORMAT_BGRA_5551:
case RGA_FORMAT_BGRA_5551:
src0_format = 0x5;
pixel_width = 2;
src0_rb_swp = 0x1;
break;
case RGA2_FORMAT_BGRA_4444:
case RGA_FORMAT_BGRA_4444:
src0_format = 0x6;
pixel_width = 2;
src0_rb_swp = 0x1;
@@ -343,143 +343,143 @@ static void RGA2_set_reg_src_info(u8 *base, struct rga2_req *msg)
* In colorkey mode, xrgb/xbgr does not
* need to enable the alpha channel
*/
case RGA2_FORMAT_ARGB_8888:
case RGA_FORMAT_ARGB_8888:
src0_format = 0x0;
pixel_width = 4;
src0_alpha_swp = 1;
break;
case RGA2_FORMAT_ABGR_8888:
case RGA_FORMAT_ABGR_8888:
src0_format = 0x0;
pixel_width = 4;
src0_alpha_swp = 1;
src0_rb_swp = 0x1;
break;
case RGA2_FORMAT_XRGB_8888:
case RGA_FORMAT_XRGB_8888:
src0_format = 0x1;
pixel_width = 4;
src0_alpha_swp = 1;
msg->src_trans_mode &= 0x07;
break;
case RGA2_FORMAT_XBGR_8888:
case RGA_FORMAT_XBGR_8888:
src0_format = 0x1;
pixel_width = 4;
src0_alpha_swp = 1;
src0_rb_swp = 0x1;
msg->src_trans_mode &= 0x07;
break;
case RGA2_FORMAT_ARGB_5551:
case RGA_FORMAT_ARGB_5551:
src0_format = 0x5;
pixel_width = 2;
src0_alpha_swp = 1;
break;
case RGA2_FORMAT_ABGR_5551:
case RGA_FORMAT_ABGR_5551:
src0_format = 0x5;
pixel_width = 2;
src0_alpha_swp = 1;
src0_rb_swp = 0x1;
break;
case RGA2_FORMAT_ARGB_4444:
case RGA_FORMAT_ARGB_4444:
src0_format = 0x6;
pixel_width = 2;
src0_alpha_swp = 1;
break;
case RGA2_FORMAT_ABGR_4444:
case RGA_FORMAT_ABGR_4444:
src0_format = 0x6;
pixel_width = 2;
src0_alpha_swp = 1;
src0_rb_swp = 0x1;
break;
case RGA2_FORMAT_YVYU_422:
case RGA_FORMAT_YVYU_422:
src0_format = 0x7;
pixel_width = 2;
src0_cbcr_swp = 1;
src0_rb_swp = 0x1;
break; //rbswap=ycswap
case RGA2_FORMAT_VYUY_422:
case RGA_FORMAT_VYUY_422:
src0_format = 0x7;
pixel_width = 2;
src0_cbcr_swp = 1;
src0_rb_swp = 0x0;
break;
case RGA2_FORMAT_YUYV_422:
case RGA_FORMAT_YUYV_422:
src0_format = 0x7;
pixel_width = 2;
src0_cbcr_swp = 0;
src0_rb_swp = 0x1;
break;
case RGA2_FORMAT_UYVY_422:
case RGA_FORMAT_UYVY_422:
src0_format = 0x7;
pixel_width = 2;
src0_cbcr_swp = 0;
src0_rb_swp = 0x0;
break;
case RGA2_FORMAT_YCbCr_422_SP:
case RGA_FORMAT_YCbCr_422_SP:
src0_format = 0x8;
xdiv = 1;
ydiv = 1;
break;
case RGA2_FORMAT_YCbCr_422_P:
case RGA_FORMAT_YCbCr_422_P:
src0_format = 0x9;
xdiv = 2;
ydiv = 1;
break;
case RGA2_FORMAT_YCbCr_420_SP:
case RGA_FORMAT_YCbCr_420_SP:
src0_format = 0xa;
xdiv = 1;
ydiv = 2;
break;
case RGA2_FORMAT_YCbCr_420_P:
case RGA_FORMAT_YCbCr_420_P:
src0_format = 0xb;
xdiv = 2;
ydiv = 2;
break;
case RGA2_FORMAT_YCrCb_422_SP:
case RGA_FORMAT_YCrCb_422_SP:
src0_format = 0x8;
xdiv = 1;
ydiv = 1;
src0_cbcr_swp = 1;
break;
case RGA2_FORMAT_YCrCb_422_P:
case RGA_FORMAT_YCrCb_422_P:
src0_format = 0x9;
xdiv = 2;
ydiv = 1;
src0_cbcr_swp = 1;
break;
case RGA2_FORMAT_YCrCb_420_SP:
case RGA_FORMAT_YCrCb_420_SP:
src0_format = 0xa;
xdiv = 1;
ydiv = 2;
src0_cbcr_swp = 1;
break;
case RGA2_FORMAT_YCrCb_420_P:
case RGA_FORMAT_YCrCb_420_P:
src0_format = 0xb;
xdiv = 2;
ydiv = 2;
src0_cbcr_swp = 1;
break;
case RGA2_FORMAT_YCbCr_420_SP_10B:
case RGA_FORMAT_YCbCr_420_SP_10B:
src0_format = 0xa;
xdiv = 1;
ydiv = 2;
yuv10 = 1;
break;
case RGA2_FORMAT_YCrCb_420_SP_10B:
case RGA_FORMAT_YCrCb_420_SP_10B:
src0_format = 0xa;
xdiv = 1;
ydiv = 2;
src0_cbcr_swp = 1;
yuv10 = 1;
break;
case RGA2_FORMAT_YCbCr_422_SP_10B:
case RGA_FORMAT_YCbCr_422_SP_10B:
src0_format = 0x8;
xdiv = 1;
ydiv = 1;
yuv10 = 1;
break;
case RGA2_FORMAT_YCrCb_422_SP_10B:
case RGA_FORMAT_YCrCb_422_SP_10B:
src0_format = 0x8;
xdiv = 1;
ydiv = 1;
@@ -487,7 +487,7 @@ static void RGA2_set_reg_src_info(u8 *base, struct rga2_req *msg)
yuv10 = 1;
break;
case RGA2_FORMAT_YCbCr_400:
case RGA_FORMAT_YCbCr_400:
src0_format = 0x8;
src_fmt_yuv400_en = 1;
xdiv = 1;
@@ -665,101 +665,101 @@ static void RGA2_set_reg_dst_info(u8 *base, struct rga2_req *msg)
(u32 *) (base + RGA2_DST_QUANTIZE_OFFSET_OFFSET);
switch (msg->src1.format) {
case RGA2_FORMAT_RGBA_8888:
case RGA_FORMAT_RGBA_8888:
src1_format = 0x0;
spw = 4;
break;
case RGA2_FORMAT_BGRA_8888:
case RGA_FORMAT_BGRA_8888:
src1_format = 0x0;
src1_rb_swp = 0x1;
spw = 4;
break;
case RGA2_FORMAT_RGBX_8888:
case RGA_FORMAT_RGBX_8888:
src1_format = 0x1;
spw = 4;
break;
case RGA2_FORMAT_BGRX_8888:
case RGA_FORMAT_BGRX_8888:
src1_format = 0x1;
src1_rb_swp = 0x1;
spw = 4;
break;
case RGA2_FORMAT_RGB_888:
case RGA_FORMAT_RGB_888:
src1_format = 0x2;
spw = 3;
break;
case RGA2_FORMAT_BGR_888:
case RGA_FORMAT_BGR_888:
src1_format = 0x2;
src1_rb_swp = 1;
spw = 3;
break;
case RGA2_FORMAT_RGB_565:
case RGA_FORMAT_RGB_565:
src1_format = 0x4;
spw = 2;
break;
case RGA2_FORMAT_RGBA_5551:
case RGA_FORMAT_RGBA_5551:
src1_format = 0x5;
spw = 2;
break;
case RGA2_FORMAT_RGBA_4444:
case RGA_FORMAT_RGBA_4444:
src1_format = 0x6;
spw = 2;
break;
case RGA2_FORMAT_BGR_565:
case RGA_FORMAT_BGR_565:
src1_format = 0x4;
spw = 2;
src1_rb_swp = 0x1;
break;
case RGA2_FORMAT_BGRA_5551:
case RGA_FORMAT_BGRA_5551:
src1_format = 0x5;
spw = 2;
src1_rb_swp = 0x1;
break;
case RGA2_FORMAT_BGRA_4444:
case RGA_FORMAT_BGRA_4444:
src1_format = 0x6;
spw = 2;
src1_rb_swp = 0x1;
break;
/* ARGB */
case RGA2_FORMAT_ARGB_8888:
case RGA_FORMAT_ARGB_8888:
src1_format = 0x0;
spw = 4;
src1_alpha_swp = 1;
break;
case RGA2_FORMAT_ABGR_8888:
case RGA_FORMAT_ABGR_8888:
src1_format = 0x0;
spw = 4;
src1_alpha_swp = 1;
src1_rb_swp = 0x1;
break;
case RGA2_FORMAT_XRGB_8888:
case RGA_FORMAT_XRGB_8888:
src1_format = 0x1;
spw = 4;
src1_alpha_swp = 1;
break;
case RGA2_FORMAT_XBGR_8888:
case RGA_FORMAT_XBGR_8888:
src1_format = 0x1;
spw = 4;
src1_alpha_swp = 1;
src1_rb_swp = 0x1;
break;
case RGA2_FORMAT_ARGB_5551:
case RGA_FORMAT_ARGB_5551:
src1_format = 0x5;
spw = 2;
src1_alpha_swp = 1;
break;
case RGA2_FORMAT_ABGR_5551:
case RGA_FORMAT_ABGR_5551:
src1_format = 0x5;
spw = 2;
src1_alpha_swp = 1;
src1_rb_swp = 0x1;
break;
case RGA2_FORMAT_ARGB_4444:
case RGA_FORMAT_ARGB_4444:
src1_format = 0x6;
spw = 2;
src1_alpha_swp = 1;
break;
case RGA2_FORMAT_ABGR_4444:
case RGA_FORMAT_ABGR_4444:
src1_format = 0x6;
spw = 2;
src1_alpha_swp = 1;
@@ -781,159 +781,159 @@ static void RGA2_set_reg_dst_info(u8 *base, struct rga2_req *msg)
(s_RGA2_DST_INFO_SW_SRC1_ALPHA_SWP(src1_alpha_swp)));
switch (msg->dst.format) {
case RGA2_FORMAT_RGBA_8888:
case RGA_FORMAT_RGBA_8888:
dst_format = 0x0;
dpw = 4;
break;
case RGA2_FORMAT_BGRA_8888:
case RGA_FORMAT_BGRA_8888:
dst_format = 0x0;
dst_rb_swp = 0x1;
dpw = 4;
break;
case RGA2_FORMAT_RGBX_8888:
case RGA_FORMAT_RGBX_8888:
dst_format = 0x1;
dpw = 4;
break;
case RGA2_FORMAT_BGRX_8888:
case RGA_FORMAT_BGRX_8888:
dst_format = 0x1;
dst_rb_swp = 0x1;
dpw = 4;
break;
case RGA2_FORMAT_RGB_888:
case RGA_FORMAT_RGB_888:
dst_format = 0x2;
dpw = 3;
break;
case RGA2_FORMAT_BGR_888:
case RGA_FORMAT_BGR_888:
dst_format = 0x2;
dst_rb_swp = 1;
dpw = 3;
break;
case RGA2_FORMAT_RGB_565:
case RGA_FORMAT_RGB_565:
dst_format = 0x4;
dpw = 2;
break;
case RGA2_FORMAT_RGBA_5551:
case RGA_FORMAT_RGBA_5551:
dst_format = 0x5;
dpw = 2;
break;
case RGA2_FORMAT_RGBA_4444:
case RGA_FORMAT_RGBA_4444:
dst_format = 0x6;
dpw = 2;
break;
case RGA2_FORMAT_BGR_565:
case RGA_FORMAT_BGR_565:
dst_format = 0x4;
dpw = 2;
dst_rb_swp = 0x1;
break;
case RGA2_FORMAT_BGRA_5551:
case RGA_FORMAT_BGRA_5551:
dst_format = 0x5;
dpw = 2;
dst_rb_swp = 0x1;
break;
case RGA2_FORMAT_BGRA_4444:
case RGA_FORMAT_BGRA_4444:
dst_format = 0x6;
dpw = 2;
dst_rb_swp = 0x1;
break;
/* ARGB */
case RGA2_FORMAT_ARGB_8888:
case RGA_FORMAT_ARGB_8888:
dst_format = 0x0;
dpw = 4;
dst_alpha_swp = 1;
break;
case RGA2_FORMAT_ABGR_8888:
case RGA_FORMAT_ABGR_8888:
dst_format = 0x0;
dpw = 4;
dst_alpha_swp = 1;
dst_rb_swp = 0x1;
break;
case RGA2_FORMAT_XRGB_8888:
case RGA_FORMAT_XRGB_8888:
dst_format = 0x1;
dpw = 4;
dst_alpha_swp = 1;
break;
case RGA2_FORMAT_XBGR_8888:
case RGA_FORMAT_XBGR_8888:
dst_format = 0x1;
dpw = 4;
dst_alpha_swp = 1;
dst_rb_swp = 0x1;
break;
case RGA2_FORMAT_ARGB_5551:
case RGA_FORMAT_ARGB_5551:
dst_format = 0x5;
dpw = 2;
dst_alpha_swp = 1;
break;
case RGA2_FORMAT_ABGR_5551:
case RGA_FORMAT_ABGR_5551:
dst_format = 0x5;
dpw = 2;
dst_alpha_swp = 1;
dst_rb_swp = 0x1;
break;
case RGA2_FORMAT_ARGB_4444:
case RGA_FORMAT_ARGB_4444:
dst_format = 0x6;
dpw = 2;
dst_alpha_swp = 1;
break;
case RGA2_FORMAT_ABGR_4444:
case RGA_FORMAT_ABGR_4444:
dst_format = 0x6;
dpw = 2;
dst_alpha_swp = 1;
dst_rb_swp = 0x1;
break;
case RGA2_FORMAT_YCbCr_422_SP:
case RGA_FORMAT_YCbCr_422_SP:
dst_format = 0x8;
x_div = 1;
y_div = 1;
break;
case RGA2_FORMAT_YCbCr_422_P:
case RGA_FORMAT_YCbCr_422_P:
dst_format = 0x9;
x_div = 2;
y_div = 1;
break;
case RGA2_FORMAT_YCbCr_420_SP:
case RGA_FORMAT_YCbCr_420_SP:
dst_format = 0xa;
x_div = 1;
y_div = 2;
break;
case RGA2_FORMAT_YCbCr_420_P:
case RGA_FORMAT_YCbCr_420_P:
dst_format = 0xb;
dst_cbcr_swp = 1;
x_div = 2;
y_div = 2;
break;
case RGA2_FORMAT_YCrCb_422_SP:
case RGA_FORMAT_YCrCb_422_SP:
dst_format = 0x8;
dst_cbcr_swp = 1;
x_div = 1;
y_div = 1;
break;
case RGA2_FORMAT_YCrCb_422_P:
case RGA_FORMAT_YCrCb_422_P:
dst_format = 0x9;
dst_cbcr_swp = 1;
x_div = 2;
y_div = 1;
break;
case RGA2_FORMAT_YCrCb_420_SP:
case RGA_FORMAT_YCrCb_420_SP:
dst_format = 0xa;
dst_cbcr_swp = 1;
x_div = 1;
y_div = 2;
break;
case RGA2_FORMAT_YCrCb_420_P:
case RGA_FORMAT_YCrCb_420_P:
dst_format = 0xb;
x_div = 2;
y_div = 2;
break;
case RGA2_FORMAT_YCbCr_400:
case RGA_FORMAT_YCbCr_400:
dst_format = 0x8;
dst_fmt_yuv400_en = 1;
x_div = 1;
y_div = 1;
break;
case RGA2_FORMAT_Y4:
case RGA_FORMAT_Y4:
dst_format = 0x8;
dst_fmt_y4_en = 1;
dst_fmt_yuv400_en = 1;
@@ -941,39 +941,39 @@ static void RGA2_set_reg_dst_info(u8 *base, struct rga2_req *msg)
y_div = 1;
break;
case RGA2_FORMAT_YUYV_422:
case RGA_FORMAT_YUYV_422:
dst_format = 0xe;
dpw = 2;
dst_cbcr_swp = 1;
break;
case RGA2_FORMAT_YVYU_422:
case RGA_FORMAT_YVYU_422:
dst_format = 0xe;
dpw = 2;
break;
case RGA2_FORMAT_YUYV_420:
case RGA_FORMAT_YUYV_420:
dst_format = 0xf;
dpw = 2;
dst_cbcr_swp = 1;
break;
case RGA2_FORMAT_YVYU_420:
case RGA_FORMAT_YVYU_420:
dst_format = 0xf;
dpw = 2;
break;
case RGA2_FORMAT_UYVY_422:
case RGA_FORMAT_UYVY_422:
dst_format = 0xc;
dpw = 2;
dst_cbcr_swp = 1;
break;
case RGA2_FORMAT_VYUY_422:
case RGA_FORMAT_VYUY_422:
dst_format = 0xc;
dpw = 2;
break;
case RGA2_FORMAT_UYVY_420:
case RGA_FORMAT_UYVY_420:
dst_format = 0xd;
dpw = 2;
dst_cbcr_swp = 1;
break;
case RGA2_FORMAT_VYUY_420:
case RGA_FORMAT_VYUY_420:
dst_format = 0xd;
dpw = 2;
break;
@@ -1032,7 +1032,7 @@ static void RGA2_set_reg_dst_info(u8 *base, struct rga2_req *msg)
(s_RGA2_DST_INFO_SW_SRC1_CSC_CLIP_MODE(
msg->yuv2rgb_mode >> 7)));
ydither_en = (msg->dst.format == RGA2_FORMAT_Y4)
ydither_en = (msg->dst.format == RGA_FORMAT_Y4)
&& ((msg->alpha_rop_flag >> 6) & 0x1);
*bRGA_DST_INFO = reg;
@@ -1051,8 +1051,8 @@ static void RGA2_set_reg_dst_info(u8 *base, struct rga2_req *msg)
if ((msg->dst.vir_w % 2 != 0) &&
(msg->dst.act_w == msg->src.act_w)
&& (msg->dst.act_h == msg->src.act_h)
&& (msg->dst.format == RGA2_FORMAT_BGR_888
|| msg->dst.format == RGA2_FORMAT_RGB_888))
&& (msg->dst.format == RGA_FORMAT_BGR_888
|| msg->dst.format == RGA_FORMAT_RGB_888))
*bRGA_DST_ACT_INFO =
(msg->dst.act_w) | ((msg->dst.act_h - 1) << 16);
else
@@ -1213,8 +1213,8 @@ static void RGA2_set_reg_dst_info(u8 *base, struct rga2_req *msg)
*bRGA_DST_BASE0 = (u32) yrgb_addr;
if ((msg->dst.format == RGA2_FORMAT_YCbCr_420_P)
|| (msg->dst.format == RGA2_FORMAT_YCrCb_420_P)) {
if ((msg->dst.format == RGA_FORMAT_YCbCr_420_P)
|| (msg->dst.format == RGA_FORMAT_YCrCb_420_P)) {
if (dst_cbcr_swp == 0) {
*bRGA_DST_BASE1 = (u32) v_addr;
*bRGA_DST_BASE2 = (u32) u_addr;
@@ -1641,7 +1641,7 @@ int rga2_gen_reg_info(u8 *base, u8 *csc_base, struct rga2_req *msg)
dst_nn_quantize_en = (msg->alpha_rop_flag >> 8) & 0x1;
if (dst_nn_quantize_en != 1) {
if ((msg->dst.format !=
RGA2_FORMAT_Y4)) {
RGA_FORMAT_Y4)) {
RGA2_set_reg_alpha_info(base, msg);
RGA2_set_reg_rop_info(base, msg);
}
@@ -1696,9 +1696,9 @@ void rga_cmd_to_rga2_cmd(struct rga_req *req_rga, struct rga2_req *req)
else
memcpy(&req->src1, &req_rga->pat, sizeof(req_rga->pat));
rga_user_format_convert(&req->src.format, req_rga->src.format);
rga_user_format_convert(&req->dst.format, req_rga->dst.format);
rga_user_format_convert(&req->src1.format, req_rga->pat.format);
req->src.format = req_rga->src.format;
req->dst.format = req_rga->dst.format;
req->src1.format = req_rga->pat.format;
switch (req_rga->rotate_mode & 0x0F) {
case 1:

View File

@@ -180,71 +180,71 @@ static void RGA3_set_reg_win0_info(u8 *base, struct rga3_req *msg)
param_y = FACTOR_MAX * (dh - 1) / (sh - 1) + 1;
switch (msg->win0.format) {
case RGA2_FORMAT_RGBA_8888:
case RGA_FORMAT_RGBA_8888:
win_format = 0x8;
pixel_width = 4;
win_interleaved = 2;
break;
case RGA2_FORMAT_BGRA_8888:
case RGA_FORMAT_BGRA_8888:
win_format = 0x6;
pixel_width = 4;
win_interleaved = 2;
break;
case RGA2_FORMAT_ARGB_8888:
case RGA_FORMAT_ARGB_8888:
win_format = 0x9;
pixel_width = 4;
win_interleaved = 2;
break;
case RGA2_FORMAT_ABGR_8888:
case RGA_FORMAT_ABGR_8888:
win_format = 0x7;
pixel_width = 4;
win_interleaved = 2;
break;
case RGA2_FORMAT_RGB_888:
case RGA_FORMAT_RGB_888:
win_format = 0x5;
pixel_width = 3;
win_interleaved = 2;
win_pix_swp = 1;
break;
case RGA2_FORMAT_BGR_888:
case RGA_FORMAT_BGR_888:
win_format = 0x5;
pixel_width = 3;
win_interleaved = 2;
break;
case RGA2_FORMAT_RGB_565:
case RGA_FORMAT_RGB_565:
win_format = 0x4;
pixel_width = 2;
win_interleaved = 2;
win_pix_swp = 1;
break;
case RGA2_FORMAT_BGR_565:
case RGA_FORMAT_BGR_565:
win_format = 0x4;
pixel_width = 2;
win_interleaved = 2;
break;
case RGA2_FORMAT_YVYU_422:
case RGA_FORMAT_YVYU_422:
win_format = 0x1;
pixel_width = 2;
win_pix_swp = 1;
win_yc_swp = 1;
win_interleaved = 2;
break;
case RGA2_FORMAT_VYUY_422:
case RGA_FORMAT_VYUY_422:
win_format = 0x1;
pixel_width = 2;
win_pix_swp = 1;
win_yc_swp = 0;
win_interleaved = 2;
break;
case RGA2_FORMAT_YUYV_422:
case RGA_FORMAT_YUYV_422:
win_format = 0x1;
pixel_width = 2;
win_pix_swp = 0;
win_yc_swp = 1;
win_interleaved = 2;
break;
case RGA2_FORMAT_UYVY_422:
case RGA_FORMAT_UYVY_422:
win_format = 0x1;
pixel_width = 2;
win_pix_swp = 0;
@@ -252,35 +252,35 @@ static void RGA3_set_reg_win0_info(u8 *base, struct rga3_req *msg)
win_interleaved = 2;
break;
case RGA2_FORMAT_YCbCr_422_SP:
case RGA_FORMAT_YCbCr_422_SP:
win_format = 0x1;
break;
case RGA2_FORMAT_YCbCr_420_SP:
case RGA_FORMAT_YCbCr_420_SP:
win_format = 0x0;
break;
case RGA2_FORMAT_YCrCb_422_SP:
case RGA_FORMAT_YCrCb_422_SP:
win_format = 0x1;
win_pix_swp = 1;
break;
case RGA2_FORMAT_YCrCb_420_SP:
case RGA_FORMAT_YCrCb_420_SP:
win_format = 0x0;
win_pix_swp = 1;
break;
case RGA2_FORMAT_YCbCr_420_SP_10B:
case RGA_FORMAT_YCbCr_420_SP_10B:
win_format = 0x2;
yuv10 = 1;
break;
case RGA2_FORMAT_YCrCb_420_SP_10B:
case RGA_FORMAT_YCrCb_420_SP_10B:
win_format = 0x2;
yuv10 = 1;
win_pix_swp = 1;
break;
case RGA2_FORMAT_YCbCr_422_SP_10B:
case RGA_FORMAT_YCbCr_422_SP_10B:
win_format = 0x3;
yuv10 = 1;
break;
case RGA2_FORMAT_YCrCb_422_SP_10B:
case RGA_FORMAT_YCrCb_422_SP_10B:
win_format = 0x3;
yuv10 = 1;
win_pix_swp = 1;
@@ -399,10 +399,10 @@ static void RGA3_set_reg_win0_info(u8 *base, struct rga3_req *msg)
else
stride = ((msg->win0.vir_w + 15) & ~15) >> 2;
if (msg->win0.format == RGA2_FORMAT_YCbCr_420_SP
|| msg->win0.format == RGA2_FORMAT_YCrCb_420_SP
|| msg->win0.format == RGA2_FORMAT_YCbCr_420_SP_10B
|| msg->win0.format == RGA2_FORMAT_YCrCb_420_SP_10B)
if (msg->win0.format == RGA_FORMAT_YCbCr_420_SP
|| msg->win0.format == RGA_FORMAT_YCrCb_420_SP
|| msg->win0.format == RGA_FORMAT_YCbCr_420_SP_10B
|| msg->win0.format == RGA_FORMAT_YCrCb_420_SP_10B)
uv_stride = ((msg->win0.vir_w + 15) & ~15) >> 2;
else
uv_stride = stride;
@@ -595,71 +595,71 @@ static void RGA3_set_reg_win1_info(u8 *base, struct rga3_req *msg)
param_y = (FACTOR_MAX * (dh - 1)) / (sh - 1) + 1;
switch (msg->win1.format) {
case RGA2_FORMAT_RGBA_8888:
case RGA_FORMAT_RGBA_8888:
win_format = 0x8;
pixel_width = 4;
win_interleaved = 2;
break;
case RGA2_FORMAT_BGRA_8888:
case RGA_FORMAT_BGRA_8888:
win_format = 0x6;
pixel_width = 4;
win_interleaved = 2;
break;
case RGA2_FORMAT_ARGB_8888:
case RGA_FORMAT_ARGB_8888:
win_format = 0x9;
pixel_width = 4;
win_interleaved = 2;
break;
case RGA2_FORMAT_ABGR_8888:
case RGA_FORMAT_ABGR_8888:
win_format = 0x7;
pixel_width = 4;
win_interleaved = 2;
break;
case RGA2_FORMAT_RGB_888:
case RGA_FORMAT_RGB_888:
win_format = 0x5;
pixel_width = 3;
win_interleaved = 2;
win_pix_swp = 1;
break;
case RGA2_FORMAT_BGR_888:
case RGA_FORMAT_BGR_888:
win_format = 0x5;
pixel_width = 3;
win_interleaved = 2;
break;
case RGA2_FORMAT_RGB_565:
case RGA_FORMAT_RGB_565:
win_format = 0x4;
pixel_width = 2;
win_interleaved = 2;
win_pix_swp = 1;
break;
case RGA2_FORMAT_BGR_565:
case RGA_FORMAT_BGR_565:
win_format = 0x4;
pixel_width = 2;
win_interleaved = 2;
break;
case RGA2_FORMAT_YVYU_422:
case RGA_FORMAT_YVYU_422:
win_format = 0x1;
pixel_width = 2;
win_pix_swp = 1;
win_yc_swp = 1;
win_interleaved = 2;
break;
case RGA2_FORMAT_VYUY_422:
case RGA_FORMAT_VYUY_422:
win_format = 0x1;
pixel_width = 2;
win_pix_swp = 1;
win_yc_swp = 0;
win_interleaved = 2;
break;
case RGA2_FORMAT_YUYV_422:
case RGA_FORMAT_YUYV_422:
win_format = 0x1;
pixel_width = 2;
win_pix_swp = 0;
win_yc_swp = 1;
win_interleaved = 2;
break;
case RGA2_FORMAT_UYVY_422:
case RGA_FORMAT_UYVY_422:
win_format = 0x1;
pixel_width = 2;
win_pix_swp = 0;
@@ -667,35 +667,35 @@ static void RGA3_set_reg_win1_info(u8 *base, struct rga3_req *msg)
win_interleaved = 2;
break;
case RGA2_FORMAT_YCbCr_422_SP:
case RGA_FORMAT_YCbCr_422_SP:
win_format = 0x1;
break;
case RGA2_FORMAT_YCbCr_420_SP:
case RGA_FORMAT_YCbCr_420_SP:
win_format = 0x0;
break;
case RGA2_FORMAT_YCrCb_422_SP:
case RGA_FORMAT_YCrCb_422_SP:
win_format = 0x1;
win_pix_swp = 1;
break;
case RGA2_FORMAT_YCrCb_420_SP:
case RGA_FORMAT_YCrCb_420_SP:
win_format = 0x0;
win_pix_swp = 1;
break;
case RGA2_FORMAT_YCbCr_420_SP_10B:
case RGA_FORMAT_YCbCr_420_SP_10B:
win_format = 0x2;
yuv10 = 1;
break;
case RGA2_FORMAT_YCrCb_420_SP_10B:
case RGA_FORMAT_YCrCb_420_SP_10B:
win_format = 0x2;
win_pix_swp = 1;
yuv10 = 1;
break;
case RGA2_FORMAT_YCbCr_422_SP_10B:
case RGA_FORMAT_YCbCr_422_SP_10B:
win_format = 0x3;
yuv10 = 1;
break;
case RGA2_FORMAT_YCrCb_422_SP_10B:
case RGA_FORMAT_YCrCb_422_SP_10B:
win_format = 0x3;
win_pix_swp = 1;
yuv10 = 1;
@@ -799,10 +799,10 @@ static void RGA3_set_reg_win1_info(u8 *base, struct rga3_req *msg)
else
stride = ((msg->win1.vir_w + 15) & ~15) >> 2;
if (msg->win1.format == RGA2_FORMAT_YCbCr_420_SP
|| msg->win1.format == RGA2_FORMAT_YCrCb_420_SP
|| msg->win1.format == RGA2_FORMAT_YCbCr_420_SP_10B
|| msg->win1.format == RGA2_FORMAT_YCrCb_420_SP_10B)
if (msg->win1.format == RGA_FORMAT_YCbCr_420_SP
|| msg->win1.format == RGA_FORMAT_YCrCb_420_SP
|| msg->win1.format == RGA_FORMAT_YCbCr_420_SP_10B
|| msg->win1.format == RGA_FORMAT_YCrCb_420_SP_10B)
uv_stride = ((msg->win1.vir_w + 15) & ~15) >> 2;
else
uv_stride = stride;
@@ -874,62 +874,62 @@ static void RGA3_set_reg_wr_info(u8 *base, struct rga3_req *msg)
(u32 *) (base + RGA3_WR_PL_VIR_STRIDE_OFFSET);
switch (msg->wr.format) {
case RGA2_FORMAT_RGBA_8888:
case RGA_FORMAT_RGBA_8888:
wr_format = 0x6;
pixel_width = 4;
wr_interleaved = 2;
wr_pix_swp = 1;
break;
case RGA2_FORMAT_BGRA_8888:
case RGA_FORMAT_BGRA_8888:
wr_format = 0x6;
pixel_width = 4;
wr_interleaved = 2;
break;
case RGA2_FORMAT_RGB_888:
case RGA_FORMAT_RGB_888:
wr_format = 0x5;
pixel_width = 3;
wr_interleaved = 2;
wr_pix_swp = 1;
break;
case RGA2_FORMAT_BGR_888:
case RGA_FORMAT_BGR_888:
wr_format = 0x5;
pixel_width = 3;
wr_interleaved = 2;
break;
case RGA2_FORMAT_RGB_565:
case RGA_FORMAT_RGB_565:
wr_format = 0x4;
pixel_width = 2;
wr_interleaved = 2;
wr_pix_swp = 1;
break;
case RGA2_FORMAT_BGR_565:
case RGA_FORMAT_BGR_565:
wr_format = 0x4;
pixel_width = 2;
wr_interleaved = 2;
break;
case RGA2_FORMAT_YVYU_422:
case RGA_FORMAT_YVYU_422:
wr_format = 0x1;
pixel_width = 2;
wr_pix_swp = 1;
wr_yc_swp = 1;
wr_interleaved = 2;
break;
case RGA2_FORMAT_VYUY_422:
case RGA_FORMAT_VYUY_422:
wr_format = 0x1;
pixel_width = 2;
wr_pix_swp = 1;
wr_yc_swp = 0;
wr_interleaved = 2;
break;
case RGA2_FORMAT_YUYV_422:
case RGA_FORMAT_YUYV_422:
wr_format = 0x1;
pixel_width = 2;
wr_pix_swp = 0;
wr_yc_swp = 1;
wr_interleaved = 2;
break;
case RGA2_FORMAT_UYVY_422:
case RGA_FORMAT_UYVY_422:
wr_format = 0x1;
pixel_width = 2;
wr_pix_swp = 0;
@@ -937,35 +937,35 @@ static void RGA3_set_reg_wr_info(u8 *base, struct rga3_req *msg)
wr_interleaved = 2;
break;
case RGA2_FORMAT_YCbCr_422_SP:
case RGA_FORMAT_YCbCr_422_SP:
wr_format = 0x1;
break;
case RGA2_FORMAT_YCbCr_420_SP:
case RGA_FORMAT_YCbCr_420_SP:
wr_format = 0x0;
break;
case RGA2_FORMAT_YCrCb_422_SP:
case RGA_FORMAT_YCrCb_422_SP:
wr_format = 0x1;
wr_pix_swp = 1;
break;
case RGA2_FORMAT_YCrCb_420_SP:
case RGA_FORMAT_YCrCb_420_SP:
wr_format = 0x0;
wr_pix_swp = 1;
break;
case RGA2_FORMAT_YCbCr_420_SP_10B:
case RGA_FORMAT_YCbCr_420_SP_10B:
wr_format = 0x2;
yuv10 = 1;
break;
case RGA2_FORMAT_YCrCb_420_SP_10B:
case RGA_FORMAT_YCrCb_420_SP_10B:
wr_format = 0x2;
wr_pix_swp = 1;
yuv10 = 1;
break;
case RGA2_FORMAT_YCbCr_422_SP_10B:
case RGA_FORMAT_YCbCr_422_SP_10B:
wr_format = 0x3;
yuv10 = 1;
break;
case RGA2_FORMAT_YCrCb_422_SP_10B:
case RGA_FORMAT_YCrCb_422_SP_10B:
wr_format = 0x3;
wr_pix_swp = 1;
yuv10 = 1;
@@ -1355,8 +1355,8 @@ void rga_cmd_to_rga3_cmd(struct rga_req *req_rga, struct rga3_req *req)
addr_copy(&req->win0, &req_rga->src);
addr_copy(&req->wr, &req_rga->dst);
rga_user_format_convert(&req->win0.format, req_rga->src.format);
rga_user_format_convert(&req->wr.format, req_rga->dst.format);
req->win0.format = req_rga->src.format;
req->wr.format = req_rga->dst.format;
} else {
/* A+B->C */
if (req_rga->pat.yrgb_addr != 0) {
@@ -1369,9 +1369,9 @@ void rga_cmd_to_rga3_cmd(struct rga_req *req_rga, struct rga3_req *req)
addr_copy(&req->win0, &req_rga->pat);
addr_copy(&req->wr, &req_rga->dst);
rga_user_format_convert(&req->win0.format, req_rga->src.format);
rga_user_format_convert(&req->wr.format, req_rga->dst.format);
rga_user_format_convert(&req->win1.format, req_rga->pat.format);
req->win0.format = req_rga->src.format;
req->wr.format = req_rga->dst.format;
req->win1.format = req_rga->pat.format;
} else {
/* A+B->B */
@@ -1387,9 +1387,9 @@ void rga_cmd_to_rga3_cmd(struct rga_req *req_rga, struct rga3_req *req)
addr_copy(&req->win0, &req_rga->dst);
addr_copy(&req->wr, &req_rga->dst);
rga_user_format_convert(&req->win1.format, req_rga->src.format);
rga_user_format_convert(&req->wr.format, req_rga->dst.format);
rga_user_format_convert(&req->win0.format, req_rga->dst.format);
req->win1.format = req_rga->src.format;
req->wr.format = req_rga->dst.format;
req->win0.format = req_rga->dst.format;
}
/* set win0 dst size */

View File

@@ -10,179 +10,29 @@
#include "rga.h"
#include "rga_common.h"
void rga_user_format_convert(uint32_t *df, uint32_t sf)
{
switch (sf) {
case 0x0:
*df = RGA2_FORMAT_RGBA_8888;
break;
case 0x1:
*df = RGA2_FORMAT_RGBX_8888;
break;
case 0x2:
*df = RGA2_FORMAT_RGB_888;
break;
case 0x3:
*df = RGA2_FORMAT_BGRA_8888;
break;
case 0x4:
*df = RGA2_FORMAT_RGB_565;
break;
case 0x5:
*df = RGA2_FORMAT_RGBA_5551;
break;
case 0x6:
*df = RGA2_FORMAT_RGBA_4444;
break;
case 0x7:
*df = RGA2_FORMAT_BGR_888;
break;
case 0x16:
*df = RGA2_FORMAT_BGRX_8888;
break;
case 0x8:
*df = RGA2_FORMAT_YCbCr_422_SP;
break;
case 0x9:
*df = RGA2_FORMAT_YCbCr_422_P;
break;
case 0xa:
*df = RGA2_FORMAT_YCbCr_420_SP;
break;
case 0xb:
*df = RGA2_FORMAT_YCbCr_420_P;
break;
case 0xc:
*df = RGA2_FORMAT_YCrCb_422_SP;
break;
case 0xd:
*df = RGA2_FORMAT_YCrCb_422_P;
break;
case 0xe:
*df = RGA2_FORMAT_YCrCb_420_SP;
break;
case 0xf:
*df = RGA2_FORMAT_YCrCb_420_P;
break;
case 0x10:
*df = RGA2_FORMAT_BPP_1;
break;
case 0x11:
*df = RGA2_FORMAT_BPP_2;
break;
case 0x12:
*df = RGA2_FORMAT_BPP_4;
break;
case 0x13:
*df = RGA2_FORMAT_BPP_8;
break;
case 0x14:
*df = RGA2_FORMAT_Y4;
break;
case 0x15:
*df = RGA2_FORMAT_YCbCr_400;
break;
case 0x18:
*df = RGA2_FORMAT_YVYU_422;
break;
case 0x19:
*df = RGA2_FORMAT_YVYU_420;
break;
case 0x1a:
*df = RGA2_FORMAT_VYUY_422;
break;
case 0x1b:
*df = RGA2_FORMAT_VYUY_420;
break;
case 0x1c:
*df = RGA2_FORMAT_YUYV_422;
break;
case 0x1d:
*df = RGA2_FORMAT_YUYV_420;
break;
case 0x1e:
*df = RGA2_FORMAT_UYVY_422;
break;
case 0x1f:
*df = RGA2_FORMAT_UYVY_420;
break;
case 0x20:
*df = RGA2_FORMAT_YCbCr_420_SP_10B;
break;
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;
case 0x28:
*df = RGA2_FORMAT_ARGB_8888;
break;
case 0x29:
*df = RGA2_FORMAT_XRGB_8888;
break;
case 0x2a:
*df = RGA2_FORMAT_ARGB_5551;
break;
case 0x2b:
*df = RGA2_FORMAT_ARGB_4444;
break;
case 0x2c:
*df = RGA2_FORMAT_ABGR_8888;
break;
case 0x2d:
*df = RGA2_FORMAT_XBGR_8888;
break;
case 0x2e:
*df = RGA2_FORMAT_ABGR_5551;
break;
case 0x2f:
*df = RGA2_FORMAT_ABGR_4444;
break;
}
}
bool rga_is_rgb_format(uint32_t format)
{
switch (format) {
case RGA2_FORMAT_RGBA_8888:
case RGA2_FORMAT_RGBX_8888:
case RGA2_FORMAT_RGB_888:
case RGA2_FORMAT_BGRA_8888:
case RGA2_FORMAT_BGRX_8888:
case RGA2_FORMAT_BGR_888:
case RGA2_FORMAT_RGB_565:
case RGA2_FORMAT_RGBA_5551:
case RGA2_FORMAT_RGBA_4444:
case RGA2_FORMAT_BGR_565:
case RGA2_FORMAT_BGRA_5551:
case RGA2_FORMAT_BGRA_4444:
case RGA2_FORMAT_ARGB_8888:
case RGA2_FORMAT_XRGB_8888:
case RGA2_FORMAT_ARGB_5551:
case RGA2_FORMAT_ARGB_4444:
case RGA2_FORMAT_ABGR_8888:
case RGA2_FORMAT_XBGR_8888:
case RGA2_FORMAT_ABGR_5551:
case RGA2_FORMAT_ABGR_4444:
case RGA_FORMAT_RGBA_8888:
case RGA_FORMAT_RGBX_8888:
case RGA_FORMAT_RGB_888:
case RGA_FORMAT_BGRA_8888:
case RGA_FORMAT_BGRX_8888:
case RGA_FORMAT_BGR_888:
case RGA_FORMAT_RGB_565:
case RGA_FORMAT_RGBA_5551:
case RGA_FORMAT_RGBA_4444:
case RGA_FORMAT_BGR_565:
case RGA_FORMAT_BGRA_5551:
case RGA_FORMAT_BGRA_4444:
case RGA_FORMAT_ARGB_8888:
case RGA_FORMAT_XRGB_8888:
case RGA_FORMAT_ARGB_5551:
case RGA_FORMAT_ARGB_4444:
case RGA_FORMAT_ABGR_8888:
case RGA_FORMAT_XBGR_8888:
case RGA_FORMAT_ABGR_5551:
case RGA_FORMAT_ABGR_4444:
return true;
default:
return false;
@@ -192,31 +42,31 @@ bool rga_is_rgb_format(uint32_t format)
bool rga_is_yuv_format(uint32_t format)
{
switch (format) {
case RGA2_FORMAT_Y4:
case RGA2_FORMAT_YCbCr_400:
case RGA_FORMAT_Y4:
case RGA_FORMAT_YCbCr_400:
case RGA2_FORMAT_YCbCr_422_SP:
case RGA2_FORMAT_YCbCr_422_P:
case RGA2_FORMAT_YCbCr_420_SP:
case RGA2_FORMAT_YCbCr_420_P:
case RGA2_FORMAT_YCrCb_422_SP:
case RGA2_FORMAT_YCrCb_422_P:
case RGA2_FORMAT_YCrCb_420_SP:
case RGA2_FORMAT_YCrCb_420_P:
case RGA_FORMAT_YCbCr_422_SP:
case RGA_FORMAT_YCbCr_422_P:
case RGA_FORMAT_YCbCr_420_SP:
case RGA_FORMAT_YCbCr_420_P:
case RGA_FORMAT_YCrCb_422_SP:
case RGA_FORMAT_YCrCb_422_P:
case RGA_FORMAT_YCrCb_420_SP:
case RGA_FORMAT_YCrCb_420_P:
case RGA2_FORMAT_YVYU_422:
case RGA2_FORMAT_YVYU_420:
case RGA2_FORMAT_VYUY_422:
case RGA2_FORMAT_VYUY_420:
case RGA2_FORMAT_YUYV_422:
case RGA2_FORMAT_YUYV_420:
case RGA2_FORMAT_UYVY_422:
case RGA2_FORMAT_UYVY_420:
case RGA_FORMAT_YVYU_422:
case RGA_FORMAT_YVYU_420:
case RGA_FORMAT_VYUY_422:
case RGA_FORMAT_VYUY_420:
case RGA_FORMAT_YUYV_422:
case RGA_FORMAT_YUYV_420:
case RGA_FORMAT_UYVY_422:
case RGA_FORMAT_UYVY_420:
case RGA2_FORMAT_YCbCr_420_SP_10B:
case RGA2_FORMAT_YCrCb_420_SP_10B:
case RGA2_FORMAT_YCbCr_422_SP_10B:
case RGA2_FORMAT_YCrCb_422_SP_10B:
case RGA_FORMAT_YCbCr_420_SP_10B:
case RGA_FORMAT_YCrCb_420_SP_10B:
case RGA_FORMAT_YCbCr_422_SP_10B:
case RGA_FORMAT_YCrCb_422_SP_10B:
return true;
default:
return false;
@@ -226,18 +76,18 @@ bool rga_is_yuv_format(uint32_t format)
bool rga_is_alpha_format(uint32_t format)
{
switch (format) {
case RGA2_FORMAT_RGBA_8888:
case RGA2_FORMAT_BGRA_8888:
case RGA2_FORMAT_RGBA_5551:
case RGA2_FORMAT_RGBA_4444:
case RGA2_FORMAT_BGRA_5551:
case RGA2_FORMAT_BGRA_4444:
case RGA2_FORMAT_ARGB_8888:
case RGA2_FORMAT_ARGB_5551:
case RGA2_FORMAT_ARGB_4444:
case RGA2_FORMAT_ABGR_8888:
case RGA2_FORMAT_ABGR_5551:
case RGA2_FORMAT_ABGR_4444:
case RGA_FORMAT_RGBA_8888:
case RGA_FORMAT_BGRA_8888:
case RGA_FORMAT_RGBA_5551:
case RGA_FORMAT_RGBA_4444:
case RGA_FORMAT_BGRA_5551:
case RGA_FORMAT_BGRA_4444:
case RGA_FORMAT_ARGB_8888:
case RGA_FORMAT_ARGB_5551:
case RGA_FORMAT_ARGB_4444:
case RGA_FORMAT_ABGR_8888:
case RGA_FORMAT_ABGR_5551:
case RGA_FORMAT_ABGR_4444:
return true;
default:
return false;
@@ -247,10 +97,10 @@ bool rga_is_alpha_format(uint32_t format)
bool rga_is_yuv420_packed_format(uint32_t format)
{
switch (format) {
case RGA2_FORMAT_YVYU_420:
case RGA2_FORMAT_VYUY_420:
case RGA2_FORMAT_YUYV_420:
case RGA2_FORMAT_UYVY_420:
case RGA_FORMAT_YVYU_420:
case RGA_FORMAT_VYUY_420:
case RGA_FORMAT_YUYV_420:
case RGA_FORMAT_UYVY_420:
return true;
default:
return false;
@@ -260,10 +110,10 @@ bool rga_is_yuv420_packed_format(uint32_t format)
bool rga_is_yuv422_packed_format(uint32_t format)
{
switch (format) {
case RGA2_FORMAT_YVYU_422:
case RGA2_FORMAT_VYUY_422:
case RGA2_FORMAT_YUYV_422:
case RGA2_FORMAT_UYVY_422:
case RGA_FORMAT_YVYU_422:
case RGA_FORMAT_VYUY_422:
case RGA_FORMAT_YUYV_422:
case RGA_FORMAT_UYVY_422:
return true;
default:
return false;
@@ -273,26 +123,26 @@ bool rga_is_yuv422_packed_format(uint32_t format)
bool rga_is_yuv8bit_format(uint32_t format)
{
switch (format) {
case RGA2_FORMAT_Y4:
case RGA2_FORMAT_YCbCr_400:
case RGA_FORMAT_Y4:
case RGA_FORMAT_YCbCr_400:
case RGA2_FORMAT_YCbCr_422_SP:
case RGA2_FORMAT_YCbCr_422_P:
case RGA2_FORMAT_YCbCr_420_SP:
case RGA2_FORMAT_YCbCr_420_P:
case RGA2_FORMAT_YCrCb_422_SP:
case RGA2_FORMAT_YCrCb_422_P:
case RGA2_FORMAT_YCrCb_420_SP:
case RGA2_FORMAT_YCrCb_420_P:
case RGA_FORMAT_YCbCr_422_SP:
case RGA_FORMAT_YCbCr_422_P:
case RGA_FORMAT_YCbCr_420_SP:
case RGA_FORMAT_YCbCr_420_P:
case RGA_FORMAT_YCrCb_422_SP:
case RGA_FORMAT_YCrCb_422_P:
case RGA_FORMAT_YCrCb_420_SP:
case RGA_FORMAT_YCrCb_420_P:
case RGA2_FORMAT_YVYU_422:
case RGA2_FORMAT_YVYU_420:
case RGA2_FORMAT_VYUY_422:
case RGA2_FORMAT_VYUY_420:
case RGA2_FORMAT_YUYV_422:
case RGA2_FORMAT_YUYV_420:
case RGA2_FORMAT_UYVY_422:
case RGA2_FORMAT_UYVY_420:
case RGA_FORMAT_YVYU_422:
case RGA_FORMAT_YVYU_420:
case RGA_FORMAT_VYUY_422:
case RGA_FORMAT_VYUY_420:
case RGA_FORMAT_YUYV_422:
case RGA_FORMAT_YUYV_420:
case RGA_FORMAT_UYVY_422:
case RGA_FORMAT_UYVY_420:
return true;
default:
return false;
@@ -302,10 +152,10 @@ bool rga_is_yuv8bit_format(uint32_t format)
bool rga_is_yuv10bit_format(uint32_t format)
{
switch (format) {
case RGA2_FORMAT_YCbCr_420_SP_10B:
case RGA2_FORMAT_YCrCb_420_SP_10B:
case RGA2_FORMAT_YCbCr_422_SP_10B:
case RGA2_FORMAT_YCrCb_422_SP_10B:
case RGA_FORMAT_YCbCr_420_SP_10B:
case RGA_FORMAT_YCrCb_420_SP_10B:
case RGA_FORMAT_YCbCr_422_SP_10B:
case RGA_FORMAT_YCrCb_422_SP_10B:
return true;
default:
return false;
@@ -315,8 +165,8 @@ bool rga_is_yuv10bit_format(uint32_t format)
bool rga_is_yuv422p_format(uint32_t format)
{
switch (format) {
case RGA2_FORMAT_YCbCr_422_P:
case RGA2_FORMAT_YCrCb_422_P:
case RGA_FORMAT_YCbCr_422_P:
case RGA_FORMAT_YCrCb_422_P:
return true;
default:
return false;
@@ -328,46 +178,46 @@ int rga_get_format_bits(uint32_t format)
int bits = 0;
switch (format) {
case RGA2_FORMAT_RGBA_8888:
case RGA2_FORMAT_RGBX_8888:
case RGA2_FORMAT_BGRA_8888:
case RGA2_FORMAT_BGRX_8888:
case RGA2_FORMAT_ARGB_8888:
case RGA2_FORMAT_XRGB_8888:
case RGA2_FORMAT_ABGR_8888:
case RGA2_FORMAT_XBGR_8888:
case RGA_FORMAT_RGBA_8888:
case RGA_FORMAT_RGBX_8888:
case RGA_FORMAT_BGRA_8888:
case RGA_FORMAT_BGRX_8888:
case RGA_FORMAT_ARGB_8888:
case RGA_FORMAT_XRGB_8888:
case RGA_FORMAT_ABGR_8888:
case RGA_FORMAT_XBGR_8888:
bits = 32;
break;
case RGA2_FORMAT_RGB_888:
case RGA2_FORMAT_BGR_888:
case RGA_FORMAT_RGB_888:
case RGA_FORMAT_BGR_888:
bits = 24;
break;
case RGA2_FORMAT_RGB_565:
case RGA2_FORMAT_RGBA_5551:
case RGA2_FORMAT_RGBA_4444:
case RGA2_FORMAT_BGR_565:
case RGA2_FORMAT_YCbCr_422_SP:
case RGA2_FORMAT_YCbCr_422_P:
case RGA2_FORMAT_YCrCb_422_SP:
case RGA2_FORMAT_YCrCb_422_P:
case RGA2_FORMAT_BGRA_5551:
case RGA2_FORMAT_BGRA_4444:
case RGA2_FORMAT_ARGB_5551:
case RGA2_FORMAT_ARGB_4444:
case RGA2_FORMAT_ABGR_5551:
case RGA2_FORMAT_ABGR_4444:
case RGA_FORMAT_RGB_565:
case RGA_FORMAT_RGBA_5551:
case RGA_FORMAT_RGBA_4444:
case RGA_FORMAT_BGR_565:
case RGA_FORMAT_YCbCr_422_SP:
case RGA_FORMAT_YCbCr_422_P:
case RGA_FORMAT_YCrCb_422_SP:
case RGA_FORMAT_YCrCb_422_P:
case RGA_FORMAT_BGRA_5551:
case RGA_FORMAT_BGRA_4444:
case RGA_FORMAT_ARGB_5551:
case RGA_FORMAT_ARGB_4444:
case RGA_FORMAT_ABGR_5551:
case RGA_FORMAT_ABGR_4444:
bits = 16;
break;
case RGA2_FORMAT_YCbCr_420_SP:
case RGA2_FORMAT_YCbCr_420_P:
case RGA2_FORMAT_YCrCb_420_SP:
case RGA2_FORMAT_YCrCb_420_P:
case RGA_FORMAT_YCbCr_420_SP:
case RGA_FORMAT_YCbCr_420_P:
case RGA_FORMAT_YCrCb_420_SP:
case RGA_FORMAT_YCrCb_420_P:
bits = 12;
break;
case RGA2_FORMAT_YCbCr_420_SP_10B:
case RGA2_FORMAT_YCrCb_420_SP_10B:
case RGA2_FORMAT_YCbCr_422_SP_10B:
case RGA2_FORMAT_YCrCb_422_SP_10B:
case RGA_FORMAT_YCbCr_420_SP_10B:
case RGA_FORMAT_YCrCb_420_SP_10B:
case RGA_FORMAT_YCbCr_422_SP_10B:
case RGA_FORMAT_YCrCb_422_SP_10B:
bits = 15;
break;
default:
@@ -381,101 +231,101 @@ int rga_get_format_bits(uint32_t format)
const char *rga_get_format_name(uint32_t format)
{
switch (format) {
case RGA2_FORMAT_RGBA_8888:
case RGA_FORMAT_RGBA_8888:
return "RGBA8888";
case RGA2_FORMAT_RGBX_8888:
case RGA_FORMAT_RGBX_8888:
return "RGBX8888";
case RGA2_FORMAT_RGB_888:
case RGA_FORMAT_RGB_888:
return "RGB888";
case RGA2_FORMAT_BGRA_8888:
case RGA_FORMAT_BGRA_8888:
return "BGRA8888";
case RGA2_FORMAT_BGRX_8888:
case RGA_FORMAT_BGRX_8888:
return "BGRX8888";
case RGA2_FORMAT_BGR_888:
case RGA_FORMAT_BGR_888:
return "BGR888";
case RGA2_FORMAT_RGB_565:
case RGA_FORMAT_RGB_565:
return "RGB565";
case RGA2_FORMAT_RGBA_5551:
case RGA_FORMAT_RGBA_5551:
return "RGBA5551";
case RGA2_FORMAT_RGBA_4444:
case RGA_FORMAT_RGBA_4444:
return "RGBA4444";
case RGA2_FORMAT_BGR_565:
case RGA_FORMAT_BGR_565:
return "BGR565";
case RGA2_FORMAT_BGRA_5551:
case RGA_FORMAT_BGRA_5551:
return "BGRA5551";
case RGA2_FORMAT_BGRA_4444:
case RGA_FORMAT_BGRA_4444:
return "BGRA4444";
case RGA2_FORMAT_YCbCr_422_SP:
case RGA_FORMAT_YCbCr_422_SP:
return "YCbCr422SP";
case RGA2_FORMAT_YCbCr_422_P:
case RGA_FORMAT_YCbCr_422_P:
return "YCbCr422P";
case RGA2_FORMAT_YCbCr_420_SP:
case RGA_FORMAT_YCbCr_420_SP:
return "YCbCr420SP";
case RGA2_FORMAT_YCbCr_420_P:
case RGA_FORMAT_YCbCr_420_P:
return "YCbCr420P";
case RGA2_FORMAT_YCrCb_422_SP:
case RGA_FORMAT_YCrCb_422_SP:
return "YCrCb422SP";
case RGA2_FORMAT_YCrCb_422_P:
case RGA_FORMAT_YCrCb_422_P:
return "YCrCb422P";
case RGA2_FORMAT_YCrCb_420_SP:
case RGA_FORMAT_YCrCb_420_SP:
return "YCrCb420SP";
case RGA2_FORMAT_YCrCb_420_P:
case RGA_FORMAT_YCrCb_420_P:
return "YCrCb420P";
case RGA2_FORMAT_YVYU_422:
case RGA_FORMAT_YVYU_422:
return "YVYU422";
case RGA2_FORMAT_YVYU_420:
case RGA_FORMAT_YVYU_420:
return "YVYU420";
case RGA2_FORMAT_VYUY_422:
case RGA_FORMAT_VYUY_422:
return "VYUY422";
case RGA2_FORMAT_VYUY_420:
case RGA_FORMAT_VYUY_420:
return "VYUY420";
case RGA2_FORMAT_YUYV_422:
case RGA_FORMAT_YUYV_422:
return "YUYV422";
case RGA2_FORMAT_YUYV_420:
case RGA_FORMAT_YUYV_420:
return "YUYV420";
case RGA2_FORMAT_UYVY_422:
case RGA_FORMAT_UYVY_422:
return "UYVY422";
case RGA2_FORMAT_UYVY_420:
case RGA_FORMAT_UYVY_420:
return "UYVY420";
case RGA2_FORMAT_YCbCr_420_SP_10B:
case RGA_FORMAT_YCbCr_420_SP_10B:
return "YCrCb420SP10B";
case RGA2_FORMAT_YCrCb_420_SP_10B:
case RGA_FORMAT_YCrCb_420_SP_10B:
return "YCbCr420SP10B";
case RGA2_FORMAT_YCbCr_422_SP_10B:
case RGA_FORMAT_YCbCr_422_SP_10B:
return "YCbCr422SP10B";
case RGA2_FORMAT_YCrCb_422_SP_10B:
case RGA_FORMAT_YCrCb_422_SP_10B:
return "YCrCb422SP10B";
case RGA2_FORMAT_BPP_1:
case RGA_FORMAT_BPP1:
return "BPP1";
case RGA2_FORMAT_BPP_2:
case RGA_FORMAT_BPP2:
return "BPP2";
case RGA2_FORMAT_BPP_4:
case RGA_FORMAT_BPP4:
return "BPP4";
case RGA2_FORMAT_BPP_8:
case RGA_FORMAT_BPP8:
return "BPP8";
case RGA2_FORMAT_YCbCr_400:
case RGA_FORMAT_YCbCr_400:
return "YCbCr400";
case RGA2_FORMAT_Y4:
case RGA_FORMAT_Y4:
return "y4";
case RGA2_FORMAT_ARGB_8888:
case RGA_FORMAT_ARGB_8888:
return "ARGB8888";
case RGA2_FORMAT_XRGB_8888:
case RGA_FORMAT_XRGB_8888:
return "XRGB8888";
case RGA2_FORMAT_ARGB_5551:
case RGA_FORMAT_ARGB_5551:
return "ARGB5551";
case RGA2_FORMAT_ARGB_4444:
case RGA_FORMAT_ARGB_4444:
return "ARGB4444";
case RGA2_FORMAT_ABGR_8888:
case RGA_FORMAT_ABGR_8888:
return "ABGR8888";
case RGA2_FORMAT_XBGR_8888:
case RGA_FORMAT_XBGR_8888:
return "XBGR8888";
case RGA2_FORMAT_ABGR_5551:
case RGA_FORMAT_ABGR_5551:
return "ABGR5551";
case RGA2_FORMAT_ABGR_4444:
case RGA_FORMAT_ABGR_4444:
return "ABGR4444";
default:
return "UNF";
@@ -542,10 +392,6 @@ const char *rga_get_blend_mode_str(uint16_t alpha_rop_flag,
void rga_convert_addr(struct rga_img_info_t *img, bool before_vir_get_channel)
{
uint32_t fmt = 0;
rga_user_format_convert(&fmt, img->format);
/*
* If it is not using dma fd, the virtual/phyical address is assigned
* to the address of the corresponding channel.
@@ -562,7 +408,7 @@ void rga_convert_addr(struct rga_img_info_t *img, bool before_vir_get_channel)
img->uv_addr = img->yrgb_addr + (img->vir_w * img->vir_h);
//warning: rga3 may need /2 for all
if (rga_is_yuv422p_format(fmt))
if (rga_is_yuv422p_format(img->format))
img->v_addr =
img->uv_addr + (img->vir_w * img->vir_h) / 2;
else

View File

@@ -48,14 +48,14 @@ int rga_buf_size_cal(unsigned long yrgb_addr, unsigned long uv_addr,
uint32_t pageCount;
switch (format) {
case RGA2_FORMAT_RGBA_8888:
case RGA2_FORMAT_RGBX_8888:
case RGA2_FORMAT_BGRA_8888:
case RGA2_FORMAT_BGRX_8888:
case RGA2_FORMAT_ARGB_8888:
case RGA2_FORMAT_XRGB_8888:
case RGA2_FORMAT_ABGR_8888:
case RGA2_FORMAT_XBGR_8888:
case RGA_FORMAT_RGBA_8888:
case RGA_FORMAT_RGBX_8888:
case RGA_FORMAT_BGRA_8888:
case RGA_FORMAT_BGRX_8888:
case RGA_FORMAT_ARGB_8888:
case RGA_FORMAT_XRGB_8888:
case RGA_FORMAT_ABGR_8888:
case RGA_FORMAT_XBGR_8888:
stride = (w * 4 + 3) & (~3);
size_yrgb = stride * h;
start = yrgb_addr >> PAGE_SHIFT;
@@ -63,8 +63,8 @@ int rga_buf_size_cal(unsigned long yrgb_addr, unsigned long uv_addr,
end = (end + (PAGE_SIZE - 1)) >> PAGE_SHIFT;
pageCount = end - start;
break;
case RGA2_FORMAT_RGB_888:
case RGA2_FORMAT_BGR_888:
case RGA_FORMAT_RGB_888:
case RGA_FORMAT_BGR_888:
stride = (w * 3 + 3) & (~3);
size_yrgb = stride * h;
start = yrgb_addr >> PAGE_SHIFT;
@@ -72,16 +72,16 @@ int rga_buf_size_cal(unsigned long yrgb_addr, unsigned long uv_addr,
end = (end + (PAGE_SIZE - 1)) >> PAGE_SHIFT;
pageCount = end - start;
break;
case RGA2_FORMAT_RGB_565:
case RGA2_FORMAT_RGBA_5551:
case RGA2_FORMAT_RGBA_4444:
case RGA2_FORMAT_BGR_565:
case RGA2_FORMAT_BGRA_5551:
case RGA2_FORMAT_BGRA_4444:
case RGA2_FORMAT_ARGB_5551:
case RGA2_FORMAT_ARGB_4444:
case RGA2_FORMAT_ABGR_5551:
case RGA2_FORMAT_ABGR_4444:
case RGA_FORMAT_RGB_565:
case RGA_FORMAT_RGBA_5551:
case RGA_FORMAT_RGBA_4444:
case RGA_FORMAT_BGR_565:
case RGA_FORMAT_BGRA_5551:
case RGA_FORMAT_BGRA_4444:
case RGA_FORMAT_ARGB_5551:
case RGA_FORMAT_ARGB_4444:
case RGA_FORMAT_ABGR_5551:
case RGA_FORMAT_ABGR_4444:
stride = (w * 2 + 3) & (~3);
size_yrgb = stride * h;
start = yrgb_addr >> PAGE_SHIFT;
@@ -91,8 +91,8 @@ int rga_buf_size_cal(unsigned long yrgb_addr, unsigned long uv_addr,
break;
/* YUV FORMAT */
case RGA2_FORMAT_YCbCr_422_SP:
case RGA2_FORMAT_YCrCb_422_SP:
case RGA_FORMAT_YCbCr_422_SP:
case RGA_FORMAT_YCrCb_422_SP:
stride = (w + 3) & (~3);
size_yrgb = stride * h;
size_uv = stride * h;
@@ -102,8 +102,8 @@ int rga_buf_size_cal(unsigned long yrgb_addr, unsigned long uv_addr,
end = (end + (PAGE_SIZE - 1)) >> PAGE_SHIFT;
pageCount = end - start;
break;
case RGA2_FORMAT_YCbCr_422_P:
case RGA2_FORMAT_YCrCb_422_P:
case RGA_FORMAT_YCbCr_422_P:
case RGA_FORMAT_YCrCb_422_P:
stride = (w + 3) & (~3);
size_yrgb = stride * h;
size_uv = ((stride >> 1) * h);
@@ -116,8 +116,8 @@ int rga_buf_size_cal(unsigned long yrgb_addr, unsigned long uv_addr,
end = (end + (PAGE_SIZE - 1)) >> PAGE_SHIFT;
pageCount = end - start;
break;
case RGA2_FORMAT_YCbCr_420_SP:
case RGA2_FORMAT_YCrCb_420_SP:
case RGA_FORMAT_YCbCr_420_SP:
case RGA_FORMAT_YCrCb_420_SP:
stride = (w + 3) & (~3);
size_yrgb = stride * h;
size_uv = (stride * (h >> 1));
@@ -127,8 +127,8 @@ int rga_buf_size_cal(unsigned long yrgb_addr, unsigned long uv_addr,
end = (end + (PAGE_SIZE - 1)) >> PAGE_SHIFT;
pageCount = end - start;
break;
case RGA2_FORMAT_YCbCr_420_P:
case RGA2_FORMAT_YCrCb_420_P:
case RGA_FORMAT_YCbCr_420_P:
case RGA_FORMAT_YCrCb_420_P:
stride = (w + 3) & (~3);
size_yrgb = stride * h;
size_uv = ((stride >> 1) * (h >> 1));
@@ -141,7 +141,7 @@ int rga_buf_size_cal(unsigned long yrgb_addr, unsigned long uv_addr,
end = (end + (PAGE_SIZE - 1)) >> PAGE_SHIFT;
pageCount = end - start;
break;
case RGA2_FORMAT_YCbCr_400:
case RGA_FORMAT_YCbCr_400:
stride = (w + 3) & (~3);
size_yrgb = stride * h;
start = yrgb_addr >> PAGE_SHIFT;
@@ -149,7 +149,7 @@ int rga_buf_size_cal(unsigned long yrgb_addr, unsigned long uv_addr,
end = (end + (PAGE_SIZE - 1)) >> PAGE_SHIFT;
pageCount = end - start;
break;
case RGA2_FORMAT_Y4:
case RGA_FORMAT_Y4:
stride = ((w + 3) & (~3)) >> 1;
size_yrgb = stride * h;
start = yrgb_addr >> PAGE_SHIFT;
@@ -157,10 +157,10 @@ int rga_buf_size_cal(unsigned long yrgb_addr, unsigned long uv_addr,
end = (end + (PAGE_SIZE - 1)) >> PAGE_SHIFT;
pageCount = end - start;
break;
case RGA2_FORMAT_YVYU_422:
case RGA2_FORMAT_VYUY_422:
case RGA2_FORMAT_YUYV_422:
case RGA2_FORMAT_UYVY_422:
case RGA_FORMAT_YVYU_422:
case RGA_FORMAT_VYUY_422:
case RGA_FORMAT_YUYV_422:
case RGA_FORMAT_UYVY_422:
stride = (w + 3) & (~3);
size_yrgb = stride * h;
size_uv = stride * h;
@@ -170,10 +170,10 @@ int rga_buf_size_cal(unsigned long yrgb_addr, unsigned long uv_addr,
end = (end + (PAGE_SIZE - 1)) >> PAGE_SHIFT;
pageCount = end - start;
break;
case RGA2_FORMAT_YVYU_420:
case RGA2_FORMAT_VYUY_420:
case RGA2_FORMAT_YUYV_420:
case RGA2_FORMAT_UYVY_420:
case RGA_FORMAT_YVYU_420:
case RGA_FORMAT_VYUY_420:
case RGA_FORMAT_YUYV_420:
case RGA_FORMAT_UYVY_420:
stride = (w + 3) & (~3);
size_yrgb = stride * h;
size_uv = (stride * (h >> 1));
@@ -183,8 +183,8 @@ int rga_buf_size_cal(unsigned long yrgb_addr, unsigned long uv_addr,
end = (end + (PAGE_SIZE - 1)) >> PAGE_SHIFT;
pageCount = end - start;
break;
case RGA2_FORMAT_YCbCr_420_SP_10B:
case RGA2_FORMAT_YCrCb_420_SP_10B:
case RGA_FORMAT_YCbCr_420_SP_10B:
case RGA_FORMAT_YCrCb_420_SP_10B:
stride = (w + 3) & (~3);
size_yrgb = stride * h;
size_uv = (stride * (h >> 1));
@@ -557,8 +557,6 @@ static int rga_viraddr_get_channel_info(struct rga_img_info_t *channel_info,
int ioprot;
dma_addr_t iova;
int format;
alloc_buffer =
kmalloc(sizeof(struct rga_dma_buffer_t),
GFP_KERNEL);
@@ -567,8 +565,6 @@ static int rga_viraddr_get_channel_info(struct rga_img_info_t *channel_info,
return -ENOMEM;
}
rga_user_format_convert(&format, channel_info->format);
scheduler = rga_job_get_scheduler(core);
if (scheduler == NULL) {
pr_err("failed to get scheduler, %s(%d)\n", __func__,
@@ -585,7 +581,7 @@ static int rga_viraddr_get_channel_info(struct rga_img_info_t *channel_info,
/* Calculate page size. */
count = rga_buf_size_cal(channel_info->yrgb_addr, channel_info->uv_addr,
channel_info->v_addr, format,
channel_info->v_addr, channel_info->format,
channel_info->vir_w, channel_info->vir_h,
&start_addr, NULL);
size = count * PAGE_SIZE;

View File

@@ -9,97 +9,97 @@
#include "rga_hw_config.h"
const uint32_t rga3_raster_format[] = {
RGA2_FORMAT_RGBA_8888,
RGA2_FORMAT_BGRA_8888,
RGA2_FORMAT_RGB_888,
RGA2_FORMAT_BGR_888,
RGA2_FORMAT_RGB_565,
RGA2_FORMAT_BGR_565,
RGA2_FORMAT_YCbCr_422_SP,
RGA2_FORMAT_YCbCr_420_SP,
RGA2_FORMAT_YCrCb_422_SP,
RGA2_FORMAT_YCrCb_420_SP,
RGA2_FORMAT_YVYU_422,
RGA2_FORMAT_VYUY_422,
RGA2_FORMAT_YUYV_422,
RGA2_FORMAT_UYVY_422,
RGA2_FORMAT_YCbCr_420_SP_10B,
RGA2_FORMAT_YCrCb_420_SP_10B,
RGA2_FORMAT_YCbCr_422_SP_10B,
RGA2_FORMAT_YCrCb_422_SP_10B,
RGA_FORMAT_RGBA_8888,
RGA_FORMAT_BGRA_8888,
RGA_FORMAT_RGB_888,
RGA_FORMAT_BGR_888,
RGA_FORMAT_RGB_565,
RGA_FORMAT_BGR_565,
RGA_FORMAT_YCbCr_422_SP,
RGA_FORMAT_YCbCr_420_SP,
RGA_FORMAT_YCrCb_422_SP,
RGA_FORMAT_YCrCb_420_SP,
RGA_FORMAT_YVYU_422,
RGA_FORMAT_VYUY_422,
RGA_FORMAT_YUYV_422,
RGA_FORMAT_UYVY_422,
RGA_FORMAT_YCbCr_420_SP_10B,
RGA_FORMAT_YCrCb_420_SP_10B,
RGA_FORMAT_YCbCr_422_SP_10B,
RGA_FORMAT_YCrCb_422_SP_10B,
};
const uint32_t rga3_fbcd_format[] = {
RGA2_FORMAT_RGBA_8888,
RGA2_FORMAT_BGRA_8888,
RGA2_FORMAT_RGB_888,
RGA2_FORMAT_BGR_888,
RGA2_FORMAT_RGB_565,
RGA2_FORMAT_BGR_565,
RGA2_FORMAT_YCbCr_422_SP,
RGA2_FORMAT_YCbCr_420_SP,
RGA2_FORMAT_YCrCb_422_SP,
RGA2_FORMAT_YCrCb_420_SP,
RGA2_FORMAT_YCbCr_420_SP_10B,
RGA2_FORMAT_YCrCb_420_SP_10B,
RGA2_FORMAT_YCbCr_422_SP_10B,
RGA2_FORMAT_YCrCb_422_SP_10B,
RGA_FORMAT_RGBA_8888,
RGA_FORMAT_BGRA_8888,
RGA_FORMAT_RGB_888,
RGA_FORMAT_BGR_888,
RGA_FORMAT_RGB_565,
RGA_FORMAT_BGR_565,
RGA_FORMAT_YCbCr_422_SP,
RGA_FORMAT_YCbCr_420_SP,
RGA_FORMAT_YCrCb_422_SP,
RGA_FORMAT_YCrCb_420_SP,
RGA_FORMAT_YCbCr_420_SP_10B,
RGA_FORMAT_YCrCb_420_SP_10B,
RGA_FORMAT_YCbCr_422_SP_10B,
RGA_FORMAT_YCrCb_422_SP_10B,
};
const uint32_t rga3_tile_format[] = {
RGA2_FORMAT_YCbCr_422_SP,
RGA2_FORMAT_YCbCr_420_SP,
RGA2_FORMAT_YCrCb_422_SP,
RGA2_FORMAT_YCrCb_420_SP,
RGA2_FORMAT_YCbCr_420_SP_10B,
RGA2_FORMAT_YCrCb_420_SP_10B,
RGA2_FORMAT_YCbCr_422_SP_10B,
RGA2_FORMAT_YCrCb_422_SP_10B,
RGA_FORMAT_YCbCr_422_SP,
RGA_FORMAT_YCbCr_420_SP,
RGA_FORMAT_YCrCb_422_SP,
RGA_FORMAT_YCrCb_420_SP,
RGA_FORMAT_YCbCr_420_SP_10B,
RGA_FORMAT_YCrCb_420_SP_10B,
RGA_FORMAT_YCbCr_422_SP_10B,
RGA_FORMAT_YCrCb_422_SP_10B,
};
const uint32_t rga2e_raster_format[] = {
RGA2_FORMAT_RGBA_8888,
RGA2_FORMAT_RGBX_8888,
RGA2_FORMAT_BGRA_8888,
RGA2_FORMAT_BGRX_8888,
RGA2_FORMAT_RGB_888,
RGA2_FORMAT_BGR_888,
RGA2_FORMAT_RGB_565,
RGA2_FORMAT_BGR_565,
RGA2_FORMAT_YCbCr_422_P,
RGA2_FORMAT_YCbCr_420_P,
RGA2_FORMAT_YCrCb_422_P,
RGA2_FORMAT_YCrCb_420_P,
RGA2_FORMAT_YCbCr_422_SP,
RGA2_FORMAT_YCbCr_420_SP,
RGA2_FORMAT_YCrCb_422_SP,
RGA2_FORMAT_YCrCb_420_SP,
RGA2_FORMAT_YVYU_422,
RGA2_FORMAT_VYUY_422,
RGA2_FORMAT_YUYV_422,
RGA2_FORMAT_UYVY_422,
RGA2_FORMAT_YCbCr_420_SP_10B,
RGA2_FORMAT_YCrCb_420_SP_10B,
RGA2_FORMAT_YCbCr_422_SP_10B,
RGA2_FORMAT_YCrCb_422_SP_10B,
RGA2_FORMAT_Y4,
RGA2_FORMAT_YCbCr_400,
RGA2_FORMAT_RGBA_5551,
RGA2_FORMAT_BGRA_5551,
RGA2_FORMAT_RGBA_4444,
RGA2_FORMAT_BGRA_4444,
RGA2_FORMAT_XRGB_8888,
RGA2_FORMAT_XBGR_8888,
RGA2_FORMAT_BPP_1,
RGA2_FORMAT_BPP_2,
RGA2_FORMAT_BPP_4,
RGA2_FORMAT_BPP_8,
RGA2_FORMAT_ARGB_8888,
RGA2_FORMAT_ARGB_5551,
RGA2_FORMAT_ARGB_4444,
RGA2_FORMAT_ABGR_8888,
RGA2_FORMAT_ABGR_5551,
RGA2_FORMAT_ABGR_4444,
RGA_FORMAT_RGBA_8888,
RGA_FORMAT_RGBX_8888,
RGA_FORMAT_BGRA_8888,
RGA_FORMAT_BGRX_8888,
RGA_FORMAT_RGB_888,
RGA_FORMAT_BGR_888,
RGA_FORMAT_RGB_565,
RGA_FORMAT_BGR_565,
RGA_FORMAT_YCbCr_422_P,
RGA_FORMAT_YCbCr_420_P,
RGA_FORMAT_YCrCb_422_P,
RGA_FORMAT_YCrCb_420_P,
RGA_FORMAT_YCbCr_422_SP,
RGA_FORMAT_YCbCr_420_SP,
RGA_FORMAT_YCrCb_422_SP,
RGA_FORMAT_YCrCb_420_SP,
RGA_FORMAT_YVYU_422,
RGA_FORMAT_VYUY_422,
RGA_FORMAT_YUYV_422,
RGA_FORMAT_UYVY_422,
RGA_FORMAT_YCbCr_420_SP_10B,
RGA_FORMAT_YCrCb_420_SP_10B,
RGA_FORMAT_YCbCr_422_SP_10B,
RGA_FORMAT_YCrCb_422_SP_10B,
RGA_FORMAT_Y4,
RGA_FORMAT_YCbCr_400,
RGA_FORMAT_RGBA_5551,
RGA_FORMAT_BGRA_5551,
RGA_FORMAT_RGBA_4444,
RGA_FORMAT_BGRA_4444,
RGA_FORMAT_XRGB_8888,
RGA_FORMAT_XBGR_8888,
RGA_FORMAT_BPP1,
RGA_FORMAT_BPP2,
RGA_FORMAT_BPP4,
RGA_FORMAT_BPP8,
RGA_FORMAT_ARGB_8888,
RGA_FORMAT_ARGB_5551,
RGA_FORMAT_ARGB_4444,
RGA_FORMAT_ABGR_8888,
RGA_FORMAT_ABGR_5551,
RGA_FORMAT_ABGR_4444,
};
const struct rga_win_data rga3_win_data[] = {

View File

@@ -225,17 +225,14 @@ static int rga_alloc_virt_addr(struct rga_virt_addr **virt_addr_p,
int ret;
int result = 0;
int order;
int format;
unsigned int count;
unsigned long start_addr;
unsigned long size;
struct page **pages = NULL;
struct rga_virt_addr *virt_addr = NULL;
rga_user_format_convert(&format, memory_parm->format);
/* Calculate page size. */
count = rga_buf_size_cal(viraddr, viraddr, viraddr, format,
count = rga_buf_size_cal(viraddr, viraddr, viraddr, memory_parm->format,
memory_parm->width, memory_parm->height,
&start_addr, NULL);
size = count * PAGE_SIZE;

View File

@@ -68,10 +68,6 @@ static bool rga_check_format(const struct rga_hw_data *data,
static bool rga_check_src0(const struct rga_hw_data *data,
struct rga_img_info_t *src0)
{
int format;
rga_user_format_convert(&format, src0->format);
if (src0->act_w < data->min_input.w ||
src0->act_h < data->min_input.h)
return false;
@@ -80,7 +76,7 @@ static bool rga_check_src0(const struct rga_hw_data *data,
src0->act_h > data->max_input.h)
return false;
if (!rga_check_format(data, src0->rd_mode, format, 0))
if (!rga_check_format(data, src0->rd_mode, src0->format, 0))
return false;
return true;
@@ -89,10 +85,6 @@ static bool rga_check_src0(const struct rga_hw_data *data,
static bool rga_check_src1(const struct rga_hw_data *data,
struct rga_img_info_t *src1)
{
int format;
rga_user_format_convert(&format, src1->format);
if (src1->act_w < data->min_input.w ||
src1->act_h < data->min_input.h)
return false;
@@ -101,7 +93,7 @@ static bool rga_check_src1(const struct rga_hw_data *data,
src1->act_h > data->max_input.h)
return false;
if (!rga_check_format(data, src1->rd_mode, format, 1))
if (!rga_check_format(data, src1->rd_mode, src1->format, 1))
return false;
return true;
@@ -110,10 +102,6 @@ static bool rga_check_src1(const struct rga_hw_data *data,
static bool rga_check_dst(const struct rga_hw_data *data,
struct rga_img_info_t *dst)
{
int format;
rga_user_format_convert(&format, dst->format);
if (dst->act_w < data->min_output.w ||
dst->act_h < data->min_output.h)
return false;
@@ -122,7 +110,7 @@ static bool rga_check_dst(const struct rga_hw_data *data,
dst->act_h > data->max_output.h)
return false;
if (!rga_check_format(data, dst->rd_mode, format, 2))
if (!rga_check_format(data, dst->rd_mode, dst->format, 2))
return false;
return true;