lkml.org 
[lkml]   [2013]   [Feb]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4/4] of/pci: Add of_pci_parse_bus_range() function
    Date
    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>
    ---
    drivers/of/of_pci.c | 25 +++++++++++++++++++++++++
    include/linux/of_pci.h | 1 +
    2 files changed, 26 insertions(+)

    diff --git a/drivers/of/of_pci.c b/drivers/of/of_pci.c
    index d6e6de5..fb92ded 100644
    --- a/drivers/of/of_pci.c
    +++ b/drivers/of/of_pci.c
    @@ -85,3 +85,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);
    diff --git a/include/linux/of_pci.h b/include/linux/of_pci.h
    index 9118321..fb6e95e 100644
    --- a/include/linux/of_pci.h
    +++ b/include/linux/of_pci.h
    @@ -12,5 +12,6 @@ struct device_node *of_pci_find_child_device(struct device_node *parent,
    unsigned int devfn);
    int of_pci_get_bus(struct device_node *np);
    int of_pci_get_devfn(struct device_node *np);
    +int of_pci_parse_bus_range(struct device_node *node, struct resource *res);

    #endif
    --
    1.8.1.2


    \
     
     \ /
      Last update: 2013-02-11 10:01    [W:3.868 / U:0.000 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site