aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/acpi/scan.c
diff options
context:
space:
mode:
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>2013-01-30 08:27:40 -0500
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2013-01-30 08:27:40 -0500
commit141a297bd02e8ddc5ab625cc3a1a5926b1ff929a (patch)
treef89584c92cf7593fe8f52b28f2f80c97aa590721 /drivers/acpi/scan.c
parent4daeaf68379f75dedd120582add5206c7c5ad72e (diff)
ACPI / platform: Use struct acpi_scan_handler for creating devices
Currently, the ACPI namespace scanning code creates platform device objects for ACPI device nodes whose IDs match the contents of the acpi_platform_device_ids[] table. However, this adds a superfluous special case into acpi_bus_device_attach() and makes it more difficult to follow than it has to be. It also will make it more difficult to implement removal code for those platform device objects in the future. For the above reasons, introduce a struct acpi_scan_handler object for creating platform devices and move the code related to that from acpi_bus_device_attach() to the .attach() callback of that object. Also move the acpi_platform_device_ids[] table to acpi_platform.c. Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> Acked-by: Yinghai Lu <yinghai@kernel.org> Acked-by: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com> Acked-by: Toshi Kani <toshi.kani@hp.com> Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com> Tested-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Diffstat (limited to 'drivers/acpi/scan.c')
-rw-r--r--drivers/acpi/scan.c30
1 files changed, 1 insertions, 29 deletions
diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
index c2821699bc49..a849d2430dff 100644
--- a/drivers/acpi/scan.c
+++ b/drivers/acpi/scan.c
@@ -29,27 +29,6 @@ extern struct acpi_device *acpi_root;
29 29
30static const char *dummy_hid = "device"; 30static const char *dummy_hid = "device";
31 31
32/*
33 * The following ACPI IDs are known to be suitable for representing as
34 * platform devices.
35 */
36static const struct acpi_device_id acpi_platform_device_ids[] = {
37
38 { "PNP0D40" },
39
40 /* Haswell LPSS devices */
41 { "INT33C0", ACPI_PLATFORM_CLK },
42 { "INT33C1", ACPI_PLATFORM_CLK },
43 { "INT33C2", ACPI_PLATFORM_CLK },
44 { "INT33C3", ACPI_PLATFORM_CLK },
45 { "INT33C4", ACPI_PLATFORM_CLK },
46 { "INT33C5", ACPI_PLATFORM_CLK },
47 { "INT33C6", ACPI_PLATFORM_CLK },
48 { "INT33C7", ACPI_PLATFORM_CLK },
49
50 { }
51};
52
53static LIST_HEAD(acpi_device_list); 32static LIST_HEAD(acpi_device_list);
54static LIST_HEAD(acpi_bus_id_list); 33static LIST_HEAD(acpi_bus_id_list);
55static DEFINE_MUTEX(acpi_scan_lock); 34static DEFINE_MUTEX(acpi_scan_lock);
@@ -1606,7 +1585,6 @@ static int acpi_scan_attach_handler(struct acpi_device *device)
1606static acpi_status acpi_bus_device_attach(acpi_handle handle, u32 lvl_not_used, 1585static acpi_status acpi_bus_device_attach(acpi_handle handle, u32 lvl_not_used,
1607 void *not_used, void **ret_not_used) 1586 void *not_used, void **ret_not_used)
1608{ 1587{
1609 const struct acpi_device_id *id;
1610 struct acpi_device *device; 1588 struct acpi_device *device;
1611 unsigned long long sta_not_used; 1589 unsigned long long sta_not_used;
1612 int ret; 1590 int ret;
@@ -1621,13 +1599,6 @@ static acpi_status acpi_bus_device_attach(acpi_handle handle, u32 lvl_not_used,
1621 if (acpi_bus_get_device(handle, &device)) 1599 if (acpi_bus_get_device(handle, &device))
1622 return AE_CTRL_DEPTH; 1600 return AE_CTRL_DEPTH;
1623 1601
1624 id = __acpi_match_device(device, acpi_platform_device_ids);
1625 if (id) {
1626 /* This is a known good platform device. */
1627 acpi_create_platform_device(device, id->driver_data);
1628 return AE_OK;
1629 }
1630
1631 ret = acpi_scan_attach_handler(device); 1602 ret = acpi_scan_attach_handler(device);
1632 if (ret) 1603 if (ret)
1633 return ret > 0 ? AE_OK : AE_CTRL_DEPTH; 1604 return ret > 0 ? AE_OK : AE_CTRL_DEPTH;
@@ -1775,6 +1746,7 @@ int __init acpi_scan_init(void)
1775 1746
1776 acpi_pci_root_init(); 1747 acpi_pci_root_init();
1777 acpi_pci_link_init(); 1748 acpi_pci_link_init();
1749 acpi_platform_init();
1778 acpi_csrt_init(); 1750 acpi_csrt_init();
1779 1751
1780 /* 1752 /*