Thread (5 messages) 5 messages, 2 authors, 2006-10-26

Re: MPC7448_HPC2 question

From: Zang Roy-r61911 <hidden>
Date: 2006-10-25 05:31:13

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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help