diff options
author | Bjorn Helgaas <bjorn.helgaas@hp.com> | 2009-03-24 18:49:43 -0400 |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2009-03-27 12:49:47 -0400 |
commit | e747f274951507b5a0850155c3d709e26d20de5b (patch) | |
tree | 2c9e02cd94dc592d1fe918da2a9b1e50e3fa0efa | |
parent | 81d0273df20edff275e2eefe6b50436af3bdf9e8 (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>
-rw-r--r-- | drivers/acpi/bus.c | 2 | ||||
-rw-r--r-- | drivers/acpi/internal.h | 2 | ||||
-rw-r--r-- | drivers/acpi/scan.c | 9 |
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 | ||
3 | int 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 | 1529 | int __init acpi_scan_init(void) | |
1530 | static 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 | |||
1572 | subsys_initcall(acpi_scan_init); | ||