Skip to content

Commit c247c02

Browse files
Rohit Khairealexdeucher
authored andcommitted
drm/amdgpu: Fix incorrect register offsets for Sienna Cichlid
RLC_CP_SCHEDULERS and RLC_SPARE_INT0 have different offsets for Sienna Cichlid Signed-off-by: Rohit Khaire <[email protected]> Reviewed-by: Alex Deucher <[email protected]> Signed-off-by: Alex Deucher <[email protected]>
1 parent b71a52f commit c247c02

File tree

1 file changed

+21
-5
lines changed

1 file changed

+21
-5
lines changed

drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,9 @@
173173
#define mmGC_THROTTLE_CTRL_Sienna_Cichlid 0x2030
174174
#define mmGC_THROTTLE_CTRL_Sienna_Cichlid_BASE_IDX 0
175175

176+
#define mmRLC_SPARE_INT_0_Sienna_Cichlid 0x4ca5
177+
#define mmRLC_SPARE_INT_0_Sienna_Cichlid_BASE_IDX 1
178+
176179
#define GFX_RLCG_GC_WRITE_OLD (0x8 << 28)
177180
#define GFX_RLCG_GC_WRITE (0x0 << 28)
178181
#define GFX_RLCG_GC_READ (0x1 << 28)
@@ -1480,8 +1483,15 @@ static u32 gfx_v10_rlcg_rw(struct amdgpu_device *adev, u32 offset, u32 v, uint32
14801483
(adev->reg_offset[GC_HWIP][0][mmSCRATCH_REG0_BASE_IDX] + mmSCRATCH_REG2) * 4;
14811484
scratch_reg3 = adev->rmmio +
14821485
(adev->reg_offset[GC_HWIP][0][mmSCRATCH_REG1_BASE_IDX] + mmSCRATCH_REG3) * 4;
1483-
spare_int = adev->rmmio +
1484-
(adev->reg_offset[GC_HWIP][0][mmRLC_SPARE_INT_BASE_IDX] + mmRLC_SPARE_INT) * 4;
1486+
1487+
if (adev->asic_type >= CHIP_SIENNA_CICHLID) {
1488+
spare_int = adev->rmmio +
1489+
(adev->reg_offset[GC_HWIP][0][mmRLC_SPARE_INT_0_Sienna_Cichlid_BASE_IDX]
1490+
+ mmRLC_SPARE_INT_0_Sienna_Cichlid) * 4;
1491+
} else {
1492+
spare_int = adev->rmmio +
1493+
(adev->reg_offset[GC_HWIP][0][mmRLC_SPARE_INT_BASE_IDX] + mmRLC_SPARE_INT) * 4;
1494+
}
14851495

14861496
grbm_cntl = adev->reg_offset[GC_HWIP][0][mmGRBM_GFX_CNTL_BASE_IDX] + mmGRBM_GFX_CNTL;
14871497
grbm_idx = adev->reg_offset[GC_HWIP][0][mmGRBM_GFX_INDEX_BASE_IDX] + mmGRBM_GFX_INDEX;
@@ -7349,9 +7359,15 @@ static int gfx_v10_0_hw_fini(void *handle)
73497359
if (amdgpu_sriov_vf(adev)) {
73507360
gfx_v10_0_cp_gfx_enable(adev, false);
73517361
/* Program KIQ position of RLC_CP_SCHEDULERS during destroy */
7352-
tmp = RREG32_SOC15(GC, 0, mmRLC_CP_SCHEDULERS);
7353-
tmp &= 0xffffff00;
7354-
WREG32_SOC15(GC, 0, mmRLC_CP_SCHEDULERS, tmp);
7362+
if (adev->asic_type >= CHIP_SIENNA_CICHLID) {
7363+
tmp = RREG32_SOC15(GC, 0, mmRLC_CP_SCHEDULERS_Sienna_Cichlid);
7364+
tmp &= 0xffffff00;
7365+
WREG32_SOC15(GC, 0, mmRLC_CP_SCHEDULERS_Sienna_Cichlid, tmp);
7366+
} else {
7367+
tmp = RREG32_SOC15(GC, 0, mmRLC_CP_SCHEDULERS);
7368+
tmp &= 0xffffff00;
7369+
WREG32_SOC15(GC, 0, mmRLC_CP_SCHEDULERS, tmp);
7370+
}
73557371

73567372
return 0;
73577373
}

0 commit comments

Comments
 (0)