diff options
Diffstat (limited to 'include/asm-h8300/irq.h')
-rw-r--r-- | include/asm-h8300/irq.h | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/include/asm-h8300/irq.h b/include/asm-h8300/irq.h new file mode 100644 index 0000000..5027181 --- /dev/null +++ b/include/asm-h8300/irq.h @@ -0,0 +1,75 @@ +#ifndef _H8300_IRQ_H_ +#define _H8300_IRQ_H_ + +#include <asm/ptrace.h> + +#if defined(__H8300H__) +#define NR_IRQS 64 +#define EXT_IRQ0 12 +#define EXT_IRQ1 13 +#define EXT_IRQ2 14 +#define EXT_IRQ3 15 +#define EXT_IRQ4 16 +#define EXT_IRQ5 17 +#define EXT_IRQ6 18 +#define EXT_IRQ7 19 +#define EXT_IRQS 5 + +#include <asm/regs306x.h> +#define h8300_clear_isr(irq) \ +do { \ + if (irq >= EXT_IRQ0 && irq <= EXT_IRQ5) \ + *(volatile unsigned char *)ISR &= ~(1 << (irq - EXT_IRQ0)); \ +} while(0) + +#define IER_REGS *(volatile unsigned char *)IER +#endif +#if defined(CONFIG_CPU_H8S) +#define NR_IRQS 128 +#define EXT_IRQ0 16 +#define EXT_IRQ1 17 +#define EXT_IRQ2 18 +#define EXT_IRQ3 19 +#define EXT_IRQ4 20 +#define EXT_IRQ5 21 +#define EXT_IRQ6 22 +#define EXT_IRQ7 23 +#define EXT_IRQ8 24 +#define EXT_IRQ9 25 +#define EXT_IRQ10 26 +#define EXT_IRQ11 27 +#define EXT_IRQ12 28 +#define EXT_IRQ13 29 +#define EXT_IRQ14 30 +#define EXT_IRQ15 31 +#define EXT_IRQS 15 + +#include <asm/regs267x.h> +#define h8300_clear_isr(irq) \ +do { \ + if (irq >= EXT_IRQ0 && irq <= EXT_IRQ15) \ + *(volatile unsigned short *)ISR &= ~(1 << (irq - EXT_IRQ0)); \ +} while(0) + +#define IER_REGS *(volatile unsigned short *)IER +#endif + +static __inline__ int irq_canonicalize(int irq) +{ + return irq; +} + +extern void enable_irq(unsigned int); +extern void disable_irq(unsigned int); + +/* + * Some drivers want these entry points + */ +#define enable_irq_nosync(x) enable_irq(x) +#define disable_irq_nosync(x) disable_irq(x) + +struct irqaction; +struct pt_regs; +int handle_IRQ_event(unsigned int, struct pt_regs *, struct irqaction *); + +#endif /* _H8300_IRQ_H_ */ |