blob: 693d441840587e8b0ebe7b11eda694d8f1d7945e [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001#ifndef __ASM_SH_HW_IRQ_H
2#define __ASM_SH_HW_IRQ_H
3
Magnus Damm02ab3f72007-07-18 17:25:09 +09004#include <linux/init.h>
Paul Mundtbbfbd8b2008-10-01 16:13:54 +09005#include <linux/sh_intc.h>
Arun Sharma600634972011-07-26 16:09:06 -07006#include <linux/atomic.h>
Paul Mundt35f3c512006-10-06 15:31:16 +09007
8extern atomic_t irq_err_count;
9
Magnus Damm68abdbb2007-06-15 18:56:19 +090010struct ipr_data {
11 unsigned char irq;
12 unsigned char ipr_idx; /* Index for the IPR registered */
13 unsigned char shift; /* Number of bits to shift the data */
14 unsigned char priority; /* The priority */
15};
16
17struct ipr_desc {
18 unsigned long *ipr_offsets;
19 unsigned int nr_offsets;
20 struct ipr_data *ipr_data;
21 unsigned int nr_irqs;
22 struct irq_chip chip;
23};
24
25void register_ipr_controller(struct ipr_desc *);
Magnus Damm68abdbb2007-06-15 18:56:19 +090026
Magnus Damm90015c82007-07-18 17:57:34 +090027void __init plat_irq_setup(void);
Magnus Damma276e582008-04-24 21:30:09 +090028void __init plat_irq_setup_sh3(void);
Paul Mundtbbfbd8b2008-10-01 16:13:54 +090029void __init plat_irq_setup_pins(int mode);
Magnus Damm90015c82007-07-18 17:57:34 +090030
Magnus Damma0e23262007-07-31 17:11:21 +090031enum { IRQ_MODE_IRQ, IRQ_MODE_IRQ7654, IRQ_MODE_IRQ3210,
Magnus Damm953c8ef2007-09-10 12:03:50 +090032 IRQ_MODE_IRL7654_MASK, IRQ_MODE_IRL3210_MASK,
Magnus Damma0e23262007-07-31 17:11:21 +090033 IRQ_MODE_IRL7654, IRQ_MODE_IRL3210 };
Magnus Damm39c7aa92007-07-20 12:10:29 +090034
Linus Torvalds1da177e2005-04-16 15:20:36 -070035#endif /* __ASM_SH_HW_IRQ_H */