Lines Matching +full:non +full:- +full:overlapping

1 // SPDX-License-Identifier: GPL-2.0
3 * Copyright (C) 1992, 1998-2004 Linus Torvalds, Ingo Molnar
24 * probe_irq_on - begin an interrupt autodetect
46 raw_spin_lock_irq(&desc->lock); in probe_irq_on()
47 if (!desc->action && irq_settings_can_probe(desc)) { in probe_irq_on()
52 if (desc->irq_data.chip->irq_set_type) in probe_irq_on()
53 desc->irq_data.chip->irq_set_type(&desc->irq_data, in probe_irq_on()
57 raw_spin_unlock_irq(&desc->lock); in probe_irq_on()
69 raw_spin_lock_irq(&desc->lock); in probe_irq_on()
70 if (!desc->action && irq_settings_can_probe(desc)) { in probe_irq_on()
71 desc->istate |= IRQS_AUTODETECT | IRQS_WAITING; in probe_irq_on()
73 desc->istate |= IRQS_PENDING; in probe_irq_on()
75 raw_spin_unlock_irq(&desc->lock); in probe_irq_on()
87 raw_spin_lock_irq(&desc->lock); in probe_irq_on()
89 if (desc->istate & IRQS_AUTODETECT) { in probe_irq_on()
90 /* It triggered already - consider it spurious. */ in probe_irq_on()
91 if (!(desc->istate & IRQS_WAITING)) { in probe_irq_on()
92 desc->istate &= ~IRQS_AUTODETECT; in probe_irq_on()
98 raw_spin_unlock_irq(&desc->lock); in probe_irq_on()
106 * probe_irq_mask - scan a bitmap of interrupt lines
114 * only return autodetect irq numbers - just so that we reset
124 raw_spin_lock_irq(&desc->lock); in probe_irq_mask()
125 if (desc->istate & IRQS_AUTODETECT) { in probe_irq_mask()
126 if (i < 16 && !(desc->istate & IRQS_WAITING)) in probe_irq_mask()
129 desc->istate &= ~IRQS_AUTODETECT; in probe_irq_mask()
132 raw_spin_unlock_irq(&desc->lock); in probe_irq_mask()
141 * probe_irq_off - end an interrupt autodetect
154 * nothing prevents two IRQ probe callers from overlapping. The
155 * results of this are non-optimal.
163 raw_spin_lock_irq(&desc->lock); in probe_irq_off()
165 if (desc->istate & IRQS_AUTODETECT) { in probe_irq_off()
166 if (!(desc->istate & IRQS_WAITING)) { in probe_irq_off()
171 desc->istate &= ~IRQS_AUTODETECT; in probe_irq_off()
174 raw_spin_unlock_irq(&desc->lock); in probe_irq_off()
179 irq_found = -irq_found; in probe_irq_off()