diff options
Diffstat (limited to 'drivers/acpi/acpi_platform.c')
-rw-r--r-- | drivers/acpi/acpi_platform.c | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/drivers/acpi/acpi_platform.c b/drivers/acpi/acpi_platform.c index 159f7f19abce..b200ae1f3c6f 100644 --- a/drivers/acpi/acpi_platform.c +++ b/drivers/acpi/acpi_platform.c | |||
@@ -17,6 +17,7 @@ | |||
17 | #include <linux/kernel.h> | 17 | #include <linux/kernel.h> |
18 | #include <linux/module.h> | 18 | #include <linux/module.h> |
19 | #include <linux/dma-mapping.h> | 19 | #include <linux/dma-mapping.h> |
20 | #include <linux/pci.h> | ||
20 | #include <linux/platform_device.h> | 21 | #include <linux/platform_device.h> |
21 | 22 | ||
22 | #include "internal.h" | 23 | #include "internal.h" |
@@ -30,6 +31,22 @@ static const struct acpi_device_id forbidden_id_list[] = { | |||
30 | {"", 0}, | 31 | {"", 0}, |
31 | }; | 32 | }; |
32 | 33 | ||
34 | static void acpi_platform_fill_resource(struct acpi_device *adev, | ||
35 | const struct resource *src, struct resource *dest) | ||
36 | { | ||
37 | struct device *parent; | ||
38 | |||
39 | *dest = *src; | ||
40 | |||
41 | /* | ||
42 | * If the device has parent we need to take its resources into | ||
43 | * account as well because this device might consume part of those. | ||
44 | */ | ||
45 | parent = acpi_get_first_physical_node(adev->parent); | ||
46 | if (parent && dev_is_pci(parent)) | ||
47 | dest->parent = pci_find_resource(to_pci_dev(parent), dest); | ||
48 | } | ||
49 | |||
33 | /** | 50 | /** |
34 | * acpi_create_platform_device - Create platform device for ACPI device node | 51 | * acpi_create_platform_device - Create platform device for ACPI device node |
35 | * @adev: ACPI device node to create a platform device for. | 52 | * @adev: ACPI device node to create a platform device for. |
@@ -70,7 +87,8 @@ struct platform_device *acpi_create_platform_device(struct acpi_device *adev) | |||
70 | } | 87 | } |
71 | count = 0; | 88 | count = 0; |
72 | list_for_each_entry(rentry, &resource_list, node) | 89 | list_for_each_entry(rentry, &resource_list, node) |
73 | resources[count++] = *rentry->res; | 90 | acpi_platform_fill_resource(adev, rentry->res, |
91 | &resources[count++]); | ||
74 | 92 | ||
75 | acpi_dev_free_resource_list(&resource_list); | 93 | acpi_dev_free_resource_list(&resource_list); |
76 | } | 94 | } |