Lines Matching refs:rdev
51 struct radeon_device *rdev = dev->dev_private; in radeon_driver_irq_handler_kms() local
54 ret = radeon_irq_process(rdev); in radeon_driver_irq_handler_kms()
76 struct radeon_device *rdev = container_of(work, struct radeon_device, in radeon_hotplug_work_func() local
78 struct drm_device *dev = rdev->ddev; in radeon_hotplug_work_func()
84 if (!rdev->mode_info.mode_config_initialized) in radeon_hotplug_work_func()
99 struct radeon_device *rdev = container_of(work, struct radeon_device, in radeon_dp_work_func() local
101 struct drm_device *dev = rdev->ddev; in radeon_dp_work_func()
121 struct radeon_device *rdev = dev->dev_private; in radeon_driver_irq_preinstall_kms() local
125 spin_lock_irqsave(&rdev->irq.lock, irqflags); in radeon_driver_irq_preinstall_kms()
128 atomic_set(&rdev->irq.ring_int[i], 0); in radeon_driver_irq_preinstall_kms()
129 rdev->irq.dpm_thermal = false; in radeon_driver_irq_preinstall_kms()
131 rdev->irq.hpd[i] = false; in radeon_driver_irq_preinstall_kms()
133 rdev->irq.crtc_vblank_int[i] = false; in radeon_driver_irq_preinstall_kms()
134 atomic_set(&rdev->irq.pflip[i], 0); in radeon_driver_irq_preinstall_kms()
135 rdev->irq.afmt[i] = false; in radeon_driver_irq_preinstall_kms()
137 radeon_irq_set(rdev); in radeon_driver_irq_preinstall_kms()
138 spin_unlock_irqrestore(&rdev->irq.lock, irqflags); in radeon_driver_irq_preinstall_kms()
140 radeon_irq_process(rdev); in radeon_driver_irq_preinstall_kms()
153 struct radeon_device *rdev = dev->dev_private; in radeon_driver_irq_postinstall_kms() local
155 if (ASIC_IS_AVIVO(rdev)) in radeon_driver_irq_postinstall_kms()
172 struct radeon_device *rdev = dev->dev_private; in radeon_driver_irq_uninstall_kms() local
176 if (rdev == NULL) { in radeon_driver_irq_uninstall_kms()
179 spin_lock_irqsave(&rdev->irq.lock, irqflags); in radeon_driver_irq_uninstall_kms()
182 atomic_set(&rdev->irq.ring_int[i], 0); in radeon_driver_irq_uninstall_kms()
183 rdev->irq.dpm_thermal = false; in radeon_driver_irq_uninstall_kms()
185 rdev->irq.hpd[i] = false; in radeon_driver_irq_uninstall_kms()
187 rdev->irq.crtc_vblank_int[i] = false; in radeon_driver_irq_uninstall_kms()
188 atomic_set(&rdev->irq.pflip[i], 0); in radeon_driver_irq_uninstall_kms()
189 rdev->irq.afmt[i] = false; in radeon_driver_irq_uninstall_kms()
191 radeon_irq_set(rdev); in radeon_driver_irq_uninstall_kms()
192 spin_unlock_irqrestore(&rdev->irq.lock, irqflags); in radeon_driver_irq_uninstall_kms()
205 static bool radeon_msi_ok(struct radeon_device *rdev) in radeon_msi_ok() argument
208 if (rdev->family < CHIP_RV380) in radeon_msi_ok()
212 if (rdev->flags & RADEON_IS_AGP) in radeon_msi_ok()
220 if (rdev->family < CHIP_BONAIRE) { in radeon_msi_ok()
221 dev_info(rdev->dev, "radeon: MSI limited to 32-bit\n"); in radeon_msi_ok()
222 rdev->pdev->no_64bit_msi = 1; in radeon_msi_ok()
233 if ((rdev->pdev->device == 0x791f) && in radeon_msi_ok()
234 (rdev->pdev->subsystem_vendor == 0x103c) && in radeon_msi_ok()
235 (rdev->pdev->subsystem_device == 0x30c2)) in radeon_msi_ok()
239 if ((rdev->pdev->device == 0x791f) && in radeon_msi_ok()
240 (rdev->pdev->subsystem_vendor == 0x1028) && in radeon_msi_ok()
241 (rdev->pdev->subsystem_device == 0x01fc)) in radeon_msi_ok()
245 if ((rdev->pdev->device == 0x791f) && in radeon_msi_ok()
246 (rdev->pdev->subsystem_vendor == 0x1028) && in radeon_msi_ok()
247 (rdev->pdev->subsystem_device == 0x01fd)) in radeon_msi_ok()
251 if ((rdev->pdev->device == 0x791f) && in radeon_msi_ok()
252 (rdev->pdev->subsystem_vendor == 0x107b) && in radeon_msi_ok()
253 (rdev->pdev->subsystem_device == 0x0185)) in radeon_msi_ok()
257 if (rdev->family == CHIP_RS690) in radeon_msi_ok()
264 if (rdev->family == CHIP_RV515) in radeon_msi_ok()
266 if (rdev->flags & RADEON_IS_IGP) { in radeon_msi_ok()
268 if (rdev->family >= CHIP_PALM) in radeon_msi_ok()
285 int radeon_irq_kms_init(struct radeon_device *rdev) in radeon_irq_kms_init() argument
289 spin_lock_init(&rdev->irq.lock); in radeon_irq_kms_init()
290 r = drm_vblank_init(rdev->ddev, rdev->num_crtc); in radeon_irq_kms_init()
295 rdev->msi_enabled = 0; in radeon_irq_kms_init()
297 if (radeon_msi_ok(rdev)) { in radeon_irq_kms_init()
298 int ret = pci_enable_msi(rdev->pdev); in radeon_irq_kms_init()
300 rdev->msi_enabled = 1; in radeon_irq_kms_init()
301 dev_info(rdev->dev, "radeon: using MSI.\n"); in radeon_irq_kms_init()
305 INIT_DELAYED_WORK(&rdev->hotplug_work, radeon_hotplug_work_func); in radeon_irq_kms_init()
306 INIT_WORK(&rdev->dp_work, radeon_dp_work_func); in radeon_irq_kms_init()
307 INIT_WORK(&rdev->audio_work, r600_audio_update_hdmi); in radeon_irq_kms_init()
309 rdev->irq.installed = true; in radeon_irq_kms_init()
310 r = drm_irq_install(rdev->ddev, rdev->ddev->pdev->irq); in radeon_irq_kms_init()
312 rdev->irq.installed = false; in radeon_irq_kms_init()
313 flush_delayed_work(&rdev->hotplug_work); in radeon_irq_kms_init()
328 void radeon_irq_kms_fini(struct radeon_device *rdev) in radeon_irq_kms_fini() argument
330 drm_vblank_cleanup(rdev->ddev); in radeon_irq_kms_fini()
331 if (rdev->irq.installed) { in radeon_irq_kms_fini()
332 drm_irq_uninstall(rdev->ddev); in radeon_irq_kms_fini()
333 rdev->irq.installed = false; in radeon_irq_kms_fini()
334 if (rdev->msi_enabled) in radeon_irq_kms_fini()
335 pci_disable_msi(rdev->pdev); in radeon_irq_kms_fini()
336 flush_delayed_work(&rdev->hotplug_work); in radeon_irq_kms_fini()
350 void radeon_irq_kms_sw_irq_get(struct radeon_device *rdev, int ring) in radeon_irq_kms_sw_irq_get() argument
354 if (!rdev->ddev->irq_enabled) in radeon_irq_kms_sw_irq_get()
357 if (atomic_inc_return(&rdev->irq.ring_int[ring]) == 1) { in radeon_irq_kms_sw_irq_get()
358 spin_lock_irqsave(&rdev->irq.lock, irqflags); in radeon_irq_kms_sw_irq_get()
359 radeon_irq_set(rdev); in radeon_irq_kms_sw_irq_get()
360 spin_unlock_irqrestore(&rdev->irq.lock, irqflags); in radeon_irq_kms_sw_irq_get()
374 bool radeon_irq_kms_sw_irq_get_delayed(struct radeon_device *rdev, int ring) in radeon_irq_kms_sw_irq_get_delayed() argument
376 return atomic_inc_return(&rdev->irq.ring_int[ring]) == 1; in radeon_irq_kms_sw_irq_get_delayed()
389 void radeon_irq_kms_sw_irq_put(struct radeon_device *rdev, int ring) in radeon_irq_kms_sw_irq_put() argument
393 if (!rdev->ddev->irq_enabled) in radeon_irq_kms_sw_irq_put()
396 if (atomic_dec_and_test(&rdev->irq.ring_int[ring])) { in radeon_irq_kms_sw_irq_put()
397 spin_lock_irqsave(&rdev->irq.lock, irqflags); in radeon_irq_kms_sw_irq_put()
398 radeon_irq_set(rdev); in radeon_irq_kms_sw_irq_put()
399 spin_unlock_irqrestore(&rdev->irq.lock, irqflags); in radeon_irq_kms_sw_irq_put()
412 void radeon_irq_kms_pflip_irq_get(struct radeon_device *rdev, int crtc) in radeon_irq_kms_pflip_irq_get() argument
416 if (crtc < 0 || crtc >= rdev->num_crtc) in radeon_irq_kms_pflip_irq_get()
419 if (!rdev->ddev->irq_enabled) in radeon_irq_kms_pflip_irq_get()
422 if (atomic_inc_return(&rdev->irq.pflip[crtc]) == 1) { in radeon_irq_kms_pflip_irq_get()
423 spin_lock_irqsave(&rdev->irq.lock, irqflags); in radeon_irq_kms_pflip_irq_get()
424 radeon_irq_set(rdev); in radeon_irq_kms_pflip_irq_get()
425 spin_unlock_irqrestore(&rdev->irq.lock, irqflags); in radeon_irq_kms_pflip_irq_get()
438 void radeon_irq_kms_pflip_irq_put(struct radeon_device *rdev, int crtc) in radeon_irq_kms_pflip_irq_put() argument
442 if (crtc < 0 || crtc >= rdev->num_crtc) in radeon_irq_kms_pflip_irq_put()
445 if (!rdev->ddev->irq_enabled) in radeon_irq_kms_pflip_irq_put()
448 if (atomic_dec_and_test(&rdev->irq.pflip[crtc])) { in radeon_irq_kms_pflip_irq_put()
449 spin_lock_irqsave(&rdev->irq.lock, irqflags); in radeon_irq_kms_pflip_irq_put()
450 radeon_irq_set(rdev); in radeon_irq_kms_pflip_irq_put()
451 spin_unlock_irqrestore(&rdev->irq.lock, irqflags); in radeon_irq_kms_pflip_irq_put()
463 void radeon_irq_kms_enable_afmt(struct radeon_device *rdev, int block) in radeon_irq_kms_enable_afmt() argument
467 if (!rdev->ddev->irq_enabled) in radeon_irq_kms_enable_afmt()
470 spin_lock_irqsave(&rdev->irq.lock, irqflags); in radeon_irq_kms_enable_afmt()
471 rdev->irq.afmt[block] = true; in radeon_irq_kms_enable_afmt()
472 radeon_irq_set(rdev); in radeon_irq_kms_enable_afmt()
473 spin_unlock_irqrestore(&rdev->irq.lock, irqflags); in radeon_irq_kms_enable_afmt()
485 void radeon_irq_kms_disable_afmt(struct radeon_device *rdev, int block) in radeon_irq_kms_disable_afmt() argument
489 if (!rdev->ddev->irq_enabled) in radeon_irq_kms_disable_afmt()
492 spin_lock_irqsave(&rdev->irq.lock, irqflags); in radeon_irq_kms_disable_afmt()
493 rdev->irq.afmt[block] = false; in radeon_irq_kms_disable_afmt()
494 radeon_irq_set(rdev); in radeon_irq_kms_disable_afmt()
495 spin_unlock_irqrestore(&rdev->irq.lock, irqflags); in radeon_irq_kms_disable_afmt()
506 void radeon_irq_kms_enable_hpd(struct radeon_device *rdev, unsigned hpd_mask) in radeon_irq_kms_enable_hpd() argument
511 if (!rdev->ddev->irq_enabled) in radeon_irq_kms_enable_hpd()
514 spin_lock_irqsave(&rdev->irq.lock, irqflags); in radeon_irq_kms_enable_hpd()
516 rdev->irq.hpd[i] |= !!(hpd_mask & (1 << i)); in radeon_irq_kms_enable_hpd()
517 radeon_irq_set(rdev); in radeon_irq_kms_enable_hpd()
518 spin_unlock_irqrestore(&rdev->irq.lock, irqflags); in radeon_irq_kms_enable_hpd()
529 void radeon_irq_kms_disable_hpd(struct radeon_device *rdev, unsigned hpd_mask) in radeon_irq_kms_disable_hpd() argument
534 if (!rdev->ddev->irq_enabled) in radeon_irq_kms_disable_hpd()
537 spin_lock_irqsave(&rdev->irq.lock, irqflags); in radeon_irq_kms_disable_hpd()
539 rdev->irq.hpd[i] &= !(hpd_mask & (1 << i)); in radeon_irq_kms_disable_hpd()
540 radeon_irq_set(rdev); in radeon_irq_kms_disable_hpd()
541 spin_unlock_irqrestore(&rdev->irq.lock, irqflags); in radeon_irq_kms_disable_hpd()