Re: ACPI device using sub-resource of PCI device
From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date: 2016-08-16 11:23:28
Also in:
linux-pci
On Tue, 2016-08-16 at 12:15 +0300, Mika Westerberg wrote:
On Fri, Aug 12, 2016 at 11:45:30AM -0500, Aaron Durbin wrote:quoted
Was anyone able to take a look into a solution for the current problem? Again, please feel free to ask if anyone would like help testing potential solutions.Below is one proposal for fixing the issue. It is just a prototype and I'm not sure if it takes everything needed into account. Would you be able to try it out and let us know if it works for you?
Just style comments below.
quoted hunk ↗ jump to hunk
--- a/drivers/acpi/acpi_platform.c +++ b/drivers/acpi/acpi_platform.c@@ -18,6 +18,7 @@#include <linux/module.h> #include <linux/dma-mapping.h> #include <linux/platform_device.h> +#include <linux/pci.h>
I would keep trying to arrange them in alphabetical order, i.e. put before platform_device.h.
quoted hunk ↗ jump to hunk
#include "internal.h"@@ -30,6 +31,35 @@ static const struct acpi_device_idforbidden_id_list[] = { {"", 0}, }; +static struct resource *acpi_find_parent_resource(struct acpi_device *adev, + struct resource *res) +{ + struct device *parent; + + parent = acpi_get_first_physical_node(adev->parent); + if (!parent) + return NULL; + +#if IS_ENABLED(CONFIG_PCI)
Oh.
+ if (dev_is_pci(parent)) {Has a stub.
+ struct pci_dev *pdev = to_pci_dev(parent);
Not needed an ugly define.
+
+ if (!pci_is_bridge(pdev)) {Ditto.
+ int i;
+
+ for (i = 0; i < DEVICE_COUNT_RESOURCE; i++) {Ditto.
+ struct resource *r = &pdev-quoted
resource[i];+ + if (r->start && resource_contains(r, res)) + return r; + } + } + } +#endif + + return NULL; +} +
-- Andy Shevchenko [off-list ref] Intel Finland Oy