aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/acpi/acpi_platform.c20
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
34static 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 }