mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-05 18:39:59 +00:00
PCI: arm: use generic pci_swizzle_interrupt_pin()
Use the generic pci_swizzle_interrupt_pin() instead of arch-specific code. Cc: Russell King <rmk@arm.linux.org.uk> Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com> Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
This commit is contained in:
parent
57c2cf71c1
commit
f14d766a1a
2 changed files with 5 additions and 12 deletions
|
@ -491,17 +491,17 @@ EXPORT_SYMBOL(pcibios_bus_to_resource);
|
||||||
*/
|
*/
|
||||||
u8 __devinit pci_std_swizzle(struct pci_dev *dev, u8 *pinp)
|
u8 __devinit pci_std_swizzle(struct pci_dev *dev, u8 *pinp)
|
||||||
{
|
{
|
||||||
int pin = *pinp - 1;
|
int pin = *pinp;
|
||||||
|
|
||||||
while (dev->bus->self) {
|
while (dev->bus->self) {
|
||||||
pin = (pin + PCI_SLOT(dev->devfn)) & 3;
|
pin = pci_swizzle_interrupt_pin(dev, pin);
|
||||||
/*
|
/*
|
||||||
* move up the chain of bridges,
|
* move up the chain of bridges,
|
||||||
* swizzling as we go.
|
* swizzling as we go.
|
||||||
*/
|
*/
|
||||||
dev = dev->bus->self;
|
dev = dev->bus->self;
|
||||||
}
|
}
|
||||||
*pinp = pin + 1;
|
*pinp = pin;
|
||||||
|
|
||||||
return PCI_SLOT(dev->devfn);
|
return PCI_SLOT(dev->devfn);
|
||||||
}
|
}
|
||||||
|
|
|
@ -63,13 +63,7 @@
|
||||||
*
|
*
|
||||||
* Where A = pin 1, B = pin 2 and so on and pin=0 = default = A.
|
* Where A = pin 1, B = pin 2 and so on and pin=0 = default = A.
|
||||||
* Thus, each swizzle is ((pin-1) + (device#-4)) % 4
|
* Thus, each swizzle is ((pin-1) + (device#-4)) % 4
|
||||||
*
|
|
||||||
* The following code swizzles for exactly one bridge.
|
|
||||||
*/
|
*/
|
||||||
static inline int bridge_swizzle(int pin, unsigned int slot)
|
|
||||||
{
|
|
||||||
return (pin + slot) & 3;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This routine handles multiple bridges.
|
* This routine handles multiple bridges.
|
||||||
|
@ -81,15 +75,14 @@ static u8 __init integrator_swizzle(struct pci_dev *dev, u8 *pinp)
|
||||||
if (pin == 0)
|
if (pin == 0)
|
||||||
pin = 1;
|
pin = 1;
|
||||||
|
|
||||||
pin -= 1;
|
|
||||||
while (dev->bus->self) {
|
while (dev->bus->self) {
|
||||||
pin = bridge_swizzle(pin, PCI_SLOT(dev->devfn));
|
pin = pci_swizzle_interrupt_pin(dev, pin);
|
||||||
/*
|
/*
|
||||||
* move up the chain of bridges, swizzling as we go.
|
* move up the chain of bridges, swizzling as we go.
|
||||||
*/
|
*/
|
||||||
dev = dev->bus->self;
|
dev = dev->bus->self;
|
||||||
}
|
}
|
||||||
*pinp = pin + 1;
|
*pinp = pin;
|
||||||
|
|
||||||
return PCI_SLOT(dev->devfn);
|
return PCI_SLOT(dev->devfn);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue