drm/amdgpu: set proper index/data pair for smc regs on CZ (v2)
v2: squash in later fix Reviewed-by: Christian König <christian.koenig@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
974e6b641f
commit
7b92cdbfe2
|
@ -122,6 +122,32 @@ static void vi_smc_wreg(struct amdgpu_device *adev, u32 reg, u32 v)
|
||||||
spin_unlock_irqrestore(&adev->smc_idx_lock, flags);
|
spin_unlock_irqrestore(&adev->smc_idx_lock, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* smu_8_0_d.h */
|
||||||
|
#define mmMP0PUB_IND_INDEX 0x180
|
||||||
|
#define mmMP0PUB_IND_DATA 0x181
|
||||||
|
|
||||||
|
static u32 cz_smc_rreg(struct amdgpu_device *adev, u32 reg)
|
||||||
|
{
|
||||||
|
unsigned long flags;
|
||||||
|
u32 r;
|
||||||
|
|
||||||
|
spin_lock_irqsave(&adev->smc_idx_lock, flags);
|
||||||
|
WREG32(mmMP0PUB_IND_INDEX, (reg));
|
||||||
|
r = RREG32(mmMP0PUB_IND_DATA);
|
||||||
|
spin_unlock_irqrestore(&adev->smc_idx_lock, flags);
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void cz_smc_wreg(struct amdgpu_device *adev, u32 reg, u32 v)
|
||||||
|
{
|
||||||
|
unsigned long flags;
|
||||||
|
|
||||||
|
spin_lock_irqsave(&adev->smc_idx_lock, flags);
|
||||||
|
WREG32(mmMP0PUB_IND_INDEX, (reg));
|
||||||
|
WREG32(mmMP0PUB_IND_DATA, (v));
|
||||||
|
spin_unlock_irqrestore(&adev->smc_idx_lock, flags);
|
||||||
|
}
|
||||||
|
|
||||||
static u32 vi_uvd_ctx_rreg(struct amdgpu_device *adev, u32 reg)
|
static u32 vi_uvd_ctx_rreg(struct amdgpu_device *adev, u32 reg)
|
||||||
{
|
{
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
@ -1222,8 +1248,13 @@ static int vi_common_early_init(void *handle)
|
||||||
bool smc_enabled = false;
|
bool smc_enabled = false;
|
||||||
struct amdgpu_device *adev = (struct amdgpu_device *)handle;
|
struct amdgpu_device *adev = (struct amdgpu_device *)handle;
|
||||||
|
|
||||||
adev->smc_rreg = &vi_smc_rreg;
|
if (adev->flags & AMDGPU_IS_APU) {
|
||||||
adev->smc_wreg = &vi_smc_wreg;
|
adev->smc_rreg = &cz_smc_rreg;
|
||||||
|
adev->smc_wreg = &cz_smc_wreg;
|
||||||
|
} else {
|
||||||
|
adev->smc_rreg = &vi_smc_rreg;
|
||||||
|
adev->smc_wreg = &vi_smc_wreg;
|
||||||
|
}
|
||||||
adev->pcie_rreg = &vi_pcie_rreg;
|
adev->pcie_rreg = &vi_pcie_rreg;
|
||||||
adev->pcie_wreg = &vi_pcie_wreg;
|
adev->pcie_wreg = &vi_pcie_wreg;
|
||||||
adev->uvd_ctx_rreg = &vi_uvd_ctx_rreg;
|
adev->uvd_ctx_rreg = &vi_uvd_ctx_rreg;
|
||||||
|
|
Loading…
Reference in New Issue