aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sh/drivers/pci/ops-r7780rp.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/sh/drivers/pci/ops-r7780rp.c')
-rw-r--r--arch/sh/drivers/pci/ops-r7780rp.c37
1 files changed, 27 insertions, 10 deletions
diff --git a/arch/sh/drivers/pci/ops-r7780rp.c b/arch/sh/drivers/pci/ops-r7780rp.c
index eeea1577e112..6f4fb38bafa2 100644
--- a/arch/sh/drivers/pci/ops-r7780rp.c
+++ b/arch/sh/drivers/pci/ops-r7780rp.c
@@ -17,18 +17,35 @@
17#include <asm/io.h> 17#include <asm/io.h>
18#include "pci-sh4.h" 18#include "pci-sh4.h"
19 19
20static char r7780rp_irq_tab[] __initdata = {
21 0, 1, 2, 3,
22};
23
24static char r7780mp_irq_tab[] __initdata = {
25 65, 66, 67, 68,
26};
27
28static char r7785rp_irq_tab[][4] __initdata = {
29 { 65, 66, 67, 68 }, /* INT ABCD */
30 { 66, 67, 68, 65 }, /* INT BCDA */
31 { 67, 68, 65, 66 }, /* INT CDAB */
32 { 68, 65, 66, 67 }, /* INT DABC */
33 { 64, 64, 64, 64 }, /* PCI Host */
34};
35
20int __init pcibios_map_platform_irq(struct pci_dev *pdev, u8 slot, u8 pin) 36int __init pcibios_map_platform_irq(struct pci_dev *pdev, u8 slot, u8 pin)
21{ 37{
22 switch (slot) { 38 if (mach_is_r7780rp())
23 case 0: return IRQ_PCISLOT1; /* PCI Interrupt #1 */ 39 return r7780rp_irq_tab[slot];
24 case 1: return IRQ_PCISLOT2; /* PCI Interrupt #2 */ 40 if (mach_is_r7780mp())
25 case 2: return IRQ_PCISLOT3; /* PCI Interrupt #3 */ 41 return r7780mp_irq_tab[slot];
26 case 3: return IRQ_PCISLOT4; /* PCI Interrupt E4 */ 42 if (mach_is_r7785rp())
27 default: 43 return r7785rp_irq_tab[slot][pin];
28 printk(KERN_ERR "PCI: Bad IRQ mapping " 44
29 "request for slot %d, func %d\n", slot, pin-1); 45 printk(KERN_ERR "PCI: Bad IRQ mapping "
30 return -1; 46 "request for slot %d, func %d\n", slot, pin-1);
31 } 47
48 return -1;
32} 49}
33 50
34static struct resource sh7780_io_resource = { 51static struct resource sh7780_io_resource = {