1<html><head><meta http-equiv="Content-Type" content="text/html; charset=ANSI_X3.4-1968"><title>struct irq_chip</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="structs.html" title="Chapter&#160;8.&#160;Structures"><link rel="prev" href="API-struct-irq-data.html" title="struct irq_data"><link rel="next" href="API-struct-irq-chip-regs.html" title="struct irq_chip_regs"></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">struct irq_chip</span></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="API-struct-irq-data.html">Prev</a>&#160;</td><th width="60%" align="center">Chapter&#160;8.&#160;Structures</th><td width="20%" align="right">&#160;<a accesskey="n" href="API-struct-irq-chip-regs.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="API-struct-irq-chip"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>struct irq_chip &#8212; 
2     hardware interrupt chip descriptor
3 </p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><pre class="programlisting">
4struct irq_chip {
5  const char * name;
6  unsigned int	(* irq_startup) (struct irq_data *data);
7  void (* irq_shutdown) (struct irq_data *data);
8  void (* irq_enable) (struct irq_data *data);
9  void (* irq_disable) (struct irq_data *data);
10  void (* irq_ack) (struct irq_data *data);
11  void (* irq_mask) (struct irq_data *data);
12  void (* irq_mask_ack) (struct irq_data *data);
13  void (* irq_unmask) (struct irq_data *data);
14  void (* irq_eoi) (struct irq_data *data);
15  int (* irq_set_affinity) (struct irq_data *data, const struct cpumask *dest, bool force);
16  int (* irq_retrigger) (struct irq_data *data);
17  int (* irq_set_type) (struct irq_data *data, unsigned int flow_type);
18  int (* irq_set_wake) (struct irq_data *data, unsigned int on);
19  void (* irq_bus_lock) (struct irq_data *data);
20  void (* irq_bus_sync_unlock) (struct irq_data *data);
21  void (* irq_cpu_online) (struct irq_data *data);
22  void (* irq_cpu_offline) (struct irq_data *data);
23  void (* irq_suspend) (struct irq_data *data);
24  void (* irq_resume) (struct irq_data *data);
25  void (* irq_pm_shutdown) (struct irq_data *data);
26  void (* irq_calc_mask) (struct irq_data *data);
27  void (* irq_print_chip) (struct irq_data *data, struct seq_file *p);
28  int (* irq_request_resources) (struct irq_data *data);
29  void (* irq_release_resources) (struct irq_data *data);
30  void (* irq_compose_msi_msg) (struct irq_data *data, struct msi_msg *msg);
31  void (* irq_write_msi_msg) (struct irq_data *data, struct msi_msg *msg);
32  int (* irq_get_irqchip_state) (struct irq_data *data, enum irqchip_irq_state which, bool *state);
33  int (* irq_set_irqchip_state) (struct irq_data *data, enum irqchip_irq_state which, bool state);
34  unsigned long flags;
35};  </pre></div><div class="refsect1"><a name="idp1102980228"></a><h2>Members</h2><div class="variablelist"><dl class="variablelist"><dt><span class="term">name</span></dt><dd><p>
36   name for /proc/interrupts
37      </p></dd><dt><span class="term">irq_startup</span></dt><dd><p>
38   start up the interrupt (defaults to -&gt;enable if NULL)
39      </p></dd><dt><span class="term">irq_shutdown</span></dt><dd><p>
40   shut down the interrupt (defaults to -&gt;disable if NULL)
41      </p></dd><dt><span class="term">irq_enable</span></dt><dd><p>
42   enable the interrupt (defaults to chip-&gt;unmask if NULL)
43      </p></dd><dt><span class="term">irq_disable</span></dt><dd><p>
44   disable the interrupt
45      </p></dd><dt><span class="term">irq_ack</span></dt><dd><p>
46   start of a new interrupt
47      </p></dd><dt><span class="term">irq_mask</span></dt><dd><p>
48   mask an interrupt source
49      </p></dd><dt><span class="term">irq_mask_ack</span></dt><dd><p>
50   ack and mask an interrupt source
51      </p></dd><dt><span class="term">irq_unmask</span></dt><dd><p>
52   unmask an interrupt source
53      </p></dd><dt><span class="term">irq_eoi</span></dt><dd><p>
54   end of interrupt
55      </p></dd><dt><span class="term">irq_set_affinity</span></dt><dd><p>
56   set the CPU affinity on SMP machines
57      </p></dd><dt><span class="term">irq_retrigger</span></dt><dd><p>
58   resend an IRQ to the CPU
59      </p></dd><dt><span class="term">irq_set_type</span></dt><dd><p>
60   set the flow type (IRQ_TYPE_LEVEL/etc.) of an IRQ
61      </p></dd><dt><span class="term">irq_set_wake</span></dt><dd><p>
62   enable/disable power-management wake-on of an IRQ
63      </p></dd><dt><span class="term">irq_bus_lock</span></dt><dd><p>
64   function to lock access to slow bus (i2c) chips
65      </p></dd><dt><span class="term">irq_bus_sync_unlock</span></dt><dd><p>
66   function to sync and unlock slow bus (i2c) chips
67      </p></dd><dt><span class="term">irq_cpu_online</span></dt><dd><p>
68   configure an interrupt source for a secondary CPU
69      </p></dd><dt><span class="term">irq_cpu_offline</span></dt><dd><p>
70   un-configure an interrupt source for a secondary CPU
71      </p></dd><dt><span class="term">irq_suspend</span></dt><dd><p>
72   function called from core code on suspend once per chip
73      </p></dd><dt><span class="term">irq_resume</span></dt><dd><p>
74   function called from core code on resume once per chip
75      </p></dd><dt><span class="term">irq_pm_shutdown</span></dt><dd><p>
76   function called from core code on shutdown once per chip
77      </p></dd><dt><span class="term">irq_calc_mask</span></dt><dd><p>
78   Optional function to set irq_data.mask for special cases
79      </p></dd><dt><span class="term">irq_print_chip</span></dt><dd><p>
80   optional to print special chip info in show_interrupts
81      </p></dd><dt><span class="term">irq_request_resources</span></dt><dd><p>
82   optional to request resources before calling
83   any other callback related to this irq
84      </p></dd><dt><span class="term">irq_release_resources</span></dt><dd><p>
85   optional to release resources acquired with
86   irq_request_resources
87      </p></dd><dt><span class="term">irq_compose_msi_msg</span></dt><dd><p>
88   optional to compose message content for MSI
89      </p></dd><dt><span class="term">irq_write_msi_msg</span></dt><dd><p>
90   optional to write message content for MSI
91      </p></dd><dt><span class="term">irq_get_irqchip_state</span></dt><dd><p>
92   return the internal state of an interrupt
93      </p></dd><dt><span class="term">irq_set_irqchip_state</span></dt><dd><p>
94   set the internal state of a interrupt
95      </p></dd><dt><span class="term">flags</span></dt><dd><p>
96   chip specific flags
97      </p></dd></dl></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="API-struct-irq-data.html">Prev</a>&#160;</td><td width="20%" align="center"><a accesskey="u" href="structs.html">Up</a></td><td width="40%" align="right">&#160;<a accesskey="n" href="API-struct-irq-chip-regs.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"><span class="phrase">struct irq_data</span>&#160;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">&#160;<span class="phrase">struct irq_chip_regs</span></td></tr></table></div></body></html>
98