struct irq_chip — hardware interrupt chip descriptor
struct irq_chip { struct device * parent_device; const char * name; unsigned int (* irq_startup) (struct irq_data *data); void (* irq_shutdown) (struct irq_data *data); void (* irq_enable) (struct irq_data *data); void (* irq_disable) (struct irq_data *data); void (* irq_ack) (struct irq_data *data); void (* irq_mask) (struct irq_data *data); void (* irq_mask_ack) (struct irq_data *data); void (* irq_unmask) (struct irq_data *data); void (* irq_eoi) (struct irq_data *data); int (* irq_set_affinity) (struct irq_data *data, const struct cpumask *dest, bool force); int (* irq_retrigger) (struct irq_data *data); int (* irq_set_type) (struct irq_data *data, unsigned int flow_type); int (* irq_set_wake) (struct irq_data *data, unsigned int on); void (* irq_bus_lock) (struct irq_data *data); void (* irq_bus_sync_unlock) (struct irq_data *data); void (* irq_cpu_online) (struct irq_data *data); void (* irq_cpu_offline) (struct irq_data *data); void (* irq_suspend) (struct irq_data *data); void (* irq_resume) (struct irq_data *data); void (* irq_pm_shutdown) (struct irq_data *data); void (* irq_calc_mask) (struct irq_data *data); void (* irq_print_chip) (struct irq_data *data, struct seq_file *p); int (* irq_request_resources) (struct irq_data *data); void (* irq_release_resources) (struct irq_data *data); void (* irq_compose_msi_msg) (struct irq_data *data, struct msi_msg *msg); void (* irq_write_msi_msg) (struct irq_data *data, struct msi_msg *msg); int (* irq_get_irqchip_state) (struct irq_data *data, enum irqchip_irq_state which, bool *state); int (* irq_set_irqchip_state) (struct irq_data *data, enum irqchip_irq_state which, bool state); int (* irq_set_vcpu_affinity) (struct irq_data *data, void *vcpu_info); void (* ipi_send_single) (struct irq_data *data, unsigned int cpu); void (* ipi_send_mask) (struct irq_data *data, const struct cpumask *dest); unsigned long flags; };
struct device * parent_device
pointer to parent device for irqchip
const char * name
name for /proc/interrupts
unsigned int (*)(struct irq_data *data) irq_startup
start up the interrupt (defaults to ->enable if NULL)
void (*)(struct irq_data *data) irq_shutdown
shut down the interrupt (defaults to ->disable if NULL)
void (*)(struct irq_data *data) irq_enable
enable the interrupt (defaults to chip->unmask if NULL)
void (*)(struct irq_data *data) irq_disable
disable the interrupt
void (*)(struct irq_data *data) irq_ack
start of a new interrupt
void (*)(struct irq_data *data) irq_mask
mask an interrupt source
void (*)(struct irq_data *data) irq_mask_ack
ack and mask an interrupt source
void (*)(struct irq_data *data) irq_unmask
unmask an interrupt source
void (*)(struct irq_data *data) irq_eoi
end of interrupt
int (*)(struct irq_data *data, const struct cpumask *dest, bool force) irq_set_affinity
set the CPU affinity on SMP machines
int (*)(struct irq_data *data) irq_retrigger
resend an IRQ to the CPU
int (*)(struct irq_data *data, unsigned int flow_type) irq_set_type
set the flow type (IRQ_TYPE_LEVEL/etc.) of an IRQ
int (*)(struct irq_data *data, unsigned int on) irq_set_wake
enable/disable power-management wake-on of an IRQ
void (*)(struct irq_data *data) irq_bus_lock
function to lock access to slow bus (i2c) chips
void (*)(struct irq_data *data) irq_bus_sync_unlock
function to sync and unlock slow bus (i2c) chips
void (*)(struct irq_data *data) irq_cpu_online
configure an interrupt source for a secondary CPU
void (*)(struct irq_data *data) irq_cpu_offline
un-configure an interrupt source for a secondary CPU
void (*)(struct irq_data *data) irq_suspend
function called from core code on suspend once per chip, when one or more interrupts are installed
void (*)(struct irq_data *data) irq_resume
function called from core code on resume once per chip, when one ore more interrupts are installed
void (*)(struct irq_data *data) irq_pm_shutdown
function called from core code on shutdown once per chip
void (*)(struct irq_data *data) irq_calc_mask
Optional function to set irq_data.mask for special cases
void (*)(struct irq_data *data, struct seq_file *p) irq_print_chip
optional to print special chip info in show_interrupts
int (*)(struct irq_data *data) irq_request_resources
optional to request resources before calling any other callback related to this irq
void (*)(struct irq_data *data) irq_release_resources
optional to release resources acquired with irq_request_resources
void (*)(struct irq_data *data, struct msi_msg *msg) irq_compose_msi_msg
optional to compose message content for MSI
void (*)(struct irq_data *data, struct msi_msg *msg) irq_write_msi_msg
optional to write message content for MSI
int (*)(struct irq_data *data, enum irqchip_irq_state which, bool *state) irq_get_irqchip_state
return the internal state of an interrupt
int (*)(struct irq_data *data, enum irqchip_irq_state which, bool state) irq_set_irqchip_state
set the internal state of a interrupt
int (*)(struct irq_data *data, void *vcpu_info) irq_set_vcpu_affinity
optional to target a vCPU in a virtual machine
void (*)(struct irq_data *data, unsigned int cpu) ipi_send_single
send a single IPI to destination cpus
void (*)(struct irq_data *data, const struct cpumask *dest) ipi_send_mask
send an IPI to destination cpus in cpumask
unsigned long flags
chip specific flags