1 #ifndef ASM_PARISC_GSC_H
2 #define ASM_PARISC_GSC_H
3 #ifdef __KERNEL__
4 
5 #include <linux/types.h>
6 #include <asm/io.h> /* temporary for __raw_{read,write} */
7 
8 /* Please, call ioremap and use {read,write}[bwl] instead.  These functions
9  * are not very fast.
10  */
11 #define gsc_readb(x) __raw_readb((unsigned long)x)
12 #define gsc_readw(x) __raw_readw((unsigned long)x)
13 #define gsc_readl(x) __raw_readl((unsigned long)x)
14 #define gsc_writeb(x, y) __raw_writeb(x, (unsigned long)y)
15 #define gsc_writew(x, y) __raw_writew(x, (unsigned long)y)
16 #define gsc_writel(x, y) __raw_writel(x, (unsigned long)y)
17 
18 struct gsc_irq {
19 	unsigned long txn_addr;	/* IRQ "target" */
20 	int txn_data;		/* HW "IRQ" */
21 	int irq;		/* virtual IRQ */
22 };
23 
24 /* PA I/O Architected devices support at least 5 bits in the EIM register. */
25 #define GSC_EIM_WIDTH 5
26 
27 extern int gsc_alloc_irq(struct gsc_irq *dev);	/* dev needs an irq */
28 extern int gsc_claim_irq(struct gsc_irq *dev, int irq);	/* dev needs this irq */
29 
30 extern void probe_serial_gsc(void);
31 
32 #endif /* __KERNEL__ */
33 #endif /* LINUX_GSC_H */
34