1 #ifndef BUSDEVICE_H
2 #define BUSDEVICE_H
3 
4 #include <linux/types.h>
5 #include <linux/interrupt.h>
6 #include <asm/hardware.h>
7 #include <asm/gsc.h>
8 
9 #define OFFSET_IRR 0x0000   /* Interrupt request register */
10 #define OFFSET_IMR 0x0004   /* Interrupt mask register */
11 #define OFFSET_IPR 0x0008   /* Interrupt pending register */
12 #define OFFSET_ICR 0x000C   /* Interrupt control register */
13 #define OFFSET_IAR 0x0010   /* Interrupt address register */
14 
15 
16 struct busdevice {
17 	struct parisc_device *gsc;
18 	unsigned long hpa;
19 	char *name;
20 	int version;
21 	int type;
22 	int parent_irq;
23 	int eim;
24 	struct irq_region *busdev_region;
25 };
26 
27 /* short cut to keep the compiler happy */
28 #define BUSDEV_DEV(x)	((struct busdevice *) (x))
29 
30 int gsc_common_irqsetup(struct parisc_device *parent, struct busdevice *busdev);
31 
32 void busdev_barked(int busdev_irq, void *dev, struct pt_regs *regs);
33 
34 #endif /* BUSDEVICE_H */
35