hw_irq.h 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #ifndef __ASM_SH_HW_IRQ_H
  2. #define __ASM_SH_HW_IRQ_H
  3. #include <asm/atomic.h>
  4. extern atomic_t irq_err_count;
  5. struct intc2_data {
  6. unsigned short irq;
  7. unsigned char ipr_offset, ipr_shift;
  8. unsigned char msk_offset, msk_shift;
  9. unsigned char priority;
  10. };
  11. struct intc2_desc {
  12. unsigned long prio_base;
  13. unsigned long msk_base;
  14. unsigned long mskclr_base;
  15. struct intc2_data *intc2_data;
  16. unsigned int nr_irqs;
  17. struct irq_chip chip;
  18. };
  19. void register_intc2_controller(struct intc2_desc *);
  20. void init_IRQ_intc2(void);
  21. struct ipr_data {
  22. unsigned char irq;
  23. unsigned char ipr_idx; /* Index for the IPR registered */
  24. unsigned char shift; /* Number of bits to shift the data */
  25. unsigned char priority; /* The priority */
  26. };
  27. struct ipr_desc {
  28. unsigned long *ipr_offsets;
  29. unsigned int nr_offsets;
  30. struct ipr_data *ipr_data;
  31. unsigned int nr_irqs;
  32. struct irq_chip chip;
  33. };
  34. void register_ipr_controller(struct ipr_desc *);
  35. void init_IRQ_ipr(void);
  36. /*
  37. * Enable individual interrupt mode for external IPR IRQs.
  38. */
  39. void ipr_irq_enable_irlm(void);
  40. #endif /* __ASM_SH_HW_IRQ_H */