@@ -669,6 +669,9 @@ static int vcn_v5_0_1_start_dpg_mode(struct amdgpu_vcn_inst *vinst,
669
669
if (indirect )
670
670
amdgpu_vcn_psp_update_sram (adev , inst_idx , AMDGPU_UCODE_ID_VCN0_RAM );
671
671
672
+ /* resetting ring, fw should not check RB ring */
673
+ fw_shared -> sq .queue_mode |= FW_QUEUE_RING_RESET ;
674
+
672
675
/* Pause dpg */
673
676
vcn_v5_0_1_pause_dpg_mode (vinst , & state );
674
677
@@ -681,7 +684,7 @@ static int vcn_v5_0_1_start_dpg_mode(struct amdgpu_vcn_inst *vinst,
681
684
tmp = RREG32_SOC15 (VCN , vcn_inst , regVCN_RB_ENABLE );
682
685
tmp &= ~(VCN_RB_ENABLE__RB1_EN_MASK );
683
686
WREG32_SOC15 (VCN , vcn_inst , regVCN_RB_ENABLE , tmp );
684
- fw_shared -> sq . queue_mode |= FW_QUEUE_RING_RESET ;
687
+
685
688
WREG32_SOC15 (VCN , vcn_inst , regUVD_RB_RPTR , 0 );
686
689
WREG32_SOC15 (VCN , vcn_inst , regUVD_RB_WPTR , 0 );
687
690
@@ -692,6 +695,7 @@ static int vcn_v5_0_1_start_dpg_mode(struct amdgpu_vcn_inst *vinst,
692
695
tmp = RREG32_SOC15 (VCN , vcn_inst , regVCN_RB_ENABLE );
693
696
tmp |= VCN_RB_ENABLE__RB1_EN_MASK ;
694
697
WREG32_SOC15 (VCN , vcn_inst , regVCN_RB_ENABLE , tmp );
698
+ /* resetting done, fw can check RB ring */
695
699
fw_shared -> sq .queue_mode &= ~(FW_QUEUE_RING_RESET | FW_QUEUE_DPG_HOLD_OFF );
696
700
697
701
WREG32_SOC15 (VCN , vcn_inst , regVCN_RB1_DB_CTRL ,
0 commit comments