aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/acpi/Makefile2
-rw-r--r--drivers/acpi/acpi_memhotplug.c31
-rw-r--r--drivers/acpi/internal.h6
3 files changed, 26 insertions, 13 deletions
diff --git a/drivers/acpi/Makefile b/drivers/acpi/Makefile
index 4f23f3295b12..f1c9266430d9 100644
--- a/drivers/acpi/Makefile
+++ b/drivers/acpi/Makefile
@@ -66,7 +66,7 @@ obj-$(CONFIG_ACPI_PCI_SLOT) += pci_slot.o
66obj-$(CONFIG_ACPI_PROCESSOR) += processor.o 66obj-$(CONFIG_ACPI_PROCESSOR) += processor.o
67obj-y += container.o 67obj-y += container.o
68obj-$(CONFIG_ACPI_THERMAL) += thermal.o 68obj-$(CONFIG_ACPI_THERMAL) += thermal.o
69obj-$(CONFIG_ACPI_HOTPLUG_MEMORY) += acpi_memhotplug.o 69obj-y += acpi_memhotplug.o
70obj-$(CONFIG_ACPI_BATTERY) += battery.o 70obj-$(CONFIG_ACPI_BATTERY) += battery.o
71obj-$(CONFIG_ACPI_SBS) += sbshc.o 71obj-$(CONFIG_ACPI_SBS) += sbshc.o
72obj-$(CONFIG_ACPI_SBS) += sbs.o 72obj-$(CONFIG_ACPI_SBS) += sbs.o
diff --git a/drivers/acpi/acpi_memhotplug.c b/drivers/acpi/acpi_memhotplug.c
index b67be85ff0fc..23e2319ead41 100644
--- a/drivers/acpi/acpi_memhotplug.c
+++ b/drivers/acpi/acpi_memhotplug.c
@@ -44,6 +44,13 @@
44 44
45ACPI_MODULE_NAME("acpi_memhotplug"); 45ACPI_MODULE_NAME("acpi_memhotplug");
46 46
47static const struct acpi_device_id memory_device_ids[] = {
48 {ACPI_MEMORY_DEVICE_HID, 0},
49 {"", 0},
50};
51
52#ifdef CONFIG_ACPI_HOTPLUG_MEMORY
53
47/* Memory Device States */ 54/* Memory Device States */
48#define MEMORY_INVALID_STATE 0 55#define MEMORY_INVALID_STATE 0
49#define MEMORY_POWER_ON_STATE 1 56#define MEMORY_POWER_ON_STATE 1
@@ -53,11 +60,6 @@ static int acpi_memory_device_add(struct acpi_device *device,
53 const struct acpi_device_id *not_used); 60 const struct acpi_device_id *not_used);
54static void acpi_memory_device_remove(struct acpi_device *device); 61static void acpi_memory_device_remove(struct acpi_device *device);
55 62
56static const struct acpi_device_id memory_device_ids[] = {
57 {ACPI_MEMORY_DEVICE_HID, 0},
58 {"", 0},
59};
60
61static struct acpi_scan_handler memory_device_handler = { 63static struct acpi_scan_handler memory_device_handler = {
62 .ids = memory_device_ids, 64 .ids = memory_device_ids,
63 .attach = acpi_memory_device_add, 65 .attach = acpi_memory_device_add,
@@ -364,9 +366,11 @@ static bool __initdata acpi_no_memhotplug;
364 366
365void __init acpi_memory_hotplug_init(void) 367void __init acpi_memory_hotplug_init(void)
366{ 368{
367 if (acpi_no_memhotplug) 369 if (acpi_no_memhotplug) {
370 memory_device_handler.attach = NULL;
371 acpi_scan_add_handler(&memory_device_handler);
368 return; 372 return;
369 373 }
370 acpi_scan_add_handler_with_hotplug(&memory_device_handler, "memory"); 374 acpi_scan_add_handler_with_hotplug(&memory_device_handler, "memory");
371} 375}
372 376
@@ -376,3 +380,16 @@ static int __init disable_acpi_memory_hotplug(char *str)
376 return 1; 380 return 1;
377} 381}
378__setup("acpi_no_memhotplug", disable_acpi_memory_hotplug); 382__setup("acpi_no_memhotplug", disable_acpi_memory_hotplug);
383
384#else
385
386static struct acpi_scan_handler memory_device_handler = {
387 .ids = memory_device_ids,
388};
389
390void __init acpi_memory_hotplug_init(void)
391{
392 acpi_scan_add_handler(&memory_device_handler);
393}
394
395#endif /* CONFIG_ACPI_HOTPLUG_MEMORY */
diff --git a/drivers/acpi/internal.h b/drivers/acpi/internal.h
index cc93efd22a24..5ad27bf8e4bd 100644
--- a/drivers/acpi/internal.h
+++ b/drivers/acpi/internal.h
@@ -33,6 +33,7 @@ void acpi_platform_init(void);
33void acpi_pnp_init(void); 33void acpi_pnp_init(void);
34int acpi_sysfs_init(void); 34int acpi_sysfs_init(void);
35void acpi_container_init(void); 35void acpi_container_init(void);
36void acpi_memory_hotplug_init(void);
36#ifdef CONFIG_ACPI_DOCK 37#ifdef CONFIG_ACPI_DOCK
37void register_dock_dependent_device(struct acpi_device *adev, 38void register_dock_dependent_device(struct acpi_device *adev,
38 acpi_handle dshandle); 39 acpi_handle dshandle);
@@ -44,11 +45,6 @@ static inline void register_dock_dependent_device(struct acpi_device *adev,
44static inline int dock_notify(struct acpi_device *adev, u32 event) { return -ENODEV; } 45static inline int dock_notify(struct acpi_device *adev, u32 event) { return -ENODEV; }
45static inline void acpi_dock_add(struct acpi_device *adev) {} 46static inline void acpi_dock_add(struct acpi_device *adev) {}
46#endif 47#endif
47#ifdef CONFIG_ACPI_HOTPLUG_MEMORY
48void acpi_memory_hotplug_init(void);
49#else
50static inline void acpi_memory_hotplug_init(void) {}
51#endif
52#ifdef CONFIG_X86 48#ifdef CONFIG_X86
53void acpi_cmos_rtc_init(void); 49void acpi_cmos_rtc_init(void);
54#else 50#else