diff options
| author | Andrey Panin <pazke@donpac.ru> | 2004-06-26 20:55:41 -0700 |
|---|---|---|
| committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2004-06-26 20:55:41 -0700 |
| commit | b490da14040589c41e11f28dd04d179d268275fa (patch) | |
| tree | 19310287d3fbc9288e71832d8cca4086b43c666c | |
| parent | a178f9c8e6804cb3d289145770592be6bbf400b3 (diff) | |
[PATCH] dmi_scan: port PnP BIOS driver to new DMI probing
This patch ports PnP BIOS driver to new DMI probing API.
Signed-off-by: Andrey Panin <pazke@donpac.ru>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
| -rw-r--r-- | arch/i386/kernel/dmi_scan.c | 24 | ||||
| -rw-r--r-- | drivers/pnp/pnpbios/core.c | 32 |
2 files changed, 31 insertions, 25 deletions
diff --git a/arch/i386/kernel/dmi_scan.c b/arch/i386/kernel/dmi_scan.c index 9b3522f8a5b8..c00f760ac840 100644 --- a/arch/i386/kernel/dmi_scan.c +++ b/arch/i386/kernel/dmi_scan.c @@ -419,18 +419,6 @@ static __init int broken_ps2_resume(struct dmi_blacklist *d) return 0; } -/* - * Exploding PnPBIOS. Don't yet know if its the BIOS or us for - * some entries - */ - -static __init int exploding_pnp_bios(struct dmi_blacklist *d) -{ - printk(KERN_WARNING "%s detected. Disabling PnPBIOS\n", d->ident); - dmi_broken |= BROKEN_PNP_BIOS; - return 0; -} - static __init int acer_cpufreq_pst(struct dmi_blacklist *d) { printk(KERN_WARNING "%s laptop with broken PST tables in BIOS detected.\n", d->ident); @@ -734,18 +722,6 @@ static __initdata struct dmi_blacklist dmi_blacklist[]={ MATCH(DMI_BIOS_DATE, "10/26/01"), NO_MATCH } }, - { exploding_pnp_bios, "Higraded P14H", { /* PnPBIOS GPF on boot */ - MATCH(DMI_BIOS_VENDOR, "American Megatrends Inc."), - MATCH(DMI_BIOS_VERSION, "07.00T"), - MATCH(DMI_SYS_VENDOR, "Higraded"), - MATCH(DMI_PRODUCT_NAME, "P14H") - } }, - { exploding_pnp_bios, "ASUS P4P800", { /* PnPBIOS GPF on boot */ - MATCH(DMI_BOARD_VENDOR, "ASUSTeK Computer Inc."), - MATCH(DMI_BOARD_NAME, "P4P800"), - NO_MATCH, NO_MATCH - } }, - /* Machines which have problems handling enabled local APICs */ { local_apic_kills_bios, "Dell Inspiron", { diff --git a/drivers/pnp/pnpbios/core.c b/drivers/pnp/pnpbios/core.c index dd1bbb89c841..c23df973ab28 100644 --- a/drivers/pnp/pnpbios/core.c +++ b/drivers/pnp/pnpbios/core.c @@ -59,6 +59,7 @@ #include <linux/kmod.h> #include <linux/completion.h> #include <linux/spinlock.h> +#include <linux/dmi.h> #include <asm/page.h> #include <asm/desc.h> @@ -498,10 +499,39 @@ int __init pnpbios_probe_system(void) return 0; } +static int __init exploding_pnp_bios(struct dmi_system_id *d) +{ + printk(KERN_WARNING "%s detected. Disabling PnPBIOS\n", d->ident); + return 0; +} + +static struct dmi_system_id pnpbios_dmi_table[] = { + { /* PnPBIOS GPF on boot */ + .callback = exploding_pnp_bios, + .ident = "Higraded P14H", + .matches = { + DMI_MATCH(DMI_BIOS_VENDOR, "American Megatrends Inc."), + DMI_MATCH(DMI_BIOS_VERSION, "07.00T"), + DMI_MATCH(DMI_SYS_VENDOR, "Higraded"), + DMI_MATCH(DMI_PRODUCT_NAME, "P14H"), + }, + }, + { /* PnPBIOS GPF on boot */ + .callback = exploding_pnp_bios, + .ident = "ASUS P4P800", + .matches = { + DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK Computer Inc."), + DMI_MATCH(DMI_BOARD_NAME, "P4P800"), + }, + }, + { } +}; + int __init pnpbios_init(void) { int ret; - if(pnpbios_disabled || (dmi_broken & BROKEN_PNP_BIOS)) { + + if (pnpbios_disabled || dmi_check_system(pnpbios_dmi_table)) { printk(KERN_INFO "PnPBIOS: Disabled\n"); return -ENODEV; } |
