diff options
Diffstat (limited to 'arch/sh/drivers')
-rw-r--r-- | arch/sh/drivers/dma/dma-g2.c | 2 | ||||
-rw-r--r-- | arch/sh/drivers/dma/dma-pvr2.c | 2 | ||||
-rw-r--r-- | arch/sh/drivers/dma/dma-sh.c | 48 | ||||
-rw-r--r-- | arch/sh/drivers/pci/ops-r7780rp.c | 2 | ||||
-rw-r--r-- | arch/sh/drivers/pci/ops-rts7751r2d.c | 24 | ||||
-rw-r--r-- | arch/sh/drivers/pci/pci-sh7751.c | 4 | ||||
-rw-r--r-- | arch/sh/drivers/pci/pci-st40.c | 2 |
7 files changed, 45 insertions, 39 deletions
diff --git a/arch/sh/drivers/dma/dma-g2.c b/arch/sh/drivers/dma/dma-g2.c index 9cb070924180..0caf11bb7e27 100644 --- a/arch/sh/drivers/dma/dma-g2.c +++ b/arch/sh/drivers/dma/dma-g2.c | |||
@@ -51,7 +51,7 @@ static volatile struct g2_dma_info *g2_dma = (volatile struct g2_dma_info *)0xa0 | |||
51 | ((g2_dma->channel[i].size - \ | 51 | ((g2_dma->channel[i].size - \ |
52 | g2_dma->status[i].size) & 0x0fffffff) | 52 | g2_dma->status[i].size) & 0x0fffffff) |
53 | 53 | ||
54 | static irqreturn_t g2_dma_interrupt(int irq, void *dev_id, struct pt_regs *regs) | 54 | static irqreturn_t g2_dma_interrupt(int irq, void *dev_id) |
55 | { | 55 | { |
56 | int i; | 56 | int i; |
57 | 57 | ||
diff --git a/arch/sh/drivers/dma/dma-pvr2.c b/arch/sh/drivers/dma/dma-pvr2.c index c1b6bc23c107..838fad566eaf 100644 --- a/arch/sh/drivers/dma/dma-pvr2.c +++ b/arch/sh/drivers/dma/dma-pvr2.c | |||
@@ -21,7 +21,7 @@ | |||
21 | static unsigned int xfer_complete; | 21 | static unsigned int xfer_complete; |
22 | static int count; | 22 | static int count; |
23 | 23 | ||
24 | static irqreturn_t pvr2_dma_interrupt(int irq, void *dev_id, struct pt_regs *regs) | 24 | static irqreturn_t pvr2_dma_interrupt(int irq, void *dev_id) |
25 | { | 25 | { |
26 | if (get_dma_residue(PVR2_CASCADE_CHAN)) { | 26 | if (get_dma_residue(PVR2_CASCADE_CHAN)) { |
27 | printk(KERN_WARNING "DMA: SH DMAC did not complete transfer " | 27 | printk(KERN_WARNING "DMA: SH DMAC did not complete transfer " |
diff --git a/arch/sh/drivers/dma/dma-sh.c b/arch/sh/drivers/dma/dma-sh.c index cbbe8bce3d67..660786013350 100644 --- a/arch/sh/drivers/dma/dma-sh.c +++ b/arch/sh/drivers/dma/dma-sh.c | |||
@@ -19,23 +19,34 @@ | |||
19 | #include <asm/io.h> | 19 | #include <asm/io.h> |
20 | #include "dma-sh.h" | 20 | #include "dma-sh.h" |
21 | 21 | ||
22 | static inline unsigned int get_dmte_irq(unsigned int chan) | ||
23 | { | ||
24 | unsigned int irq = 0; | ||
25 | 22 | ||
23 | |||
24 | #ifdef CONFIG_CPU_SH4 | ||
25 | static struct ipr_data dmae_ipr_map[] = { | ||
26 | { DMAE_IRQ, DMA_IPR_ADDR, DMA_IPR_POS, DMA_PRIORITY }, | ||
27 | }; | ||
28 | #endif | ||
29 | static struct ipr_data dmte_ipr_map[] = { | ||
26 | /* | 30 | /* |
27 | * Normally we could just do DMTE0_IRQ + chan outright, though in the | 31 | * Normally we could just do DMTE0_IRQ + chan outright, though in the |
28 | * case of the 7751R, the DMTE IRQs for channels > 4 start right above | 32 | * case of the 7751R, the DMTE IRQs for channels > 4 start right above |
29 | * the SCIF | 33 | * the SCIF |
30 | */ | 34 | */ |
31 | if (chan < 4) { | 35 | { DMTE0_IRQ + 0, DMA_IPR_ADDR, DMA_IPR_POS, DMA_PRIORITY }, |
32 | irq = DMTE0_IRQ + chan; | 36 | { DMTE0_IRQ + 1, DMA_IPR_ADDR, DMA_IPR_POS, DMA_PRIORITY }, |
33 | } else { | 37 | { DMTE0_IRQ + 2, DMA_IPR_ADDR, DMA_IPR_POS, DMA_PRIORITY }, |
34 | #ifdef DMTE4_IRQ | 38 | { DMTE0_IRQ + 3, DMA_IPR_ADDR, DMA_IPR_POS, DMA_PRIORITY }, |
35 | irq = DMTE4_IRQ + chan - 4; | 39 | { DMTE4_IRQ + 0, DMA_IPR_ADDR, DMA_IPR_POS, DMA_PRIORITY }, |
36 | #endif | 40 | { DMTE4_IRQ + 1, DMA_IPR_ADDR, DMA_IPR_POS, DMA_PRIORITY }, |
37 | } | 41 | { DMTE4_IRQ + 2, DMA_IPR_ADDR, DMA_IPR_POS, DMA_PRIORITY }, |
42 | { DMTE4_IRQ + 3, DMA_IPR_ADDR, DMA_IPR_POS, DMA_PRIORITY }, | ||
43 | }; | ||
38 | 44 | ||
45 | static inline unsigned int get_dmte_irq(unsigned int chan) | ||
46 | { | ||
47 | unsigned int irq = 0; | ||
48 | if (chan < ARRAY_SIZE(dmte_ipr_map)) | ||
49 | irq = dmte_ipr_map[chan].irq; | ||
39 | return irq; | 50 | return irq; |
40 | } | 51 | } |
41 | 52 | ||
@@ -60,9 +71,9 @@ static inline unsigned int calc_xmit_shift(struct dma_channel *chan) | |||
60 | * Besides that it needs to waken any waiting process, which should handle | 71 | * Besides that it needs to waken any waiting process, which should handle |
61 | * setting up the next transfer. | 72 | * setting up the next transfer. |
62 | */ | 73 | */ |
63 | static irqreturn_t dma_tei(int irq, void *dev_id, struct pt_regs *regs) | 74 | static irqreturn_t dma_tei(int irq, void *dev_id) |
64 | { | 75 | { |
65 | struct dma_channel *chan = (struct dma_channel *)dev_id; | 76 | struct dma_channel *chan = dev_id; |
66 | u32 chcr; | 77 | u32 chcr; |
67 | 78 | ||
68 | chcr = ctrl_inl(CHCR[chan->chan]); | 79 | chcr = ctrl_inl(CHCR[chan->chan]); |
@@ -228,7 +239,7 @@ static inline int dmaor_reset(void) | |||
228 | } | 239 | } |
229 | 240 | ||
230 | #if defined(CONFIG_CPU_SH4) | 241 | #if defined(CONFIG_CPU_SH4) |
231 | static irqreturn_t dma_err(int irq, void *dev_id, struct pt_regs *regs) | 242 | static irqreturn_t dma_err(int irq, void *dummy) |
232 | { | 243 | { |
233 | dmaor_reset(); | 244 | dmaor_reset(); |
234 | disable_irq(irq); | 245 | disable_irq(irq); |
@@ -258,17 +269,16 @@ static int __init sh_dmac_init(void) | |||
258 | int i; | 269 | int i; |
259 | 270 | ||
260 | #ifdef CONFIG_CPU_SH4 | 271 | #ifdef CONFIG_CPU_SH4 |
261 | make_ipr_irq(DMAE_IRQ, DMA_IPR_ADDR, DMA_IPR_POS, DMA_PRIORITY); | 272 | make_ipr_irq(dmae_ipr_map, ARRAY_SIZE(dmae_ipr_map)); |
262 | i = request_irq(DMAE_IRQ, dma_err, IRQF_DISABLED, "DMAC Address Error", 0); | 273 | i = request_irq(DMAE_IRQ, dma_err, IRQF_DISABLED, "DMAC Address Error", 0); |
263 | if (unlikely(i < 0)) | 274 | if (unlikely(i < 0)) |
264 | return i; | 275 | return i; |
265 | #endif | 276 | #endif |
266 | 277 | ||
267 | for (i = 0; i < info->nr_channels; i++) { | 278 | i = info->nr_channels; |
268 | int irq = get_dmte_irq(i); | 279 | if (i > ARRAY_SIZE(dmte_ipr_map)) |
269 | 280 | i = ARRAY_SIZE(dmte_ipr_map); | |
270 | make_ipr_irq(irq, DMA_IPR_ADDR, DMA_IPR_POS, DMA_PRIORITY); | 281 | make_ipr_irq(dmte_ipr_map, i); |
271 | } | ||
272 | 282 | ||
273 | /* | 283 | /* |
274 | * Initialize DMAOR, and clean up any error flags that may have | 284 | * Initialize DMAOR, and clean up any error flags that may have |
diff --git a/arch/sh/drivers/pci/ops-r7780rp.c b/arch/sh/drivers/pci/ops-r7780rp.c index 6e3ba9c65b40..eeea1577e112 100644 --- a/arch/sh/drivers/pci/ops-r7780rp.c +++ b/arch/sh/drivers/pci/ops-r7780rp.c | |||
@@ -13,7 +13,7 @@ | |||
13 | #include <linux/init.h> | 13 | #include <linux/init.h> |
14 | #include <linux/delay.h> | 14 | #include <linux/delay.h> |
15 | #include <linux/pci.h> | 15 | #include <linux/pci.h> |
16 | #include <asm/r7780rp/r7780rp.h> | 16 | #include <asm/r7780rp.h> |
17 | #include <asm/io.h> | 17 | #include <asm/io.h> |
18 | #include "pci-sh4.h" | 18 | #include "pci-sh4.h" |
19 | 19 | ||
diff --git a/arch/sh/drivers/pci/ops-rts7751r2d.c b/arch/sh/drivers/pci/ops-rts7751r2d.c index b68824c8b81e..4a518d948049 100644 --- a/arch/sh/drivers/pci/ops-rts7751r2d.c +++ b/arch/sh/drivers/pci/ops-rts7751r2d.c | |||
@@ -10,28 +10,24 @@ | |||
10 | * | 10 | * |
11 | * PCI initialization for the Renesas SH7751R RTS7751R2D board | 11 | * PCI initialization for the Renesas SH7751R RTS7751R2D board |
12 | */ | 12 | */ |
13 | |||
14 | #include <linux/kernel.h> | 13 | #include <linux/kernel.h> |
15 | #include <linux/types.h> | 14 | #include <linux/types.h> |
16 | #include <linux/init.h> | 15 | #include <linux/init.h> |
17 | #include <linux/delay.h> | ||
18 | #include <linux/pci.h> | 16 | #include <linux/pci.h> |
19 | #include <linux/module.h> | 17 | #include <linux/io.h> |
20 | #include <asm/rts7751r2d/rts7751r2d.h> | 18 | #include <asm/rts7751r2d.h> |
21 | #include <asm/io.h> | ||
22 | #include "pci-sh4.h" | 19 | #include "pci-sh4.h" |
23 | 20 | ||
21 | static u8 rts7751r2d_irq_tab[] __initdata = { | ||
22 | IRQ_PCISLOT1, | ||
23 | IRQ_PCISLOT2, | ||
24 | IRQ_PCMCIA, | ||
25 | IRQ_PCIETH, | ||
26 | }; | ||
27 | |||
24 | int __init pcibios_map_platform_irq(struct pci_dev *pdev, u8 slot, u8 pin) | 28 | int __init pcibios_map_platform_irq(struct pci_dev *pdev, u8 slot, u8 pin) |
25 | { | 29 | { |
26 | switch (slot) { | 30 | return rts7751r2d_irq_tab[slot]; |
27 | case 0: return IRQ_PCISLOT1; /* PCI Extend slot #1 */ | ||
28 | case 1: return IRQ_PCISLOT2; /* PCI Extend slot #2 */ | ||
29 | case 2: return IRQ_PCMCIA; /* PCI Cardbus Bridge */ | ||
30 | case 3: return IRQ_PCIETH; /* Realtek Ethernet controller */ | ||
31 | default: | ||
32 | printk("PCI: Bad IRQ mapping request for slot %d\n", slot); | ||
33 | return -1; | ||
34 | } | ||
35 | } | 31 | } |
36 | 32 | ||
37 | static struct resource sh7751_io_resource = { | 33 | static struct resource sh7751_io_resource = { |
diff --git a/arch/sh/drivers/pci/pci-sh7751.c b/arch/sh/drivers/pci/pci-sh7751.c index dbe837884983..85e1ee2e2e7b 100644 --- a/arch/sh/drivers/pci/pci-sh7751.c +++ b/arch/sh/drivers/pci/pci-sh7751.c | |||
@@ -155,7 +155,7 @@ int __init sh7751_pcic_init(struct sh4_pci_address_map *map) | |||
155 | */ | 155 | */ |
156 | pr_debug("PCI: Mapping IO address 0x%x - 0x%x to base 0x%x\n", | 156 | pr_debug("PCI: Mapping IO address 0x%x - 0x%x to base 0x%x\n", |
157 | PCIBIOS_MIN_IO, (64 << 10), | 157 | PCIBIOS_MIN_IO, (64 << 10), |
158 | SH4_PCI_IO_BASE + PCIBIOS_MIN_IO); | 158 | SH7751_PCI_IO_BASE + PCIBIOS_MIN_IO); |
159 | 159 | ||
160 | /* | 160 | /* |
161 | * XXX: For now, leave this board-specific. In the event we have other | 161 | * XXX: For now, leave this board-specific. In the event we have other |
@@ -163,7 +163,7 @@ int __init sh7751_pcic_init(struct sh4_pci_address_map *map) | |||
163 | */ | 163 | */ |
164 | #ifdef CONFIG_SH_BIGSUR | 164 | #ifdef CONFIG_SH_BIGSUR |
165 | bigsur_port_map(PCIBIOS_MIN_IO, (64 << 10), | 165 | bigsur_port_map(PCIBIOS_MIN_IO, (64 << 10), |
166 | SH4_PCI_IO_BASE + PCIBIOS_MIN_IO, 0); | 166 | SH7751_PCI_IO_BASE + PCIBIOS_MIN_IO, 0); |
167 | #endif | 167 | #endif |
168 | 168 | ||
169 | /* Make sure the MSB's of IO window are set to access PCI space | 169 | /* Make sure the MSB's of IO window are set to access PCI space |
diff --git a/arch/sh/drivers/pci/pci-st40.c b/arch/sh/drivers/pci/pci-st40.c index 4ab5ea6b35fb..efecb3d5995c 100644 --- a/arch/sh/drivers/pci/pci-st40.c +++ b/arch/sh/drivers/pci/pci-st40.c | |||
@@ -161,7 +161,7 @@ static char * pci_commands[16]={ | |||
161 | "Memory Write-and-Invalidate" | 161 | "Memory Write-and-Invalidate" |
162 | }; | 162 | }; |
163 | 163 | ||
164 | static irqreturn_t st40_pci_irq(int irq, void *dev_instance, struct pt_regs *regs) | 164 | static irqreturn_t st40_pci_irq(int irq, void *dev_instance) |
165 | { | 165 | { |
166 | unsigned pci_int, pci_air, pci_cir, pci_aint; | 166 | unsigned pci_int, pci_air, pci_cir, pci_aint; |
167 | static int count=0; | 167 | static int count=0; |