ACPI: call acpi_scan_init() explicitly rather than as initcall
authorBjorn Helgaas <bjorn.helgaas@hp.com>
Tue, 24 Mar 2009 22:49:43 +0000 (16:49 -0600)
committerLen Brown <len.brown@intel.com>
Fri, 27 Mar 2009 16:49:47 +0000 (12:49 -0400)
This patch makes acpi_init() call acpi_scan_init() directly.

Previously, both acpi_init() and acpi_scan_init() were subsys_initcalls,
and acpi_init() was called first based on the link order from the
makefile (bus.o before scan.o).

acpi_scan_init() registers the ACPI bus type, creates the root device,
and enumerates fixed-feature and namespace devices.  All of this must
be done after acpi_init(), and it's better to call acpi_scan_init()
explicitly rather than rely on the link ordering.

Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com>
Signed-off-by: Len Brown <len.brown@intel.com>
drivers/acpi/bus.c
drivers/acpi/internal.h
drivers/acpi/scan.c

index bdeed39c3d38e4c867bba17f8be948c89487d7ca..cdd11fda5036225e364f638ed990fc8a998d6156 100644 (file)
@@ -878,6 +878,8 @@ static int __init acpi_init(void)
         * will be disabled in the course of device power transistion.
         */
        dmi_check_system(power_nocheck_dmi_table);
+
+       acpi_scan_init();
        return result;
 }
 
index 4aee4a236fc9859dbc9f43e4f01bcfb2ae62a467..28042c0f2ffff4e55f3e29374157a887b7fc7d9b 100644 (file)
@@ -1,5 +1,7 @@
 /* For use by Linux/ACPI infrastructure, not drivers */
 
+int acpi_scan_init(void);
+
 /* --------------------------------------------------------------------------
                                   Power Resource
    -------------------------------------------------------------------------- */
index 2f04cd1147e9f7e014e5d242eff87cd6ea3ab696..c548231965ef26b9feac80549b7164e6bd8fb233 100644 (file)
@@ -1526,16 +1526,11 @@ static int acpi_bus_scan_fixed(struct acpi_device *root)
        return result;
 }
 
-
-static int __init acpi_scan_init(void)
+int __init acpi_scan_init(void)
 {
        int result;
        struct acpi_bus_ops ops;
 
-
-       if (acpi_disabled)
-               return 0;
-
        memset(&ops, 0, sizeof(ops));
        ops.acpi_op_add = 1;
        ops.acpi_op_start = 1;
@@ -1568,5 +1563,3 @@ static int __init acpi_scan_init(void)
       Done:
        return result;
 }
-
-subsys_initcall(acpi_scan_init);