irq.h 1.4 KB

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