Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

of/pci: Add of_pci_parse_bus_range() function

This function can be used to parse a bus-range property as specified by
device nodes representing PCI bridges.

Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
Signed-off-by: Jason Cooper <jason@lakedaemon.net>

authored by

Thierry Reding and committed by
Jason Cooper
4e23d3f5 45ab9702

+26
+25
drivers/of/of_pci.c
··· 64 64 return (be32_to_cpup(reg) >> 8) & 0xff; 65 65 } 66 66 EXPORT_SYMBOL_GPL(of_pci_get_devfn); 67 + 68 + /** 69 + * of_pci_parse_bus_range() - parse the bus-range property of a PCI device 70 + * @node: device node 71 + * @res: address to a struct resource to return the bus-range 72 + * 73 + * Returns 0 on success or a negative error-code on failure. 74 + */ 75 + int of_pci_parse_bus_range(struct device_node *node, struct resource *res) 76 + { 77 + const __be32 *values; 78 + int len; 79 + 80 + values = of_get_property(node, "bus-range", &len); 81 + if (!values || len < sizeof(*values) * 2) 82 + return -EINVAL; 83 + 84 + res->name = node->name; 85 + res->start = be32_to_cpup(values++); 86 + res->end = be32_to_cpup(values); 87 + res->flags = IORESOURCE_BUS; 88 + 89 + return 0; 90 + } 91 + EXPORT_SYMBOL_GPL(of_pci_parse_bus_range);
+1
include/linux/of_pci.h
··· 11 11 struct device_node *of_pci_find_child_device(struct device_node *parent, 12 12 unsigned int devfn); 13 13 int of_pci_get_devfn(struct device_node *np); 14 + int of_pci_parse_bus_range(struct device_node *node, struct resource *res); 14 15 15 16 #endif