@@ -60,7 +60,7 @@ static int umsch_mm_v4_0_load_microcode(struct amdgpu_umsch_mm *umsch)
6060
6161 umsch -> cmd_buf_curr_ptr = umsch -> cmd_buf_ptr ;
6262
63- if (amdgpu_ip_version (adev , VCN_HWIP , 0 ) = = IP_VERSION (4 , 0 , 5 )) {
63+ if (amdgpu_ip_version (adev , VCN_HWIP , 0 ) > = IP_VERSION (4 , 0 , 5 )) {
6464 WREG32_SOC15 (VCN , 0 , regUVD_IPX_DLDO_CONFIG ,
6565 1 << UVD_IPX_DLDO_CONFIG__ONO0_PWR_CONFIG__SHIFT );
6666 SOC15_WAIT_ON_RREG (VCN , 0 , regUVD_IPX_DLDO_STATUS ,
@@ -248,7 +248,7 @@ static int umsch_mm_v4_0_ring_stop(struct amdgpu_umsch_mm *umsch)
248248 data = REG_SET_FIELD (data , VCN_UMSCH_RB_DB_CTRL , EN , 0 );
249249 WREG32_SOC15 (VCN , 0 , regVCN_UMSCH_RB_DB_CTRL , data );
250250
251- if (amdgpu_ip_version (adev , VCN_HWIP , 0 ) = = IP_VERSION (4 , 0 , 5 )) {
251+ if (amdgpu_ip_version (adev , VCN_HWIP , 0 ) > = IP_VERSION (4 , 0 , 5 )) {
252252 WREG32_SOC15 (VCN , 0 , regUVD_IPX_DLDO_CONFIG ,
253253 2 << UVD_IPX_DLDO_CONFIG__ONO0_PWR_CONFIG__SHIFT );
254254 SOC15_WAIT_ON_RREG (VCN , 0 , regUVD_IPX_DLDO_STATUS ,
@@ -271,6 +271,8 @@ static int umsch_mm_v4_0_set_hw_resources(struct amdgpu_umsch_mm *umsch)
271271
272272 set_hw_resources .vmid_mask_mm_vcn = umsch -> vmid_mask_mm_vcn ;
273273 set_hw_resources .vmid_mask_mm_vpe = umsch -> vmid_mask_mm_vpe ;
274+ set_hw_resources .collaboration_mask_vpe =
275+ adev -> vpe .collaborate_mode ? 0x3 : 0x0 ;
274276 set_hw_resources .engine_mask = umsch -> engine_mask ;
275277
276278 set_hw_resources .vcn0_hqd_mask [0 ] = umsch -> vcn0_hqd_mask ;
@@ -346,6 +348,7 @@ static int umsch_mm_v4_0_add_queue(struct amdgpu_umsch_mm *umsch,
346348 add_queue .h_queue = input_ptr -> h_queue ;
347349 add_queue .vm_context_cntl = input_ptr -> vm_context_cntl ;
348350 add_queue .is_context_suspended = input_ptr -> is_context_suspended ;
351+ add_queue .collaboration_mode = adev -> vpe .collaborate_mode ? 1 : 0 ;
349352
350353 add_queue .api_status .api_completion_fence_addr = umsch -> ring .fence_drv .gpu_addr ;
351354 add_queue .api_status .api_completion_fence_value = ++ umsch -> ring .fence_drv .sync_seq ;
0 commit comments