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 ->enable if NULL) 40 </p></dd><dt><span class="term">irq_shutdown</span></dt><dd><p> 41 shut down the interrupt (defaults to ->disable if NULL) 42 </p></dd><dt><span class="term">irq_enable</span></dt><dd><p> 43 enable the interrupt (defaults to chip->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