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);