|
@@ -213,6 +213,19 @@ void irq_enable(struct irq_desc *desc)
|
|
|
irq_state_clr_masked(desc);
|
|
|
}
|
|
|
|
|
|
+/**
|
|
|
+ * irq_disable - Mark interupt disabled
|
|
|
+ * @desc: irq descriptor which should be disabled
|
|
|
+ *
|
|
|
+ * If the chip does not implement the irq_disable callback, we
|
|
|
+ * use a lazy disable approach. That means we mark the interrupt
|
|
|
+ * disabled, but leave the hardware unmasked. That's an
|
|
|
+ * optimization because we avoid the hardware access for the
|
|
|
+ * common case where no interrupt happens after we marked it
|
|
|
+ * disabled. If an interrupt happens, then the interrupt flow
|
|
|
+ * handler masks the line at the hardware level and marks it
|
|
|
+ * pending.
|
|
|
+ */
|
|
|
void irq_disable(struct irq_desc *desc)
|
|
|
{
|
|
|
irq_state_set_disabled(desc);
|