Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 28718
b: refs/heads/master
c: b025279
h: refs/heads/master
v: v3
  • Loading branch information
Stephen Rothwell authored and Paul Mackerras committed May 24, 2006
1 parent 26c044c commit 1bcce97
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 27 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: 96ff6afaf1c2fdd118139095dea66c0910379780
refs/heads/master: b02527931672749d404b5f640b7e086afc37f4e0
53 changes: 28 additions & 25 deletions trunk/arch/powerpc/platforms/iseries/pci.c
Original file line number Diff line number Diff line change
Expand Up @@ -190,9 +190,6 @@ void iSeries_pcibios_init(void)
/* Find and connect the devices. */
for (dn = NULL; (dn = of_get_next_child(node, dn)) != NULL;) {
struct pci_dn *pdn;
u8 irq;
int err;
u32 *agent;
u32 *reg;
u32 *lsn;

Expand All @@ -206,33 +203,13 @@ void iSeries_pcibios_init(void)
printk(KERN_DEBUG "no subbus property!\n");
continue;
}
agent = (u32 *)get_property(dn, "linux,agent-id", NULL);
if (agent == NULL) {
printk(KERN_DEBUG "no agent-id\n");
continue;
}
lsn = (u32 *)get_property(dn,
"linux,logical-slot-number", NULL);
if (lsn == NULL) {
printk(KERN_DEBUG "no logical-slot-number\n");
continue;
}

irq = iSeries_allocate_IRQ(bus, 0, *busp);
err = HvCallXm_connectBusUnit(bus, *busp, *agent, irq);
if (err) {
pci_Log_Error("Connect Bus Unit",
bus, *busp, *agent, err);
continue;
}
err = HvCallPci_configStore8(bus, *busp, *agent,
PCI_INTERRUPT_LINE, irq);
if (err) {
pci_Log_Error("PciCfgStore Irq Failed!",
bus, *busp, *agent, err);
continue;
}

pdn = kzalloc(sizeof(*pdn), GFP_KERNEL);
if (pdn == NULL)
return;
Expand All @@ -241,7 +218,6 @@ void iSeries_pcibios_init(void)
pdn->busno = bus;
pdn->devfn = (reg[0] >> 8) & 0xff;
pdn->bussubno = *busp;
pdn->Irq = irq;
pdn->LogicalSlot = *lsn;
}
}
Expand All @@ -266,6 +242,34 @@ void __init iSeries_pci_final_fixup(void)
pdev->bus->number, pdev->devfn, node);

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

agent = (u32 *)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);
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)
pdev->irq = irq;
}

++DeviceCount;
pdev->sysdata = (void *)node;
PCI_DN(node)->pcidev = pdev;
Expand All @@ -275,7 +279,6 @@ void __init iSeries_pci_final_fixup(void)
} else
printk("PCI: Device Tree not found for 0x%016lX\n",
(unsigned long)pdev);
pdev->irq = PCI_DN(node)->Irq;
}
iSeries_activate_IRQs();
mf_display_src(0xC9000200);
Expand Down
1 change: 0 additions & 1 deletion trunk/include/asm-powerpc/pci-bridge.h
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,6 @@ struct pci_dn {
struct pci_dev *pcidev; /* back-pointer to the pci device */
struct device_node *node; /* back-pointer to the device_node */
#ifdef CONFIG_PPC_ISERIES
int Irq; /* Assigned IRQ */
int Flags; /* Possible flags(disable/bist)*/
u8 LogicalSlot; /* Hv Slot Index for Tces */
#endif
Expand Down

0 comments on commit 1bcce97

Please sign in to comment.