MPC7448_HPC2 question
Zang Roy-r61911
tie-fei.zang at freescale.com
Wed Oct 25 15:31:46 EST 2006
On Wed, 2006-10-25 at 13:20, Benjamin Herrenschmidt wrote:
> Any reason why that:
>
> void mpc7448_hpc2_fixup_irq(struct pci_dev *dev)
> {
> struct pci_controller *hose;
> struct device_node *node;
> const unsigned int *interrupt;
> int busnr;
> int len;
> u8 slot;
> u8 pin;
>
> /* Lookup the hose */
> busnr = dev->bus->number;
> hose = pci_bus_to_hose(busnr);
> if (!hose)
> printk(KERN_ERR "No pci hose found\n");
>
> /* Check it has an OF node associated */
> node = (struct device_node *) hose->arch_data;
> if (!node)
> printk(KERN_ERR "No pci node found\n");
>
> interrupt = get_property(node, "interrupt-map", &len);
> slot = find_slot_by_devfn(interrupt, dev->devfn);
> pci_read_config_byte(dev, PCI_INTERRUPT_PIN, &pin);
> if (pin == 0 || pin > 4)
> pin = 1;
> pin--;
> dev->irq = interrupt[slot*4*7 + pin*7 + 5];
> DBG("TSI_PCI: dev->irq = 0x%x\n", dev->irq);
> }
>
> Cannot be replaced by:
>
> pci_read_irq_line(dev);
>
> I'm about to make pci_read_irq_line() called by default by the PCI
> code (with a new ppc_md.pci_irq_fixup for platforms that really need
> something else done) and so while "fixing" all platforms, I stumbled
> accross the code above which is a bit shocking :)
>
> Cheers,
>
> Ben.
>
>
>
Ben,
Last week, I had tried to do the replacement. While, it did not work. I
had though some update of pci_read_irq_line() should be needed.
Any way, I will investigate it and give the patch ASAP :-).
Roy
More information about the Linuxppc-dev
mailing list