diff options
Diffstat (limited to 'include/asm-x86/io_apic.h')
-rw-r--r-- | include/asm-x86/io_apic.h | 39 |
1 files changed, 32 insertions, 7 deletions
diff --git a/include/asm-x86/io_apic.h b/include/asm-x86/io_apic.h index d593e14f0341..14f82bbcb5fd 100644 --- a/include/asm-x86/io_apic.h +++ b/include/asm-x86/io_apic.h | |||
@@ -11,6 +11,15 @@ | |||
11 | * Copyright (C) 1997, 1998, 1999, 2000 Ingo Molnar | 11 | * Copyright (C) 1997, 1998, 1999, 2000 Ingo Molnar |
12 | */ | 12 | */ |
13 | 13 | ||
14 | /* I/O Unit Redirection Table */ | ||
15 | #define IO_APIC_REDIR_VECTOR_MASK 0x000FF | ||
16 | #define IO_APIC_REDIR_DEST_LOGICAL 0x00800 | ||
17 | #define IO_APIC_REDIR_DEST_PHYSICAL 0x00000 | ||
18 | #define IO_APIC_REDIR_SEND_PENDING (1 << 12) | ||
19 | #define IO_APIC_REDIR_REMOTE_IRR (1 << 14) | ||
20 | #define IO_APIC_REDIR_LEVEL_TRIGGER (1 << 15) | ||
21 | #define IO_APIC_REDIR_MASKED (1 << 16) | ||
22 | |||
14 | /* | 23 | /* |
15 | * The structure of the IO-APIC: | 24 | * The structure of the IO-APIC: |
16 | */ | 25 | */ |
@@ -112,21 +121,32 @@ extern int nr_ioapic_registers[MAX_IO_APICS]; | |||
112 | 121 | ||
113 | #define MP_MAX_IOAPIC_PIN 127 | 122 | #define MP_MAX_IOAPIC_PIN 127 |
114 | 123 | ||
115 | struct mp_ioapic_routing { | 124 | struct mp_config_ioapic { |
116 | int apic_id; | 125 | unsigned long mp_apicaddr; |
117 | int gsi_base; | 126 | unsigned int mp_apicid; |
118 | int gsi_end; | 127 | unsigned char mp_type; |
119 | DECLARE_BITMAP(pin_programmed, MP_MAX_IOAPIC_PIN + 1); | 128 | unsigned char mp_apicver; |
129 | unsigned char mp_flags; | ||
130 | }; | ||
131 | |||
132 | struct mp_config_intsrc { | ||
133 | unsigned int mp_dstapic; | ||
134 | unsigned char mp_type; | ||
135 | unsigned char mp_irqtype; | ||
136 | unsigned short mp_irqflag; | ||
137 | unsigned char mp_srcbus; | ||
138 | unsigned char mp_srcbusirq; | ||
139 | unsigned char mp_dstirq; | ||
120 | }; | 140 | }; |
121 | 141 | ||
122 | /* I/O APIC entries */ | 142 | /* I/O APIC entries */ |
123 | extern struct mpc_config_ioapic mp_ioapics[MAX_IO_APICS]; | 143 | extern struct mp_config_ioapic mp_ioapics[MAX_IO_APICS]; |
124 | 144 | ||
125 | /* # of MP IRQ source entries */ | 145 | /* # of MP IRQ source entries */ |
126 | extern int mp_irq_entries; | 146 | extern int mp_irq_entries; |
127 | 147 | ||
128 | /* MP IRQ source entries */ | 148 | /* MP IRQ source entries */ |
129 | extern struct mpc_config_intsrc mp_irqs[MAX_IRQ_SOURCES]; | 149 | extern struct mp_config_intsrc mp_irqs[MAX_IRQ_SOURCES]; |
130 | 150 | ||
131 | /* non-0 if default (table-less) MP configuration */ | 151 | /* non-0 if default (table-less) MP configuration */ |
132 | extern int mpc_default_type; | 152 | extern int mpc_default_type; |
@@ -137,6 +157,9 @@ extern int sis_apic_bug; | |||
137 | /* 1 if "noapic" boot option passed */ | 157 | /* 1 if "noapic" boot option passed */ |
138 | extern int skip_ioapic_setup; | 158 | extern int skip_ioapic_setup; |
139 | 159 | ||
160 | /* 1 if the timer IRQ uses the '8259A Virtual Wire' mode */ | ||
161 | extern int timer_through_8259; | ||
162 | |||
140 | static inline void disable_ioapic_setup(void) | 163 | static inline void disable_ioapic_setup(void) |
141 | { | 164 | { |
142 | skip_ioapic_setup = 1; | 165 | skip_ioapic_setup = 1; |
@@ -162,6 +185,8 @@ extern void ioapic_init_mappings(void); | |||
162 | 185 | ||
163 | #else /* !CONFIG_X86_IO_APIC */ | 186 | #else /* !CONFIG_X86_IO_APIC */ |
164 | #define io_apic_assign_pci_irqs 0 | 187 | #define io_apic_assign_pci_irqs 0 |
188 | static const int timer_through_8259 = 0; | ||
189 | static inline void ioapic_init_mappings(void) { } | ||
165 | #endif | 190 | #endif |
166 | 191 | ||
167 | #endif | 192 | #endif |