1 #ifndef _ASM_IRQ_H 2 #define _ASM_IRQ_H 3 4 #include <linux/hardirq.h> 5 #include <linux/types.h> 6 7 enum interruption_class { 8 EXTERNAL_INTERRUPT, 9 IO_INTERRUPT, 10 EXTINT_CLK, 11 EXTINT_EXC, 12 EXTINT_EMS, 13 EXTINT_TMR, 14 EXTINT_TLA, 15 EXTINT_PFL, 16 EXTINT_DSD, 17 EXTINT_VRT, 18 EXTINT_SCP, 19 EXTINT_IUC, 20 EXTINT_CMS, 21 EXTINT_CMC, 22 EXTINT_CMR, 23 IOINT_CIO, 24 IOINT_QAI, 25 IOINT_DAS, 26 IOINT_C15, 27 IOINT_C70, 28 IOINT_TAP, 29 IOINT_VMR, 30 IOINT_LCS, 31 IOINT_CLW, 32 IOINT_CTC, 33 IOINT_APB, 34 IOINT_ADM, 35 IOINT_CSC, 36 IOINT_PCI, 37 IOINT_MSI, 38 NMI_NMI, 39 NR_IRQS, 40 }; 41 42 struct ext_code { 43 unsigned short subcode; 44 unsigned short code; 45 }; 46 47 typedef void (*ext_int_handler_t)(struct ext_code, unsigned int, unsigned long); 48 49 int register_external_interrupt(u16 code, ext_int_handler_t handler); 50 int unregister_external_interrupt(u16 code, ext_int_handler_t handler); 51 void service_subclass_irq_register(void); 52 void service_subclass_irq_unregister(void); 53 void measurement_alert_subclass_register(void); 54 void measurement_alert_subclass_unregister(void); 55 56 #ifdef CONFIG_LOCKDEP 57 # define disable_irq_nosync_lockdep(irq) disable_irq_nosync(irq) 58 # define disable_irq_nosync_lockdep_irqsave(irq, flags) \ 59 disable_irq_nosync(irq) 60 # define disable_irq_lockdep(irq) disable_irq(irq) 61 # define enable_irq_lockdep(irq) enable_irq(irq) 62 # define enable_irq_lockdep_irqrestore(irq, flags) \ 63 enable_irq(irq) 64 #endif 65 66 #endif /* _ASM_IRQ_H */ 67