diff options
author | David S. Miller <davem@davemloft.net> | 2015-07-23 03:41:16 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2015-07-23 03:41:16 -0400 |
commit | c5e40ee287db61a79af1746954ee03ebbf1ff8a3 (patch) | |
tree | 007da00e75e9b84766ac4868421705300e1e2e14 /drivers/gpu/drm/amd/amdgpu/vi.c | |
parent | 052831879945be0d9fad2216b127147c565ec1b1 (diff) | |
parent | c5dfd654d0ec0a28fe81e7bd4d4fd984a9855e09 (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Conflicts:
net/bridge/br_mdb.c
br_mdb.c conflict was a function call being removed to fix a bug in
'net' but whose signature was changed in 'net-next'.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/vi.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/vi.c | 35 |
1 files changed, 33 insertions, 2 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/vi.c b/drivers/gpu/drm/amd/amdgpu/vi.c index fa5a4448531d..68552da40287 100644 --- a/drivers/gpu/drm/amd/amdgpu/vi.c +++ b/drivers/gpu/drm/amd/amdgpu/vi.c | |||
@@ -122,6 +122,32 @@ static void vi_smc_wreg(struct amdgpu_device *adev, u32 reg, u32 v) | |||
122 | spin_unlock_irqrestore(&adev->smc_idx_lock, flags); | 122 | spin_unlock_irqrestore(&adev->smc_idx_lock, flags); |
123 | } | 123 | } |
124 | 124 | ||
125 | /* smu_8_0_d.h */ | ||
126 | #define mmMP0PUB_IND_INDEX 0x180 | ||
127 | #define mmMP0PUB_IND_DATA 0x181 | ||
128 | |||
129 | static u32 cz_smc_rreg(struct amdgpu_device *adev, u32 reg) | ||
130 | { | ||
131 | unsigned long flags; | ||
132 | u32 r; | ||
133 | |||
134 | spin_lock_irqsave(&adev->smc_idx_lock, flags); | ||
135 | WREG32(mmMP0PUB_IND_INDEX, (reg)); | ||
136 | r = RREG32(mmMP0PUB_IND_DATA); | ||
137 | spin_unlock_irqrestore(&adev->smc_idx_lock, flags); | ||
138 | return r; | ||
139 | } | ||
140 | |||
141 | static void cz_smc_wreg(struct amdgpu_device *adev, u32 reg, u32 v) | ||
142 | { | ||
143 | unsigned long flags; | ||
144 | |||
145 | spin_lock_irqsave(&adev->smc_idx_lock, flags); | ||
146 | WREG32(mmMP0PUB_IND_INDEX, (reg)); | ||
147 | WREG32(mmMP0PUB_IND_DATA, (v)); | ||
148 | spin_unlock_irqrestore(&adev->smc_idx_lock, flags); | ||
149 | } | ||
150 | |||
125 | static u32 vi_uvd_ctx_rreg(struct amdgpu_device *adev, u32 reg) | 151 | static u32 vi_uvd_ctx_rreg(struct amdgpu_device *adev, u32 reg) |
126 | { | 152 | { |
127 | unsigned long flags; | 153 | unsigned long flags; |
@@ -1222,8 +1248,13 @@ static int vi_common_early_init(void *handle) | |||
1222 | bool smc_enabled = false; | 1248 | bool smc_enabled = false; |
1223 | struct amdgpu_device *adev = (struct amdgpu_device *)handle; | 1249 | struct amdgpu_device *adev = (struct amdgpu_device *)handle; |
1224 | 1250 | ||
1225 | adev->smc_rreg = &vi_smc_rreg; | 1251 | if (adev->flags & AMDGPU_IS_APU) { |
1226 | adev->smc_wreg = &vi_smc_wreg; | 1252 | adev->smc_rreg = &cz_smc_rreg; |
1253 | adev->smc_wreg = &cz_smc_wreg; | ||
1254 | } else { | ||
1255 | adev->smc_rreg = &vi_smc_rreg; | ||
1256 | adev->smc_wreg = &vi_smc_wreg; | ||
1257 | } | ||
1227 | adev->pcie_rreg = &vi_pcie_rreg; | 1258 | adev->pcie_rreg = &vi_pcie_rreg; |
1228 | adev->pcie_wreg = &vi_pcie_wreg; | 1259 | adev->pcie_wreg = &vi_pcie_wreg; |
1229 | adev->uvd_ctx_rreg = &vi_uvd_ctx_rreg; | 1260 | adev->uvd_ctx_rreg = &vi_uvd_ctx_rreg; |