Lines Matching refs:irq

53 static irqreturn_t radeon_driver_irq_handler_kms(int irq, void *arg)  in radeon_driver_irq_handler_kms()  argument
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()
141 spin_unlock_irqrestore(&rdev->irq.lock, irqflags); in radeon_driver_irq_preinstall_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()
195 spin_unlock_irqrestore(&rdev->irq.lock, irqflags); in radeon_driver_irq_uninstall_kms()
198 static int radeon_irq_install(struct radeon_device *rdev, int irq) in radeon_irq_install() argument
203 if (irq == IRQ_NOTCONNECTED) in radeon_irq_install()
209 ret = request_irq(irq, radeon_driver_irq_handler_kms, in radeon_irq_install()
225 free_irq(pdev->irq, dev); in radeon_irq_uninstall()
322 spin_lock_init(&rdev->irq.lock); in radeon_irq_kms_init()
347 rdev->irq.installed = true; in radeon_irq_kms_init()
348 r = radeon_irq_install(rdev, rdev->pdev->irq); in radeon_irq_kms_init()
350 rdev->irq.installed = false; in radeon_irq_kms_init()
368 if (rdev->irq.installed) { in radeon_irq_kms_fini()
370 rdev->irq.installed = false; in radeon_irq_kms_fini()
391 if (!rdev->irq.installed) in radeon_irq_kms_sw_irq_get()
394 if (atomic_inc_return(&rdev->irq.ring_int[ring]) == 1) { in radeon_irq_kms_sw_irq_get()
395 spin_lock_irqsave(&rdev->irq.lock, irqflags); in radeon_irq_kms_sw_irq_get()
397 spin_unlock_irqrestore(&rdev->irq.lock, irqflags); in radeon_irq_kms_sw_irq_get()
413 return atomic_inc_return(&rdev->irq.ring_int[ring]) == 1; in radeon_irq_kms_sw_irq_get_delayed()
430 if (!rdev->irq.installed) in radeon_irq_kms_sw_irq_put()
433 if (atomic_dec_and_test(&rdev->irq.ring_int[ring])) { in radeon_irq_kms_sw_irq_put()
434 spin_lock_irqsave(&rdev->irq.lock, irqflags); in radeon_irq_kms_sw_irq_put()
436 spin_unlock_irqrestore(&rdev->irq.lock, irqflags); in radeon_irq_kms_sw_irq_put()
456 if (!rdev->irq.installed) in radeon_irq_kms_pflip_irq_get()
459 if (atomic_inc_return(&rdev->irq.pflip[crtc]) == 1) { in radeon_irq_kms_pflip_irq_get()
460 spin_lock_irqsave(&rdev->irq.lock, irqflags); in radeon_irq_kms_pflip_irq_get()
462 spin_unlock_irqrestore(&rdev->irq.lock, irqflags); in radeon_irq_kms_pflip_irq_get()
482 if (!rdev->irq.installed) in radeon_irq_kms_pflip_irq_put()
485 if (atomic_dec_and_test(&rdev->irq.pflip[crtc])) { in radeon_irq_kms_pflip_irq_put()
486 spin_lock_irqsave(&rdev->irq.lock, irqflags); in radeon_irq_kms_pflip_irq_put()
488 spin_unlock_irqrestore(&rdev->irq.lock, irqflags); in radeon_irq_kms_pflip_irq_put()
504 if (!rdev->irq.installed) in radeon_irq_kms_enable_afmt()
507 spin_lock_irqsave(&rdev->irq.lock, irqflags); in radeon_irq_kms_enable_afmt()
508 rdev->irq.afmt[block] = true; in radeon_irq_kms_enable_afmt()
510 spin_unlock_irqrestore(&rdev->irq.lock, irqflags); in radeon_irq_kms_enable_afmt()
526 if (!rdev->irq.installed) in radeon_irq_kms_disable_afmt()
529 spin_lock_irqsave(&rdev->irq.lock, irqflags); in radeon_irq_kms_disable_afmt()
530 rdev->irq.afmt[block] = false; in radeon_irq_kms_disable_afmt()
532 spin_unlock_irqrestore(&rdev->irq.lock, irqflags); in radeon_irq_kms_disable_afmt()
548 if (!rdev->irq.installed) in radeon_irq_kms_enable_hpd()
551 spin_lock_irqsave(&rdev->irq.lock, irqflags); in radeon_irq_kms_enable_hpd()
553 rdev->irq.hpd[i] |= !!(hpd_mask & (1 << i)); in radeon_irq_kms_enable_hpd()
555 spin_unlock_irqrestore(&rdev->irq.lock, irqflags); in radeon_irq_kms_enable_hpd()
571 if (!rdev->irq.installed) in radeon_irq_kms_disable_hpd()
574 spin_lock_irqsave(&rdev->irq.lock, irqflags); in radeon_irq_kms_disable_hpd()
576 rdev->irq.hpd[i] &= !(hpd_mask & (1 << i)); in radeon_irq_kms_disable_hpd()
578 spin_unlock_irqrestore(&rdev->irq.lock, irqflags); in radeon_irq_kms_disable_hpd()