Lines Matching refs:adev
56 struct amdgpu_device *adev = container_of(work, struct amdgpu_device, in amdgpu_hotplug_work_func() local
58 struct drm_device *dev = adev->ddev; in amdgpu_hotplug_work_func()
83 struct amdgpu_device *adev = container_of(work, struct amdgpu_device, in amdgpu_irq_reset_work_func() local
86 amdgpu_gpu_reset(adev); in amdgpu_irq_reset_work_func()
90 static void amdgpu_irq_disable_all(struct amdgpu_device *adev) in amdgpu_irq_disable_all() argument
96 spin_lock_irqsave(&adev->irq.lock, irqflags); in amdgpu_irq_disable_all()
98 struct amdgpu_irq_src *src = adev->irq.sources[i]; in amdgpu_irq_disable_all()
105 r = src->funcs->set(adev, src, j, in amdgpu_irq_disable_all()
112 spin_unlock_irqrestore(&adev->irq.lock, irqflags); in amdgpu_irq_disable_all()
125 struct amdgpu_device *adev = dev->dev_private; in amdgpu_irq_preinstall() local
128 amdgpu_irq_disable_all(adev); in amdgpu_irq_preinstall()
130 amdgpu_ih_process(adev); in amdgpu_irq_preinstall()
156 struct amdgpu_device *adev = dev->dev_private; in amdgpu_irq_uninstall() local
158 if (adev == NULL) { in amdgpu_irq_uninstall()
161 amdgpu_irq_disable_all(adev); in amdgpu_irq_uninstall()
174 struct amdgpu_device *adev = dev->dev_private; in amdgpu_irq_handler() local
177 ret = amdgpu_ih_process(adev); in amdgpu_irq_handler()
193 static bool amdgpu_msi_ok(struct amdgpu_device *adev) in amdgpu_msi_ok() argument
212 int amdgpu_irq_init(struct amdgpu_device *adev) in amdgpu_irq_init() argument
216 spin_lock_init(&adev->irq.lock); in amdgpu_irq_init()
217 r = drm_vblank_init(adev->ddev, adev->mode_info.num_crtc); in amdgpu_irq_init()
222 adev->irq.msi_enabled = false; in amdgpu_irq_init()
224 if (amdgpu_msi_ok(adev)) { in amdgpu_irq_init()
225 int ret = pci_enable_msi(adev->pdev); in amdgpu_irq_init()
227 adev->irq.msi_enabled = true; in amdgpu_irq_init()
228 dev_info(adev->dev, "amdgpu: using MSI.\n"); in amdgpu_irq_init()
232 INIT_WORK(&adev->hotplug_work, amdgpu_hotplug_work_func); in amdgpu_irq_init()
233 INIT_WORK(&adev->reset_work, amdgpu_irq_reset_work_func); in amdgpu_irq_init()
235 adev->irq.installed = true; in amdgpu_irq_init()
236 r = drm_irq_install(adev->ddev, adev->ddev->pdev->irq); in amdgpu_irq_init()
238 adev->irq.installed = false; in amdgpu_irq_init()
239 flush_work(&adev->hotplug_work); in amdgpu_irq_init()
254 void amdgpu_irq_fini(struct amdgpu_device *adev) in amdgpu_irq_fini() argument
258 drm_vblank_cleanup(adev->ddev); in amdgpu_irq_fini()
259 if (adev->irq.installed) { in amdgpu_irq_fini()
260 drm_irq_uninstall(adev->ddev); in amdgpu_irq_fini()
261 adev->irq.installed = false; in amdgpu_irq_fini()
262 if (adev->irq.msi_enabled) in amdgpu_irq_fini()
263 pci_disable_msi(adev->pdev); in amdgpu_irq_fini()
264 flush_work(&adev->hotplug_work); in amdgpu_irq_fini()
268 struct amdgpu_irq_src *src = adev->irq.sources[i]; in amdgpu_irq_fini()
278 adev->irq.sources[i] = NULL; in amdgpu_irq_fini()
291 int amdgpu_irq_add_id(struct amdgpu_device *adev, unsigned src_id, in amdgpu_irq_add_id() argument
297 if (adev->irq.sources[src_id] != NULL) in amdgpu_irq_add_id()
314 adev->irq.sources[src_id] = source; in amdgpu_irq_add_id()
326 void amdgpu_irq_dispatch(struct amdgpu_device *adev, in amdgpu_irq_dispatch() argument
338 src = adev->irq.sources[src_id]; in amdgpu_irq_dispatch()
344 r = src->funcs->process(adev, src, entry); in amdgpu_irq_dispatch()
358 int amdgpu_irq_update(struct amdgpu_device *adev, in amdgpu_irq_update() argument
365 spin_lock_irqsave(&adev->irq.lock, irqflags); in amdgpu_irq_update()
369 if (amdgpu_irq_enabled(adev, src, type)) in amdgpu_irq_update()
374 r = src->funcs->set(adev, src, type, state); in amdgpu_irq_update()
375 spin_unlock_irqrestore(&adev->irq.lock, irqflags); in amdgpu_irq_update()
388 int amdgpu_irq_get(struct amdgpu_device *adev, struct amdgpu_irq_src *src, in amdgpu_irq_get() argument
391 if (!adev->ddev->irq_enabled) in amdgpu_irq_get()
401 return amdgpu_irq_update(adev, src, type); in amdgpu_irq_get()
406 bool amdgpu_irq_get_delayed(struct amdgpu_device *adev, in amdgpu_irq_get_delayed() argument
424 int amdgpu_irq_put(struct amdgpu_device *adev, struct amdgpu_irq_src *src, in amdgpu_irq_put() argument
427 if (!adev->ddev->irq_enabled) in amdgpu_irq_put()
437 return amdgpu_irq_update(adev, src, type); in amdgpu_irq_put()
450 bool amdgpu_irq_enabled(struct amdgpu_device *adev, struct amdgpu_irq_src *src, in amdgpu_irq_enabled() argument
453 if (!adev->ddev->irq_enabled) in amdgpu_irq_enabled()