fix[hal_jpeg_vdpu1]: fix dec failed on RK3036 problem

For kernel 4.4 and before, if VPU only has decoder, register size is
101. Thus extra size append at offset of 164*4 will be ignored by
kernel.

Change-Id: Idf4524099615b8ffd46766f55c9c0ea481f7cb76
Signed-off-by: Johnson Ding <johnson.ding@rock-chips.com>
This commit is contained in:
Johnson Ding 2024-05-11 19:44:27 +08:00 committed by dinghaiqiang
parent be45576b34
commit 53abf03bf2
2 changed files with 10 additions and 2 deletions

View file

@ -915,10 +915,15 @@ MPP_RET hal_jpegd_vdpu1_start(void *hal, HalTaskInfo *task)
do {
MppDevRegWrCfg wr_cfg;
MppDevRegRdCfg rd_cfg;
RK_U32 reg_size = mpp_get_ioctl_version() ?
MppIoctlVersion ioctl_version = mpp_get_ioctl_version();
RK_U32 reg_size = ioctl_version ?
sizeof(((JpegdIocRegInfo *)0)->regs) :
sizeof(JpegdIocRegInfo) - EXTRA_INFO_SIZE;
if (ROCKCHIP_SOC_RK3036 == mpp_get_soc_type() &&
IOCTL_VCODEC_SERVICE == ioctl_version)
reg_size -= sizeof(((JpegdIocRegInfo *)0)->regs_diff);
wr_cfg.reg = regs;
wr_cfg.size = reg_size;
wr_cfg.offset = 0;

View file

@ -488,7 +488,10 @@ MPP_RET vcodec_service_init(void *ctx, MppClientType type)
case VPU_CLIENT_VDPU1_PP : {
name = mpp_find_device(mpp_vpu_dev);
client_type = VPU_DEC_PP;
reg_size = VDPU1_PP_REGISTERS;
if (ROCKCHIP_SOC_RK3036 == mpp_get_soc_type())
reg_size = VDPU1_REGISTERS;
else
reg_size = VDPU1_PP_REGISTERS;
} break;
case VPU_CLIENT_VDPU2_PP : {
name = mpp_find_device(mpp_vpu_dev);