aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c53
1 files changed, 3 insertions, 50 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c
index 36483e0d3c97..3a5ca462abf0 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c
@@ -92,7 +92,7 @@ static void amdgpu_irq_reset_work_func(struct work_struct *work)
92} 92}
93 93
94/* Disable *all* interrupts */ 94/* Disable *all* interrupts */
95static void amdgpu_irq_disable_all(struct amdgpu_device *adev) 95void amdgpu_irq_disable_all(struct amdgpu_device *adev)
96{ 96{
97 unsigned long irqflags; 97 unsigned long irqflags;
98 unsigned i, j, k; 98 unsigned i, j, k;
@@ -123,55 +123,6 @@ static void amdgpu_irq_disable_all(struct amdgpu_device *adev)
123} 123}
124 124
125/** 125/**
126 * amdgpu_irq_preinstall - drm irq preinstall callback
127 *
128 * @dev: drm dev pointer
129 *
130 * Gets the hw ready to enable irqs (all asics).
131 * This function disables all interrupt sources on the GPU.
132 */
133void amdgpu_irq_preinstall(struct drm_device *dev)
134{
135 struct amdgpu_device *adev = dev->dev_private;
136
137 /* Disable *all* interrupts */
138 amdgpu_irq_disable_all(adev);
139 /* Clear bits */
140 amdgpu_ih_process(adev);
141}
142
143/**
144 * amdgpu_irq_postinstall - drm irq preinstall callback
145 *
146 * @dev: drm dev pointer
147 *
148 * Handles stuff to be done after enabling irqs (all asics).
149 * Returns 0 on success.
150 */
151int amdgpu_irq_postinstall(struct drm_device *dev)
152{
153 dev->max_vblank_count = 0x00ffffff;
154 return 0;
155}
156
157/**
158 * amdgpu_irq_uninstall - drm irq uninstall callback
159 *
160 * @dev: drm dev pointer
161 *
162 * This function disables all interrupt sources on the GPU (all asics).
163 */
164void amdgpu_irq_uninstall(struct drm_device *dev)
165{
166 struct amdgpu_device *adev = dev->dev_private;
167
168 if (adev == NULL) {
169 return;
170 }
171 amdgpu_irq_disable_all(adev);
172}
173
174/**
175 * amdgpu_irq_handler - irq handler 126 * amdgpu_irq_handler - irq handler
176 * 127 *
177 * @int irq, void *arg: args 128 * @int irq, void *arg: args
@@ -262,6 +213,7 @@ int amdgpu_irq_init(struct amdgpu_device *adev)
262 cancel_work_sync(&adev->reset_work); 213 cancel_work_sync(&adev->reset_work);
263 return r; 214 return r;
264 } 215 }
216 adev->ddev->max_vblank_count = 0x00ffffff;
265 217
266 DRM_DEBUG("amdgpu: irq initialized.\n"); 218 DRM_DEBUG("amdgpu: irq initialized.\n");
267 return 0; 219 return 0;
@@ -307,6 +259,7 @@ void amdgpu_irq_fini(struct amdgpu_device *adev)
307 } 259 }
308 } 260 }
309 kfree(adev->irq.client[i].sources); 261 kfree(adev->irq.client[i].sources);
262 adev->irq.client[i].sources = NULL;
310 } 263 }
311} 264}
312 265