X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=arch%2Fpowerpc%2Fplatforms%2Fchrp%2Fpci.c;h=ac224876ce5943f999a0def0007f7214cd35ff9a;hb=9464c7cf61b9433057924c36e6e02f303a00e768;hp=6802cdc3168a153bdb36a8686dc3ae64f65a587b;hpb=41689045f6a3cbe0550e1d34e9cc20d2e8c432ba;p=linux-2.6.git diff --git a/arch/powerpc/platforms/chrp/pci.c b/arch/powerpc/platforms/chrp/pci.c index 6802cdc31..ac224876c 100644 --- a/arch/powerpc/platforms/chrp/pci.c +++ b/arch/powerpc/platforms/chrp/pci.c @@ -2,6 +2,7 @@ * CHRP pci routines. */ +#include #include #include #include @@ -18,6 +19,7 @@ #include #include #include +#include #include #include @@ -141,7 +143,7 @@ hydra_init(void) if (np == NULL || of_address_to_resource(np, 0, &r)) return 0; Hydra = ioremap(r.start, r.end-r.start); - printk("Hydra Mac I/O at %llx\n", (unsigned long long)r.start); + printk("Hydra Mac I/O at %lx\n", r.start); printk("Hydra Feature_Control was %x", in_le32(&Hydra->Feature_Control)); out_le32(&Hydra->Feature_Control, (HYDRA_FC_SCC_CELL_EN | @@ -160,9 +162,15 @@ void __init chrp_pcibios_fixup(void) { struct pci_dev *dev = NULL; + struct device_node *np; - for_each_pci_dev(dev) - pci_read_irq_line(dev); + /* PCI interrupts are controlled by the OpenPIC */ + for_each_pci_dev(dev) { + np = pci_device_to_OF_node(dev); + if ((np != 0) && (np->n_intrs > 0) && (np->intrs[0].line != 0)) + dev->irq = np->intrs[0].line; + pci_write_config_byte(dev, PCI_INTERRUPT_LINE, dev->irq); + } } #define PRG_CL_RESET_VALID 0x00010000 @@ -259,7 +267,7 @@ chrp_find_bridges(void) bus_range[0], bus_range[1]); printk(" controlled by %s", dev->type); if (!is_longtrail) - printk(" at %llx", (unsigned long long)r.start); + printk(" at %lx", r.start); printk("\n"); hose = pcibios_alloc_controller();