From 5fae84dcfb74d2a102aa264a96646905b0646dcf Mon Sep 17 00:00:00 2001 From: Yandong Lin Date: Wed, 3 Mar 2021 15:03:41 +0800 Subject: [PATCH] [h265d_vdpu34x]: Fix invalid fd issue fd and offset should be set separately Signed-off-by: Yandong Lin Change-Id: I87a041c549ec9c5a713aeb37b23c1c4d0efde744 --- mpp/hal/rkdec/h265d/hal_h265d_vdpu34x.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/mpp/hal/rkdec/h265d/hal_h265d_vdpu34x.c b/mpp/hal/rkdec/h265d/hal_h265d_vdpu34x.c index 14365047..0771fbf0 100644 --- a/mpp/hal/rkdec/h265d/hal_h265d_vdpu34x.c +++ b/mpp/hal/rkdec/h265d/hal_h265d_vdpu34x.c @@ -514,14 +514,19 @@ static RK_S32 hal_h265d_v345_output_pps_packet(void *hal, void *dxva) RK_U32 fd = mpp_buffer_get_fd(reg_cxt->scaling_list_data); /* need to config addr */ + if (addr) { + MppDevRegOffsetCfg trans_cfg; - addr = fd | (addr << 10); + trans_cfg.reg_idx = 180; + trans_cfg.offset = addr; + mpp_dev_ioctl(reg_cxt, MPP_DEV_REG_OFFSET, &trans_cfg); + } - mpp_put_bits(&bp, addr, 32); - hw_reg->h265d_addr.reg180_scanlist_addr = addr; + mpp_put_bits(&bp, 0, 32); + hw_reg->h265d_addr.reg180_scanlist_addr = fd; hw_reg->common.reg012.scanlist_addr_valid_en = 1; - mpp_put_bits(&bp, 0, 70);//yandong change + mpp_put_bits(&bp, 0, 70); mpp_put_align(&bp, 64, 0xf);//128 }