|
@@ -589,3 +589,39 @@ set_irq_chip_and_handler_name(unsigned int irq, struct irq_chip *chip,
|
|
|
set_irq_chip(irq, chip);
|
|
|
__set_irq_handler(irq, handle, 0, name);
|
|
|
}
|
|
|
+
|
|
|
+void __init set_irq_noprobe(unsigned int irq)
|
|
|
+{
|
|
|
+ struct irq_desc *desc;
|
|
|
+ unsigned long flags;
|
|
|
+
|
|
|
+ if (irq >= NR_IRQS) {
|
|
|
+ printk(KERN_ERR "Trying to mark IRQ%d non-probeable\n", irq);
|
|
|
+
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ desc = irq_desc + irq;
|
|
|
+
|
|
|
+ spin_lock_irqsave(&desc->lock, flags);
|
|
|
+ desc->status |= IRQ_NOPROBE;
|
|
|
+ spin_unlock_irqrestore(&desc->lock, flags);
|
|
|
+}
|
|
|
+
|
|
|
+void __init set_irq_probe(unsigned int irq)
|
|
|
+{
|
|
|
+ struct irq_desc *desc;
|
|
|
+ unsigned long flags;
|
|
|
+
|
|
|
+ if (irq >= NR_IRQS) {
|
|
|
+ printk(KERN_ERR "Trying to mark IRQ%d probeable\n", irq);
|
|
|
+
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ desc = irq_desc + irq;
|
|
|
+
|
|
|
+ spin_lock_irqsave(&desc->lock, flags);
|
|
|
+ desc->status &= ~IRQ_NOPROBE;
|
|
|
+ spin_unlock_irqrestore(&desc->lock, flags);
|
|
|
+}
|