diff options
Diffstat (limited to 'arch/mips/au1000')
-rw-r--r-- | arch/mips/au1000/common/dbdma.c | 20 | ||||
-rw-r--r-- | arch/mips/au1000/db1x00/irqmap.c | 32 | ||||
-rw-r--r-- | arch/mips/au1000/mtx-1/irqmap.c | 11 | ||||
-rw-r--r-- | arch/mips/au1000/pb1500/irqmap.c | 5 | ||||
-rw-r--r-- | arch/mips/au1000/pb1550/irqmap.c | 5 |
5 files changed, 63 insertions, 10 deletions
diff --git a/arch/mips/au1000/common/dbdma.c b/arch/mips/au1000/common/dbdma.c index cf10dc246f82..8f78c2fe7cf5 100644 --- a/arch/mips/au1000/common/dbdma.c +++ b/arch/mips/au1000/common/dbdma.c | |||
@@ -39,11 +39,11 @@ | |||
39 | #include <linux/string.h> | 39 | #include <linux/string.h> |
40 | #include <linux/delay.h> | 40 | #include <linux/delay.h> |
41 | #include <linux/interrupt.h> | 41 | #include <linux/interrupt.h> |
42 | #include <linux/module.h> | ||
42 | #include <asm/mach-au1x00/au1000.h> | 43 | #include <asm/mach-au1x00/au1000.h> |
43 | #include <asm/mach-au1x00/au1xxx_dbdma.h> | 44 | #include <asm/mach-au1x00/au1xxx_dbdma.h> |
44 | #include <asm/system.h> | 45 | #include <asm/system.h> |
45 | 46 | ||
46 | /* #include <linux/module.h> */ | ||
47 | 47 | ||
48 | #if defined(CONFIG_SOC_AU1550) || defined(CONFIG_SOC_AU1200) | 48 | #if defined(CONFIG_SOC_AU1550) || defined(CONFIG_SOC_AU1200) |
49 | 49 | ||
@@ -596,10 +596,10 @@ _au1xxx_dbdma_put_source(u32 chanid, void *buf, int nbytes, u32 flags) | |||
596 | * these parts. If it is fixedin the future, these dma_cache_inv will | 596 | * these parts. If it is fixedin the future, these dma_cache_inv will |
597 | * just be nothing more than empty macros. See io.h. | 597 | * just be nothing more than empty macros. See io.h. |
598 | * */ | 598 | * */ |
599 | dma_cache_wback_inv(buf,nbytes); | 599 | dma_cache_wback_inv((unsigned long)buf, nbytes); |
600 | dp->dscr_cmd0 |= DSCR_CMD0_V; /* Let it rip */ | 600 | dp->dscr_cmd0 |= DSCR_CMD0_V; /* Let it rip */ |
601 | au_sync(); | 601 | au_sync(); |
602 | dma_cache_wback_inv(dp, sizeof(dp)); | 602 | dma_cache_wback_inv((unsigned long)dp, sizeof(dp)); |
603 | ctp->chan_ptr->ddma_dbell = 0; | 603 | ctp->chan_ptr->ddma_dbell = 0; |
604 | 604 | ||
605 | /* return something not zero. | 605 | /* return something not zero. |
@@ -657,10 +657,10 @@ _au1xxx_dbdma_put_dest(u32 chanid, void *buf, int nbytes, u32 flags) | |||
657 | * parts. If it is fixedin the future, these dma_cache_inv will just | 657 | * parts. If it is fixedin the future, these dma_cache_inv will just |
658 | * be nothing more than empty macros. See io.h. | 658 | * be nothing more than empty macros. See io.h. |
659 | * */ | 659 | * */ |
660 | dma_cache_inv(buf,nbytes); | 660 | dma_cache_inv((unsigned long)buf,nbytes); |
661 | dp->dscr_cmd0 |= DSCR_CMD0_V; /* Let it rip */ | 661 | dp->dscr_cmd0 |= DSCR_CMD0_V; /* Let it rip */ |
662 | au_sync(); | 662 | au_sync(); |
663 | dma_cache_wback_inv(dp, sizeof(dp)); | 663 | dma_cache_wback_inv((unsigned long)dp, sizeof(dp)); |
664 | ctp->chan_ptr->ddma_dbell = 0; | 664 | ctp->chan_ptr->ddma_dbell = 0; |
665 | 665 | ||
666 | /* Get next descriptor pointer. | 666 | /* Get next descriptor pointer. |
@@ -820,8 +820,7 @@ au1xxx_dbdma_chan_free(u32 chanid) | |||
820 | 820 | ||
821 | au1xxx_dbdma_stop(chanid); | 821 | au1xxx_dbdma_stop(chanid); |
822 | 822 | ||
823 | if (ctp->chan_desc_base != NULL) | 823 | kfree((void *)ctp->chan_desc_base); |
824 | kfree(ctp->chan_desc_base); | ||
825 | 824 | ||
826 | stp->dev_flags &= ~DEV_FLAGS_INUSE; | 825 | stp->dev_flags &= ~DEV_FLAGS_INUSE; |
827 | dtp->dev_flags &= ~DEV_FLAGS_INUSE; | 826 | dtp->dev_flags &= ~DEV_FLAGS_INUSE; |
@@ -831,11 +830,11 @@ au1xxx_dbdma_chan_free(u32 chanid) | |||
831 | } | 830 | } |
832 | EXPORT_SYMBOL(au1xxx_dbdma_chan_free); | 831 | EXPORT_SYMBOL(au1xxx_dbdma_chan_free); |
833 | 832 | ||
834 | static void | 833 | static irqreturn_t |
835 | dbdma_interrupt(int irq, void *dev_id, struct pt_regs *regs) | 834 | dbdma_interrupt(int irq, void *dev_id, struct pt_regs *regs) |
836 | { | 835 | { |
837 | u32 intstat, flags; | 836 | u32 intstat; |
838 | u32 chan_index; | 837 | u32 chan_index; |
839 | chan_tab_t *ctp; | 838 | chan_tab_t *ctp; |
840 | au1x_ddma_desc_t *dp; | 839 | au1x_ddma_desc_t *dp; |
841 | au1x_dma_chan_t *cp; | 840 | au1x_dma_chan_t *cp; |
@@ -857,6 +856,7 @@ dbdma_interrupt(int irq, void *dev_id, struct pt_regs *regs) | |||
857 | (ctp->chan_callback)(irq, ctp->chan_callparam, regs); | 856 | (ctp->chan_callback)(irq, ctp->chan_callparam, regs); |
858 | 857 | ||
859 | ctp->cur_ptr = phys_to_virt(DSCR_GET_NXTPTR(dp->dscr_nxtptr)); | 858 | ctp->cur_ptr = phys_to_virt(DSCR_GET_NXTPTR(dp->dscr_nxtptr)); |
859 | return IRQ_RETVAL(1); | ||
860 | } | 860 | } |
861 | 861 | ||
862 | static void au1xxx_dbdma_init(void) | 862 | static void au1xxx_dbdma_init(void) |
diff --git a/arch/mips/au1000/db1x00/irqmap.c b/arch/mips/au1000/db1x00/irqmap.c index 8f6ef0dbe1f8..f63024a9893a 100644 --- a/arch/mips/au1000/db1x00/irqmap.c +++ b/arch/mips/au1000/db1x00/irqmap.c | |||
@@ -48,6 +48,38 @@ | |||
48 | #include <asm/system.h> | 48 | #include <asm/system.h> |
49 | #include <asm/mach-au1x00/au1000.h> | 49 | #include <asm/mach-au1x00/au1000.h> |
50 | 50 | ||
51 | #ifdef CONFIG_MIPS_DB1500 | ||
52 | char irq_tab_alchemy[][5] __initdata = { | ||
53 | [12] = { -1, INTA, INTX, INTX, INTX}, /* IDSEL 12 - HPT371 */ | ||
54 | [13] = { -1, INTA, INTB, INTC, INTD}, /* IDSEL 13 - PCI slot */ | ||
55 | }; | ||
56 | #endif | ||
57 | |||
58 | #ifdef CONFIG_MIPS_BOSPORUS | ||
59 | char irq_tab_alchemy[][5] __initdata = { | ||
60 | [11] = { -1, INTA, INTB, INTX, INTX}, /* IDSEL 11 - miniPCI */ | ||
61 | [12] = { -1, INTA, INTX, INTX, INTX}, /* IDSEL 12 - SN1741 */ | ||
62 | [13] = { -1, INTA, INTB, INTC, INTD}, /* IDSEL 13 - PCI slot */ | ||
63 | }; | ||
64 | #endif | ||
65 | |||
66 | #ifdef CONFIG_MIPS_MIRAGE | ||
67 | char irq_tab_alchemy[][5] __initdata = { | ||
68 | [11] = { -1, INTD, INTX, INTX, INTX}, /* IDSEL 11 - SMI VGX */ | ||
69 | [12] = { -1, INTX, INTX, INTC, INTX}, /* IDSEL 12 - PNX1300 */ | ||
70 | [13] = { -1, INTA, INTB, INTX, INTX}, /* IDSEL 13 - miniPCI */ | ||
71 | }; | ||
72 | #endif | ||
73 | |||
74 | #ifdef CONFIG_MIPS_DB1550 | ||
75 | char irq_tab_alchemy[][5] __initdata = { | ||
76 | [11] = { -1, INTC, INTX, INTX, INTX}, /* IDSEL 11 - on-board HPT371 */ | ||
77 | [12] = { -1, INTB, INTC, INTD, INTA}, /* IDSEL 12 - PCI slot 2 (left) */ | ||
78 | [13] = { -1, INTA, INTB, INTC, INTD}, /* IDSEL 13 - PCI slot 1 (right) */ | ||
79 | }; | ||
80 | #endif | ||
81 | |||
82 | |||
51 | au1xxx_irq_map_t au1xxx_irq_map[] = { | 83 | au1xxx_irq_map_t au1xxx_irq_map[] = { |
52 | 84 | ||
53 | #ifndef CONFIG_MIPS_MIRAGE | 85 | #ifndef CONFIG_MIPS_MIRAGE |
diff --git a/arch/mips/au1000/mtx-1/irqmap.c b/arch/mips/au1000/mtx-1/irqmap.c index ddcb9d089dc1..f9a0a8b9def2 100644 --- a/arch/mips/au1000/mtx-1/irqmap.c +++ b/arch/mips/au1000/mtx-1/irqmap.c | |||
@@ -47,6 +47,17 @@ | |||
47 | #include <asm/system.h> | 47 | #include <asm/system.h> |
48 | #include <asm/mach-au1x00/au1000.h> | 48 | #include <asm/mach-au1x00/au1000.h> |
49 | 49 | ||
50 | char irq_tab_alchemy[][5] __initdata = { | ||
51 | [0] = { -1, INTA, INTB, INTX, INTX}, /* IDSEL 00 - AdapterA-Slot0 (top) */ | ||
52 | [1] = { -1, INTB, INTA, INTX, INTX}, /* IDSEL 01 - AdapterA-Slot1 (bottom) */ | ||
53 | [2] = { -1, INTC, INTD, INTX, INTX}, /* IDSEL 02 - AdapterB-Slot0 (top) */ | ||
54 | [3] = { -1, INTD, INTC, INTX, INTX}, /* IDSEL 03 - AdapterB-Slot1 (bottom) */ | ||
55 | [4] = { -1, INTA, INTB, INTX, INTX}, /* IDSEL 04 - AdapterC-Slot0 (top) */ | ||
56 | [5] = { -1, INTB, INTA, INTX, INTX}, /* IDSEL 05 - AdapterC-Slot1 (bottom) */ | ||
57 | [6] = { -1, INTC, INTD, INTX, INTX}, /* IDSEL 06 - AdapterD-Slot0 (top) */ | ||
58 | [7] = { -1, INTD, INTC, INTX, INTX}, /* IDSEL 07 - AdapterD-Slot1 (bottom) */ | ||
59 | }; | ||
60 | |||
50 | au1xxx_irq_map_t au1xxx_irq_map[] = { | 61 | au1xxx_irq_map_t au1xxx_irq_map[] = { |
51 | { AU1500_GPIO_204, INTC_INT_HIGH_LEVEL, 0}, | 62 | { AU1500_GPIO_204, INTC_INT_HIGH_LEVEL, 0}, |
52 | { AU1500_GPIO_201, INTC_INT_LOW_LEVEL, 0 }, | 63 | { AU1500_GPIO_201, INTC_INT_LOW_LEVEL, 0 }, |
diff --git a/arch/mips/au1000/pb1500/irqmap.c b/arch/mips/au1000/pb1500/irqmap.c index 476e25001681..8cb76c2edb5e 100644 --- a/arch/mips/au1000/pb1500/irqmap.c +++ b/arch/mips/au1000/pb1500/irqmap.c | |||
@@ -47,6 +47,11 @@ | |||
47 | #include <asm/system.h> | 47 | #include <asm/system.h> |
48 | #include <asm/mach-au1x00/au1000.h> | 48 | #include <asm/mach-au1x00/au1000.h> |
49 | 49 | ||
50 | char irq_tab_alchemy[][5] __initdata = { | ||
51 | [12] = { -1, INTA, INTX, INTX, INTX}, /* IDSEL 12 - HPT370 */ | ||
52 | [13] = { -1, INTA, INTB, INTC, INTD}, /* IDSEL 13 - PCI slot */ | ||
53 | }; | ||
54 | |||
50 | au1xxx_irq_map_t au1xxx_irq_map[] = { | 55 | au1xxx_irq_map_t au1xxx_irq_map[] = { |
51 | { AU1500_GPIO_204, INTC_INT_HIGH_LEVEL, 0}, | 56 | { AU1500_GPIO_204, INTC_INT_HIGH_LEVEL, 0}, |
52 | { AU1500_GPIO_201, INTC_INT_LOW_LEVEL, 0 }, | 57 | { AU1500_GPIO_201, INTC_INT_LOW_LEVEL, 0 }, |
diff --git a/arch/mips/au1000/pb1550/irqmap.c b/arch/mips/au1000/pb1550/irqmap.c index 889d4949ee76..47c7a1c19f4b 100644 --- a/arch/mips/au1000/pb1550/irqmap.c +++ b/arch/mips/au1000/pb1550/irqmap.c | |||
@@ -47,6 +47,11 @@ | |||
47 | #include <asm/system.h> | 47 | #include <asm/system.h> |
48 | #include <asm/mach-au1x00/au1000.h> | 48 | #include <asm/mach-au1x00/au1000.h> |
49 | 49 | ||
50 | char irq_tab_alchemy[][5] __initdata = { | ||
51 | [12] = { -1, INTB, INTC, INTD, INTA}, /* IDSEL 12 - PCI slot 2 (left) */ | ||
52 | [13] = { -1, INTA, INTB, INTC, INTD}, /* IDSEL 13 - PCI slot 1 (right) */ | ||
53 | }; | ||
54 | |||
50 | au1xxx_irq_map_t au1xxx_irq_map[] = { | 55 | au1xxx_irq_map_t au1xxx_irq_map[] = { |
51 | { AU1000_GPIO_0, INTC_INT_LOW_LEVEL, 0 }, | 56 | { AU1000_GPIO_0, INTC_INT_LOW_LEVEL, 0 }, |
52 | { AU1000_GPIO_1, INTC_INT_LOW_LEVEL, 0 }, | 57 | { AU1000_GPIO_1, INTC_INT_LOW_LEVEL, 0 }, |