ACPI / scan: always register container scan handler
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>
Fri, 30 May 2014 02:28:20 +0000 (04:28 +0200)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Fri, 30 May 2014 14:04:36 +0000 (16:04 +0200)
Prevent platform devices from being created for ACPI containers
if CONFIG_ACPI_CONTAINER is unset by compiling out the container
scan handler's callbacks only in that case and still compiling
its device ID list in and registering the scan handler in either
case.

This change is based on a prototype from Zhang Rui.

Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
drivers/acpi/Makefile
drivers/acpi/container.c
drivers/acpi/internal.h

index 144671a2030f39d74042908677d2458e3de06fba..4f23f3295b12808e33c25f6e21ba17645edda4c0 100644 (file)
@@ -64,7 +64,7 @@ obj-$(CONFIG_ACPI_FAN)                += fan.o
 obj-$(CONFIG_ACPI_VIDEO)       += video.o
 obj-$(CONFIG_ACPI_PCI_SLOT)    += pci_slot.o
 obj-$(CONFIG_ACPI_PROCESSOR)   += processor.o
-obj-$(CONFIG_ACPI_CONTAINER)   += container.o
+obj-y                          += container.o
 obj-$(CONFIG_ACPI_THERMAL)     += thermal.o
 obj-$(CONFIG_ACPI_HOTPLUG_MEMORY) += acpi_memhotplug.o
 obj-$(CONFIG_ACPI_BATTERY)     += battery.o
index 63119d09b35432e3200a33c0202c9e7cb7ec2f15..76f7cff645945ac6bf08788a8d3670286c9750c4 100644 (file)
@@ -41,6 +41,8 @@ static const struct acpi_device_id container_device_ids[] = {
        {"", 0},
 };
 
+#ifdef CONFIG_ACPI_CONTAINER
+
 static int acpi_container_offline(struct container_dev *cdev)
 {
        struct acpi_device *adev = ACPI_COMPANION(&cdev->dev);
@@ -107,7 +109,20 @@ static struct acpi_scan_handler container_handler = {
        },
 };
 
+void __init acpi_container_init(void)
+{
+       acpi_scan_add_handler(&container_handler);
+}
+
+#else
+
+static struct acpi_scan_handler container_handler = {
+       .ids = container_device_ids,
+};
+
 void __init acpi_container_init(void)
 {
        acpi_scan_add_handler_with_hotplug(&container_handler, "container");
 }
+
+#endif /* CONFIG_ACPI_CONTAINER */
index 5c16cb6bc76dee35eacd8fceb131eb62631e1cc0..cc93efd22a241b21e21e6648e1e829f7d4a00daf 100644 (file)
@@ -32,11 +32,7 @@ void acpi_processor_init(void);
 void acpi_platform_init(void);
 void acpi_pnp_init(void);
 int acpi_sysfs_init(void);
-#ifdef CONFIG_ACPI_CONTAINER
 void acpi_container_init(void);
-#else
-static inline void acpi_container_init(void) {}
-#endif
 #ifdef CONFIG_ACPI_DOCK
 void register_dock_dependent_device(struct acpi_device *adev,
                                    acpi_handle dshandle);