Merge master.kernel.org:/pub/scm/linux/kernel/git/herbert/crypto-2.6
[linux-drm-fsl-dcu.git] / arch / sh / drivers / pci / ops-r7780rp.c
index 554d5ed2c5865466878eae422e08ad3855125257..f2216081ab85d5983bd8c5d4b4b282b362e6fc98 100644 (file)
@@ -8,29 +8,34 @@
  *
  * PCI initialization for the Renesas SH7780 Highlander R7780RP-1 board
  */
-
-#include <linux/config.h>
 #include <linux/kernel.h>
 #include <linux/types.h>
 #include <linux/init.h>
 #include <linux/delay.h>
 #include <linux/pci.h>
-#include <asm/r7780rp/r7780rp.h>
+#include <asm/r7780rp.h>
 #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 = {