Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/amdgpu: add sdma instance check for gfx11 CGCG

For some ASICs, like GFX IP v11.0.1, only have one SDMA instance,
so not need to configure SDMA1_RLC_CGCG_CTRL for this case.

Signed-off-by: Tim Huang <tim.huang@amd.com>
Reviewed-by: Yifan Zhang <yifan1.zhang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

authored by

Tim Huang and committed by
Alex Deucher
00047c3d 4e3464ba

+12 -6
+12 -6
drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c
··· 5182 5182 data = REG_SET_FIELD(data, SDMA0_RLC_CGCG_CTRL, CGCG_INT_ENABLE, 1); 5183 5183 WREG32_SOC15(GC, 0, regSDMA0_RLC_CGCG_CTRL, data); 5184 5184 5185 - data = RREG32_SOC15(GC, 0, regSDMA1_RLC_CGCG_CTRL); 5186 - data = REG_SET_FIELD(data, SDMA1_RLC_CGCG_CTRL, CGCG_INT_ENABLE, 1); 5187 - WREG32_SOC15(GC, 0, regSDMA1_RLC_CGCG_CTRL, data); 5185 + /* Some ASICs only have one SDMA instance, not need to configure SDMA1 */ 5186 + if (adev->sdma.num_instances > 1) { 5187 + data = RREG32_SOC15(GC, 0, regSDMA1_RLC_CGCG_CTRL); 5188 + data = REG_SET_FIELD(data, SDMA1_RLC_CGCG_CTRL, CGCG_INT_ENABLE, 1); 5189 + WREG32_SOC15(GC, 0, regSDMA1_RLC_CGCG_CTRL, data); 5190 + } 5188 5191 } else { 5189 5192 /* Program RLC_CGCG_CGLS_CTRL */ 5190 5193 def = data = RREG32_SOC15(GC, 0, regRLC_CGCG_CGLS_CTRL); ··· 5216 5213 data &= ~SDMA0_RLC_CGCG_CTRL__CGCG_INT_ENABLE_MASK; 5217 5214 WREG32_SOC15(GC, 0, regSDMA0_RLC_CGCG_CTRL, data); 5218 5215 5219 - data = RREG32_SOC15(GC, 0, regSDMA1_RLC_CGCG_CTRL); 5220 - data &= ~SDMA1_RLC_CGCG_CTRL__CGCG_INT_ENABLE_MASK; 5221 - WREG32_SOC15(GC, 0, regSDMA1_RLC_CGCG_CTRL, data); 5216 + /* Some ASICs only have one SDMA instance, not need to configure SDMA1 */ 5217 + if (adev->sdma.num_instances > 1) { 5218 + data = RREG32_SOC15(GC, 0, regSDMA1_RLC_CGCG_CTRL); 5219 + data &= ~SDMA1_RLC_CGCG_CTRL__CGCG_INT_ENABLE_MASK; 5220 + WREG32_SOC15(GC, 0, regSDMA1_RLC_CGCG_CTRL, data); 5221 + } 5222 5222 } 5223 5223 } 5224 5224