special usb hub handling, IDE disks, and retries all over the place
[linux-2.4.git] / include / asm-arm / mach / irq.h
1 /*
2  *  linux/include/asm-arm/mach/irq.h
3  *
4  *  Copyright (C) 1995-2000 Russell King.
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License version 2 as
8  * published by the Free Software Foundation.
9  */
10 #ifndef __ASM_ARM_MACH_IRQ_H
11 #define __ASM_ARM_MACH_IRQ_H
12
13 struct irqdesc {
14         unsigned int     triggered: 1;          /* IRQ has occurred           */
15         unsigned int     running  : 1;          /* IRQ is running             */
16         unsigned int     pending  : 1;          /* IRQ is pending             */
17         unsigned int     probing  : 1;          /* IRQ in use for a probe     */
18         unsigned int     probe_ok : 1;          /* IRQ can be used for probe  */
19         unsigned int     valid    : 1;          /* IRQ claimable              */
20         unsigned int     noautoenable : 1;      /* don't automatically enable IRQ */
21         unsigned int     unused   :25;
22         unsigned int     disable_depth;
23
24         struct list_head pend;
25
26         void (*mask_ack)(unsigned int irq);     /* Mask and acknowledge IRQ   */
27         void (*mask)(unsigned int irq);         /* Mask IRQ                   */
28         void (*unmask)(unsigned int irq);       /* Unmask IRQ                 */
29         struct irqaction *action;
30
31         /*
32          * IRQ lock detection
33          */
34         unsigned int     lck_cnt;
35         unsigned int     lck_pc;
36         unsigned int     lck_jif;
37         int              lck_warned;
38         struct timer_list       lck_timer;
39 };
40
41 extern struct irqdesc irq_desc[];
42
43 extern void (*init_arch_irq)(void);
44 extern int setup_arm_irq(int, struct irqaction *);
45 extern int get_fiq_list(char *);
46 extern void init_FIQ(void);
47
48 #endif