mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-06 19:08:57 +09:00
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:
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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[] = {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user