diff --git a/drivers/video/rockchip/mpp/mpp_rkvdec2.c b/drivers/video/rockchip/mpp/mpp_rkvdec2.c index 1c92426cdffe..534e131fc715 100644 --- a/drivers/video/rockchip/mpp/mpp_rkvdec2.c +++ b/drivers/video/rockchip/mpp/mpp_rkvdec2.c @@ -505,6 +505,8 @@ static int rkvdec_vdpu383_run(struct mpp_dev *mpp, struct mpp_task *mpp_task) mpp_write_relaxed(mpp, RKVDEC_REG_CACHE0_SIZE_BASE, reg); /* clear cache */ mpp_write_relaxed(mpp, RKVDEC_REG_CLR_CACHE0_BASE, 1); + /* init max outstanding read */ + mpp_write_relaxed(mpp, RKVDEC_REG_MAX_READS, 0x1c); /* set registers for hardware */ for (i = 0; i < task->w_req_cnt; i++) { diff --git a/drivers/video/rockchip/mpp/mpp_rkvdec2.h b/drivers/video/rockchip/mpp/mpp_rkvdec2.h index 01bc6f08d595..90a795b39e84 100644 --- a/drivers/video/rockchip/mpp/mpp_rkvdec2.h +++ b/drivers/video/rockchip/mpp/mpp_rkvdec2.h @@ -87,6 +87,7 @@ #define RKVDEC_REG_CACHE1_SIZE_BASE 0x55c #define RKVDEC_REG_CACHE2_SIZE_BASE 0x59c #define RKVDEC_REG_CLR_CACHE0_BASE 0x510 +#define RKVDEC_REG_MAX_READS 0x518 #define RKVDEC_REG_CLR_CACHE1_BASE 0x550 #define RKVDEC_REG_CLR_CACHE2_BASE 0x590 diff --git a/drivers/video/rockchip/mpp/mpp_rkvdec2_link.c b/drivers/video/rockchip/mpp/mpp_rkvdec2_link.c index 723f1e3b0271..8a8d0ce49491 100644 --- a/drivers/video/rockchip/mpp/mpp_rkvdec2_link.c +++ b/drivers/video/rockchip/mpp/mpp_rkvdec2_link.c @@ -401,6 +401,8 @@ static void rkvdec2_clear_cache(struct mpp_dev *mpp) mpp_write_relaxed(mpp, RKVDEC_REG_CLR_CACHE0_BASE, 1); mpp_write_relaxed(mpp, RKVDEC_REG_CLR_CACHE1_BASE, 1); mpp_write_relaxed(mpp, RKVDEC_REG_CLR_CACHE2_BASE, 1); + /* init max outstanding read */ + mpp_write_relaxed(mpp, RKVDEC_REG_MAX_READS, 0x1c); } static int rkvdec2_link_enqueue(struct rkvdec_link_dev *link_dec,