@@ -176,14 +176,16 @@ static void sdma_v5_2_ring_set_wptr(struct amdgpu_ring *ring)
176
176
DRM_DEBUG ("calling WDOORBELL64(0x%08x, 0x%016llx)\n" ,
177
177
ring -> doorbell_index , ring -> wptr << 2 );
178
178
WDOORBELL64 (ring -> doorbell_index , ring -> wptr << 2 );
179
- /* SDMA seems to miss doorbells sometimes when powergating kicks in.
180
- * Updating the wptr directly will wake it. This is only safe because
181
- * we disallow gfxoff in begin_use() and then allow it again in end_use().
182
- */
183
- WREG32 (sdma_v5_2_get_reg_offset (adev , ring -> me , mmSDMA0_GFX_RB_WPTR ),
184
- lower_32_bits (ring -> wptr << 2 ));
185
- WREG32 (sdma_v5_2_get_reg_offset (adev , ring -> me , mmSDMA0_GFX_RB_WPTR_HI ),
186
- upper_32_bits (ring -> wptr << 2 ));
179
+ if (amdgpu_ip_version (adev , SDMA0_HWIP , 0 ) == IP_VERSION (5 , 2 , 1 )) {
180
+ /* SDMA seems to miss doorbells sometimes when powergating kicks in.
181
+ * Updating the wptr directly will wake it. This is only safe because
182
+ * we disallow gfxoff in begin_use() and then allow it again in end_use().
183
+ */
184
+ WREG32 (sdma_v5_2_get_reg_offset (adev , ring -> me , mmSDMA0_GFX_RB_WPTR ),
185
+ lower_32_bits (ring -> wptr << 2 ));
186
+ WREG32 (sdma_v5_2_get_reg_offset (adev , ring -> me , mmSDMA0_GFX_RB_WPTR_HI ),
187
+ upper_32_bits (ring -> wptr << 2 ));
188
+ }
187
189
} else {
188
190
DRM_DEBUG ("Not using doorbell -- "
189
191
"mmSDMA%i_GFX_RB_WPTR == 0x%08x "
0 commit comments