diff options
Diffstat (limited to 'drivers/pnp')
-rw-r--r-- | drivers/pnp/driver.c | 4 | ||||
-rw-r--r-- | drivers/pnp/pnpacpi/core.c | 14 |
2 files changed, 11 insertions, 7 deletions
diff --git a/drivers/pnp/driver.c b/drivers/pnp/driver.c index 15fb758a9e52..7cafacdd12b0 100644 --- a/drivers/pnp/driver.c +++ b/drivers/pnp/driver.c | |||
@@ -195,6 +195,8 @@ static int pnp_bus_resume(struct device *dev) | |||
195 | struct bus_type pnp_bus_type = { | 195 | struct bus_type pnp_bus_type = { |
196 | .name = "pnp", | 196 | .name = "pnp", |
197 | .match = pnp_bus_match, | 197 | .match = pnp_bus_match, |
198 | .probe = pnp_device_probe, | ||
199 | .remove = pnp_device_remove, | ||
198 | .suspend = pnp_bus_suspend, | 200 | .suspend = pnp_bus_suspend, |
199 | .resume = pnp_bus_resume, | 201 | .resume = pnp_bus_resume, |
200 | }; | 202 | }; |
@@ -215,8 +217,6 @@ int pnp_register_driver(struct pnp_driver *drv) | |||
215 | 217 | ||
216 | drv->driver.name = drv->name; | 218 | drv->driver.name = drv->name; |
217 | drv->driver.bus = &pnp_bus_type; | 219 | drv->driver.bus = &pnp_bus_type; |
218 | drv->driver.probe = pnp_device_probe; | ||
219 | drv->driver.remove = pnp_device_remove; | ||
220 | 220 | ||
221 | count = driver_register(&drv->driver); | 221 | count = driver_register(&drv->driver); |
222 | 222 | ||
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 | ||