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()
94 struct radeon_device *rdev = container_of(work, struct radeon_device, in radeon_dp_work_func() local
96 struct drm_device *dev = rdev->ddev; in radeon_dp_work_func()
116 struct radeon_device *rdev = dev->dev_private; in radeon_driver_irq_preinstall_kms() local
120 spin_lock_irqsave(&rdev->irq.lock, irqflags); in radeon_driver_irq_preinstall_kms()
123 atomic_set(&rdev->irq.ring_int[i], 0); in radeon_driver_irq_preinstall_kms()
124 rdev->irq.dpm_thermal = false; in radeon_driver_irq_preinstall_kms()
126 rdev->irq.hpd[i] = false; in radeon_driver_irq_preinstall_kms()
128 rdev->irq.crtc_vblank_int[i] = false; in radeon_driver_irq_preinstall_kms()
129 atomic_set(&rdev->irq.pflip[i], 0); in radeon_driver_irq_preinstall_kms()
130 rdev->irq.afmt[i] = false; in radeon_driver_irq_preinstall_kms()
132 radeon_irq_set(rdev); in radeon_driver_irq_preinstall_kms()
133 spin_unlock_irqrestore(&rdev->irq.lock, irqflags); in radeon_driver_irq_preinstall_kms()
135 radeon_irq_process(rdev); in radeon_driver_irq_preinstall_kms()
161 struct radeon_device *rdev = dev->dev_private; in radeon_driver_irq_uninstall_kms() local
165 if (rdev == NULL) { in radeon_driver_irq_uninstall_kms()
168 spin_lock_irqsave(&rdev->irq.lock, irqflags); in radeon_driver_irq_uninstall_kms()
171 atomic_set(&rdev->irq.ring_int[i], 0); in radeon_driver_irq_uninstall_kms()
172 rdev->irq.dpm_thermal = false; in radeon_driver_irq_uninstall_kms()
174 rdev->irq.hpd[i] = false; in radeon_driver_irq_uninstall_kms()
176 rdev->irq.crtc_vblank_int[i] = false; in radeon_driver_irq_uninstall_kms()
177 atomic_set(&rdev->irq.pflip[i], 0); in radeon_driver_irq_uninstall_kms()
178 rdev->irq.afmt[i] = false; in radeon_driver_irq_uninstall_kms()
180 radeon_irq_set(rdev); in radeon_driver_irq_uninstall_kms()
181 spin_unlock_irqrestore(&rdev->irq.lock, irqflags); in radeon_driver_irq_uninstall_kms()
194 static bool radeon_msi_ok(struct radeon_device *rdev) in radeon_msi_ok() argument
197 if (rdev->family < CHIP_RV380) in radeon_msi_ok()
201 if (rdev->flags & RADEON_IS_AGP) in radeon_msi_ok()
209 if (rdev->family < CHIP_BONAIRE) { in radeon_msi_ok()
210 dev_info(rdev->dev, "radeon: MSI limited to 32-bit\n"); in radeon_msi_ok()
211 rdev->pdev->no_64bit_msi = 1; in radeon_msi_ok()
222 if ((rdev->pdev->device == 0x791f) && in radeon_msi_ok()
223 (rdev->pdev->subsystem_vendor == 0x103c) && in radeon_msi_ok()
224 (rdev->pdev->subsystem_device == 0x30c2)) in radeon_msi_ok()
228 if ((rdev->pdev->device == 0x791f) && in radeon_msi_ok()
229 (rdev->pdev->subsystem_vendor == 0x1028) && in radeon_msi_ok()
230 (rdev->pdev->subsystem_device == 0x01fc)) in radeon_msi_ok()
234 if ((rdev->pdev->device == 0x791f) && in radeon_msi_ok()
235 (rdev->pdev->subsystem_vendor == 0x1028) && in radeon_msi_ok()
236 (rdev->pdev->subsystem_device == 0x01fd)) in radeon_msi_ok()
240 if ((rdev->pdev->device == 0x791f) && in radeon_msi_ok()
241 (rdev->pdev->subsystem_vendor == 0x107b) && in radeon_msi_ok()
242 (rdev->pdev->subsystem_device == 0x0185)) in radeon_msi_ok()
246 if (rdev->family == CHIP_RS690) in radeon_msi_ok()
253 if (rdev->family == CHIP_RV515) in radeon_msi_ok()
255 if (rdev->flags & RADEON_IS_IGP) { in radeon_msi_ok()
257 if (rdev->family >= CHIP_PALM) in radeon_msi_ok()
274 int radeon_irq_kms_init(struct radeon_device *rdev) in radeon_irq_kms_init() argument
278 spin_lock_init(&rdev->irq.lock); in radeon_irq_kms_init()
279 r = drm_vblank_init(rdev->ddev, rdev->num_crtc); in radeon_irq_kms_init()
284 rdev->msi_enabled = 0; in radeon_irq_kms_init()
286 if (radeon_msi_ok(rdev)) { in radeon_irq_kms_init()
287 int ret = pci_enable_msi(rdev->pdev); in radeon_irq_kms_init()
289 rdev->msi_enabled = 1; in radeon_irq_kms_init()
290 dev_info(rdev->dev, "radeon: using MSI.\n"); in radeon_irq_kms_init()
294 INIT_WORK(&rdev->hotplug_work, radeon_hotplug_work_func); in radeon_irq_kms_init()
295 INIT_WORK(&rdev->dp_work, radeon_dp_work_func); in radeon_irq_kms_init()
296 INIT_WORK(&rdev->audio_work, r600_audio_update_hdmi); in radeon_irq_kms_init()
298 rdev->irq.installed = true; in radeon_irq_kms_init()
299 r = drm_irq_install(rdev->ddev, rdev->ddev->pdev->irq); in radeon_irq_kms_init()
301 rdev->irq.installed = false; in radeon_irq_kms_init()
302 flush_work(&rdev->hotplug_work); in radeon_irq_kms_init()
317 void radeon_irq_kms_fini(struct radeon_device *rdev) in radeon_irq_kms_fini() argument
319 drm_vblank_cleanup(rdev->ddev); in radeon_irq_kms_fini()
320 if (rdev->irq.installed) { in radeon_irq_kms_fini()
321 drm_irq_uninstall(rdev->ddev); in radeon_irq_kms_fini()
322 rdev->irq.installed = false; in radeon_irq_kms_fini()
323 if (rdev->msi_enabled) in radeon_irq_kms_fini()
324 pci_disable_msi(rdev->pdev); in radeon_irq_kms_fini()
325 flush_work(&rdev->hotplug_work); in radeon_irq_kms_fini()
339 void radeon_irq_kms_sw_irq_get(struct radeon_device *rdev, int ring) in radeon_irq_kms_sw_irq_get() argument
343 if (!rdev->ddev->irq_enabled) in radeon_irq_kms_sw_irq_get()
346 if (atomic_inc_return(&rdev->irq.ring_int[ring]) == 1) { in radeon_irq_kms_sw_irq_get()
347 spin_lock_irqsave(&rdev->irq.lock, irqflags); in radeon_irq_kms_sw_irq_get()
348 radeon_irq_set(rdev); in radeon_irq_kms_sw_irq_get()
349 spin_unlock_irqrestore(&rdev->irq.lock, irqflags); in radeon_irq_kms_sw_irq_get()
363 bool radeon_irq_kms_sw_irq_get_delayed(struct radeon_device *rdev, int ring) in radeon_irq_kms_sw_irq_get_delayed() argument
365 return atomic_inc_return(&rdev->irq.ring_int[ring]) == 1; in radeon_irq_kms_sw_irq_get_delayed()
378 void radeon_irq_kms_sw_irq_put(struct radeon_device *rdev, int ring) in radeon_irq_kms_sw_irq_put() argument
382 if (!rdev->ddev->irq_enabled) in radeon_irq_kms_sw_irq_put()
385 if (atomic_dec_and_test(&rdev->irq.ring_int[ring])) { in radeon_irq_kms_sw_irq_put()
386 spin_lock_irqsave(&rdev->irq.lock, irqflags); in radeon_irq_kms_sw_irq_put()
387 radeon_irq_set(rdev); in radeon_irq_kms_sw_irq_put()
388 spin_unlock_irqrestore(&rdev->irq.lock, irqflags); in radeon_irq_kms_sw_irq_put()
401 void radeon_irq_kms_pflip_irq_get(struct radeon_device *rdev, int crtc) in radeon_irq_kms_pflip_irq_get() argument
405 if (crtc < 0 || crtc >= rdev->num_crtc) in radeon_irq_kms_pflip_irq_get()
408 if (!rdev->ddev->irq_enabled) in radeon_irq_kms_pflip_irq_get()
411 if (atomic_inc_return(&rdev->irq.pflip[crtc]) == 1) { in radeon_irq_kms_pflip_irq_get()
412 spin_lock_irqsave(&rdev->irq.lock, irqflags); in radeon_irq_kms_pflip_irq_get()
413 radeon_irq_set(rdev); in radeon_irq_kms_pflip_irq_get()
414 spin_unlock_irqrestore(&rdev->irq.lock, irqflags); in radeon_irq_kms_pflip_irq_get()
427 void radeon_irq_kms_pflip_irq_put(struct radeon_device *rdev, int crtc) in radeon_irq_kms_pflip_irq_put() argument
431 if (crtc < 0 || crtc >= rdev->num_crtc) in radeon_irq_kms_pflip_irq_put()
434 if (!rdev->ddev->irq_enabled) in radeon_irq_kms_pflip_irq_put()
437 if (atomic_dec_and_test(&rdev->irq.pflip[crtc])) { in radeon_irq_kms_pflip_irq_put()
438 spin_lock_irqsave(&rdev->irq.lock, irqflags); in radeon_irq_kms_pflip_irq_put()
439 radeon_irq_set(rdev); in radeon_irq_kms_pflip_irq_put()
440 spin_unlock_irqrestore(&rdev->irq.lock, irqflags); in radeon_irq_kms_pflip_irq_put()
452 void radeon_irq_kms_enable_afmt(struct radeon_device *rdev, int block) in radeon_irq_kms_enable_afmt() argument
456 if (!rdev->ddev->irq_enabled) in radeon_irq_kms_enable_afmt()
459 spin_lock_irqsave(&rdev->irq.lock, irqflags); in radeon_irq_kms_enable_afmt()
460 rdev->irq.afmt[block] = true; in radeon_irq_kms_enable_afmt()
461 radeon_irq_set(rdev); in radeon_irq_kms_enable_afmt()
462 spin_unlock_irqrestore(&rdev->irq.lock, irqflags); in radeon_irq_kms_enable_afmt()
474 void radeon_irq_kms_disable_afmt(struct radeon_device *rdev, int block) in radeon_irq_kms_disable_afmt() argument
478 if (!rdev->ddev->irq_enabled) in radeon_irq_kms_disable_afmt()
481 spin_lock_irqsave(&rdev->irq.lock, irqflags); in radeon_irq_kms_disable_afmt()
482 rdev->irq.afmt[block] = false; in radeon_irq_kms_disable_afmt()
483 radeon_irq_set(rdev); in radeon_irq_kms_disable_afmt()
484 spin_unlock_irqrestore(&rdev->irq.lock, irqflags); in radeon_irq_kms_disable_afmt()
495 void radeon_irq_kms_enable_hpd(struct radeon_device *rdev, unsigned hpd_mask) in radeon_irq_kms_enable_hpd() argument
500 if (!rdev->ddev->irq_enabled) in radeon_irq_kms_enable_hpd()
503 spin_lock_irqsave(&rdev->irq.lock, irqflags); in radeon_irq_kms_enable_hpd()
505 rdev->irq.hpd[i] |= !!(hpd_mask & (1 << i)); in radeon_irq_kms_enable_hpd()
506 radeon_irq_set(rdev); in radeon_irq_kms_enable_hpd()
507 spin_unlock_irqrestore(&rdev->irq.lock, irqflags); in radeon_irq_kms_enable_hpd()
518 void radeon_irq_kms_disable_hpd(struct radeon_device *rdev, unsigned hpd_mask) in radeon_irq_kms_disable_hpd() argument
523 if (!rdev->ddev->irq_enabled) in radeon_irq_kms_disable_hpd()
526 spin_lock_irqsave(&rdev->irq.lock, irqflags); in radeon_irq_kms_disable_hpd()
528 rdev->irq.hpd[i] &= !(hpd_mask & (1 << i)); in radeon_irq_kms_disable_hpd()
529 radeon_irq_set(rdev); in radeon_irq_kms_disable_hpd()
530 spin_unlock_irqrestore(&rdev->irq.lock, irqflags); in radeon_irq_kms_disable_hpd()