lkml.org 
[lkml]   [2012]   [Feb]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 03/15] PCI: Add busn_res operation functions
    Date
    will use them insert/update busn res in pci_bus

    Signed-off-by: Yinghai Lu <yinghai@kernel.org>
    ---
    drivers/pci/probe.c | 36 ++++++++++++++++++++++++++++++++++++
    include/linux/pci.h | 3 +++
    2 files changed, 39 insertions(+), 0 deletions(-)

    diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
    index a114173..957c2bc 100644
    --- a/drivers/pci/probe.c
    +++ b/drivers/pci/probe.c
    @@ -1622,6 +1622,42 @@ err_out:
    return NULL;
    }

    +void pci_bus_insert_busn_res(struct pci_bus *b, int bus, int bus_max)
    +{
    + struct resource *res = &b->busn_res;
    + struct resource *parent_res = &iobusn_resource;
    + int ret;
    +
    + res->start = (pci_domain_nr(b) << 8) | bus;
    + res->end = (pci_domain_nr(b) << 8) | bus_max;
    + res->flags = IORESOURCE_BUS;
    +
    + if (!pci_is_root_bus(b))
    + parent_res = &b->parent->busn_res;
    +
    + ret = insert_resource(parent_res, res);
    +
    + dev_printk(KERN_DEBUG, &b->dev,
    + "busn_res: %pR %s inserted under %pR\n",
    + res, ret ? "can not be" : "is", parent_res);
    +}
    +
    +void pci_bus_update_busn_res_end(struct pci_bus *b, int bus_max)
    +{
    + struct resource *res = &b->busn_res;
    + struct resource old_res = *res;
    +
    + res->end &= ~0xff;
    + res->end |= bus_max;
    + dev_printk(KERN_DEBUG, &b->dev, "busn_res: %pR end updated to %pR\n",
    + &old_res, res);
    +}
    +
    +void pci_bus_release_busn_res(struct pci_bus *b)
    +{
    + release_resource(&b->busn_res);
    +}
    +
    struct pci_bus * __devinit pci_scan_root_bus(struct device *parent, int bus,
    struct pci_ops *ops, void *sysdata, struct list_head *resources)
    {
    diff --git a/include/linux/pci.h b/include/linux/pci.h
    index 94ad468..3da935c 100644
    --- a/include/linux/pci.h
    +++ b/include/linux/pci.h
    @@ -665,6 +665,9 @@ struct pci_bus *pci_scan_bus(int bus, struct pci_ops *ops, void *sysdata);
    struct pci_bus *pci_create_root_bus(struct device *parent, int bus,
    struct pci_ops *ops, void *sysdata,
    struct list_head *resources);
    +void pci_bus_insert_busn_res(struct pci_bus *b, int bus, int busmax);
    +void pci_bus_update_busn_res_end(struct pci_bus *b, int busmax);
    +void pci_bus_release_busn_res(struct pci_bus *b);
    struct pci_bus * __devinit pci_scan_root_bus(struct device *parent, int bus,
    struct pci_ops *ops, void *sysdata,
    struct list_head *resources);
    --
    1.7.7


    \
     
     \ /
      Last update: 2012-02-01 23:51    [W:0.028 / U:30.908 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site