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

drm/amdgpu: add ih ip block for sienna_cichlid

Update IH handling for sienna_cichlid

Signed-off-by: Likun Gao <Likun.Gao@amd.com>
Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

authored by

Likun Gao and committed by
Alex Deucher
757b3af8 0b3df16b

+18 -4
+17 -4
drivers/gpu/drm/amd/amdgpu/navi10_ih.c
··· 34 34 35 35 #define MAX_REARM_RETRY 10 36 36 37 + #define mmIH_CHICKEN_Sienna_Cichlid 0x018d 38 + #define mmIH_CHICKEN_Sienna_Cichlid_BASE_IDX 0 39 + 37 40 static void navi10_ih_set_interrupt_funcs(struct amdgpu_device *adev); 38 41 39 42 /** ··· 268 265 269 266 if (unlikely(adev->firmware.load_type == AMDGPU_FW_LOAD_DIRECT)) { 270 267 if (ih->use_bus_addr) { 271 - ih_chicken = RREG32_SOC15(OSSSYS, 0, mmIH_CHICKEN); 272 - ih_chicken = REG_SET_FIELD(ih_chicken, 273 - IH_CHICKEN, MC_SPACE_GPA_ENABLE, 1); 274 - WREG32_SOC15(OSSSYS, 0, mmIH_CHICKEN, ih_chicken); 268 + switch (adev->asic_type) { 269 + case CHIP_SIENNA_CICHLID: 270 + ih_chicken = RREG32_SOC15(OSSSYS, 0, mmIH_CHICKEN_Sienna_Cichlid); 271 + ih_chicken = REG_SET_FIELD(ih_chicken, 272 + IH_CHICKEN, MC_SPACE_GPA_ENABLE, 1); 273 + WREG32_SOC15(OSSSYS, 0, mmIH_CHICKEN_Sienna_Cichlid, ih_chicken); 274 + break; 275 + default: 276 + ih_chicken = RREG32_SOC15(OSSSYS, 0, mmIH_CHICKEN); 277 + ih_chicken = REG_SET_FIELD(ih_chicken, 278 + IH_CHICKEN, MC_SPACE_GPA_ENABLE, 1); 279 + WREG32_SOC15(OSSSYS, 0, mmIH_CHICKEN, ih_chicken); 280 + break; 281 + } 275 282 } 276 283 } 277 284
+1
drivers/gpu/drm/amd/amdgpu/nv.c
··· 486 486 case CHIP_SIENNA_CICHLID: 487 487 amdgpu_device_ip_block_add(adev, &nv_common_ip_block); 488 488 amdgpu_device_ip_block_add(adev, &gmc_v10_0_ip_block); 489 + amdgpu_device_ip_block_add(adev, &navi10_ih_ip_block); 489 490 break; 490 491 default: 491 492 return -EINVAL;