1<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><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 8. 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> </td><th width="60%" align="center">Chapter 8. Structures</th><td width="20%" align="right"> <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 — 
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  int (* irq_set_vcpu_affinity) (struct irq_data *data, void *vcpu_info);
35  unsigned long flags;
36};  </pre></div><div class="refsect1"><a name="id-1.10.5.5"></a><h2>Members</h2><div class="variablelist"><dl class="variablelist"><dt><span class="term">name</span></dt><dd><p>
37   name for /proc/interrupts
38      </p></dd><dt><span class="term">irq_startup</span></dt><dd><p>
39   start up the interrupt (defaults to -&gt;enable if NULL)
40      </p></dd><dt><span class="term">irq_shutdown</span></dt><dd><p>
41   shut down the interrupt (defaults to -&gt;disable if NULL)
42      </p></dd><dt><span class="term">irq_enable</span></dt><dd><p>
43   enable the interrupt (defaults to chip-&gt;unmask if NULL)
44      </p></dd><dt><span class="term">irq_disable</span></dt><dd><p>
45   disable the interrupt
46      </p></dd><dt><span class="term">irq_ack</span></dt><dd><p>
47   start of a new interrupt
48      </p></dd><dt><span class="term">irq_mask</span></dt><dd><p>
49   mask an interrupt source
50      </p></dd><dt><span class="term">irq_mask_ack</span></dt><dd><p>
51   ack and mask an interrupt source
52      </p></dd><dt><span class="term">irq_unmask</span></dt><dd><p>
53   unmask an interrupt source
54      </p></dd><dt><span class="term">irq_eoi</span></dt><dd><p>
55   end of interrupt
56      </p></dd><dt><span class="term">irq_set_affinity</span></dt><dd><p>
57   set the CPU affinity on SMP machines
58      </p></dd><dt><span class="term">irq_retrigger</span></dt><dd><p>
59   resend an IRQ to the CPU
60      </p></dd><dt><span class="term">irq_set_type</span></dt><dd><p>
61   set the flow type (IRQ_TYPE_LEVEL/etc.) of an IRQ
62      </p></dd><dt><span class="term">irq_set_wake</span></dt><dd><p>
63   enable/disable power-management wake-on of an IRQ
64      </p></dd><dt><span class="term">irq_bus_lock</span></dt><dd><p>
65   function to lock access to slow bus (i2c) chips
66      </p></dd><dt><span class="term">irq_bus_sync_unlock</span></dt><dd><p>
67   function to sync and unlock slow bus (i2c) chips
68      </p></dd><dt><span class="term">irq_cpu_online</span></dt><dd><p>
69   configure an interrupt source for a secondary CPU
70      </p></dd><dt><span class="term">irq_cpu_offline</span></dt><dd><p>
71   un-configure an interrupt source for a secondary CPU
72      </p></dd><dt><span class="term">irq_suspend</span></dt><dd><p>
73   function called from core code on suspend once per
74   chip, when one or more interrupts are installed
75      </p></dd><dt><span class="term">irq_resume</span></dt><dd><p>
76   function called from core code on resume once per chip,
77   when one ore more interrupts are installed
78      </p></dd><dt><span class="term">irq_pm_shutdown</span></dt><dd><p>
79   function called from core code on shutdown once per chip
80      </p></dd><dt><span class="term">irq_calc_mask</span></dt><dd><p>
81   Optional function to set irq_data.mask for special cases
82      </p></dd><dt><span class="term">irq_print_chip</span></dt><dd><p>
83   optional to print special chip info in show_interrupts
84      </p></dd><dt><span class="term">irq_request_resources</span></dt><dd><p>
85   optional to request resources before calling
86   any other callback related to this irq
87      </p></dd><dt><span class="term">irq_release_resources</span></dt><dd><p>
88   optional to release resources acquired with
89   irq_request_resources
90      </p></dd><dt><span class="term">irq_compose_msi_msg</span></dt><dd><p>
91   optional to compose message content for MSI
92      </p></dd><dt><span class="term">irq_write_msi_msg</span></dt><dd><p>
93   optional to write message content for MSI
94      </p></dd><dt><span class="term">irq_get_irqchip_state</span></dt><dd><p>
95   return the internal state of an interrupt
96      </p></dd><dt><span class="term">irq_set_irqchip_state</span></dt><dd><p>
97   set the internal state of a interrupt
98      </p></dd><dt><span class="term">irq_set_vcpu_affinity</span></dt><dd><p>
99   optional to target a vCPU in a virtual machine
100      </p></dd><dt><span class="term">flags</span></dt><dd><p>
101   chip specific flags
102      </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> </td><td width="20%" align="center"><a accesskey="u" href="structs.html">Up</a></td><td width="40%" align="right"> <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> </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">struct irq_chip_regs</span></td></tr></table></div></body></html>
103