diff options
author | Magnus Damm <magnus.damm@gmail.com> | 2008-01-25 02:04:29 -0500 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2008-01-28 02:24:01 -0500 |
commit | da2d7f4bc578651455a7353995beb87db3cd8815 (patch) | |
tree | a3bc7770c59f8e7fdefc1e43351512fb7e2bd6da /arch/sh/drivers | |
parent | d4dca67bc2fd6caa4df3db28b6424841b95fde88 (diff) |
sh: update r7780rp interrupt code
This patch updates the board specific irq code for r7780rp. The new code is
very similar to the other highlander implementations, with the exception that
the r7780rp handles pci interrupts using IRL. To simplify the pci code and
use the same interrupt numbers as r7780mp and r7785rp we hook in to the
cpu specific pci vectors.
The pci interrupts and the push switch all work well with and without this
patch. CF and AX88796 are not ok though and the source of the problem is
unknown at this point. The AX88796 does for not detect it's proper mac
address (IPL gets it right) and the kernel hangs on CF access. As a workaround
this patch removes the CF and the AX88796 from the platform datain case of
r7780rp.
Signed-off-by: Magnus Damm <damm@igel.co.jp>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'arch/sh/drivers')
-rw-r--r-- | arch/sh/drivers/pci/ops-r7780rp.c | 16 |
1 files changed, 2 insertions, 14 deletions
diff --git a/arch/sh/drivers/pci/ops-r7780rp.c b/arch/sh/drivers/pci/ops-r7780rp.c index 48fe4032ebea..5fdadaeed6fc 100644 --- a/arch/sh/drivers/pci/ops-r7780rp.c +++ b/arch/sh/drivers/pci/ops-r7780rp.c | |||
@@ -17,25 +17,13 @@ | |||
17 | #include <asm/io.h> | 17 | #include <asm/io.h> |
18 | #include "pci-sh4.h" | 18 | #include "pci-sh4.h" |
19 | 19 | ||
20 | static char r7780rp_irq_tab[] __initdata = { | 20 | static char irq_tab[] __initdata = { |
21 | 0, 1, 2, 3, | ||
22 | }; | ||
23 | |||
24 | static char r7780mp_irq_tab[] __initdata = { | ||
25 | 65, 66, 67, 68, | 21 | 65, 66, 67, 68, |
26 | }; | 22 | }; |
27 | 23 | ||
28 | int __init pcibios_map_platform_irq(struct pci_dev *pdev, u8 slot, u8 pin) | 24 | int __init pcibios_map_platform_irq(struct pci_dev *pdev, u8 slot, u8 pin) |
29 | { | 25 | { |
30 | if (mach_is_r7780rp()) | 26 | return irq_tab[slot]; |
31 | return r7780rp_irq_tab[slot]; | ||
32 | if (mach_is_r7780mp() || mach_is_r7785rp()) | ||
33 | return r7780mp_irq_tab[slot]; | ||
34 | |||
35 | printk(KERN_ERR "PCI: Bad IRQ mapping " | ||
36 | "request for slot %d, func %d\n", slot, pin-1); | ||
37 | |||
38 | return -1; | ||
39 | } | 27 | } |
40 | 28 | ||
41 | static struct resource sh7780_io_resource = { | 29 | static struct resource sh7780_io_resource = { |