aboutsummaryrefslogtreecommitdiffstats
path: root/arch/i386/kernel/acpi/boot.c
diff options
context:
space:
mode:
authorLen Brown <len.brown@intel.com>2005-08-05 00:44:28 -0400
committerLen Brown <len.brown@intel.com>2005-08-05 00:45:14 -0400
commit4be44fcd3bf648b782f4460fd06dfae6c42ded4b (patch)
tree5b5b7d296ea58786f53b95e5eac9565ff66890b0 /arch/i386/kernel/acpi/boot.c
parentc65ade4dc8b486e8c8b9b0a6399789a5428e2039 (diff)
[ACPI] Lindent all ACPI files
Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'arch/i386/kernel/acpi/boot.c')
-rw-r--r--arch/i386/kernel/acpi/boot.c530
1 files changed, 260 insertions, 270 deletions
diff --git a/arch/i386/kernel/acpi/boot.c b/arch/i386/kernel/acpi/boot.c
index 55c0fbd68956..98d119c66379 100644
--- a/arch/i386/kernel/acpi/boot.c
+++ b/arch/i386/kernel/acpi/boot.c
@@ -40,19 +40,25 @@
40 40
41#ifdef CONFIG_X86_64 41#ifdef CONFIG_X86_64
42 42
43static inline void acpi_madt_oem_check(char *oem_id, char *oem_table_id) { } 43static inline void acpi_madt_oem_check(char *oem_id, char *oem_table_id)
44{
45}
44extern void __init clustered_apic_check(void); 46extern void __init clustered_apic_check(void);
45static inline int ioapic_setup_disabled(void) { return 0; } 47static inline int ioapic_setup_disabled(void)
48{
49 return 0;
50}
51
46#include <asm/proto.h> 52#include <asm/proto.h>
47 53
48#else /* X86 */ 54#else /* X86 */
49 55
50#ifdef CONFIG_X86_LOCAL_APIC 56#ifdef CONFIG_X86_LOCAL_APIC
51#include <mach_apic.h> 57#include <mach_apic.h>
52#include <mach_mpparse.h> 58#include <mach_mpparse.h>
53#endif /* CONFIG_X86_LOCAL_APIC */ 59#endif /* CONFIG_X86_LOCAL_APIC */
54 60
55#endif /* X86 */ 61#endif /* X86 */
56 62
57#define BAD_MADT_ENTRY(entry, end) ( \ 63#define BAD_MADT_ENTRY(entry, end) ( \
58 (!entry) || (unsigned long)entry + sizeof(*entry) > end || \ 64 (!entry) || (unsigned long)entry + sizeof(*entry) > end || \
@@ -62,7 +68,7 @@ static inline int ioapic_setup_disabled(void) { return 0; }
62 68
63#ifdef CONFIG_ACPI_PCI 69#ifdef CONFIG_ACPI_PCI
64int acpi_noirq __initdata; /* skip ACPI IRQ initialization */ 70int acpi_noirq __initdata; /* skip ACPI IRQ initialization */
65int acpi_pci_disabled __initdata; /* skip ACPI PCI scan and IRQ initialization */ 71int acpi_pci_disabled __initdata; /* skip ACPI PCI scan and IRQ initialization */
66#else 72#else
67int acpi_noirq __initdata = 1; 73int acpi_noirq __initdata = 1;
68int acpi_pci_disabled __initdata = 1; 74int acpi_pci_disabled __initdata = 1;
@@ -88,7 +94,7 @@ static u64 acpi_lapic_addr __initdata = APIC_DEFAULT_PHYS_BASE;
88 94
89#define MAX_MADT_ENTRIES 256 95#define MAX_MADT_ENTRIES 256
90u8 x86_acpiid_to_apicid[MAX_MADT_ENTRIES] = 96u8 x86_acpiid_to_apicid[MAX_MADT_ENTRIES] =
91 { [0 ... MAX_MADT_ENTRIES-1] = 0xff }; 97 {[0...MAX_MADT_ENTRIES - 1] = 0xff };
92EXPORT_SYMBOL(x86_acpiid_to_apicid); 98EXPORT_SYMBOL(x86_acpiid_to_apicid);
93 99
94/* -------------------------------------------------------------------------- 100/* --------------------------------------------------------------------------
@@ -99,7 +105,7 @@ EXPORT_SYMBOL(x86_acpiid_to_apicid);
99 * The default interrupt routing model is PIC (8259). This gets 105 * The default interrupt routing model is PIC (8259). This gets
100 * overriden if IOAPICs are enumerated (below). 106 * overriden if IOAPICs are enumerated (below).
101 */ 107 */
102enum acpi_irq_model_id acpi_irq_model = ACPI_IRQ_MODEL_PIC; 108enum acpi_irq_model_id acpi_irq_model = ACPI_IRQ_MODEL_PIC;
103 109
104#ifdef CONFIG_X86_64 110#ifdef CONFIG_X86_64
105 111
@@ -107,7 +113,7 @@ enum acpi_irq_model_id acpi_irq_model = ACPI_IRQ_MODEL_PIC;
107char *__acpi_map_table(unsigned long phys_addr, unsigned long size) 113char *__acpi_map_table(unsigned long phys_addr, unsigned long size)
108{ 114{
109 if (!phys_addr || !size) 115 if (!phys_addr || !size)
110 return NULL; 116 return NULL;
111 117
112 if (phys_addr < (end_pfn_map << PAGE_SHIFT)) 118 if (phys_addr < (end_pfn_map << PAGE_SHIFT))
113 return __va(phys_addr); 119 return __va(phys_addr);
@@ -134,8 +140,8 @@ char *__acpi_map_table(unsigned long phys, unsigned long size)
134 unsigned long base, offset, mapped_size; 140 unsigned long base, offset, mapped_size;
135 int idx; 141 int idx;
136 142
137 if (phys + size < 8*1024*1024) 143 if (phys + size < 8 * 1024 * 1024)
138 return __va(phys); 144 return __va(phys);
139 145
140 offset = phys & (PAGE_SIZE - 1); 146 offset = phys & (PAGE_SIZE - 1);
141 mapped_size = PAGE_SIZE - offset; 147 mapped_size = PAGE_SIZE - offset;
@@ -154,7 +160,7 @@ char *__acpi_map_table(unsigned long phys, unsigned long size)
154 mapped_size += PAGE_SIZE; 160 mapped_size += PAGE_SIZE;
155 } 161 }
156 162
157 return ((unsigned char *) base + offset); 163 return ((unsigned char *)base + offset);
158} 164}
159#endif 165#endif
160 166
@@ -172,7 +178,7 @@ int __init acpi_parse_mcfg(unsigned long phys_addr, unsigned long size)
172 if (!phys_addr || !size) 178 if (!phys_addr || !size)
173 return -EINVAL; 179 return -EINVAL;
174 180
175 mcfg = (struct acpi_table_mcfg *) __acpi_map_table(phys_addr, size); 181 mcfg = (struct acpi_table_mcfg *)__acpi_map_table(phys_addr, size);
176 if (!mcfg) { 182 if (!mcfg) {
177 printk(KERN_WARNING PREFIX "Unable to map MCFG\n"); 183 printk(KERN_WARNING PREFIX "Unable to map MCFG\n");
178 return -ENODEV; 184 return -ENODEV;
@@ -209,20 +215,17 @@ int __init acpi_parse_mcfg(unsigned long phys_addr, unsigned long size)
209 215
210 return 0; 216 return 0;
211} 217}
212#endif /* CONFIG_PCI_MMCONFIG */ 218#endif /* CONFIG_PCI_MMCONFIG */
213 219
214#ifdef CONFIG_X86_LOCAL_APIC 220#ifdef CONFIG_X86_LOCAL_APIC
215static int __init 221static int __init acpi_parse_madt(unsigned long phys_addr, unsigned long size)
216acpi_parse_madt (
217 unsigned long phys_addr,
218 unsigned long size)
219{ 222{
220 struct acpi_table_madt *madt = NULL; 223 struct acpi_table_madt *madt = NULL;
221 224
222 if (!phys_addr || !size) 225 if (!phys_addr || !size)
223 return -EINVAL; 226 return -EINVAL;
224 227
225 madt = (struct acpi_table_madt *) __acpi_map_table(phys_addr, size); 228 madt = (struct acpi_table_madt *)__acpi_map_table(phys_addr, size);
226 if (!madt) { 229 if (!madt) {
227 printk(KERN_WARNING PREFIX "Unable to map MADT\n"); 230 printk(KERN_WARNING PREFIX "Unable to map MADT\n");
228 return -ENODEV; 231 return -ENODEV;
@@ -232,22 +235,20 @@ acpi_parse_madt (
232 acpi_lapic_addr = (u64) madt->lapic_address; 235 acpi_lapic_addr = (u64) madt->lapic_address;
233 236
234 printk(KERN_DEBUG PREFIX "Local APIC address 0x%08x\n", 237 printk(KERN_DEBUG PREFIX "Local APIC address 0x%08x\n",
235 madt->lapic_address); 238 madt->lapic_address);
236 } 239 }
237 240
238 acpi_madt_oem_check(madt->header.oem_id, madt->header.oem_table_id); 241 acpi_madt_oem_check(madt->header.oem_id, madt->header.oem_table_id);
239 242
240 return 0; 243 return 0;
241} 244}
242 245
243
244static int __init 246static int __init
245acpi_parse_lapic ( 247acpi_parse_lapic(acpi_table_entry_header * header, const unsigned long end)
246 acpi_table_entry_header *header, const unsigned long end)
247{ 248{
248 struct acpi_table_lapic *processor = NULL; 249 struct acpi_table_lapic *processor = NULL;
249 250
250 processor = (struct acpi_table_lapic*) header; 251 processor = (struct acpi_table_lapic *)header;
251 252
252 if (BAD_MADT_ENTRY(processor, end)) 253 if (BAD_MADT_ENTRY(processor, end))
253 return -EINVAL; 254 return -EINVAL;
@@ -260,20 +261,19 @@ acpi_parse_lapic (
260 261
261 x86_acpiid_to_apicid[processor->acpi_id] = processor->id; 262 x86_acpiid_to_apicid[processor->acpi_id] = processor->id;
262 263
263 mp_register_lapic ( 264 mp_register_lapic(processor->id, /* APIC ID */
264 processor->id, /* APIC ID */ 265 processor->flags.enabled); /* Enabled? */
265 processor->flags.enabled); /* Enabled? */
266 266
267 return 0; 267 return 0;
268} 268}
269 269
270static int __init 270static int __init
271acpi_parse_lapic_addr_ovr ( 271acpi_parse_lapic_addr_ovr(acpi_table_entry_header * header,
272 acpi_table_entry_header *header, const unsigned long end) 272 const unsigned long end)
273{ 273{
274 struct acpi_table_lapic_addr_ovr *lapic_addr_ovr = NULL; 274 struct acpi_table_lapic_addr_ovr *lapic_addr_ovr = NULL;
275 275
276 lapic_addr_ovr = (struct acpi_table_lapic_addr_ovr*) header; 276 lapic_addr_ovr = (struct acpi_table_lapic_addr_ovr *)header;
277 277
278 if (BAD_MADT_ENTRY(lapic_addr_ovr, end)) 278 if (BAD_MADT_ENTRY(lapic_addr_ovr, end))
279 return -EINVAL; 279 return -EINVAL;
@@ -284,12 +284,11 @@ acpi_parse_lapic_addr_ovr (
284} 284}
285 285
286static int __init 286static int __init
287acpi_parse_lapic_nmi ( 287acpi_parse_lapic_nmi(acpi_table_entry_header * header, const unsigned long end)
288 acpi_table_entry_header *header, const unsigned long end)
289{ 288{
290 struct acpi_table_lapic_nmi *lapic_nmi = NULL; 289 struct acpi_table_lapic_nmi *lapic_nmi = NULL;
291 290
292 lapic_nmi = (struct acpi_table_lapic_nmi*) header; 291 lapic_nmi = (struct acpi_table_lapic_nmi *)header;
293 292
294 if (BAD_MADT_ENTRY(lapic_nmi, end)) 293 if (BAD_MADT_ENTRY(lapic_nmi, end))
295 return -EINVAL; 294 return -EINVAL;
@@ -302,37 +301,32 @@ acpi_parse_lapic_nmi (
302 return 0; 301 return 0;
303} 302}
304 303
305 304#endif /*CONFIG_X86_LOCAL_APIC */
306#endif /*CONFIG_X86_LOCAL_APIC*/
307 305
308#if defined(CONFIG_X86_IO_APIC) && defined(CONFIG_ACPI_INTERPRETER) 306#if defined(CONFIG_X86_IO_APIC) && defined(CONFIG_ACPI_INTERPRETER)
309 307
310static int __init 308static int __init
311acpi_parse_ioapic ( 309acpi_parse_ioapic(acpi_table_entry_header * header, const unsigned long end)
312 acpi_table_entry_header *header, const unsigned long end)
313{ 310{
314 struct acpi_table_ioapic *ioapic = NULL; 311 struct acpi_table_ioapic *ioapic = NULL;
315 312
316 ioapic = (struct acpi_table_ioapic*) header; 313 ioapic = (struct acpi_table_ioapic *)header;
317 314
318 if (BAD_MADT_ENTRY(ioapic, end)) 315 if (BAD_MADT_ENTRY(ioapic, end))
319 return -EINVAL; 316 return -EINVAL;
320 317
321 acpi_table_print_madt_entry(header); 318 acpi_table_print_madt_entry(header);
322 319
323 mp_register_ioapic ( 320 mp_register_ioapic(ioapic->id,
324 ioapic->id, 321 ioapic->address, ioapic->global_irq_base);
325 ioapic->address, 322
326 ioapic->global_irq_base);
327
328 return 0; 323 return 0;
329} 324}
330 325
331/* 326/*
332 * Parse Interrupt Source Override for the ACPI SCI 327 * Parse Interrupt Source Override for the ACPI SCI
333 */ 328 */
334static void 329static void acpi_sci_ioapic_setup(u32 gsi, u16 polarity, u16 trigger)
335acpi_sci_ioapic_setup(u32 gsi, u16 polarity, u16 trigger)
336{ 330{
337 if (trigger == 0) /* compatible SCI trigger is level */ 331 if (trigger == 0) /* compatible SCI trigger is level */
338 trigger = 3; 332 trigger = 3;
@@ -348,7 +342,7 @@ acpi_sci_ioapic_setup(u32 gsi, u16 polarity, u16 trigger)
348 polarity = acpi_sci_flags.polarity; 342 polarity = acpi_sci_flags.polarity;
349 343
350 /* 344 /*
351 * mp_config_acpi_legacy_irqs() already setup IRQs < 16 345 * mp_config_acpi_legacy_irqs() already setup IRQs < 16
352 * If GSI is < 16, this will update its flags, 346 * If GSI is < 16, this will update its flags,
353 * else it will create a new mp_irqs[] entry. 347 * else it will create a new mp_irqs[] entry.
354 */ 348 */
@@ -363,12 +357,12 @@ acpi_sci_ioapic_setup(u32 gsi, u16 polarity, u16 trigger)
363} 357}
364 358
365static int __init 359static int __init
366acpi_parse_int_src_ovr ( 360acpi_parse_int_src_ovr(acpi_table_entry_header * header,
367 acpi_table_entry_header *header, const unsigned long end) 361 const unsigned long end)
368{ 362{
369 struct acpi_table_int_src_ovr *intsrc = NULL; 363 struct acpi_table_int_src_ovr *intsrc = NULL;
370 364
371 intsrc = (struct acpi_table_int_src_ovr*) header; 365 intsrc = (struct acpi_table_int_src_ovr *)header;
372 366
373 if (BAD_MADT_ENTRY(intsrc, end)) 367 if (BAD_MADT_ENTRY(intsrc, end))
374 return -EINVAL; 368 return -EINVAL;
@@ -377,33 +371,30 @@ acpi_parse_int_src_ovr (
377 371
378 if (intsrc->bus_irq == acpi_fadt.sci_int) { 372 if (intsrc->bus_irq == acpi_fadt.sci_int) {
379 acpi_sci_ioapic_setup(intsrc->global_irq, 373 acpi_sci_ioapic_setup(intsrc->global_irq,
380 intsrc->flags.polarity, intsrc->flags.trigger); 374 intsrc->flags.polarity,
375 intsrc->flags.trigger);
381 return 0; 376 return 0;
382 } 377 }
383 378
384 if (acpi_skip_timer_override && 379 if (acpi_skip_timer_override &&
385 intsrc->bus_irq == 0 && intsrc->global_irq == 2) { 380 intsrc->bus_irq == 0 && intsrc->global_irq == 2) {
386 printk(PREFIX "BIOS IRQ0 pin2 override ignored.\n"); 381 printk(PREFIX "BIOS IRQ0 pin2 override ignored.\n");
387 return 0; 382 return 0;
388 } 383 }
389 384
390 mp_override_legacy_irq ( 385 mp_override_legacy_irq(intsrc->bus_irq,
391 intsrc->bus_irq, 386 intsrc->flags.polarity,
392 intsrc->flags.polarity, 387 intsrc->flags.trigger, intsrc->global_irq);
393 intsrc->flags.trigger,
394 intsrc->global_irq);
395 388
396 return 0; 389 return 0;
397} 390}
398 391
399
400static int __init 392static int __init
401acpi_parse_nmi_src ( 393acpi_parse_nmi_src(acpi_table_entry_header * header, const unsigned long end)
402 acpi_table_entry_header *header, const unsigned long end)
403{ 394{
404 struct acpi_table_nmi_src *nmi_src = NULL; 395 struct acpi_table_nmi_src *nmi_src = NULL;
405 396
406 nmi_src = (struct acpi_table_nmi_src*) header; 397 nmi_src = (struct acpi_table_nmi_src *)header;
407 398
408 if (BAD_MADT_ENTRY(nmi_src, end)) 399 if (BAD_MADT_ENTRY(nmi_src, end))
409 return -EINVAL; 400 return -EINVAL;
@@ -415,7 +406,7 @@ acpi_parse_nmi_src (
415 return 0; 406 return 0;
416} 407}
417 408
418#endif /* CONFIG_X86_IO_APIC */ 409#endif /* CONFIG_X86_IO_APIC */
419 410
420#ifdef CONFIG_ACPI_BUS 411#ifdef CONFIG_ACPI_BUS
421 412
@@ -433,8 +424,7 @@ acpi_parse_nmi_src (
433 * ECLR2 is IRQ's 8-15 (IRQ 8, 13 must be 0) 424 * ECLR2 is IRQ's 8-15 (IRQ 8, 13 must be 0)
434 */ 425 */
435 426
436void __init 427void __init acpi_pic_sci_set_trigger(unsigned int irq, u16 trigger)
437acpi_pic_sci_set_trigger(unsigned int irq, u16 trigger)
438{ 428{
439 unsigned int mask = 1 << irq; 429 unsigned int mask = 1 << irq;
440 unsigned int old, new; 430 unsigned int old, new;
@@ -454,10 +444,10 @@ acpi_pic_sci_set_trigger(unsigned int irq, u16 trigger)
454 * routing tables.. 444 * routing tables..
455 */ 445 */
456 switch (trigger) { 446 switch (trigger) {
457 case 1: /* Edge - clear */ 447 case 1: /* Edge - clear */
458 new &= ~mask; 448 new &= ~mask;
459 break; 449 break;
460 case 3: /* Level - set */ 450 case 3: /* Level - set */
461 new |= mask; 451 new |= mask;
462 break; 452 break;
463 } 453 }
@@ -470,14 +460,13 @@ acpi_pic_sci_set_trigger(unsigned int irq, u16 trigger)
470 outb(new >> 8, 0x4d1); 460 outb(new >> 8, 0x4d1);
471} 461}
472 462
473 463#endif /* CONFIG_ACPI_BUS */
474#endif /* CONFIG_ACPI_BUS */
475 464
476int acpi_gsi_to_irq(u32 gsi, unsigned int *irq) 465int acpi_gsi_to_irq(u32 gsi, unsigned int *irq)
477{ 466{
478#ifdef CONFIG_X86_IO_APIC 467#ifdef CONFIG_X86_IO_APIC
479 if (use_pci_vector() && !platform_legacy_irq(gsi)) 468 if (use_pci_vector() && !platform_legacy_irq(gsi))
480 *irq = IO_APIC_VECTOR(gsi); 469 *irq = IO_APIC_VECTOR(gsi);
481 else 470 else
482#endif 471#endif
483 *irq = gsi; 472 *irq = gsi;
@@ -501,7 +490,7 @@ int acpi_register_gsi(u32 gsi, int edge_level, int active_high_low)
501 extern void eisa_set_level_irq(unsigned int irq); 490 extern void eisa_set_level_irq(unsigned int irq);
502 491
503 if (edge_level == ACPI_LEVEL_SENSITIVE) 492 if (edge_level == ACPI_LEVEL_SENSITIVE)
504 eisa_set_level_irq(gsi); 493 eisa_set_level_irq(gsi);
505 } 494 }
506#endif 495#endif
507 496
@@ -513,60 +502,58 @@ int acpi_register_gsi(u32 gsi, int edge_level, int active_high_low)
513 acpi_gsi_to_irq(plat_gsi, &irq); 502 acpi_gsi_to_irq(plat_gsi, &irq);
514 return irq; 503 return irq;
515} 504}
505
516EXPORT_SYMBOL(acpi_register_gsi); 506EXPORT_SYMBOL(acpi_register_gsi);
517 507
518/* 508/*
519 * ACPI based hotplug support for CPU 509 * ACPI based hotplug support for CPU
520 */ 510 */
521#ifdef CONFIG_ACPI_HOTPLUG_CPU 511#ifdef CONFIG_ACPI_HOTPLUG_CPU
522int 512int acpi_map_lsapic(acpi_handle handle, int *pcpu)
523acpi_map_lsapic(acpi_handle handle, int *pcpu)
524{ 513{
525 /* TBD */ 514 /* TBD */
526 return -EINVAL; 515 return -EINVAL;
527} 516}
528EXPORT_SYMBOL(acpi_map_lsapic);
529 517
518EXPORT_SYMBOL(acpi_map_lsapic);
530 519
531int 520int acpi_unmap_lsapic(int cpu)
532acpi_unmap_lsapic(int cpu)
533{ 521{
534 /* TBD */ 522 /* TBD */
535 return -EINVAL; 523 return -EINVAL;
536} 524}
525
537EXPORT_SYMBOL(acpi_unmap_lsapic); 526EXPORT_SYMBOL(acpi_unmap_lsapic);
538#endif /* CONFIG_ACPI_HOTPLUG_CPU */ 527#endif /* CONFIG_ACPI_HOTPLUG_CPU */
539 528
540int 529int acpi_register_ioapic(acpi_handle handle, u64 phys_addr, u32 gsi_base)
541acpi_register_ioapic(acpi_handle handle, u64 phys_addr, u32 gsi_base)
542{ 530{
543 /* TBD */ 531 /* TBD */
544 return -EINVAL; 532 return -EINVAL;
545} 533}
534
546EXPORT_SYMBOL(acpi_register_ioapic); 535EXPORT_SYMBOL(acpi_register_ioapic);
547 536
548int 537int acpi_unregister_ioapic(acpi_handle handle, u32 gsi_base)
549acpi_unregister_ioapic(acpi_handle handle, u32 gsi_base)
550{ 538{
551 /* TBD */ 539 /* TBD */
552 return -EINVAL; 540 return -EINVAL;
553} 541}
542
554EXPORT_SYMBOL(acpi_unregister_ioapic); 543EXPORT_SYMBOL(acpi_unregister_ioapic);
555 544
556static unsigned long __init 545static unsigned long __init
557acpi_scan_rsdp ( 546acpi_scan_rsdp(unsigned long start, unsigned long length)
558 unsigned long start,
559 unsigned long length)
560{ 547{
561 unsigned long offset = 0; 548 unsigned long offset = 0;
562 unsigned long sig_len = sizeof("RSD PTR ") - 1; 549 unsigned long sig_len = sizeof("RSD PTR ") - 1;
563 550
564 /* 551 /*
565 * Scan all 16-byte boundaries of the physical memory region for the 552 * Scan all 16-byte boundaries of the physical memory region for the
566 * RSDP signature. 553 * RSDP signature.
567 */ 554 */
568 for (offset = 0; offset < length; offset += 16) { 555 for (offset = 0; offset < length; offset += 16) {
569 if (strncmp((char *) (start + offset), "RSD PTR ", sig_len)) 556 if (strncmp((char *)(start + offset), "RSD PTR ", sig_len))
570 continue; 557 continue;
571 return (start + offset); 558 return (start + offset);
572 } 559 }
@@ -579,20 +566,19 @@ static int __init acpi_parse_sbf(unsigned long phys_addr, unsigned long size)
579 struct acpi_table_sbf *sb; 566 struct acpi_table_sbf *sb;
580 567
581 if (!phys_addr || !size) 568 if (!phys_addr || !size)
582 return -EINVAL; 569 return -EINVAL;
583 570
584 sb = (struct acpi_table_sbf *) __acpi_map_table(phys_addr, size); 571 sb = (struct acpi_table_sbf *)__acpi_map_table(phys_addr, size);
585 if (!sb) { 572 if (!sb) {
586 printk(KERN_WARNING PREFIX "Unable to map SBF\n"); 573 printk(KERN_WARNING PREFIX "Unable to map SBF\n");
587 return -ENODEV; 574 return -ENODEV;
588 } 575 }
589 576
590 sbf_port = sb->sbf_cmos; /* Save CMOS port */ 577 sbf_port = sb->sbf_cmos; /* Save CMOS port */
591 578
592 return 0; 579 return 0;
593} 580}
594 581
595
596#ifdef CONFIG_HPET_TIMER 582#ifdef CONFIG_HPET_TIMER
597 583
598static int __init acpi_parse_hpet(unsigned long phys, unsigned long size) 584static int __init acpi_parse_hpet(unsigned long phys, unsigned long size)
@@ -602,7 +588,7 @@ static int __init acpi_parse_hpet(unsigned long phys, unsigned long size)
602 if (!phys || !size) 588 if (!phys || !size)
603 return -EINVAL; 589 return -EINVAL;
604 590
605 hpet_tbl = (struct acpi_table_hpet *) __acpi_map_table(phys, size); 591 hpet_tbl = (struct acpi_table_hpet *)__acpi_map_table(phys, size);
606 if (!hpet_tbl) { 592 if (!hpet_tbl) {
607 printk(KERN_WARNING PREFIX "Unable to map HPET\n"); 593 printk(KERN_WARNING PREFIX "Unable to map HPET\n");
608 return -ENODEV; 594 return -ENODEV;
@@ -613,22 +599,21 @@ static int __init acpi_parse_hpet(unsigned long phys, unsigned long size)
613 "memory.\n"); 599 "memory.\n");
614 return -1; 600 return -1;
615 } 601 }
616
617#ifdef CONFIG_X86_64 602#ifdef CONFIG_X86_64
618 vxtime.hpet_address = hpet_tbl->addr.addrl | 603 vxtime.hpet_address = hpet_tbl->addr.addrl |
619 ((long) hpet_tbl->addr.addrh << 32); 604 ((long)hpet_tbl->addr.addrh << 32);
620 605
621 printk(KERN_INFO PREFIX "HPET id: %#x base: %#lx\n", 606 printk(KERN_INFO PREFIX "HPET id: %#x base: %#lx\n",
622 hpet_tbl->id, vxtime.hpet_address); 607 hpet_tbl->id, vxtime.hpet_address);
623#else /* X86 */ 608#else /* X86 */
624 { 609 {
625 extern unsigned long hpet_address; 610 extern unsigned long hpet_address;
626 611
627 hpet_address = hpet_tbl->addr.addrl; 612 hpet_address = hpet_tbl->addr.addrl;
628 printk(KERN_INFO PREFIX "HPET id: %#x base: %#lx\n", 613 printk(KERN_INFO PREFIX "HPET id: %#x base: %#lx\n",
629 hpet_tbl->id, hpet_address); 614 hpet_tbl->id, hpet_address);
630 } 615 }
631#endif /* X86 */ 616#endif /* X86 */
632 617
633 return 0; 618 return 0;
634} 619}
@@ -644,12 +629,11 @@ static int __init acpi_parse_fadt(unsigned long phys, unsigned long size)
644{ 629{
645 struct fadt_descriptor_rev2 *fadt = NULL; 630 struct fadt_descriptor_rev2 *fadt = NULL;
646 631
647 fadt = (struct fadt_descriptor_rev2*) __acpi_map_table(phys,size); 632 fadt = (struct fadt_descriptor_rev2 *)__acpi_map_table(phys, size);
648 if(!fadt) { 633 if (!fadt) {
649 printk(KERN_WARNING PREFIX "Unable to map FADT\n"); 634 printk(KERN_WARNING PREFIX "Unable to map FADT\n");
650 return 0; 635 return 0;
651 } 636 }
652
653#ifdef CONFIG_ACPI_INTERPRETER 637#ifdef CONFIG_ACPI_INTERPRETER
654 /* initialize sci_int early for INT_SRC_OVR MADT parsing */ 638 /* initialize sci_int early for INT_SRC_OVR MADT parsing */
655 acpi_fadt.sci_int = fadt->sci_int; 639 acpi_fadt.sci_int = fadt->sci_int;
@@ -658,14 +642,16 @@ static int __init acpi_parse_fadt(unsigned long phys, unsigned long size)
658#ifdef CONFIG_ACPI_BUS 642#ifdef CONFIG_ACPI_BUS
659 /* initialize rev and apic_phys_dest_mode for x86_64 genapic */ 643 /* initialize rev and apic_phys_dest_mode for x86_64 genapic */
660 acpi_fadt.revision = fadt->revision; 644 acpi_fadt.revision = fadt->revision;
661 acpi_fadt.force_apic_physical_destination_mode = fadt->force_apic_physical_destination_mode; 645 acpi_fadt.force_apic_physical_destination_mode =
646 fadt->force_apic_physical_destination_mode;
662#endif 647#endif
663 648
664#ifdef CONFIG_X86_PM_TIMER 649#ifdef CONFIG_X86_PM_TIMER
665 /* detect the location of the ACPI PM Timer */ 650 /* detect the location of the ACPI PM Timer */
666 if (fadt->revision >= FADT2_REVISION_ID) { 651 if (fadt->revision >= FADT2_REVISION_ID) {
667 /* FADT rev. 2 */ 652 /* FADT rev. 2 */
668 if (fadt->xpm_tmr_blk.address_space_id != ACPI_ADR_SPACE_SYSTEM_IO) 653 if (fadt->xpm_tmr_blk.address_space_id !=
654 ACPI_ADR_SPACE_SYSTEM_IO)
669 return 0; 655 return 0;
670 656
671 pmtmr_ioport = fadt->xpm_tmr_blk.address; 657 pmtmr_ioport = fadt->xpm_tmr_blk.address;
@@ -674,16 +660,15 @@ static int __init acpi_parse_fadt(unsigned long phys, unsigned long size)
674 pmtmr_ioport = fadt->V1_pm_tmr_blk; 660 pmtmr_ioport = fadt->V1_pm_tmr_blk;
675 } 661 }
676 if (pmtmr_ioport) 662 if (pmtmr_ioport)
677 printk(KERN_INFO PREFIX "PM-Timer IO Port: %#x\n", pmtmr_ioport); 663 printk(KERN_INFO PREFIX "PM-Timer IO Port: %#x\n",
664 pmtmr_ioport);
678#endif 665#endif
679 return 0; 666 return 0;
680} 667}
681 668
682 669unsigned long __init acpi_find_rsdp(void)
683unsigned long __init
684acpi_find_rsdp (void)
685{ 670{
686 unsigned long rsdp_phys = 0; 671 unsigned long rsdp_phys = 0;
687 672
688 if (efi_enabled) { 673 if (efi_enabled) {
689 if (efi.acpi20) 674 if (efi.acpi20)
@@ -695,9 +680,9 @@ acpi_find_rsdp (void)
695 * Scan memory looking for the RSDP signature. First search EBDA (low 680 * Scan memory looking for the RSDP signature. First search EBDA (low
696 * memory) paragraphs and then search upper memory (E0000-FFFFF). 681 * memory) paragraphs and then search upper memory (E0000-FFFFF).
697 */ 682 */
698 rsdp_phys = acpi_scan_rsdp (0, 0x400); 683 rsdp_phys = acpi_scan_rsdp(0, 0x400);
699 if (!rsdp_phys) 684 if (!rsdp_phys)
700 rsdp_phys = acpi_scan_rsdp (0xE0000, 0x20000); 685 rsdp_phys = acpi_scan_rsdp(0xE0000, 0x20000);
701 686
702 return rsdp_phys; 687 return rsdp_phys;
703} 688}
@@ -707,8 +692,7 @@ acpi_find_rsdp (void)
707 * Parse LAPIC entries in MADT 692 * Parse LAPIC entries in MADT
708 * returns 0 on success, < 0 on error 693 * returns 0 on success, < 0 on error
709 */ 694 */
710static int __init 695static int __init acpi_parse_madt_lapic_entries(void)
711acpi_parse_madt_lapic_entries(void)
712{ 696{
713 int count; 697 int count;
714 698
@@ -717,28 +701,31 @@ acpi_parse_madt_lapic_entries(void)
717 * and (optionally) overriden by a LAPIC_ADDR_OVR entry (64-bit value). 701 * and (optionally) overriden by a LAPIC_ADDR_OVR entry (64-bit value).
718 */ 702 */
719 703
720 count = acpi_table_parse_madt(ACPI_MADT_LAPIC_ADDR_OVR, acpi_parse_lapic_addr_ovr, 0); 704 count =
705 acpi_table_parse_madt(ACPI_MADT_LAPIC_ADDR_OVR,
706 acpi_parse_lapic_addr_ovr, 0);
721 if (count < 0) { 707 if (count < 0) {
722 printk(KERN_ERR PREFIX "Error parsing LAPIC address override entry\n"); 708 printk(KERN_ERR PREFIX
709 "Error parsing LAPIC address override entry\n");
723 return count; 710 return count;
724 } 711 }
725 712
726 mp_register_lapic_address(acpi_lapic_addr); 713 mp_register_lapic_address(acpi_lapic_addr);
727 714
728 count = acpi_table_parse_madt(ACPI_MADT_LAPIC, acpi_parse_lapic, 715 count = acpi_table_parse_madt(ACPI_MADT_LAPIC, acpi_parse_lapic,
729 MAX_APICS); 716 MAX_APICS);
730 if (!count) { 717 if (!count) {
731 printk(KERN_ERR PREFIX "No LAPIC entries present\n"); 718 printk(KERN_ERR PREFIX "No LAPIC entries present\n");
732 /* TBD: Cleanup to allow fallback to MPS */ 719 /* TBD: Cleanup to allow fallback to MPS */
733 return -ENODEV; 720 return -ENODEV;
734 } 721 } else if (count < 0) {
735 else if (count < 0) {
736 printk(KERN_ERR PREFIX "Error parsing LAPIC entry\n"); 722 printk(KERN_ERR PREFIX "Error parsing LAPIC entry\n");
737 /* TBD: Cleanup to allow fallback to MPS */ 723 /* TBD: Cleanup to allow fallback to MPS */
738 return count; 724 return count;
739 } 725 }
740 726
741 count = acpi_table_parse_madt(ACPI_MADT_LAPIC_NMI, acpi_parse_lapic_nmi, 0); 727 count =
728 acpi_table_parse_madt(ACPI_MADT_LAPIC_NMI, acpi_parse_lapic_nmi, 0);
742 if (count < 0) { 729 if (count < 0) {
743 printk(KERN_ERR PREFIX "Error parsing LAPIC NMI entry\n"); 730 printk(KERN_ERR PREFIX "Error parsing LAPIC NMI entry\n");
744 /* TBD: Cleanup to allow fallback to MPS */ 731 /* TBD: Cleanup to allow fallback to MPS */
@@ -746,15 +733,14 @@ acpi_parse_madt_lapic_entries(void)
746 } 733 }
747 return 0; 734 return 0;
748} 735}
749#endif /* CONFIG_X86_LOCAL_APIC */ 736#endif /* CONFIG_X86_LOCAL_APIC */
750 737
751#if defined(CONFIG_X86_IO_APIC) && defined(CONFIG_ACPI_INTERPRETER) 738#if defined(CONFIG_X86_IO_APIC) && defined(CONFIG_ACPI_INTERPRETER)
752/* 739/*
753 * Parse IOAPIC related entries in MADT 740 * Parse IOAPIC related entries in MADT
754 * returns 0 on success, < 0 on error 741 * returns 0 on success, < 0 on error
755 */ 742 */
756static int __init 743static int __init acpi_parse_madt_ioapic_entries(void)
757acpi_parse_madt_ioapic_entries(void)
758{ 744{
759 int count; 745 int count;
760 746
@@ -766,30 +752,34 @@ acpi_parse_madt_ioapic_entries(void)
766 */ 752 */
767 if (acpi_disabled || acpi_noirq) { 753 if (acpi_disabled || acpi_noirq) {
768 return -ENODEV; 754 return -ENODEV;
769 } 755 }
770 756
771 /* 757 /*
772 * if "noapic" boot option, don't look for IO-APICs 758 * if "noapic" boot option, don't look for IO-APICs
773 */ 759 */
774 if (skip_ioapic_setup) { 760 if (skip_ioapic_setup) {
775 printk(KERN_INFO PREFIX "Skipping IOAPIC probe " 761 printk(KERN_INFO PREFIX "Skipping IOAPIC probe "
776 "due to 'noapic' option.\n"); 762 "due to 'noapic' option.\n");
777 return -ENODEV; 763 return -ENODEV;
778 } 764 }
779 765
780 count = acpi_table_parse_madt(ACPI_MADT_IOAPIC, acpi_parse_ioapic, MAX_IO_APICS); 766 count =
767 acpi_table_parse_madt(ACPI_MADT_IOAPIC, acpi_parse_ioapic,
768 MAX_IO_APICS);
781 if (!count) { 769 if (!count) {
782 printk(KERN_ERR PREFIX "No IOAPIC entries present\n"); 770 printk(KERN_ERR PREFIX "No IOAPIC entries present\n");
783 return -ENODEV; 771 return -ENODEV;
784 } 772 } else if (count < 0) {
785 else if (count < 0) {
786 printk(KERN_ERR PREFIX "Error parsing IOAPIC entry\n"); 773 printk(KERN_ERR PREFIX "Error parsing IOAPIC entry\n");
787 return count; 774 return count;
788 } 775 }
789 776
790 count = acpi_table_parse_madt(ACPI_MADT_INT_SRC_OVR, acpi_parse_int_src_ovr, NR_IRQ_VECTORS); 777 count =
778 acpi_table_parse_madt(ACPI_MADT_INT_SRC_OVR, acpi_parse_int_src_ovr,
779 NR_IRQ_VECTORS);
791 if (count < 0) { 780 if (count < 0) {
792 printk(KERN_ERR PREFIX "Error parsing interrupt source overrides entry\n"); 781 printk(KERN_ERR PREFIX
782 "Error parsing interrupt source overrides entry\n");
793 /* TBD: Cleanup to allow fallback to MPS */ 783 /* TBD: Cleanup to allow fallback to MPS */
794 return count; 784 return count;
795 } 785 }
@@ -804,7 +794,9 @@ acpi_parse_madt_ioapic_entries(void)
804 /* Fill in identity legacy mapings where no override */ 794 /* Fill in identity legacy mapings where no override */
805 mp_config_acpi_legacy_irqs(); 795 mp_config_acpi_legacy_irqs();
806 796
807 count = acpi_table_parse_madt(ACPI_MADT_NMI_SRC, acpi_parse_nmi_src, NR_IRQ_VECTORS); 797 count =
798 acpi_table_parse_madt(ACPI_MADT_NMI_SRC, acpi_parse_nmi_src,
799 NR_IRQ_VECTORS);
808 if (count < 0) { 800 if (count < 0) {
809 printk(KERN_ERR PREFIX "Error parsing NMI SRC entry\n"); 801 printk(KERN_ERR PREFIX "Error parsing NMI SRC entry\n");
810 /* TBD: Cleanup to allow fallback to MPS */ 802 /* TBD: Cleanup to allow fallback to MPS */
@@ -818,11 +810,9 @@ static inline int acpi_parse_madt_ioapic_entries(void)
818{ 810{
819 return -1; 811 return -1;
820} 812}
821#endif /* !(CONFIG_X86_IO_APIC && CONFIG_ACPI_INTERPRETER) */ 813#endif /* !(CONFIG_X86_IO_APIC && CONFIG_ACPI_INTERPRETER) */
822
823 814
824static void __init 815static void __init acpi_process_madt(void)
825acpi_process_madt(void)
826{ 816{
827#ifdef CONFIG_X86_LOCAL_APIC 817#ifdef CONFIG_X86_LOCAL_APIC
828 int count, error; 818 int count, error;
@@ -854,7 +844,8 @@ acpi_process_madt(void)
854 /* 844 /*
855 * Dell Precision Workstation 410, 610 come here. 845 * Dell Precision Workstation 410, 610 come here.
856 */ 846 */
857 printk(KERN_ERR PREFIX "Invalid BIOS MADT, disabling ACPI\n"); 847 printk(KERN_ERR PREFIX
848 "Invalid BIOS MADT, disabling ACPI\n");
858 disable_acpi(); 849 disable_acpi();
859 } 850 }
860 } 851 }
@@ -891,7 +882,7 @@ static int __init disable_acpi_pci(struct dmi_system_id *d)
891static int __init dmi_disable_acpi(struct dmi_system_id *d) 882static int __init dmi_disable_acpi(struct dmi_system_id *d)
892{ 883{
893 if (!acpi_force) { 884 if (!acpi_force) {
894 printk(KERN_NOTICE "%s detected: acpi off\n",d->ident); 885 printk(KERN_NOTICE "%s detected: acpi off\n", d->ident);
895 disable_acpi(); 886 disable_acpi();
896 } else { 887 } else {
897 printk(KERN_NOTICE 888 printk(KERN_NOTICE
@@ -906,7 +897,8 @@ static int __init dmi_disable_acpi(struct dmi_system_id *d)
906static int __init force_acpi_ht(struct dmi_system_id *d) 897static int __init force_acpi_ht(struct dmi_system_id *d)
907{ 898{
908 if (!acpi_force) { 899 if (!acpi_force) {
909 printk(KERN_NOTICE "%s detected: force use of acpi=ht\n", d->ident); 900 printk(KERN_NOTICE "%s detected: force use of acpi=ht\n",
901 d->ident);
910 disable_acpi(); 902 disable_acpi();
911 acpi_ht = 1; 903 acpi_ht = 1;
912 } else { 904 } else {
@@ -925,155 +917,157 @@ static struct dmi_system_id __initdata acpi_dmi_table[] = {
925 * Boxes that need ACPI disabled 917 * Boxes that need ACPI disabled
926 */ 918 */
927 { 919 {
928 .callback = dmi_disable_acpi, 920 .callback = dmi_disable_acpi,
929 .ident = "IBM Thinkpad", 921 .ident = "IBM Thinkpad",
930 .matches = { 922 .matches = {
931 DMI_MATCH(DMI_BOARD_VENDOR, "IBM"), 923 DMI_MATCH(DMI_BOARD_VENDOR, "IBM"),
932 DMI_MATCH(DMI_BOARD_NAME, "2629H1G"), 924 DMI_MATCH(DMI_BOARD_NAME, "2629H1G"),
933 }, 925 },
934 }, 926 },
935 927
936 /* 928 /*
937 * Boxes that need acpi=ht 929 * Boxes that need acpi=ht
938 */ 930 */
939 { 931 {
940 .callback = force_acpi_ht, 932 .callback = force_acpi_ht,
941 .ident = "FSC Primergy T850", 933 .ident = "FSC Primergy T850",
942 .matches = { 934 .matches = {
943 DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU SIEMENS"), 935 DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU SIEMENS"),
944 DMI_MATCH(DMI_PRODUCT_NAME, "PRIMERGY T850"), 936 DMI_MATCH(DMI_PRODUCT_NAME, "PRIMERGY T850"),
945 }, 937 },
946 }, 938 },
947 { 939 {
948 .callback = force_acpi_ht, 940 .callback = force_acpi_ht,
949 .ident = "DELL GX240", 941 .ident = "DELL GX240",
950 .matches = { 942 .matches = {
951 DMI_MATCH(DMI_BOARD_VENDOR, "Dell Computer Corporation"), 943 DMI_MATCH(DMI_BOARD_VENDOR, "Dell Computer Corporation"),
952 DMI_MATCH(DMI_BOARD_NAME, "OptiPlex GX240"), 944 DMI_MATCH(DMI_BOARD_NAME, "OptiPlex GX240"),
953 }, 945 },
954 }, 946 },
955 { 947 {
956 .callback = force_acpi_ht, 948 .callback = force_acpi_ht,
957 .ident = "HP VISUALIZE NT Workstation", 949 .ident = "HP VISUALIZE NT Workstation",
958 .matches = { 950 .matches = {
959 DMI_MATCH(DMI_BOARD_VENDOR, "Hewlett-Packard"), 951 DMI_MATCH(DMI_BOARD_VENDOR, "Hewlett-Packard"),
960 DMI_MATCH(DMI_PRODUCT_NAME, "HP VISUALIZE NT Workstation"), 952 DMI_MATCH(DMI_PRODUCT_NAME, "HP VISUALIZE NT Workstation"),
961 }, 953 },
962 }, 954 },
963 { 955 {
964 .callback = force_acpi_ht, 956 .callback = force_acpi_ht,
965 .ident = "Compaq Workstation W8000", 957 .ident = "Compaq Workstation W8000",
966 .matches = { 958 .matches = {
967 DMI_MATCH(DMI_SYS_VENDOR, "Compaq"), 959 DMI_MATCH(DMI_SYS_VENDOR, "Compaq"),
968 DMI_MATCH(DMI_PRODUCT_NAME, "Workstation W8000"), 960 DMI_MATCH(DMI_PRODUCT_NAME, "Workstation W8000"),
969 }, 961 },
970 }, 962 },
971 { 963 {
972 .callback = force_acpi_ht, 964 .callback = force_acpi_ht,
973 .ident = "ASUS P4B266", 965 .ident = "ASUS P4B266",
974 .matches = { 966 .matches = {
975 DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK Computer INC."), 967 DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK Computer INC."),
976 DMI_MATCH(DMI_BOARD_NAME, "P4B266"), 968 DMI_MATCH(DMI_BOARD_NAME, "P4B266"),
977 }, 969 },
978 }, 970 },
979 { 971 {
980 .callback = force_acpi_ht, 972 .callback = force_acpi_ht,
981 .ident = "ASUS P2B-DS", 973 .ident = "ASUS P2B-DS",
982 .matches = { 974 .matches = {
983 DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK Computer INC."), 975 DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK Computer INC."),
984 DMI_MATCH(DMI_BOARD_NAME, "P2B-DS"), 976 DMI_MATCH(DMI_BOARD_NAME, "P2B-DS"),
985 }, 977 },
986 }, 978 },
987 { 979 {
988 .callback = force_acpi_ht, 980 .callback = force_acpi_ht,
989 .ident = "ASUS CUR-DLS", 981 .ident = "ASUS CUR-DLS",
990 .matches = { 982 .matches = {
991 DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK Computer INC."), 983 DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK Computer INC."),
992 DMI_MATCH(DMI_BOARD_NAME, "CUR-DLS"), 984 DMI_MATCH(DMI_BOARD_NAME, "CUR-DLS"),
993 }, 985 },
994 }, 986 },
995 { 987 {
996 .callback = force_acpi_ht, 988 .callback = force_acpi_ht,
997 .ident = "ABIT i440BX-W83977", 989 .ident = "ABIT i440BX-W83977",
998 .matches = { 990 .matches = {
999 DMI_MATCH(DMI_BOARD_VENDOR, "ABIT <http://www.abit.com>"), 991 DMI_MATCH(DMI_BOARD_VENDOR, "ABIT <http://www.abit.com>"),
1000 DMI_MATCH(DMI_BOARD_NAME, "i440BX-W83977 (BP6)"), 992 DMI_MATCH(DMI_BOARD_NAME, "i440BX-W83977 (BP6)"),
1001 }, 993 },
1002 }, 994 },
1003 { 995 {
1004 .callback = force_acpi_ht, 996 .callback = force_acpi_ht,
1005 .ident = "IBM Bladecenter", 997 .ident = "IBM Bladecenter",
1006 .matches = { 998 .matches = {
1007 DMI_MATCH(DMI_BOARD_VENDOR, "IBM"), 999 DMI_MATCH(DMI_BOARD_VENDOR, "IBM"),
1008 DMI_MATCH(DMI_BOARD_NAME, "IBM eServer BladeCenter HS20"), 1000 DMI_MATCH(DMI_BOARD_NAME, "IBM eServer BladeCenter HS20"),
1009 }, 1001 },
1010 }, 1002 },
1011 { 1003 {
1012 .callback = force_acpi_ht, 1004 .callback = force_acpi_ht,
1013 .ident = "IBM eServer xSeries 360", 1005 .ident = "IBM eServer xSeries 360",
1014 .matches = { 1006 .matches = {
1015 DMI_MATCH(DMI_BOARD_VENDOR, "IBM"), 1007 DMI_MATCH(DMI_BOARD_VENDOR, "IBM"),
1016 DMI_MATCH(DMI_BOARD_NAME, "eServer xSeries 360"), 1008 DMI_MATCH(DMI_BOARD_NAME, "eServer xSeries 360"),
1017 }, 1009 },
1018 }, 1010 },
1019 { 1011 {
1020 .callback = force_acpi_ht, 1012 .callback = force_acpi_ht,
1021 .ident = "IBM eserver xSeries 330", 1013 .ident = "IBM eserver xSeries 330",
1022 .matches = { 1014 .matches = {
1023 DMI_MATCH(DMI_BOARD_VENDOR, "IBM"), 1015 DMI_MATCH(DMI_BOARD_VENDOR, "IBM"),
1024 DMI_MATCH(DMI_BOARD_NAME, "eserver xSeries 330"), 1016 DMI_MATCH(DMI_BOARD_NAME, "eserver xSeries 330"),
1025 }, 1017 },
1026 }, 1018 },
1027 { 1019 {
1028 .callback = force_acpi_ht, 1020 .callback = force_acpi_ht,
1029 .ident = "IBM eserver xSeries 440", 1021 .ident = "IBM eserver xSeries 440",
1030 .matches = { 1022 .matches = {
1031 DMI_MATCH(DMI_BOARD_VENDOR, "IBM"), 1023 DMI_MATCH(DMI_BOARD_VENDOR, "IBM"),
1032 DMI_MATCH(DMI_PRODUCT_NAME, "eserver xSeries 440"), 1024 DMI_MATCH(DMI_PRODUCT_NAME, "eserver xSeries 440"),
1033 }, 1025 },
1034 }, 1026 },
1035 1027
1036#ifdef CONFIG_ACPI_PCI 1028#ifdef CONFIG_ACPI_PCI
1037 /* 1029 /*
1038 * Boxes that need ACPI PCI IRQ routing disabled 1030 * Boxes that need ACPI PCI IRQ routing disabled
1039 */ 1031 */
1040 { 1032 {
1041 .callback = disable_acpi_irq, 1033 .callback = disable_acpi_irq,
1042 .ident = "ASUS A7V", 1034 .ident = "ASUS A7V",
1043 .matches = { 1035 .matches = {
1044 DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK Computer INC"), 1036 DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK Computer INC"),
1045 DMI_MATCH(DMI_BOARD_NAME, "<A7V>"), 1037 DMI_MATCH(DMI_BOARD_NAME, "<A7V>"),
1046 /* newer BIOS, Revision 1011, does work */ 1038 /* newer BIOS, Revision 1011, does work */
1047 DMI_MATCH(DMI_BIOS_VERSION, "ASUS A7V ACPI BIOS Revision 1007"), 1039 DMI_MATCH(DMI_BIOS_VERSION,
1048 }, 1040 "ASUS A7V ACPI BIOS Revision 1007"),
1049 }, 1041 },
1042 },
1050 1043
1051 /* 1044 /*
1052 * Boxes that need ACPI PCI IRQ routing and PCI scan disabled 1045 * Boxes that need ACPI PCI IRQ routing and PCI scan disabled
1053 */ 1046 */
1054 { /* _BBN 0 bug */ 1047 { /* _BBN 0 bug */
1055 .callback = disable_acpi_pci, 1048 .callback = disable_acpi_pci,
1056 .ident = "ASUS PR-DLS", 1049 .ident = "ASUS PR-DLS",
1057 .matches = { 1050 .matches = {
1058 DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK Computer INC."), 1051 DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK Computer INC."),
1059 DMI_MATCH(DMI_BOARD_NAME, "PR-DLS"), 1052 DMI_MATCH(DMI_BOARD_NAME, "PR-DLS"),
1060 DMI_MATCH(DMI_BIOS_VERSION, "ASUS PR-DLS ACPI BIOS Revision 1010"), 1053 DMI_MATCH(DMI_BIOS_VERSION,
1061 DMI_MATCH(DMI_BIOS_DATE, "03/21/2003") 1054 "ASUS PR-DLS ACPI BIOS Revision 1010"),
1062 }, 1055 DMI_MATCH(DMI_BIOS_DATE, "03/21/2003")
1063 }, 1056 },
1057 },
1064 { 1058 {
1065 .callback = disable_acpi_pci, 1059 .callback = disable_acpi_pci,
1066 .ident = "Acer TravelMate 36x Laptop", 1060 .ident = "Acer TravelMate 36x Laptop",
1067 .matches = { 1061 .matches = {
1068 DMI_MATCH(DMI_SYS_VENDOR, "Acer"), 1062 DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
1069 DMI_MATCH(DMI_PRODUCT_NAME, "TravelMate 360"), 1063 DMI_MATCH(DMI_PRODUCT_NAME, "TravelMate 360"),
1070 }, 1064 },
1071 }, 1065 },
1072#endif 1066#endif
1073 { } 1067 {}
1074}; 1068};
1075 1069
1076#endif /* __i386__ */ 1070#endif /* __i386__ */
1077 1071
1078/* 1072/*
1079 * acpi_boot_table_init() and acpi_boot_init() 1073 * acpi_boot_table_init() and acpi_boot_init()
@@ -1098,8 +1092,7 @@ static struct dmi_system_id __initdata acpi_dmi_table[] = {
1098 * !0: failure 1092 * !0: failure
1099 */ 1093 */
1100 1094
1101int __init 1095int __init acpi_boot_table_init(void)
1102acpi_boot_table_init(void)
1103{ 1096{
1104 int error; 1097 int error;
1105 1098
@@ -1112,7 +1105,7 @@ acpi_boot_table_init(void)
1112 * One exception: acpi=ht continues far enough to enumerate LAPICs 1105 * One exception: acpi=ht continues far enough to enumerate LAPICs
1113 */ 1106 */
1114 if (acpi_disabled && !acpi_ht) 1107 if (acpi_disabled && !acpi_ht)
1115 return 1; 1108 return 1;
1116 1109
1117 /* 1110 /*
1118 * Initialize the ACPI boot-time table parser. 1111 * Initialize the ACPI boot-time table parser.
@@ -1122,7 +1115,6 @@ acpi_boot_table_init(void)
1122 disable_acpi(); 1115 disable_acpi();
1123 return error; 1116 return error;
1124 } 1117 }
1125
1126#ifdef __i386__ 1118#ifdef __i386__
1127 check_acpi_pci(); 1119 check_acpi_pci();
1128#endif 1120#endif
@@ -1146,7 +1138,6 @@ acpi_boot_table_init(void)
1146 return 0; 1138 return 0;
1147} 1139}
1148 1140
1149
1150int __init acpi_boot_init(void) 1141int __init acpi_boot_init(void)
1151{ 1142{
1152 /* 1143 /*
@@ -1154,7 +1145,7 @@ int __init acpi_boot_init(void)
1154 * One exception: acpi=ht continues far enough to enumerate LAPICs 1145 * One exception: acpi=ht continues far enough to enumerate LAPICs
1155 */ 1146 */
1156 if (acpi_disabled && !acpi_ht) 1147 if (acpi_disabled && !acpi_ht)
1157 return 1; 1148 return 1;
1158 1149
1159 acpi_table_parse(ACPI_BOOT, acpi_parse_sbf); 1150 acpi_table_parse(ACPI_BOOT, acpi_parse_sbf);
1160 1151
@@ -1172,4 +1163,3 @@ int __init acpi_boot_init(void)
1172 1163
1173 return 0; 1164 return 0;
1174} 1165}
1175