Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 81014
b: refs/heads/master
c: 3f17863
h: refs/heads/master
v: v3
  • Loading branch information
Stephen Rothwell authored and Paul Mackerras committed Dec 11, 2007
1 parent ac7660b commit dac1660
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 34 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 6a9057933421126ef8265c15b8220c015865b1eb
refs/heads/master: 3f1786328a1c5f6240d96ca6359246c4bded7ec3
68 changes: 35 additions & 33 deletions trunk/arch/powerpc/platforms/iseries/pci.c
Original file line number Diff line number Diff line change
Expand Up @@ -177,47 +177,49 @@ void __init iSeries_pci_final_fixup(void)

printk("pcibios_final_fixup\n");
for_each_pci_dev(pdev) {
struct pci_dn *pdn;
const u32 *agent;

node = find_device_node(pdev->bus->number, pdev->devfn);
printk("pci dev %p (%x.%x), node %p\n", pdev,
pdev->bus->number, pdev->devfn, node);
if (!node) {
printk("PCI: Device Tree not found for 0x%016lX\n",
(unsigned long)pdev);
continue;
}

if (node != NULL) {
struct pci_dn *pdn = PCI_DN(node);
const u32 *agent;

agent = of_get_property(node, "linux,agent-id", NULL);
if ((pdn != NULL) && (agent != NULL)) {
u8 irq = iSeries_allocate_IRQ(pdn->busno, 0,
pdn->bussubno);
int err;

err = HvCallXm_connectBusUnit(pdn->busno, pdn->bussubno,
*agent, irq);
pdn = PCI_DN(node);
agent = of_get_property(node, "linux,agent-id", NULL);
if (pdn && agent) {
u8 irq = iSeries_allocate_IRQ(pdn->busno, 0,
pdn->bussubno);
int err;

err = HvCallXm_connectBusUnit(pdn->busno, pdn->bussubno,
*agent, irq);
if (err)
pci_log_error("Connect Bus Unit",
pdn->busno, pdn->bussubno, *agent, err);
else {
err = HvCallPci_configStore8(pdn->busno,
pdn->bussubno, *agent,
PCI_INTERRUPT_LINE, irq);
if (err)
pci_log_error("Connect Bus Unit",
pdn->busno, pdn->bussubno, *agent, err);
else {
err = HvCallPci_configStore8(pdn->busno, pdn->bussubno,
*agent,
PCI_INTERRUPT_LINE,
irq);
if (err)
pci_log_error("PciCfgStore Irq Failed!",
pdn->busno, pdn->bussubno, *agent, err);
}
if (!err)
pci_log_error("PciCfgStore Irq Failed!",
pdn->busno, pdn->bussubno,
*agent, err);
else
pdev->irq = irq;
}
}

++num_dev;
pdev->sysdata = node;
PCI_DN(node)->pcidev = pdev;
allocate_device_bars(pdev);
iSeries_Device_Information(pdev, num_dev);
iommu_devnode_init_iSeries(pdev, node);
} else
printk("PCI: Device Tree not found for 0x%016lX\n",
(unsigned long)pdev);
num_dev++;
pdev->sysdata = node;
PCI_DN(node)->pcidev = pdev;
allocate_device_bars(pdev);
iSeries_Device_Information(pdev, num_dev);
iommu_devnode_init_iSeries(pdev, node);
}
iSeries_activate_IRQs();
mf_display_src(0xC9000200);
Expand Down

0 comments on commit dac1660

Please sign in to comment.