summaryrefslogtreecommitdiff
authorHui Zhang <hui.zhang@amlogic.com>2020-08-06 11:16:21 (GMT)
committer Shen Liu <shen.liu@amlogic.com>2020-08-13 11:52:37 (GMT)
commit05b80212a758d08842fe171139d0313c3aef0ece (patch)
tree22de035decadfd885490f9fc629775cb6dbb05c2
parente6a1752902c33dee2574ea1404ad45dd37eaf39a (diff)
downloadmedia_modules-05b80212a758d08842fe171139d0313c3aef0ece.zip
media_modules-05b80212a758d08842fe171139d0313c3aef0ece.tar.gz
media_modules-05b80212a758d08842fe171139d0313c3aef0ece.tar.bz2
media_module: fix mpred memory pullution issue [1/1]
PD#SWPL-30902 Problem: there is mpred hw memory pollution when poor signal burning Solution: add hw address protect in mpred ctrl Verify: U215 Change-Id: Ia254a7ba92875f63f3086d8337de99b196333638 Signed-off-by: Hui Zhang <hui.zhang@amlogic.com>
Diffstat
-rw-r--r--drivers/frame_provider/decoder/h265/vh265.c35
1 files changed, 18 insertions, 17 deletions
diff --git a/drivers/frame_provider/decoder/h265/vh265.c b/drivers/frame_provider/decoder/h265/vh265.c
index c868d9f..e52eb39 100644
--- a/drivers/frame_provider/decoder/h265/vh265.c
+++ b/drivers/frame_provider/decoder/h265/vh265.c
@@ -4630,23 +4630,24 @@ static void config_mpred_hw(struct hevc_state_s *hevc)
WRITE_VREG(HEVC_MPRED_MV_RD_ROW_JUMP, data32);
data32 = READ_VREG(HEVC_MPRED_CTRL0);
- data32 = (hevc->slice_type |
- hevc->new_pic << 2 |
- hevc->new_tile << 3 |
- hevc->isNextSliceSegment << 4 |
- hevc->TMVPFlag << 5 |
- hevc->LDCFlag << 6 |
- hevc->ColFromL0Flag << 7 |
- above_ptr_ctrl << 8 |
- above_en << 9 |
- mv_wr_en << 10 |
- mv_rd_en << 11 |
- col_isIntra << 12 |
- buffer_linear << 13 |
- hevc->LongTerm_Curr << 14 |
- hevc->LongTerm_Col << 15 |
- hevc->lcu_size_log2 << 16 |
- cu_size_log2 << 20 | hevc->plevel << 24);
+ data32 = ((hevc->slice_type & 3) |
+ (hevc->new_pic & 1) << 2 |
+ (hevc->new_tile & 1) << 3 |
+ (hevc->isNextSliceSegment & 1)<< 4 |
+ (hevc->TMVPFlag & 1)<< 5 |
+ (hevc->LDCFlag & 1) << 6 |
+ (hevc->ColFromL0Flag & 1)<< 7 |
+ (above_ptr_ctrl & 1)<< 8 |
+ (above_en & 1) << 9 |
+ (mv_wr_en & 1) << 10 |
+ (mv_rd_en & 1)<< 11 |
+ (col_isIntra & 1)<< 12 |
+ (buffer_linear & 1)<< 13 |
+ (hevc->LongTerm_Curr & 1) << 14 |
+ (hevc->LongTerm_Col & 1) << 15 |
+ (hevc->lcu_size_log2 & 0xf) << 16 |
+ (cu_size_log2 & 0xf) << 20 | (hevc->plevel & 0x7) << 24);
+ data32 &= ~(1<< 28);
WRITE_VREG(HEVC_MPRED_CTRL0, data32);
data32 = READ_VREG(HEVC_MPRED_CTRL1);