Skip to content

Commit

Permalink
ACPI / scan: always register container scan handler
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Rafael J. Wysocki committed May 30, 2014
1 parent d34afa9 commit a1ec657
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 5 deletions.
2 changes: 1 addition & 1 deletion drivers/acpi/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
15 changes: 15 additions & 0 deletions drivers/acpi/container.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -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 */
4 changes: 0 additions & 4 deletions drivers/acpi/internal.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down

0 comments on commit a1ec657

Please sign in to comment.