Thread (37 messages) 37 messages, 6 authors, 2016-09-15

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_id
forbidden_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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help