]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - include/asm-sh/hw_irq.h
Merge branch 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6
[karo-tx-linux.git] / include / asm-sh / hw_irq.h
index fed26616967a03979d0d6ea6e7c14d1d6a446f97..4ca3f765bacc11ecf3070a3b8b0770408dd9284c 100644 (file)
@@ -1,4 +1,50 @@
 #ifndef __ASM_SH_HW_IRQ_H
 #define __ASM_SH_HW_IRQ_H
 
+#include <asm/atomic.h>
+
+extern atomic_t irq_err_count;
+
+struct intc2_data {
+       unsigned short irq;
+       unsigned char ipr_offset, ipr_shift;
+       unsigned char msk_offset, msk_shift;
+       unsigned char priority;
+};
+
+struct intc2_desc {
+       unsigned long prio_base;
+       unsigned long msk_base;
+       unsigned long mskclr_base;
+       struct intc2_data *intc2_data;
+       unsigned int nr_irqs;
+       struct irq_chip chip;
+};
+
+void register_intc2_controller(struct intc2_desc *);
+void init_IRQ_intc2(void);
+
+struct ipr_data {
+       unsigned char irq;
+       unsigned char ipr_idx;          /* Index for the IPR registered */
+       unsigned char shift;            /* Number of bits to shift the data */
+       unsigned char priority;         /* The priority */
+};
+
+struct ipr_desc {
+       unsigned long *ipr_offsets;
+       unsigned int nr_offsets;
+       struct ipr_data *ipr_data;
+       unsigned int nr_irqs;
+       struct irq_chip chip;
+};
+
+void register_ipr_controller(struct ipr_desc *);
+void init_IRQ_ipr(void);
+
+/*
+ * Enable individual interrupt mode for external IPR IRQs.
+ */
+void ipr_irq_enable_irlm(void);
+
 #endif /* __ASM_SH_HW_IRQ_H */