Scroll to navigation

STRUCT IRQ_CHIP_GENE(9) Structures STRUCT IRQ_CHIP_GENE(9)

NAME

struct_irq_chip_generic - Generic irq chip data structure

SYNOPSIS

struct irq_chip_generic {

raw_spinlock_t lock;
void __iomem * reg_base;
u32 (* reg_readl) (void __iomem *addr);
void (* reg_writel) (u32 val, void __iomem *addr);
void (* suspend) (struct irq_chip_generic *gc);
void (* resume) (struct irq_chip_generic *gc);
unsigned int irq_base;
unsigned int irq_cnt;
u32 mask_cache;
u32 type_cache;
u32 polarity_cache;
u32 wake_enabled;
u32 wake_active;
unsigned int num_ct;
void * private;
unsigned long installed;
unsigned long unused;
struct irq_domain * domain;
struct list_head list;
struct irq_chip_type chip_types[0]; };

MEMBERS

raw_spinlock_t lock

Lock to protect register and cache data access

void __iomem * reg_base

Register base address (virtual)

u32 (*)(void __iomem *addr) reg_readl

Alternate I/O accessor (defaults to readl if NULL)

void (*)(u32 val, void __iomem *addr) reg_writel

Alternate I/O accessor (defaults to writel if NULL)

void (*)(struct irq_chip_generic *gc) suspend

Function called from core code on suspend once per chip; can be useful instead of irq_chip::suspend to handle chip details even when no interrupts are in use

void (*)(struct irq_chip_generic *gc) resume

Function called from core code on resume once per chip; can be useful instead of irq_chip::suspend to handle chip details even when no interrupts are in use

unsigned int irq_base

Interrupt base nr for this chip

unsigned int irq_cnt

Number of interrupts handled by this chip

u32 mask_cache

Cached mask register shared between all chip types

u32 type_cache

Cached type register

u32 polarity_cache

Cached polarity register

u32 wake_enabled

Interrupt can wakeup from suspend

u32 wake_active

Interrupt is marked as an wakeup from suspend source

unsigned int num_ct

Number of available irq_chip_type instances (usually 1)

void * private

Private data for non generic chip callbacks

unsigned long installed

bitfield to denote installed interrupts

unsigned long unused

bitfield to denote unused interrupts

struct irq_domain * domain

irq domain pointer

struct list_head list

List head for keeping track of instances

struct irq_chip_type chip_types[0]

Array of interrupt irq_chip_types

DESCRIPTION

Note, that irq_chip_generic can have multiple irq_chip_type implementations which can be associated to a particular irq line of an irq_chip_generic instance. That allows to share and protect state in an irq_chip_generic instance when we need to implement different flow mechanisms (level/edge) for it.

AUTHORS

Thomas Gleixner <tglx@linutronix.de>

Author.

Ingo Molnar <mingo@elte.hu>

Author.

COPYRIGHT

June 2017 Kernel Hackers Manual 4.11