1 #ifndef __ASM_IA64_IOSAPIC_H
2 #define __ASM_IA64_IOSAPIC_H
3 
4 #define	IOSAPIC_DEFAULT_ADDR	0xFEC00000
5 
6 #define	IOSAPIC_REG_SELECT	0x0
7 #define	IOSAPIC_WINDOW		0x10
8 #define	IOSAPIC_EOI		0x40
9 
10 #define	IOSAPIC_VERSION	0x1
11 
12 /*
13  * Redirection table entry
14  */
15 #define	IOSAPIC_RTE_LOW(i)	(0x10+i*2)
16 #define	IOSAPIC_RTE_HIGH(i)	(0x11+i*2)
17 
18 #define	IOSAPIC_DEST_SHIFT		16
19 
20 /*
21  * Delivery mode
22  */
23 #define	IOSAPIC_DELIVERY_SHIFT		8
24 #define	IOSAPIC_FIXED			0x0
25 #define	IOSAPIC_LOWEST_PRIORITY	0x1
26 #define	IOSAPIC_PMI			0x2
27 #define	IOSAPIC_NMI			0x4
28 #define	IOSAPIC_INIT			0x5
29 #define	IOSAPIC_EXTINT			0x7
30 
31 /*
32  * Interrupt polarity
33  */
34 #define	IOSAPIC_POLARITY_SHIFT		13
35 #define	IOSAPIC_POL_HIGH		0
36 #define	IOSAPIC_POL_LOW		1
37 
38 /*
39  * Trigger mode
40  */
41 #define	IOSAPIC_TRIGGER_SHIFT		15
42 #define	IOSAPIC_EDGE			0
43 #define	IOSAPIC_LEVEL			1
44 
45 /*
46  * Mask bit
47  */
48 #define	IOSAPIC_MASK_SHIFT		16
49 #define	IOSAPIC_UNMASK			0
50 #define	IOSAPIC_MSAK			1
51 
52 #ifndef __ASSEMBLY__
53 
54 extern void __init iosapic_system_init (int pcat_compat);
55 extern void __init iosapic_init (unsigned long address,
56 				    unsigned int gsi_base);
57 extern int gsi_to_vector (unsigned int gsi);
58 extern int iosapic_register_intr (unsigned int gsi, unsigned long polarity,
59 				  unsigned long trigger);
60 extern void __init iosapic_override_isa_irq (unsigned int isa_irq, unsigned int gsi,
61 				      unsigned long polarity,
62 				      unsigned long trigger);
63 extern int __init iosapic_register_platform_intr (u32 int_type,
64 					   unsigned int gsi,
65 					   int pmi_vector,
66 					   u16 eid, u16 id,
67 					   unsigned long polarity,
68 					   unsigned long trigger);
69 extern unsigned int iosapic_version (char *addr);
70 
71 extern void iosapic_pci_fixup (int);
72 
73 # endif /* !__ASSEMBLY__ */
74 #endif /* __ASM_IA64_IOSAPIC_H */
75