aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/acpi
diff options
context:
space:
mode:
authorBjorn Helgaas <bjorn.helgaas@hp.com>2009-03-24 18:49:43 -0400
committerLen Brown <len.brown@intel.com>2009-03-27 12:49:47 -0400
commite747f274951507b5a0850155c3d709e26d20de5b (patch)
tree2c9e02cd94dc592d1fe918da2a9b1e50e3fa0efa /drivers/acpi
parent81d0273df20edff275e2eefe6b50436af3bdf9e8 (diff)
ACPI: call acpi_scan_init() explicitly rather than as initcall
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>
Diffstat (limited to 'drivers/acpi')
-rw-r--r--drivers/acpi/bus.c2
-rw-r--r--drivers/acpi/internal.h2
-rw-r--r--drivers/acpi/scan.c9
3 files changed, 5 insertions, 8 deletions
diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c
index bdeed39c3d38..cdd11fda5036 100644
--- a/drivers/acpi/bus.c
+++ b/drivers/acpi/bus.c
@@ -878,6 +878,8 @@ static int __init acpi_init(void)
878 * will be disabled in the course of device power transistion. 878 * will be disabled in the course of device power transistion.
879 */ 879 */
880 dmi_check_system(power_nocheck_dmi_table); 880 dmi_check_system(power_nocheck_dmi_table);
881
882 acpi_scan_init();
881 return result; 883 return result;
882} 884}
883 885
diff --git a/drivers/acpi/internal.h b/drivers/acpi/internal.h
index 4aee4a236fc9..28042c0f2fff 100644
--- a/drivers/acpi/internal.h
+++ b/drivers/acpi/internal.h
@@ -1,5 +1,7 @@
1/* For use by Linux/ACPI infrastructure, not drivers */ 1/* For use by Linux/ACPI infrastructure, not drivers */
2 2
3int acpi_scan_init(void);
4
3/* -------------------------------------------------------------------------- 5/* --------------------------------------------------------------------------
4 Power Resource 6 Power Resource
5 -------------------------------------------------------------------------- */ 7 -------------------------------------------------------------------------- */
diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
index 2f04cd1147e9..c548231965ef 100644
--- a/drivers/acpi/scan.c
+++ b/drivers/acpi/scan.c
@@ -1526,16 +1526,11 @@ static int acpi_bus_scan_fixed(struct acpi_device *root)
1526 return result; 1526 return result;
1527} 1527}
1528 1528
1529 1529int __init acpi_scan_init(void)
1530static int __init acpi_scan_init(void)
1531{ 1530{
1532 int result; 1531 int result;
1533 struct acpi_bus_ops ops; 1532 struct acpi_bus_ops ops;
1534 1533
1535
1536 if (acpi_disabled)
1537 return 0;
1538
1539 memset(&ops, 0, sizeof(ops)); 1534 memset(&ops, 0, sizeof(ops));
1540 ops.acpi_op_add = 1; 1535 ops.acpi_op_add = 1;
1541 ops.acpi_op_start = 1; 1536 ops.acpi_op_start = 1;
@@ -1568,5 +1563,3 @@ static int __init acpi_scan_init(void)
1568 Done: 1563 Done:
1569 return result; 1564 return result;
1570} 1565}
1571
1572subsys_initcall(acpi_scan_init);