Lines Matching defs:rdev

54 	struct radeon_device *rdev = dev->dev_private;
56 return radeon_irq_process(rdev);
75 struct radeon_device *rdev = arg;
76 struct drm_device *dev = rdev->ddev;
98 struct radeon_device *rdev = dev->dev_private;
102 DRM_SPINLOCK_IRQSAVE(&rdev->irq.lock, irqflags);
105 atomic_set(&rdev->irq.ring_int[i], 0);
107 rdev->irq.hpd[i] = false;
109 rdev->irq.crtc_vblank_int[i] = false;
110 atomic_set(&rdev->irq.pflip[i], 0);
111 rdev->irq.afmt[i] = false;
113 radeon_irq_set(rdev);
114 DRM_SPINUNLOCK_IRQRESTORE(&rdev->irq.lock, irqflags);
116 radeon_irq_process(rdev);
142 struct radeon_device *rdev = dev->dev_private;
146 if (rdev == NULL) {
149 DRM_SPINLOCK_IRQSAVE(&rdev->irq.lock, irqflags);
152 atomic_set(&rdev->irq.ring_int[i], 0);
154 rdev->irq.hpd[i] = false;
156 rdev->irq.crtc_vblank_int[i] = false;
157 atomic_set(&rdev->irq.pflip[i], 0);
158 rdev->irq.afmt[i] = false;
160 radeon_irq_set(rdev);
161 DRM_SPINUNLOCK_IRQRESTORE(&rdev->irq.lock, irqflags);
167 * @rdev: radeon device pointer
174 static bool radeon_msi_ok(struct radeon_device *rdev)
177 if (rdev->family < CHIP_RV380)
181 if (rdev->flags & RADEON_IS_AGP)
192 if ((rdev->ddev->pci_device == 0x791f) &&
193 (rdev->ddev->pci_subvendor == 0x103c) &&
194 (rdev->ddev->pci_subdevice == 0x30c2))
198 if ((rdev->ddev->pci_device == 0x791f) &&
199 (rdev->ddev->pci_subvendor == 0x1028) &&
200 (rdev->ddev->pci_subdevice == 0x01fc))
204 if ((rdev->ddev->pci_device == 0x791f) &&
205 (rdev->ddev->pci_subvendor == 0x1028) &&
206 (rdev->ddev->pci_subdevice == 0x01fd))
210 if ((rdev->ddev->pci_device == 0x791f) &&
211 (rdev->ddev->pci_subvendor == 0x107b) &&
212 (rdev->ddev->pci_subdevice == 0x0185))
216 if (rdev->family == CHIP_RS690)
223 if (rdev->family == CHIP_RV515)
225 if (rdev->flags & RADEON_IS_IGP) {
227 if (rdev->family >= CHIP_PALM)
239 * @rdev: radeon device pointer
244 int radeon_irq_kms_init(struct radeon_device *rdev)
248 TASK_INIT(&rdev->hotplug_work, 0, radeon_hotplug_work_func, rdev);
249 TASK_INIT(&rdev->audio_work, 0, r600_audio_update_hdmi, rdev);
251 DRM_SPININIT(&rdev->irq.lock, "drm__radeon_device__irq__lock");
252 r = drm_vblank_init(rdev->ddev, rdev->num_crtc);
257 rdev->msi_enabled = 0;
259 if (radeon_msi_ok(rdev)) {
260 int ret = drm_pci_enable_msi(rdev->ddev);
262 rdev->msi_enabled = 1;
263 dev_info(rdev->dev, "radeon: using MSI.\n");
266 rdev->irq.installed = true;
267 r = drm_irq_install(rdev->ddev);
269 rdev->irq.installed = false;
279 * @rdev: radeon device pointer
283 void radeon_irq_kms_fini(struct radeon_device *rdev)
285 drm_vblank_cleanup(rdev->ddev);
286 if (rdev->irq.installed) {
287 drm_irq_uninstall(rdev->ddev);
288 rdev->irq.installed = false;
289 if (rdev->msi_enabled)
290 drm_pci_disable_msi(rdev->ddev);
292 taskqueue_drain(rdev->tq, &rdev->hotplug_work);
298 * @rdev: radeon device pointer
305 void radeon_irq_kms_sw_irq_get(struct radeon_device *rdev, int ring)
309 if (!rdev->ddev->irq_enabled)
312 if (atomic_inc_return(&rdev->irq.ring_int[ring]) == 1) {
313 DRM_SPINLOCK_IRQSAVE(&rdev->irq.lock, irqflags);
314 radeon_irq_set(rdev);
315 DRM_SPINUNLOCK_IRQRESTORE(&rdev->irq.lock, irqflags);
322 * @rdev: radeon device pointer
329 void radeon_irq_kms_sw_irq_put(struct radeon_device *rdev, int ring)
333 if (!rdev->ddev->irq_enabled)
336 if (atomic_dec_and_test(&rdev->irq.ring_int[ring])) {
337 DRM_SPINLOCK_IRQSAVE(&rdev->irq.lock, irqflags);
338 radeon_irq_set(rdev);
339 DRM_SPINUNLOCK_IRQRESTORE(&rdev->irq.lock, irqflags);
346 * @rdev: radeon device pointer
352 void radeon_irq_kms_pflip_irq_get(struct radeon_device *rdev, int crtc)
356 if (crtc < 0 || crtc >= rdev->num_crtc)
359 if (!rdev->ddev->irq_enabled)
362 if (atomic_inc_return(&rdev->irq.pflip[crtc]) == 1) {
363 DRM_SPINLOCK_IRQSAVE(&rdev->irq.lock, irqflags);
364 radeon_irq_set(rdev);
365 DRM_SPINUNLOCK_IRQRESTORE(&rdev->irq.lock, irqflags);
372 * @rdev: radeon device pointer
378 void radeon_irq_kms_pflip_irq_put(struct radeon_device *rdev, int crtc)
382 if (crtc < 0 || crtc >= rdev->num_crtc)
385 if (!rdev->ddev->irq_enabled)
388 if (atomic_dec_and_test(&rdev->irq.pflip[crtc])) {
389 DRM_SPINLOCK_IRQSAVE(&rdev->irq.lock, irqflags);
390 radeon_irq_set(rdev);
391 DRM_SPINUNLOCK_IRQRESTORE(&rdev->irq.lock, irqflags);
398 * @rdev: radeon device pointer
403 void radeon_irq_kms_enable_afmt(struct radeon_device *rdev, int block)
407 if (!rdev->ddev->irq_enabled)
410 DRM_SPINLOCK_IRQSAVE(&rdev->irq.lock, irqflags);
411 rdev->irq.afmt[block] = true;
412 radeon_irq_set(rdev);
413 DRM_SPINUNLOCK_IRQRESTORE(&rdev->irq.lock, irqflags);
420 * @rdev: radeon device pointer
425 void radeon_irq_kms_disable_afmt(struct radeon_device *rdev, int block)
429 if (!rdev->ddev->irq_enabled)
432 DRM_SPINLOCK_IRQSAVE(&rdev->irq.lock, irqflags);
433 rdev->irq.afmt[block] = false;
434 radeon_irq_set(rdev);
435 DRM_SPINUNLOCK_IRQRESTORE(&rdev->irq.lock, irqflags);
441 * @rdev: radeon device pointer
446 void radeon_irq_kms_enable_hpd(struct radeon_device *rdev, unsigned hpd_mask)
451 if (!rdev->ddev->irq_enabled)
454 DRM_SPINLOCK_IRQSAVE(&rdev->irq.lock, irqflags);
456 rdev->irq.hpd[i] |= !!(hpd_mask & (1 << i));
457 radeon_irq_set(rdev);
458 DRM_SPINUNLOCK_IRQRESTORE(&rdev->irq.lock, irqflags);
464 * @rdev: radeon device pointer
469 void radeon_irq_kms_disable_hpd(struct radeon_device *rdev, unsigned hpd_mask)
474 if (!rdev->ddev->irq_enabled)
477 DRM_SPINLOCK_IRQSAVE(&rdev->irq.lock, irqflags);
479 rdev->irq.hpd[i] &= !(hpd_mask & (1 << i));
480 radeon_irq_set(rdev);
481 DRM_SPINUNLOCK_IRQRESTORE(&rdev->irq.lock, irqflags);