summaryrefslogtreecommitdiffstats
path: root/arch/sh/drivers/pci/ops-r7780rp.c
diff options
context:
space:
mode:
authorPaul Mundt <lethal@linux-sh.org>2007-03-12 14:38:59 +0900
committerPaul Mundt <lethal@hera.kernel.org>2007-05-07 02:10:53 +0000
commit32351a28a7e1f2c68afbe559dd35e1ad0301be6d (patch)
tree289c28c605da6876125fa2105d880860b88b5017 /arch/sh/drivers/pci/ops-r7780rp.c
parentbe782df54c51b50dd4dbc363a5a5afa04565fc60 (diff)
downloadop-kernel-dev-32351a28a7e1f2c68afbe559dd35e1ad0301be6d.zip
op-kernel-dev-32351a28a7e1f2c68afbe559dd35e1ad0301be6d.tar.gz
sh: Add SH7785 Highlander board support (R7785RP).
This adds preliminary support for the SH7785-based Highlander board. Some of the Highlander support code is reordered so that most of it can be reused directly. This also plugs in missing SH7785 checks in the places that need it, as this is the first board to support the CPU. Signed-off-by: Paul Mundt <lethal@linux-sh.org>
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 eeea157..6f4fb38 100644
--- a/arch/sh/drivers/pci/ops-r7780rp.c
+++ b/arch/sh/drivers/pci/ops-r7780rp.c
@@ -17,18 +17,35 @@
#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,
+};
+
+static char r7785rp_irq_tab[][4] __initdata = {
+ { 65, 66, 67, 68 }, /* INT ABCD */
+ { 66, 67, 68, 65 }, /* INT BCDA */
+ { 67, 68, 65, 66 }, /* INT CDAB */
+ { 68, 65, 66, 67 }, /* INT DABC */
+ { 64, 64, 64, 64 }, /* PCI Host */
+};
+
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())
+ return r7780mp_irq_tab[slot];
+ if (mach_is_r7785rp())
+ return r7785rp_irq_tab[slot][pin];
+
+ 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 = {
OpenPOWER on IntegriCloud