Skip to content

Commit

Permalink
of/pci: Add of_pci_parse_bus_range() function
Browse files Browse the repository at this point in the history
This function can be used to parse a bus-range property as specified by
device nodes representing PCI bridges.

Signed-off-by: Thierry Reding <[email protected]>
Signed-off-by: Jason Cooper <[email protected]>
  • Loading branch information
Thierry Reding authored and Jason Cooper committed May 19, 2013
1 parent 45ab970 commit 4e23d3f
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 0 deletions.
25 changes: 25 additions & 0 deletions drivers/of/of_pci.c
Original file line number Diff line number Diff line change
Expand Up @@ -64,3 +64,28 @@ int of_pci_get_devfn(struct device_node *np)
return (be32_to_cpup(reg) >> 8) & 0xff;
}
EXPORT_SYMBOL_GPL(of_pci_get_devfn);

/**
* of_pci_parse_bus_range() - parse the bus-range property of a PCI device
* @node: device node
* @res: address to a struct resource to return the bus-range
*
* Returns 0 on success or a negative error-code on failure.
*/
int of_pci_parse_bus_range(struct device_node *node, struct resource *res)
{
const __be32 *values;
int len;

values = of_get_property(node, "bus-range", &len);
if (!values || len < sizeof(*values) * 2)
return -EINVAL;

res->name = node->name;
res->start = be32_to_cpup(values++);
res->end = be32_to_cpup(values);
res->flags = IORESOURCE_BUS;

return 0;
}
EXPORT_SYMBOL_GPL(of_pci_parse_bus_range);
1 change: 1 addition & 0 deletions include/linux/of_pci.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,6 @@ 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);
int of_pci_parse_bus_range(struct device_node *node, struct resource *res);

#endif

0 comments on commit 4e23d3f

Please sign in to comment.