提交 1a300107 编写于 作者: B Bjorn Helgaas 提交者: Jesse Barnes

sparc/PCI: convert to pci_create_root_bus()

Convert from pci_create_bus() to pci_create_root_bus().  This way the root
bus resources are correct immediately.  This patch doesn't fix a problem
because sparc fixed the resources before scanning the bus, but it makes
sparc more consistent with other architectures.

v2: fix build error (from sfr)
Signed-off-by: NBjorn Helgaas <bhelgaas@google.com>
Acked-by: NDavid S. Miller <davem@davemloft.net>
Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
上级 6f17dd1b
...@@ -685,23 +685,25 @@ static void __devinit pci_bus_register_of_sysfs(struct pci_bus *bus) ...@@ -685,23 +685,25 @@ static void __devinit pci_bus_register_of_sysfs(struct pci_bus *bus)
struct pci_bus * __devinit pci_scan_one_pbm(struct pci_pbm_info *pbm, struct pci_bus * __devinit pci_scan_one_pbm(struct pci_pbm_info *pbm,
struct device *parent) struct device *parent)
{ {
LIST_HEAD(resources);
struct device_node *node = pbm->op->dev.of_node; struct device_node *node = pbm->op->dev.of_node;
struct pci_bus *bus; struct pci_bus *bus;
printk("PCI: Scanning PBM %s\n", node->full_name); printk("PCI: Scanning PBM %s\n", node->full_name);
bus = pci_create_bus(parent, pbm->pci_first_busno, pbm->pci_ops, pbm); pci_add_resource(&resources, &pbm->io_space);
pci_add_resource(&resources, &pbm->mem_space);
bus = pci_create_root_bus(parent, pbm->pci_first_busno, pbm->pci_ops,
pbm, &resources);
if (!bus) { if (!bus) {
printk(KERN_ERR "Failed to create bus for %s\n", printk(KERN_ERR "Failed to create bus for %s\n",
node->full_name); node->full_name);
pci_free_resource_list(&resources);
return NULL; return NULL;
} }
bus->secondary = pbm->pci_first_busno; bus->secondary = pbm->pci_first_busno;
bus->subordinate = pbm->pci_last_busno; bus->subordinate = pbm->pci_last_busno;
bus->resource[0] = &pbm->io_space;
bus->resource[1] = &pbm->mem_space;
pci_of_scan_bus(pbm, node, bus); pci_of_scan_bus(pbm, node, bus);
pci_bus_add_devices(bus); pci_bus_add_devices(bus);
pci_bus_register_of_sysfs(bus); pci_bus_register_of_sysfs(bus);
...@@ -711,13 +713,6 @@ struct pci_bus * __devinit pci_scan_one_pbm(struct pci_pbm_info *pbm, ...@@ -711,13 +713,6 @@ struct pci_bus * __devinit pci_scan_one_pbm(struct pci_pbm_info *pbm,
void __devinit pcibios_fixup_bus(struct pci_bus *pbus) void __devinit pcibios_fixup_bus(struct pci_bus *pbus)
{ {
struct pci_pbm_info *pbm = pbus->sysdata;
/* Generic PCI bus probing sets these to point at
* &io{port,mem}_resouce which is wrong for us.
*/
pbus->resource[0] = &pbm->io_space;
pbus->resource[1] = &pbm->mem_space;
} }
void pcibios_update_irq(struct pci_dev *pdev, int irq) void pcibios_update_irq(struct pci_dev *pdev, int irq)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册