• Home
  • Raw
  • Download

Lines Matching refs:rdev

58 	struct radeon_device *rdev = dev->dev_private;  in radeon_driver_irq_handler_kms()  local
61 ret = radeon_irq_process(rdev); in radeon_driver_irq_handler_kms()
83 struct radeon_device *rdev = container_of(work, struct radeon_device, in radeon_hotplug_work_func() local
85 struct drm_device *dev = rdev->ddev; in radeon_hotplug_work_func()
91 if (!rdev->mode_info.mode_config_initialized) in radeon_hotplug_work_func()
104 struct radeon_device *rdev = container_of(work, struct radeon_device, in radeon_dp_work_func() local
106 struct drm_device *dev = rdev->ddev; in radeon_dp_work_func()
124 struct radeon_device *rdev = dev->dev_private; in radeon_driver_irq_preinstall_kms() local
128 spin_lock_irqsave(&rdev->irq.lock, irqflags); in radeon_driver_irq_preinstall_kms()
131 atomic_set(&rdev->irq.ring_int[i], 0); in radeon_driver_irq_preinstall_kms()
132 rdev->irq.dpm_thermal = false; in radeon_driver_irq_preinstall_kms()
134 rdev->irq.hpd[i] = false; in radeon_driver_irq_preinstall_kms()
136 rdev->irq.crtc_vblank_int[i] = false; in radeon_driver_irq_preinstall_kms()
137 atomic_set(&rdev->irq.pflip[i], 0); in radeon_driver_irq_preinstall_kms()
138 rdev->irq.afmt[i] = false; in radeon_driver_irq_preinstall_kms()
140 radeon_irq_set(rdev); in radeon_driver_irq_preinstall_kms()
141 spin_unlock_irqrestore(&rdev->irq.lock, irqflags); in radeon_driver_irq_preinstall_kms()
143 radeon_irq_process(rdev); in radeon_driver_irq_preinstall_kms()
156 struct radeon_device *rdev = dev->dev_private; in radeon_driver_irq_postinstall_kms() local
158 if (ASIC_IS_AVIVO(rdev)) in radeon_driver_irq_postinstall_kms()
175 struct radeon_device *rdev = dev->dev_private; in radeon_driver_irq_uninstall_kms() local
179 if (rdev == NULL) { in radeon_driver_irq_uninstall_kms()
182 spin_lock_irqsave(&rdev->irq.lock, irqflags); in radeon_driver_irq_uninstall_kms()
185 atomic_set(&rdev->irq.ring_int[i], 0); in radeon_driver_irq_uninstall_kms()
186 rdev->irq.dpm_thermal = false; in radeon_driver_irq_uninstall_kms()
188 rdev->irq.hpd[i] = false; in radeon_driver_irq_uninstall_kms()
190 rdev->irq.crtc_vblank_int[i] = false; in radeon_driver_irq_uninstall_kms()
191 atomic_set(&rdev->irq.pflip[i], 0); in radeon_driver_irq_uninstall_kms()
192 rdev->irq.afmt[i] = false; in radeon_driver_irq_uninstall_kms()
194 radeon_irq_set(rdev); in radeon_driver_irq_uninstall_kms()
195 spin_unlock_irqrestore(&rdev->irq.lock, irqflags); in radeon_driver_irq_uninstall_kms()
208 static bool radeon_msi_ok(struct radeon_device *rdev) in radeon_msi_ok() argument
211 if (rdev->family < CHIP_RV380) in radeon_msi_ok()
215 if (rdev->flags & RADEON_IS_AGP) in radeon_msi_ok()
223 if (rdev->family < CHIP_BONAIRE) { in radeon_msi_ok()
224 dev_info(rdev->dev, "radeon: MSI limited to 32-bit\n"); in radeon_msi_ok()
225 rdev->pdev->no_64bit_msi = 1; in radeon_msi_ok()
236 if ((rdev->pdev->device == 0x791f) && in radeon_msi_ok()
237 (rdev->pdev->subsystem_vendor == 0x103c) && in radeon_msi_ok()
238 (rdev->pdev->subsystem_device == 0x30c2)) in radeon_msi_ok()
242 if ((rdev->pdev->device == 0x791f) && in radeon_msi_ok()
243 (rdev->pdev->subsystem_vendor == 0x1028) && in radeon_msi_ok()
244 (rdev->pdev->subsystem_device == 0x01fc)) in radeon_msi_ok()
248 if ((rdev->pdev->device == 0x791f) && in radeon_msi_ok()
249 (rdev->pdev->subsystem_vendor == 0x1028) && in radeon_msi_ok()
250 (rdev->pdev->subsystem_device == 0x01fd)) in radeon_msi_ok()
254 if ((rdev->pdev->device == 0x791f) && in radeon_msi_ok()
255 (rdev->pdev->subsystem_vendor == 0x107b) && in radeon_msi_ok()
256 (rdev->pdev->subsystem_device == 0x0185)) in radeon_msi_ok()
260 if (rdev->family == CHIP_RS690) in radeon_msi_ok()
267 if (rdev->family == CHIP_RV515) in radeon_msi_ok()
269 if (rdev->flags & RADEON_IS_IGP) { in radeon_msi_ok()
271 if (rdev->family >= CHIP_PALM) in radeon_msi_ok()
288 int radeon_irq_kms_init(struct radeon_device *rdev) in radeon_irq_kms_init() argument
292 spin_lock_init(&rdev->irq.lock); in radeon_irq_kms_init()
295 rdev->ddev->vblank_disable_immediate = true; in radeon_irq_kms_init()
297 r = drm_vblank_init(rdev->ddev, rdev->num_crtc); in radeon_irq_kms_init()
303 rdev->msi_enabled = 0; in radeon_irq_kms_init()
305 if (radeon_msi_ok(rdev)) { in radeon_irq_kms_init()
306 int ret = pci_enable_msi(rdev->pdev); in radeon_irq_kms_init()
308 rdev->msi_enabled = 1; in radeon_irq_kms_init()
309 dev_info(rdev->dev, "radeon: using MSI.\n"); in radeon_irq_kms_init()
313 INIT_DELAYED_WORK(&rdev->hotplug_work, radeon_hotplug_work_func); in radeon_irq_kms_init()
314 INIT_WORK(&rdev->dp_work, radeon_dp_work_func); in radeon_irq_kms_init()
315 INIT_WORK(&rdev->audio_work, r600_audio_update_hdmi); in radeon_irq_kms_init()
317 rdev->irq.installed = true; in radeon_irq_kms_init()
318 r = drm_irq_install(rdev->ddev, rdev->ddev->pdev->irq); in radeon_irq_kms_init()
320 rdev->irq.installed = false; in radeon_irq_kms_init()
321 flush_delayed_work(&rdev->hotplug_work); in radeon_irq_kms_init()
336 void radeon_irq_kms_fini(struct radeon_device *rdev) in radeon_irq_kms_fini() argument
338 if (rdev->irq.installed) { in radeon_irq_kms_fini()
339 drm_irq_uninstall(rdev->ddev); in radeon_irq_kms_fini()
340 rdev->irq.installed = false; in radeon_irq_kms_fini()
341 if (rdev->msi_enabled) in radeon_irq_kms_fini()
342 pci_disable_msi(rdev->pdev); in radeon_irq_kms_fini()
343 flush_delayed_work(&rdev->hotplug_work); in radeon_irq_kms_fini()
357 void radeon_irq_kms_sw_irq_get(struct radeon_device *rdev, int ring) in radeon_irq_kms_sw_irq_get() argument
361 if (!rdev->ddev->irq_enabled) in radeon_irq_kms_sw_irq_get()
364 if (atomic_inc_return(&rdev->irq.ring_int[ring]) == 1) { in radeon_irq_kms_sw_irq_get()
365 spin_lock_irqsave(&rdev->irq.lock, irqflags); in radeon_irq_kms_sw_irq_get()
366 radeon_irq_set(rdev); in radeon_irq_kms_sw_irq_get()
367 spin_unlock_irqrestore(&rdev->irq.lock, irqflags); in radeon_irq_kms_sw_irq_get()
381 bool radeon_irq_kms_sw_irq_get_delayed(struct radeon_device *rdev, int ring) in radeon_irq_kms_sw_irq_get_delayed() argument
383 return atomic_inc_return(&rdev->irq.ring_int[ring]) == 1; in radeon_irq_kms_sw_irq_get_delayed()
396 void radeon_irq_kms_sw_irq_put(struct radeon_device *rdev, int ring) in radeon_irq_kms_sw_irq_put() argument
400 if (!rdev->ddev->irq_enabled) in radeon_irq_kms_sw_irq_put()
403 if (atomic_dec_and_test(&rdev->irq.ring_int[ring])) { in radeon_irq_kms_sw_irq_put()
404 spin_lock_irqsave(&rdev->irq.lock, irqflags); in radeon_irq_kms_sw_irq_put()
405 radeon_irq_set(rdev); in radeon_irq_kms_sw_irq_put()
406 spin_unlock_irqrestore(&rdev->irq.lock, irqflags); in radeon_irq_kms_sw_irq_put()
419 void radeon_irq_kms_pflip_irq_get(struct radeon_device *rdev, int crtc) in radeon_irq_kms_pflip_irq_get() argument
423 if (crtc < 0 || crtc >= rdev->num_crtc) in radeon_irq_kms_pflip_irq_get()
426 if (!rdev->ddev->irq_enabled) in radeon_irq_kms_pflip_irq_get()
429 if (atomic_inc_return(&rdev->irq.pflip[crtc]) == 1) { in radeon_irq_kms_pflip_irq_get()
430 spin_lock_irqsave(&rdev->irq.lock, irqflags); in radeon_irq_kms_pflip_irq_get()
431 radeon_irq_set(rdev); in radeon_irq_kms_pflip_irq_get()
432 spin_unlock_irqrestore(&rdev->irq.lock, irqflags); in radeon_irq_kms_pflip_irq_get()
445 void radeon_irq_kms_pflip_irq_put(struct radeon_device *rdev, int crtc) in radeon_irq_kms_pflip_irq_put() argument
449 if (crtc < 0 || crtc >= rdev->num_crtc) in radeon_irq_kms_pflip_irq_put()
452 if (!rdev->ddev->irq_enabled) in radeon_irq_kms_pflip_irq_put()
455 if (atomic_dec_and_test(&rdev->irq.pflip[crtc])) { in radeon_irq_kms_pflip_irq_put()
456 spin_lock_irqsave(&rdev->irq.lock, irqflags); in radeon_irq_kms_pflip_irq_put()
457 radeon_irq_set(rdev); in radeon_irq_kms_pflip_irq_put()
458 spin_unlock_irqrestore(&rdev->irq.lock, irqflags); in radeon_irq_kms_pflip_irq_put()
470 void radeon_irq_kms_enable_afmt(struct radeon_device *rdev, int block) in radeon_irq_kms_enable_afmt() argument
474 if (!rdev->ddev->irq_enabled) in radeon_irq_kms_enable_afmt()
477 spin_lock_irqsave(&rdev->irq.lock, irqflags); in radeon_irq_kms_enable_afmt()
478 rdev->irq.afmt[block] = true; in radeon_irq_kms_enable_afmt()
479 radeon_irq_set(rdev); in radeon_irq_kms_enable_afmt()
480 spin_unlock_irqrestore(&rdev->irq.lock, irqflags); in radeon_irq_kms_enable_afmt()
492 void radeon_irq_kms_disable_afmt(struct radeon_device *rdev, int block) in radeon_irq_kms_disable_afmt() argument
496 if (!rdev->ddev->irq_enabled) in radeon_irq_kms_disable_afmt()
499 spin_lock_irqsave(&rdev->irq.lock, irqflags); in radeon_irq_kms_disable_afmt()
500 rdev->irq.afmt[block] = false; in radeon_irq_kms_disable_afmt()
501 radeon_irq_set(rdev); in radeon_irq_kms_disable_afmt()
502 spin_unlock_irqrestore(&rdev->irq.lock, irqflags); in radeon_irq_kms_disable_afmt()
513 void radeon_irq_kms_enable_hpd(struct radeon_device *rdev, unsigned hpd_mask) in radeon_irq_kms_enable_hpd() argument
518 if (!rdev->ddev->irq_enabled) in radeon_irq_kms_enable_hpd()
521 spin_lock_irqsave(&rdev->irq.lock, irqflags); in radeon_irq_kms_enable_hpd()
523 rdev->irq.hpd[i] |= !!(hpd_mask & (1 << i)); in radeon_irq_kms_enable_hpd()
524 radeon_irq_set(rdev); in radeon_irq_kms_enable_hpd()
525 spin_unlock_irqrestore(&rdev->irq.lock, irqflags); in radeon_irq_kms_enable_hpd()
536 void radeon_irq_kms_disable_hpd(struct radeon_device *rdev, unsigned hpd_mask) in radeon_irq_kms_disable_hpd() argument
541 if (!rdev->ddev->irq_enabled) in radeon_irq_kms_disable_hpd()
544 spin_lock_irqsave(&rdev->irq.lock, irqflags); in radeon_irq_kms_disable_hpd()
546 rdev->irq.hpd[i] &= !(hpd_mask & (1 << i)); in radeon_irq_kms_disable_hpd()
547 radeon_irq_set(rdev); in radeon_irq_kms_disable_hpd()
548 spin_unlock_irqrestore(&rdev->irq.lock, irqflags); in radeon_irq_kms_disable_hpd()
568 void radeon_irq_kms_set_irq_n_enabled(struct radeon_device *rdev, in radeon_irq_kms_set_irq_n_enabled() argument