diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_device.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c index aa146452b4f6..df0953d3b1ab 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | |||
@@ -35,6 +35,7 @@ | |||
35 | #include <linux/vga_switcheroo.h> | 35 | #include <linux/vga_switcheroo.h> |
36 | #include <linux/efi.h> | 36 | #include <linux/efi.h> |
37 | #include "amdgpu.h" | 37 | #include "amdgpu.h" |
38 | #include "amdgpu_trace.h" | ||
38 | #include "amdgpu_i2c.h" | 39 | #include "amdgpu_i2c.h" |
39 | #include "atom.h" | 40 | #include "atom.h" |
40 | #include "amdgpu_atombios.h" | 41 | #include "amdgpu_atombios.h" |
@@ -79,24 +80,27 @@ bool amdgpu_device_is_px(struct drm_device *dev) | |||
79 | uint32_t amdgpu_mm_rreg(struct amdgpu_device *adev, uint32_t reg, | 80 | uint32_t amdgpu_mm_rreg(struct amdgpu_device *adev, uint32_t reg, |
80 | bool always_indirect) | 81 | bool always_indirect) |
81 | { | 82 | { |
83 | uint32_t ret; | ||
84 | |||
82 | if ((reg * 4) < adev->rmmio_size && !always_indirect) | 85 | if ((reg * 4) < adev->rmmio_size && !always_indirect) |
83 | return readl(((void __iomem *)adev->rmmio) + (reg * 4)); | 86 | ret = readl(((void __iomem *)adev->rmmio) + (reg * 4)); |
84 | else { | 87 | else { |
85 | unsigned long flags; | 88 | unsigned long flags; |
86 | uint32_t ret; | ||
87 | 89 | ||
88 | spin_lock_irqsave(&adev->mmio_idx_lock, flags); | 90 | spin_lock_irqsave(&adev->mmio_idx_lock, flags); |
89 | writel((reg * 4), ((void __iomem *)adev->rmmio) + (mmMM_INDEX * 4)); | 91 | writel((reg * 4), ((void __iomem *)adev->rmmio) + (mmMM_INDEX * 4)); |
90 | ret = readl(((void __iomem *)adev->rmmio) + (mmMM_DATA * 4)); | 92 | ret = readl(((void __iomem *)adev->rmmio) + (mmMM_DATA * 4)); |
91 | spin_unlock_irqrestore(&adev->mmio_idx_lock, flags); | 93 | spin_unlock_irqrestore(&adev->mmio_idx_lock, flags); |
92 | |||
93 | return ret; | ||
94 | } | 94 | } |
95 | trace_amdgpu_mm_rreg(adev->pdev->device, reg, ret); | ||
96 | return ret; | ||
95 | } | 97 | } |
96 | 98 | ||
97 | void amdgpu_mm_wreg(struct amdgpu_device *adev, uint32_t reg, uint32_t v, | 99 | void amdgpu_mm_wreg(struct amdgpu_device *adev, uint32_t reg, uint32_t v, |
98 | bool always_indirect) | 100 | bool always_indirect) |
99 | { | 101 | { |
102 | trace_amdgpu_mm_wreg(adev->pdev->device, reg, v); | ||
103 | |||
100 | if ((reg * 4) < adev->rmmio_size && !always_indirect) | 104 | if ((reg * 4) < adev->rmmio_size && !always_indirect) |
101 | writel(v, ((void __iomem *)adev->rmmio) + (reg * 4)); | 105 | writel(v, ((void __iomem *)adev->rmmio) + (reg * 4)); |
102 | else { | 106 | else { |