X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;ds=sidebyside;f=drivers%2Fpnp%2Fpnpacpi%2Fcore.c;h=8655dd2e5b83cea720d98b0c0e9d4e02220fb6b0;hb=6a77f38946aaee1cd85eeec6cf4229b204c15071;hp=9a9352f90a0c1ad5cd8b44dba8dfc4e02b5a6f1f;hpb=87fc8d1bb10cd459024a742c6a10961fefcef18f;p=linux-2.6.git diff --git a/drivers/pnp/pnpacpi/core.c b/drivers/pnp/pnpacpi/core.c index 9a9352f90..8655dd2e5 100644 --- a/drivers/pnp/pnpacpi/core.c +++ b/drivers/pnp/pnpacpi/core.c @@ -236,23 +236,34 @@ static acpi_status __init pnpacpi_add_device_handler(acpi_handle handle, if (!acpi_bus_get_device(handle, &device)) pnpacpi_add_device(device); + else + return AE_CTRL_DEPTH; return AE_OK; } +int pnpacpi_disabled __initdata; int __init pnpacpi_init(void) { - if (acpi_disabled) { - pnp_info("PnP ACPI: ACPI disable"); + if (acpi_disabled || pnpacpi_disabled) { + pnp_info("PnP ACPI: disabled"); return 0; } pnp_info("PnP ACPI init"); pnp_register_protocol(&pnpacpi_protocol); - acpi_walk_namespace(ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT, - ACPI_UINT32_MAX, pnpacpi_add_device_handler, - NULL, NULL); + acpi_get_devices(NULL, pnpacpi_add_device_handler, NULL, NULL); pnp_info("PnP ACPI: found %d devices", num); return 0; } subsys_initcall(pnpacpi_init); +static int __init pnpacpi_setup(char *str) +{ + if (str == NULL) + return 1; + if (!strncmp(str, "off", 3)) + pnpacpi_disabled = 1; + return 1; +} +__setup("pnpacpi=", pnpacpi_setup); + EXPORT_SYMBOL(pnpacpi_protocol);