diff options
Diffstat (limited to 'drivers/pnp/pnpacpi')
-rw-r--r-- | drivers/pnp/pnpacpi/core.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/drivers/pnp/pnpacpi/core.c b/drivers/pnp/pnpacpi/core.c index 816479ad217b..f104577f73e0 100644 --- a/drivers/pnp/pnpacpi/core.c +++ b/drivers/pnp/pnpacpi/core.c | |||
@@ -27,12 +27,15 @@ | |||
27 | 27 | ||
28 | static int num = 0; | 28 | static int num = 0; |
29 | 29 | ||
30 | /* We need only to blacklist devices that have already an acpi driver that | ||
31 | * can't use pnp layer. We don't need to blacklist device that are directly | ||
32 | * used by the kernel (PCI root, ...), as it is harmless and there were | ||
33 | * already present in pnpbios. But there is an exception for devices that | ||
34 | * have irqs (PIC, Timer) because we call acpi_register_gsi. | ||
35 | * Finaly only devices that have a CRS method need to be in this list. | ||
36 | */ | ||
30 | static char __initdata excluded_id_list[] = | 37 | static char __initdata excluded_id_list[] = |
31 | "PNP0C0A," /* Battery */ | ||
32 | "PNP0C0C,PNP0C0E,PNP0C0D," /* Button */ | ||
33 | "PNP0C09," /* EC */ | 38 | "PNP0C09," /* EC */ |
34 | "PNP0C0B," /* Fan */ | ||
35 | "PNP0A03," /* PCI root */ | ||
36 | "PNP0C0F," /* Link device */ | 39 | "PNP0C0F," /* Link device */ |
37 | "PNP0000," /* PIC */ | 40 | "PNP0000," /* PIC */ |
38 | "PNP0100," /* Timer */ | 41 | "PNP0100," /* Timer */ |
@@ -131,7 +134,8 @@ static int __init pnpacpi_add_device(struct acpi_device *device) | |||
131 | struct pnp_id *dev_id; | 134 | struct pnp_id *dev_id; |
132 | struct pnp_dev *dev; | 135 | struct pnp_dev *dev; |
133 | 136 | ||
134 | if (!ispnpidacpi(acpi_device_hid(device)) || | 137 | status = acpi_get_handle(device->handle, "_CRS", &temp); |
138 | if (ACPI_FAILURE(status) || !ispnpidacpi(acpi_device_hid(device)) || | ||
135 | is_exclusive_device(device)) | 139 | is_exclusive_device(device)) |
136 | return 0; | 140 | return 0; |
137 | 141 | ||