irq.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00018 #ifndef __IRQ_H__
00019 #define __IRQ_H__
00020
00021 #include <types.h>
00022 #include <broadway/hollywood.h>
00023
00024
00025 #define HW_BWIRQFLAG PI_INT_CAUSE
00026 #define HW_BWIRQMASK PI_INT_MASK
00028 #define IRQ_HW_TIMER (0)
00029 #define IRQ_HW_NAND (1)
00030 #define IRQ_HW_AES (2)
00031 #define IRQ_HW_SHA1 (3)
00032 #define IRQ_HW_EHCI (4)
00033 #define IRQ_HW_OHCI0 (5)
00034 #define IRQ_HW_OHCI1 (6)
00035 #define IRQ_HW_SDHC (7)
00036 #define IRQ_HW_WIFI (8)
00037 #define IRQ_HW_GPIO1B (10)
00038 #define IRQ_HW_GPIO1 (11)
00039 #define IRQ_HW_RESET (17)
00040 #define IRQ_HW_PPCIPC (30)
00041 #define IRQ_HW_IPC (31)
00042
00043 #define IRQ_HW_MAX (32)
00044
00045
00046 #define IRQ_BW_RESET (1)
00047 #define IRQ_BW_DI (2)
00048 #define IRQ_BW_SI (3)
00049 #define IRQ_BW_EXI (4)
00050 #define IRQ_BW_AI (5)
00051 #define IRQ_BW_DSP (6)
00052 #define IRQ_BW_MEM (7)
00053 #define IRQ_BW_VI (8)
00054 #define IRQ_BW_PE_TOKEN (9)
00055 #define IRQ_BW_PE_FINISH (10)
00056 #define IRQ_BW_CP (11)
00057 #define IRQ_BW_DEBUG (12)
00058 #define IRQ_BW_HSP (13)
00059 #define IRQ_BW_HW (14)
00060 #define IRQ_BW_RESET_SW (16)
00061
00062 #define IRQ_BW_MAX (32)
00063
00064 #define IRQ_MI_MEM0 (0)
00065 #define IRQ_MI_MEM1 (1)
00066 #define IRQ_MI_MEM2 (2)
00067 #define IRQ_MI_MEM3 (3)
00068 #define IRQ_MI_MEMADDR (4)
00069
00070 #define IRQ_MI_MAX (5)
00071
00072 #define IRQ_EXI_EXI0 (0)
00073 #define IRQ_EXI_TC0 (1)
00074 #define IRQ_EXI_EXT0 (2)
00075 #define IRQ_EXI_EXI1 (3)
00076 #define IRQ_EXI_TC1 (4)
00077 #define IRQ_EXI_EXT1 (5)
00078 #define IRQ_EXI_EXI2 (6)
00079 #define IRQ_EXI_TC2 (7)
00080 #define IRQ_EXI_EXT2 (8)
00081
00082 #define IRQ_EXI_MAX (9)
00083
00084 #define IRQ_DI_BREAK (0)
00085 #define IRQ_DI_TC (1)
00086 #define IRQ_DI_ERROR (2)
00087 #define IRQ_DI_COVER (3)
00088
00089 #define IRQ_DI_MAX (4)
00090
00091 #define IRQF(n) (1 << n)
00092 #define IRQF_HW_TIMER (IRQF(IRQ_HW_TIMER))
00093 #define IRQF_HW_NAND (IRQF(IRQ_HW_NAND))
00094 #define IRQF_HW_AES (IRQF(IRQ_HW_AES))
00095 #define IRQF_HW_SHA1 (IRQF(IRQ_HW_SHA1))
00096 #define IRQF_HW_EHCI (IRQF(IRQ_HW_EHCI))
00097 #define IRQF_HW_OHCI0 (IRQF(IRQ_HW_OHCI0))
00098 #define IRQF_HW_OHCI1 (IRQF(IRQ_HW_OHCI1))
00099 #define IRQF_HW_SDHC (IRQF(IRQ_HW_SDHC))
00100 #define IRQF_HW_WIFI (IRQF(IRQ_HW_WIFI))
00101 #define IRQF_HW_GPIO1B (IRQF(IRQ_HW_GPIO1B))
00102 #define IRQF_HW_GPIO1 (IRQF(IRQ_HW_GPIO1))
00103 #define IRQF_HW_RESET (IRQF(IRQ_HW_RESET))
00104 #define IRQF_HW_PPCIPC (IRQF(IRQ_HW_PPCIPC))
00105 #define IRQF_HW_IPC (IRQF(IRQ_HW_IPC))
00107 #define IRQF_BW_RESET (IRQF(IRQ_BW_RESET))
00108 #define IRQF_BW_DI (IRQF(IRQ_BW_DI))
00109 #define IRQF_BW_SI (IRQF(IRQ_BW_SI))
00110 #define IRQF_BW_EXI (IRQF(IRQ_BW_EXI))
00111 #define IRQF_BW_AI (IRQF(IRQ_BW_AI))
00112 #define IRQF_BW_DSP (IRQF(IRQ_BW_DSP))
00113 #define IRQF_BW_MEM (IRQF(IRQ_BW_MEM))
00114 #define IRQF_BW_VI (IRQF(IRQ_BW_VI))
00115 #define IRQF_BW_PE_TOKEN (IRQF(IRQ_BW_PE_TOKEN))
00116 #define IRQF_BW_PE_FINISH (IRQF(IRQ_BW_PE_FINISH))
00117 #define IRQF_BW_CP (IRQF(IRQ_BW_CP))
00118 #define IRQF_BW_DEBUG (IRQF(IRQ_BW_DEBUG))
00119 #define IRQF_BW_HSP (IRQF(IRQ_BW_HSP))
00120 #define IRQF_BW_HW (IRQF(IRQ_BW_HW))
00121 #define IRQF_BW_RESET_SW (IRQF(IRQ_BW_RESET_SW))
00123 #define IRQF_MI_MEM0 (IRQF(IRQ_MI_MEM0))
00124 #define IRQF_MI_MEM1 (IRQF(IRQ_MI_MEM1))
00125 #define IRQF_MI_MEM2 (IRQF(IRQ_MI_MEM2))
00126 #define IRQF_MI_MEM3 (IRQF(IRQ_MI_MEM3))
00127 #define IRQF_MI_MEMADDR (IRQF(IRQ_MI_MEMADDR))
00129 #define IRQF_EXI_EXI0 (IRQF(IRQ_EXI_EXI0))
00130 #define IRQF_EXI_TC0 (IRQF(IRQ_EXI_TC0))
00131 #define IRQF_EXI_EXT0 (IRQF(IRQ_EXI_EXT0))
00132 #define IRQF_EXI_EXI1 (IRQF(IRQ_EXI_EXI1))
00133 #define IRQF_EXI_TC1 (IRQF(IRQ_EXI_TC1))
00134 #define IRQF_EXI_EXT1 (IRQF(IRQ_EXI_EXT1))
00135 #define IRQF_EXI_EXI2 (IRQF(IRQ_EXI_EXI2))
00136 #define IRQF_EXI_TC2 (IRQF(IRQ_EXI_TC2))
00137 #define IRQF_EXI_EXT2 (IRQF(IRQ_EXI_EXT2))
00139 #define IRQF_DI_BREAK (IRQF(IRQ_DI_BREAK))
00140 #define IRQF_DI_TC (IRQF(IRQ_DI_TC))
00141 #define IRQF_DI_ERROR (IRQF(IRQ_DI_ERROR))
00142 #define IRQF_DI_COVER (IRQF(IRQ_DI_COVER))
00145 #define IRQF_HW_ALL (IRQF_HW_TIMER | IRQF_HW_NAND | IRQF_HW_AES | IRQF_HW_SHA1 | \
00146 IRQF_HW_EHCI | IRQF_HW_OHCI0 | IRQF_HW_OHCI1 | IRQF_HW_SDHC | \
00147 IRQF_HW_WIFI | IRQF_HW_GPIO1B | IRQF_HW_GPIO1 | IRQF_HW_RESET | \
00148 IRQF_HW_PPCIPC | IRQF_HW_IPC )
00149
00151 #define IRQF_BW_ALL (IRQF_BW_RESET | IRQF_BW_DI | IRQF_BW_SI | IRQF_BW_EXI | \
00152 IRQF_BW_AI | IRQF_BW_DSP | IRQF_BW_MEM | IRQF_BW_VI | \
00153 IRQF_BW_PE_TOKEN | IRQF_BW_PE_FINISH | IRQF_BW_CP | IRQF_BW_DEBUG | \
00154 IRQF_BW_HSP | IRQF_BW_HW | IRQF_BW_RESET_SW )
00155
00157 #define IRQF_MI_ALL (IRQF_MI_MEM0 | IRQF_MI_MEM1 | IRQF_MI_MEM2 | IRQF_MI_MEM3 | \
00158 IRQF_MI_MEMADDR)
00159
00161 #define IRQF_EXI_ALL (IRQF_EXI_EXI0 | IRQF_EXI_TC0 | IRQF_EXI_EXT0 | \
00162 IRQF_EXI_EXI1 | IRQF_EXI_TC1 | IRQF_EXI_EXT1 | \
00163 IRQF_EXI_EXI2 | IRQF_EXI_TC2 | IRQF_EXI_EXT2 )
00164
00166 #define IRQF_DI_ALL (IRQF_DI_BREAK | IRQF_DI_TC | IRQF_DI_ERROR | IRQF_DI_COVER)
00167
00170 typedef struct {
00171 int (*exec)(u32 irq, void* data);
00172 void* data;
00173 } irq_handler_t;
00174
00181 void irq_initialize(void);
00187 void irq_shutdown(void);
00188
00194 void irq_bw_enable(u32 irq);
00200 void irq_bw_disable(u32 irq);
00206 void irq_hw_enable(u32 irq);
00212 void irq_hw_disable(u32 irq);
00213
00219 void irq_enable(void);
00227 u32 irq_disable(void);
00234 void irq_restore(u32 was_on);
00235
00245 int irq_hw_register_handler(u32 irqn, int (*exec)(u32 irq, void* data), void* data);
00254 irq_handler_t irq_hw_get_handler(u32 irqn);
00263 int irq_bw_register_handler(u32 irqn, int (*exec)(u32 irq, void* data), void* data);
00272 irq_handler_t irq_bw_get_handler(u32 irqn);
00273
00274 #endif
00275
00276