summaryrefslogtreecommitdiff
path: root/target/linux/generic
diff options
context:
space:
mode:
authorjuhosg <juhosg@3c298f89-4303-0410-b956-a3cf2f4a3e73>2013-08-23 17:07:20 +0000
committerjuhosg <juhosg@3c298f89-4303-0410-b956-a3cf2f4a3e73>2013-08-23 17:07:20 +0000
commit259916b81927e38f83012e482a9a782874a12d3a (patch)
treee2fd1be776fc0706d2bb2dafc06e258fdb8577c6 /target/linux/generic
parent3f22cca524565bb3929eec8bb267c493fdb061c7 (diff)
kernel/3.10: backport of_pci_get_devfn function from 3.11
Fixes the following build error on ramips/rt3883: arch/mips/pci/pci-rt3883.c:488:3: error: implicit declaration of function \ 'of_pci_get_devfn' [-Werror=implicit-function-declaration] cc1: some warnings being treated as errors Although the function is only used by the PCI driver of the RT3883 SoC but at the moment but it might be useful for other targets as well. Signed-off-by: Michael Lee <igvtee@gmail.com> Signed-off-by: Gabor Juhos <juhosg@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@37826 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target/linux/generic')
-rw-r--r--target/linux/generic/patches-3.10/003-of-pci-Add-of_pci_get_devfn-function.patch78
1 files changed, 78 insertions, 0 deletions
diff --git a/target/linux/generic/patches-3.10/003-of-pci-Add-of_pci_get_devfn-function.patch b/target/linux/generic/patches-3.10/003-of-pci-Add-of_pci_get_devfn-function.patch
new file mode 100644
index 0000000000..d786d6b5c5
--- /dev/null
+++ b/target/linux/generic/patches-3.10/003-of-pci-Add-of_pci_get_devfn-function.patch
@@ -0,0 +1,78 @@
+From 45ab9702fb47d18dca116b3a0509efa19fbcb27a Mon Sep 17 00:00:00 2001
+From: Thierry Reding <thierry.reding@avionic-design.de>
+Date: Thu, 16 May 2013 17:55:18 +0200
+Subject: [PATCH] of/pci: Add of_pci_get_devfn() function
+
+commit 45ab9702fb47d18dca116b3a0509efa19fbcb27a upstream.
+
+This function can be used to parse the device and function number from a
+standard 5-cell PCI resource. PCI_SLOT() and PCI_FUNC() can be used on
+the returned value obtain the device and function numbers respectively.
+
+Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
+Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+Signed-off-by: Jason Cooper <jason@lakedaemon.net>
+---
+ drivers/of/of_pci.c | 34 +++++++++++++++++++++++++++++-----
+ include/linux/of_pci.h | 1 +
+ 2 files changed, 30 insertions(+), 5 deletions(-)
+
+--- a/drivers/of/of_pci.c
++++ b/drivers/of/of_pci.c
+@@ -5,14 +5,15 @@
+ #include <asm/prom.h>
+
+ static inline int __of_pci_pci_compare(struct device_node *node,
+- unsigned int devfn)
++ unsigned int data)
+ {
+- unsigned int size;
+- const __be32 *reg = of_get_property(node, "reg", &size);
++ int devfn;
+
+- if (!reg || size < 5 * sizeof(__be32))
++ devfn = of_pci_get_devfn(node);
++ if (devfn < 0)
+ return 0;
+- return ((be32_to_cpup(&reg[0]) >> 8) & 0xff) == devfn;
++
++ return devfn == data;
+ }
+
+ struct device_node *of_pci_find_child_device(struct device_node *parent,
+@@ -40,3 +41,26 @@ struct device_node *of_pci_find_child_de
+ return NULL;
+ }
+ EXPORT_SYMBOL_GPL(of_pci_find_child_device);
++
++/**
++ * of_pci_get_devfn() - Get device and function numbers for a device node
++ * @np: device node
++ *
++ * Parses a standard 5-cell PCI resource and returns an 8-bit value that can
++ * be passed to the PCI_SLOT() and PCI_FUNC() macros to extract the device
++ * and function numbers respectively. On error a negative error code is
++ * returned.
++ */
++int of_pci_get_devfn(struct device_node *np)
++{
++ unsigned int size;
++ const __be32 *reg;
++
++ reg = of_get_property(np, "reg", &size);
++
++ if (!reg || size < 5 * sizeof(__be32))
++ return -EINVAL;
++
++ return (be32_to_cpup(reg) >> 8) & 0xff;
++}
++EXPORT_SYMBOL_GPL(of_pci_get_devfn);
+--- a/include/linux/of_pci.h
++++ b/include/linux/of_pci.h
+@@ -10,5 +10,6 @@ int of_irq_map_pci(const struct pci_dev
+ struct device_node;
+ struct device_node *of_pci_find_child_device(struct device_node *parent,
+ unsigned int devfn);
++int of_pci_get_devfn(struct device_node *np);
+
+ #endif