1<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>irq_disable</title><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="Linux generic IRQ handling"><link rel="up" href="intfunctions.html" title="Chapter 10. Internal Functions Provided"><link rel="prev" href="API-irq-set-msi-desc.html" title="irq_set_msi_desc"><link rel="next" href="API-handle-edge-eoi-irq.html" title="handle_edge_eoi_irq"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center"><span class="phrase">irq_disable</span></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="API-irq-set-msi-desc.html">Prev</a> </td><th width="60%" align="center">Chapter 10. Internal Functions Provided</th><td width="20%" align="right"> <a accesskey="n" href="API-handle-edge-eoi-irq.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="API-irq-disable"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>irq_disable — 
2     Mark interrupt disabled
3 </p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">void <b class="fsfunc">irq_disable </b>(</code></td><td>struct irq_desc * <var class="pdparam">desc</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="id-1.12.11.5"></a><h2>Arguments</h2><div class="variablelist"><dl class="variablelist"><dt><span class="term"><em class="parameter"><code>desc</code></em></span></dt><dd><p>
4     irq descriptor which should be disabled
5    </p></dd></dl></div></div><div class="refsect1"><a name="id-1.12.11.6"></a><h2>Description</h2><p>
6   If the chip does not implement the irq_disable callback, we
7   use a lazy disable approach. That means we mark the interrupt
8   disabled, but leave the hardware unmasked. That's an
9   optimization because we avoid the hardware access for the
10   common case where no interrupt happens after we marked it
11   disabled. If an interrupt happens, then the interrupt flow
12   handler masks the line at the hardware level and marks it
13   pending.
14   </p><p>
15
16   If the interrupt chip does not implement the irq_disable callback,
17   a driver can disable the lazy approach for a particular irq line by
18   calling 'irq_set_status_flags(irq, IRQ_DISABLE_UNLAZY)'. This can
19   be used for devices which cannot disable the interrupt at the
20   device level under certain circumstances and have to use
21   disable_irq[_nosync] instead.
22</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="API-irq-set-msi-desc.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="intfunctions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="API-handle-edge-eoi-irq.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"><span class="phrase">irq_set_msi_desc</span> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> <span class="phrase">handle_edge_eoi_irq</span></td></tr></table></div></body></html>
23