Lines Matching refs:rdev
57 struct radeon_device *rdev = dev->dev_private; in radeon_driver_irq_handler_kms() local
60 ret = radeon_irq_process(rdev); in radeon_driver_irq_handler_kms()
82 struct radeon_device *rdev = container_of(work, struct radeon_device, in radeon_hotplug_work_func() local
84 struct drm_device *dev = rdev->ddev; in radeon_hotplug_work_func()
90 if (!rdev->mode_info.mode_config_initialized) in radeon_hotplug_work_func()
103 struct radeon_device *rdev = container_of(work, struct radeon_device, in radeon_dp_work_func() local
105 struct drm_device *dev = rdev->ddev; in radeon_dp_work_func()
123 struct radeon_device *rdev = dev->dev_private; in radeon_driver_irq_preinstall_kms() local
127 spin_lock_irqsave(&rdev->irq.lock, irqflags); in radeon_driver_irq_preinstall_kms()
130 atomic_set(&rdev->irq.ring_int[i], 0); in radeon_driver_irq_preinstall_kms()
131 rdev->irq.dpm_thermal = false; in radeon_driver_irq_preinstall_kms()
133 rdev->irq.hpd[i] = false; in radeon_driver_irq_preinstall_kms()
135 rdev->irq.crtc_vblank_int[i] = false; in radeon_driver_irq_preinstall_kms()
136 atomic_set(&rdev->irq.pflip[i], 0); in radeon_driver_irq_preinstall_kms()
137 rdev->irq.afmt[i] = false; in radeon_driver_irq_preinstall_kms()
139 radeon_irq_set(rdev); in radeon_driver_irq_preinstall_kms()
140 spin_unlock_irqrestore(&rdev->irq.lock, irqflags); in radeon_driver_irq_preinstall_kms()
142 radeon_irq_process(rdev); in radeon_driver_irq_preinstall_kms()
155 struct radeon_device *rdev = dev->dev_private; in radeon_driver_irq_postinstall_kms() local
157 if (ASIC_IS_AVIVO(rdev)) in radeon_driver_irq_postinstall_kms()
174 struct radeon_device *rdev = dev->dev_private; in radeon_driver_irq_uninstall_kms() local
178 if (rdev == NULL) { in radeon_driver_irq_uninstall_kms()
181 spin_lock_irqsave(&rdev->irq.lock, irqflags); in radeon_driver_irq_uninstall_kms()
184 atomic_set(&rdev->irq.ring_int[i], 0); in radeon_driver_irq_uninstall_kms()
185 rdev->irq.dpm_thermal = false; in radeon_driver_irq_uninstall_kms()
187 rdev->irq.hpd[i] = false; in radeon_driver_irq_uninstall_kms()
189 rdev->irq.crtc_vblank_int[i] = false; in radeon_driver_irq_uninstall_kms()
190 atomic_set(&rdev->irq.pflip[i], 0); in radeon_driver_irq_uninstall_kms()
191 rdev->irq.afmt[i] = false; in radeon_driver_irq_uninstall_kms()
193 radeon_irq_set(rdev); in radeon_driver_irq_uninstall_kms()
194 spin_unlock_irqrestore(&rdev->irq.lock, irqflags); in radeon_driver_irq_uninstall_kms()
197 static int radeon_irq_install(struct radeon_device *rdev, int irq) in radeon_irq_install() argument
199 struct drm_device *dev = rdev->ddev; in radeon_irq_install()
218 static void radeon_irq_uninstall(struct radeon_device *rdev) in radeon_irq_uninstall() argument
220 struct drm_device *dev = rdev->ddev; in radeon_irq_uninstall()
237 static bool radeon_msi_ok(struct radeon_device *rdev) in radeon_msi_ok() argument
240 if (rdev->family < CHIP_RV380) in radeon_msi_ok()
244 if (rdev->flags & RADEON_IS_AGP) in radeon_msi_ok()
252 if (rdev->family < CHIP_BONAIRE) { in radeon_msi_ok()
253 dev_info(rdev->dev, "radeon: MSI limited to 32-bit\n"); in radeon_msi_ok()
254 rdev->pdev->no_64bit_msi = 1; in radeon_msi_ok()
265 if ((rdev->pdev->device == 0x791f) && in radeon_msi_ok()
266 (rdev->pdev->subsystem_vendor == 0x103c) && in radeon_msi_ok()
267 (rdev->pdev->subsystem_device == 0x30c2)) in radeon_msi_ok()
271 if ((rdev->pdev->device == 0x791f) && in radeon_msi_ok()
272 (rdev->pdev->subsystem_vendor == 0x1028) && in radeon_msi_ok()
273 (rdev->pdev->subsystem_device == 0x01fc)) in radeon_msi_ok()
277 if ((rdev->pdev->device == 0x791f) && in radeon_msi_ok()
278 (rdev->pdev->subsystem_vendor == 0x1028) && in radeon_msi_ok()
279 (rdev->pdev->subsystem_device == 0x01fd)) in radeon_msi_ok()
283 if ((rdev->pdev->device == 0x791f) && in radeon_msi_ok()
284 (rdev->pdev->subsystem_vendor == 0x107b) && in radeon_msi_ok()
285 (rdev->pdev->subsystem_device == 0x0185)) in radeon_msi_ok()
289 if (rdev->family == CHIP_RS690) in radeon_msi_ok()
296 if (rdev->family == CHIP_RV515) in radeon_msi_ok()
298 if (rdev->flags & RADEON_IS_IGP) { in radeon_msi_ok()
300 if (rdev->family >= CHIP_PALM) in radeon_msi_ok()
317 int radeon_irq_kms_init(struct radeon_device *rdev) in radeon_irq_kms_init() argument
321 spin_lock_init(&rdev->irq.lock); in radeon_irq_kms_init()
324 rdev->ddev->vblank_disable_immediate = true; in radeon_irq_kms_init()
326 r = drm_vblank_init(rdev->ddev, rdev->num_crtc); in radeon_irq_kms_init()
332 rdev->msi_enabled = 0; in radeon_irq_kms_init()
334 if (radeon_msi_ok(rdev)) { in radeon_irq_kms_init()
335 int ret = pci_enable_msi(rdev->pdev); in radeon_irq_kms_init()
337 rdev->msi_enabled = 1; in radeon_irq_kms_init()
338 dev_info(rdev->dev, "radeon: using MSI.\n"); in radeon_irq_kms_init()
342 INIT_DELAYED_WORK(&rdev->hotplug_work, radeon_hotplug_work_func); in radeon_irq_kms_init()
343 INIT_WORK(&rdev->dp_work, radeon_dp_work_func); in radeon_irq_kms_init()
344 INIT_WORK(&rdev->audio_work, r600_audio_update_hdmi); in radeon_irq_kms_init()
346 rdev->irq.installed = true; in radeon_irq_kms_init()
347 r = radeon_irq_install(rdev, rdev->pdev->irq); in radeon_irq_kms_init()
349 rdev->irq.installed = false; in radeon_irq_kms_init()
350 flush_delayed_work(&rdev->hotplug_work); in radeon_irq_kms_init()
365 void radeon_irq_kms_fini(struct radeon_device *rdev) in radeon_irq_kms_fini() argument
367 if (rdev->irq.installed) { in radeon_irq_kms_fini()
368 radeon_irq_uninstall(rdev); in radeon_irq_kms_fini()
369 rdev->irq.installed = false; in radeon_irq_kms_fini()
370 if (rdev->msi_enabled) in radeon_irq_kms_fini()
371 pci_disable_msi(rdev->pdev); in radeon_irq_kms_fini()
372 flush_delayed_work(&rdev->hotplug_work); in radeon_irq_kms_fini()
386 void radeon_irq_kms_sw_irq_get(struct radeon_device *rdev, int ring) in radeon_irq_kms_sw_irq_get() argument
390 if (!rdev->irq.installed) in radeon_irq_kms_sw_irq_get()
393 if (atomic_inc_return(&rdev->irq.ring_int[ring]) == 1) { in radeon_irq_kms_sw_irq_get()
394 spin_lock_irqsave(&rdev->irq.lock, irqflags); in radeon_irq_kms_sw_irq_get()
395 radeon_irq_set(rdev); in radeon_irq_kms_sw_irq_get()
396 spin_unlock_irqrestore(&rdev->irq.lock, irqflags); in radeon_irq_kms_sw_irq_get()
410 bool radeon_irq_kms_sw_irq_get_delayed(struct radeon_device *rdev, int ring) in radeon_irq_kms_sw_irq_get_delayed() argument
412 return atomic_inc_return(&rdev->irq.ring_int[ring]) == 1; in radeon_irq_kms_sw_irq_get_delayed()
425 void radeon_irq_kms_sw_irq_put(struct radeon_device *rdev, int ring) in radeon_irq_kms_sw_irq_put() argument
429 if (!rdev->irq.installed) in radeon_irq_kms_sw_irq_put()
432 if (atomic_dec_and_test(&rdev->irq.ring_int[ring])) { in radeon_irq_kms_sw_irq_put()
433 spin_lock_irqsave(&rdev->irq.lock, irqflags); in radeon_irq_kms_sw_irq_put()
434 radeon_irq_set(rdev); in radeon_irq_kms_sw_irq_put()
435 spin_unlock_irqrestore(&rdev->irq.lock, irqflags); in radeon_irq_kms_sw_irq_put()
448 void radeon_irq_kms_pflip_irq_get(struct radeon_device *rdev, int crtc) in radeon_irq_kms_pflip_irq_get() argument
452 if (crtc < 0 || crtc >= rdev->num_crtc) in radeon_irq_kms_pflip_irq_get()
455 if (!rdev->irq.installed) in radeon_irq_kms_pflip_irq_get()
458 if (atomic_inc_return(&rdev->irq.pflip[crtc]) == 1) { in radeon_irq_kms_pflip_irq_get()
459 spin_lock_irqsave(&rdev->irq.lock, irqflags); in radeon_irq_kms_pflip_irq_get()
460 radeon_irq_set(rdev); in radeon_irq_kms_pflip_irq_get()
461 spin_unlock_irqrestore(&rdev->irq.lock, irqflags); in radeon_irq_kms_pflip_irq_get()
474 void radeon_irq_kms_pflip_irq_put(struct radeon_device *rdev, int crtc) in radeon_irq_kms_pflip_irq_put() argument
478 if (crtc < 0 || crtc >= rdev->num_crtc) in radeon_irq_kms_pflip_irq_put()
481 if (!rdev->irq.installed) in radeon_irq_kms_pflip_irq_put()
484 if (atomic_dec_and_test(&rdev->irq.pflip[crtc])) { in radeon_irq_kms_pflip_irq_put()
485 spin_lock_irqsave(&rdev->irq.lock, irqflags); in radeon_irq_kms_pflip_irq_put()
486 radeon_irq_set(rdev); in radeon_irq_kms_pflip_irq_put()
487 spin_unlock_irqrestore(&rdev->irq.lock, irqflags); in radeon_irq_kms_pflip_irq_put()
499 void radeon_irq_kms_enable_afmt(struct radeon_device *rdev, int block) in radeon_irq_kms_enable_afmt() argument
503 if (!rdev->irq.installed) in radeon_irq_kms_enable_afmt()
506 spin_lock_irqsave(&rdev->irq.lock, irqflags); in radeon_irq_kms_enable_afmt()
507 rdev->irq.afmt[block] = true; in radeon_irq_kms_enable_afmt()
508 radeon_irq_set(rdev); in radeon_irq_kms_enable_afmt()
509 spin_unlock_irqrestore(&rdev->irq.lock, irqflags); in radeon_irq_kms_enable_afmt()
521 void radeon_irq_kms_disable_afmt(struct radeon_device *rdev, int block) in radeon_irq_kms_disable_afmt() argument
525 if (!rdev->irq.installed) in radeon_irq_kms_disable_afmt()
528 spin_lock_irqsave(&rdev->irq.lock, irqflags); in radeon_irq_kms_disable_afmt()
529 rdev->irq.afmt[block] = false; in radeon_irq_kms_disable_afmt()
530 radeon_irq_set(rdev); in radeon_irq_kms_disable_afmt()
531 spin_unlock_irqrestore(&rdev->irq.lock, irqflags); in radeon_irq_kms_disable_afmt()
542 void radeon_irq_kms_enable_hpd(struct radeon_device *rdev, unsigned hpd_mask) in radeon_irq_kms_enable_hpd() argument
547 if (!rdev->irq.installed) in radeon_irq_kms_enable_hpd()
550 spin_lock_irqsave(&rdev->irq.lock, irqflags); in radeon_irq_kms_enable_hpd()
552 rdev->irq.hpd[i] |= !!(hpd_mask & (1 << i)); in radeon_irq_kms_enable_hpd()
553 radeon_irq_set(rdev); in radeon_irq_kms_enable_hpd()
554 spin_unlock_irqrestore(&rdev->irq.lock, irqflags); in radeon_irq_kms_enable_hpd()
565 void radeon_irq_kms_disable_hpd(struct radeon_device *rdev, unsigned hpd_mask) in radeon_irq_kms_disable_hpd() argument
570 if (!rdev->irq.installed) in radeon_irq_kms_disable_hpd()
573 spin_lock_irqsave(&rdev->irq.lock, irqflags); in radeon_irq_kms_disable_hpd()
575 rdev->irq.hpd[i] &= !(hpd_mask & (1 << i)); in radeon_irq_kms_disable_hpd()
576 radeon_irq_set(rdev); in radeon_irq_kms_disable_hpd()
577 spin_unlock_irqrestore(&rdev->irq.lock, irqflags); in radeon_irq_kms_disable_hpd()
597 void radeon_irq_kms_set_irq_n_enabled(struct radeon_device *rdev, in radeon_irq_kms_set_irq_n_enabled() argument