Pull bugzilla-9345 into release branch
[sfrench/cifs-2.6.git] / arch / sh / drivers / pci / ops-r7780rp.c
index eeea1577e112727d6afd32d018ced0681788e65f..48fe4032ebea7b9cfeaef46864f5dc32f580f635 100644 (file)
 #include <asm/io.h>
 #include "pci-sh4.h"
 
+static char r7780rp_irq_tab[] __initdata = {
+       0, 1, 2, 3,
+};
+
+static char r7780mp_irq_tab[] __initdata = {
+       65, 66, 67, 68,
+};
+
 int __init pcibios_map_platform_irq(struct pci_dev *pdev, u8 slot, u8 pin)
 {
-        switch (slot) {
-       case 0: return IRQ_PCISLOT1;            /* PCI Interrupt #1 */
-       case 1: return IRQ_PCISLOT2;            /* PCI Interrupt #2 */
-       case 2: return IRQ_PCISLOT3;            /* PCI Interrupt #3 */
-       case 3: return IRQ_PCISLOT4;            /* PCI Interrupt E4 */
-       default:
-               printk(KERN_ERR "PCI: Bad IRQ mapping "
-                      "request for slot %d, func %d\n", slot, pin-1);
-               return -1;
-       }
+       if (mach_is_r7780rp())
+               return r7780rp_irq_tab[slot];
+       if (mach_is_r7780mp() || mach_is_r7785rp())
+               return r7780mp_irq_tab[slot];
+
+       printk(KERN_ERR "PCI: Bad IRQ mapping "
+              "request for slot %d, func %d\n", slot, pin-1);
+
+       return -1;
 }
 
 static struct resource sh7780_io_resource = {
        .name   = "SH7780_IO",
-       .start  = 0x2000,
-       .end    = 0x2000 + SH7780_PCI_IO_SIZE - 1,
+       .start  = SH7780_PCI_IO_BASE,
+       .end    = SH7780_PCI_IO_BASE + SH7780_PCI_IO_SIZE - 1,
        .flags  = IORESOURCE_IO
 };