diff options
author | Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com> | 2009-09-06 23:26:23 -0400 |
---|---|---|
committer | Dan Williams <dan.j.williams@intel.com> | 2009-09-08 20:56:02 -0400 |
commit | d8902adcc1a9fd484c8cb5e575152e32192c1ff8 (patch) | |
tree | 305109ce60db5ea9710dddce9db8a23f65ff4572 /arch | |
parent | 9134d02bc0af4a8747d448d1f811ec5f8eb96df6 (diff) |
dmaengine: sh: Add Support SuperH DMA Engine driver
This supported all DMA channels, and it was tested in SH7722,
SH7780, SH7785 and SH7763.
This can not use with SH DMA API.
Signed-off-by: Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>
Reviewed-by: Matt Fleming <matt@console-pimps.org>
Acked-by: Maciej Sosnowski <maciej.sosnowski@intel.com>
Acked-by: Paul Mundt <lethal@linux-sh.org>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/sh/drivers/dma/Kconfig | 12 | ||||
-rw-r--r-- | arch/sh/drivers/dma/Makefile | 3 | ||||
-rw-r--r-- | arch/sh/include/asm/dma-sh.h | 13 |
3 files changed, 23 insertions, 5 deletions
diff --git a/arch/sh/drivers/dma/Kconfig b/arch/sh/drivers/dma/Kconfig index 63e9dd30b41c..f935a7e5cbe5 100644 --- a/arch/sh/drivers/dma/Kconfig +++ b/arch/sh/drivers/dma/Kconfig | |||
@@ -1,12 +1,9 @@ | |||
1 | menu "DMA support" | 1 | menu "DMA support" |
2 | 2 | ||
3 | config SH_DMA_API | ||
4 | bool | ||
5 | 3 | ||
6 | config SH_DMA | 4 | config SH_DMA |
7 | bool "SuperH on-chip DMA controller (DMAC) support" | 5 | bool "SuperH on-chip DMA controller (DMAC) support" |
8 | depends on CPU_SH3 || CPU_SH4 | 6 | depends on CPU_SH3 || CPU_SH4 |
9 | select SH_DMA_API | ||
10 | default n | 7 | default n |
11 | 8 | ||
12 | config SH_DMA_IRQ_MULTI | 9 | config SH_DMA_IRQ_MULTI |
@@ -19,6 +16,15 @@ config SH_DMA_IRQ_MULTI | |||
19 | CPU_SUBTYPE_SH7780 || CPU_SUBTYPE_SH7785 || \ | 16 | CPU_SUBTYPE_SH7780 || CPU_SUBTYPE_SH7785 || \ |
20 | CPU_SUBTYPE_SH7760 | 17 | CPU_SUBTYPE_SH7760 |
21 | 18 | ||
19 | config SH_DMA_API | ||
20 | depends on SH_DMA | ||
21 | bool "SuperH DMA API support" | ||
22 | default n | ||
23 | help | ||
24 | SH_DMA_API always enabled DMA API of used SuperH. | ||
25 | If you want to use DMA ENGINE, you must not enable this. | ||
26 | Please enable DMA_ENGINE and SH_DMAE. | ||
27 | |||
22 | config NR_ONCHIP_DMA_CHANNELS | 28 | config NR_ONCHIP_DMA_CHANNELS |
23 | int | 29 | int |
24 | depends on SH_DMA | 30 | depends on SH_DMA |
diff --git a/arch/sh/drivers/dma/Makefile b/arch/sh/drivers/dma/Makefile index c6068137b46f..d88c9484762c 100644 --- a/arch/sh/drivers/dma/Makefile +++ b/arch/sh/drivers/dma/Makefile | |||
@@ -2,8 +2,7 @@ | |||
2 | # Makefile for the SuperH DMA specific kernel interface routines under Linux. | 2 | # Makefile for the SuperH DMA specific kernel interface routines under Linux. |
3 | # | 3 | # |
4 | 4 | ||
5 | obj-$(CONFIG_SH_DMA_API) += dma-api.o dma-sysfs.o | 5 | obj-$(CONFIG_SH_DMA_API) += dma-sh.o dma-api.o dma-sysfs.o |
6 | obj-$(CONFIG_SH_DMA) += dma-sh.o | ||
7 | obj-$(CONFIG_PVR2_DMA) += dma-pvr2.o | 6 | obj-$(CONFIG_PVR2_DMA) += dma-pvr2.o |
8 | obj-$(CONFIG_G2_DMA) += dma-g2.o | 7 | obj-$(CONFIG_G2_DMA) += dma-g2.o |
9 | obj-$(CONFIG_SH_DMABRG) += dmabrg.o | 8 | obj-$(CONFIG_SH_DMABRG) += dmabrg.o |
diff --git a/arch/sh/include/asm/dma-sh.h b/arch/sh/include/asm/dma-sh.h index 0c8f8e14622a..89bdac558dbc 100644 --- a/arch/sh/include/asm/dma-sh.h +++ b/arch/sh/include/asm/dma-sh.h | |||
@@ -115,4 +115,17 @@ static u32 dma_base_addr[] __maybe_unused = { | |||
115 | #define CHCR 0x0C | 115 | #define CHCR 0x0C |
116 | #define DMAOR 0x40 | 116 | #define DMAOR 0x40 |
117 | 117 | ||
118 | /* | ||
119 | * for dma engine | ||
120 | * | ||
121 | * SuperH DMA mode | ||
122 | */ | ||
123 | #define SHDMA_MIX_IRQ (1 << 1) | ||
124 | #define SHDMA_DMAOR1 (1 << 2) | ||
125 | #define SHDMA_DMAE1 (1 << 3) | ||
126 | |||
127 | struct sh_dmae_pdata { | ||
128 | unsigned int mode; | ||
129 | }; | ||
130 | |||
118 | #endif /* __DMA_SH_H */ | 131 | #endif /* __DMA_SH_H */ |