lkml.org 
[lkml]   [2013]   [Mar]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 2/6] of/pci: Add of_pci_parse_bus_range() function
    Date
    From: Thierry Reding <thierry.reding@avionic-design.de>

    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: Jingoo Han <jg1.han@samsung.com>
    ---
    drivers/of/of_pci.c | 25 +++++++++++++++++++++++++
    include/linux/of_pci.h | 1 +
    2 files changed, 26 insertions(+), 0 deletions(-)

    diff --git a/drivers/of/of_pci.c b/drivers/of/of_pci.c
    index 13e37e2..4ca7837 100644
    --- a/drivers/of/of_pci.c
    +++ b/drivers/of/of_pci.c
    @@ -40,3 +40,28 @@ struct device_node *of_pci_find_child_device(struct device_node *parent,
    return NULL;
    }
    EXPORT_SYMBOL_GPL(of_pci_find_child_device);
    +
    +/**
    + * 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 bb115de..178a5cc 100644
    --- 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 *pdev, struct of_irq *out_irq);
    struct device_node;
    struct device_node *of_pci_find_child_device(struct device_node *parent,
    unsigned int devfn);
    +int of_pci_parse_bus_range(struct device_node *node, struct resource *res);

    #endif
    --
    1.7.2.5



    \
     
     \ /
      Last update: 2013-03-23 05:41    [W:4.298 / U:0.208 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site