irq.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. #ifndef _H8300_IRQ_H_
  2. #define _H8300_IRQ_H_
  3. #include <asm/ptrace.h>
  4. #if defined(__H8300H__)
  5. #define NR_IRQS 64
  6. #define EXT_IRQ0 12
  7. #define EXT_IRQ1 13
  8. #define EXT_IRQ2 14
  9. #define EXT_IRQ3 15
  10. #define EXT_IRQ4 16
  11. #define EXT_IRQ5 17
  12. #define EXT_IRQ6 18
  13. #define EXT_IRQ7 19
  14. #define EXT_IRQS 5
  15. #include <asm/regs306x.h>
  16. #define h8300_clear_isr(irq) \
  17. do { \
  18. if (irq >= EXT_IRQ0 && irq <= EXT_IRQ5) \
  19. *(volatile unsigned char *)ISR &= ~(1 << (irq - EXT_IRQ0)); \
  20. } while(0)
  21. #define IER_REGS *(volatile unsigned char *)IER
  22. #endif
  23. #if defined(CONFIG_CPU_H8S)
  24. #define NR_IRQS 128
  25. #define EXT_IRQ0 16
  26. #define EXT_IRQ1 17
  27. #define EXT_IRQ2 18
  28. #define EXT_IRQ3 19
  29. #define EXT_IRQ4 20
  30. #define EXT_IRQ5 21
  31. #define EXT_IRQ6 22
  32. #define EXT_IRQ7 23
  33. #define EXT_IRQ8 24
  34. #define EXT_IRQ9 25
  35. #define EXT_IRQ10 26
  36. #define EXT_IRQ11 27
  37. #define EXT_IRQ12 28
  38. #define EXT_IRQ13 29
  39. #define EXT_IRQ14 30
  40. #define EXT_IRQ15 31
  41. #define EXT_IRQS 15
  42. #include <asm/regs267x.h>
  43. #define h8300_clear_isr(irq) \
  44. do { \
  45. if (irq >= EXT_IRQ0 && irq <= EXT_IRQ15) \
  46. *(volatile unsigned short *)ISR &= ~(1 << (irq - EXT_IRQ0)); \
  47. } while(0)
  48. #define IER_REGS *(volatile unsigned short *)IER
  49. #endif
  50. static __inline__ int irq_canonicalize(int irq)
  51. {
  52. return irq;
  53. }
  54. extern void enable_irq(unsigned int);
  55. extern void disable_irq(unsigned int);
  56. #define disable_irq_nosync(x) disable_irq(x)
  57. struct irqaction;
  58. struct pt_regs;
  59. int handle_IRQ_event(unsigned int, struct pt_regs *, struct irqaction *);
  60. #endif /* _H8300_IRQ_H_ */