diff options
author | Nobuhiro Iwamatsu <iwamatsu@nigauri.org> | 2011-01-06 22:02:11 -0500 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2011-01-10 22:47:17 -0500 |
commit | 9ca04434bb5c448e2e252d99a087810c40b9a7c6 (patch) | |
tree | 00e72fa354656accbc6e17f3016ae5ab253d0ddd /arch | |
parent | 0d6ae8fa945aba732edadce1ead9929520d61b99 (diff) |
sh: pci: Add pci_fixup_pcic to pci of landisk
This adds a pci setting revision for landisk.
Signed-off-by: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/sh/drivers/pci/fixups-landisk.c | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/arch/sh/drivers/pci/fixups-landisk.c b/arch/sh/drivers/pci/fixups-landisk.c index bb1a6bb5149e..95c6e2d94a0a 100644 --- a/arch/sh/drivers/pci/fixups-landisk.c +++ b/arch/sh/drivers/pci/fixups-landisk.c | |||
@@ -1,9 +1,10 @@ | |||
1 | /* | 1 | /* |
2 | * arch/sh/drivers/pci/ops-landisk.c | 2 | * arch/sh/drivers/pci/fixups-landisk.c |
3 | * | 3 | * |
4 | * PCI initialization for the I-O DATA Device, Inc. LANDISK board | 4 | * PCI initialization for the I-O DATA Device, Inc. LANDISK board |
5 | * | 5 | * |
6 | * Copyright (C) 2006 kogiidena | 6 | * Copyright (C) 2006 kogiidena |
7 | * Copyright (C) 2010 Nobuhiro Iwamatsu | ||
7 | * | 8 | * |
8 | * May be copied or modified under the terms of the GNU General Public | 9 | * May be copied or modified under the terms of the GNU General Public |
9 | * License. See linux/COPYING for more information. | 10 | * License. See linux/COPYING for more information. |
@@ -15,6 +16,9 @@ | |||
15 | #include <linux/pci.h> | 16 | #include <linux/pci.h> |
16 | #include "pci-sh4.h" | 17 | #include "pci-sh4.h" |
17 | 18 | ||
19 | #define PCIMCR_MRSET_OFF 0xBFFFFFFF | ||
20 | #define PCIMCR_RFSH_OFF 0xFFFFFFFB | ||
21 | |||
18 | int pcibios_map_platform_irq(struct pci_dev *pdev, u8 slot, u8 pin) | 22 | int pcibios_map_platform_irq(struct pci_dev *pdev, u8 slot, u8 pin) |
19 | { | 23 | { |
20 | /* | 24 | /* |
@@ -26,9 +30,29 @@ int pcibios_map_platform_irq(struct pci_dev *pdev, u8 slot, u8 pin) | |||
26 | int irq = ((slot + pin - 1) & 0x3) + 5; | 30 | int irq = ((slot + pin - 1) & 0x3) + 5; |
27 | 31 | ||
28 | if ((slot | (pin - 1)) > 0x3) { | 32 | if ((slot | (pin - 1)) > 0x3) { |
29 | printk("PCI: Bad IRQ mapping request for slot %d pin %c\n", | 33 | printk(KERN_WARNING "PCI: Bad IRQ mapping request for slot %d pin %c\n", |
30 | slot, pin - 1 + 'A'); | 34 | slot, pin - 1 + 'A'); |
31 | return -1; | 35 | return -1; |
32 | } | 36 | } |
33 | return irq; | 37 | return irq; |
34 | } | 38 | } |
39 | |||
40 | int pci_fixup_pcic(struct pci_channel *chan) | ||
41 | { | ||
42 | unsigned long bcr1, mcr; | ||
43 | |||
44 | bcr1 = __raw_readl(SH7751_BCR1); | ||
45 | bcr1 |= 0x40080000; /* Enable Bit 19 BREQEN, set PCIC to slave */ | ||
46 | pci_write_reg(chan, bcr1, SH4_PCIBCR1); | ||
47 | |||
48 | mcr = __raw_readl(SH7751_MCR); | ||
49 | mcr = (mcr & PCIMCR_MRSET_OFF) & PCIMCR_RFSH_OFF; | ||
50 | pci_write_reg(chan, mcr, SH4_PCIMCR); | ||
51 | |||
52 | pci_write_reg(chan, 0x0c000000, SH7751_PCICONF5); | ||
53 | pci_write_reg(chan, 0xd0000000, SH7751_PCICONF6); | ||
54 | pci_write_reg(chan, 0x0c000000, SH4_PCILAR0); | ||
55 | pci_write_reg(chan, 0x00000000, SH4_PCILAR1); | ||
56 | |||
57 | return 0; | ||
58 | } | ||