diff options
author | Gabor Juhos <juhosg@openwrt.org> | 2013-09-26 18:01:49 +0000 |
---|---|---|
committer | Gabor Juhos <juhosg@openwrt.org> | 2013-09-26 18:01:49 +0000 |
commit | c4a62e1deb092ff03197d64199025d99dbd59ec0 (patch) | |
tree | d4d05751b72f20f943948a23032e12107773c20d /target/linux/generic/patches-3.10/003-11-003-of-pci-Add-of_pci_get_devfn-function.patch | |
parent | f4ca3486cb50d4740ab0a38ed2d9481e7d833b76 (diff) | |
download | upstream-c4a62e1deb092ff03197d64199025d99dbd59ec0.tar.gz upstream-c4a62e1deb092ff03197d64199025d99dbd59ec0.tar.bz2 upstream-c4a62e1deb092ff03197d64199025d99dbd59ec0.zip |
kernel/3.10: add '003-11-' prefix for patches backported from 3.11
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@38217 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target/linux/generic/patches-3.10/003-11-003-of-pci-Add-of_pci_get_devfn-function.patch')
-rw-r--r-- | target/linux/generic/patches-3.10/003-11-003-of-pci-Add-of_pci_get_devfn-function.patch | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/target/linux/generic/patches-3.10/003-11-003-of-pci-Add-of_pci_get_devfn-function.patch b/target/linux/generic/patches-3.10/003-11-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-11-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(®[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 |