diff options
author | Ben Dooks <ben-linux@fluff.org> | 2009-09-22 11:48:56 -0400 |
---|---|---|
committer | Ben Dooks <ben-linux@fluff.org> | 2009-10-28 14:22:57 -0400 |
commit | e3d8024891dbfec6cf36c9b76177650f48118462 (patch) | |
tree | 2046fa2ec4259e32b02ef29107fa6ace142e8f8f /arch | |
parent | 964fe080d94db82a3268443e9b9ece4c60246414 (diff) |
ARM: S3C: Add info for supporting circular DMA buffers
The S3C64XX DMA implementation will work a lot better with the ability
to enqueue circular buffers as the hardware can do it's own linked-list
management.
Add a function s3c_dma_has_circular() to show that the system can do this
and a flag for the channel.
Update the s3c24xx/s3c64xx I2S DMA code to deal with this.
Signed-off-by: Ben Dooks <ben@simtec.co.uk>
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
Acked-by: Mark Brown <broonie@@opensource.wolfsonmicro.com>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/mach-s3c2410/include/mach/dma.h | 7 | ||||
-rw-r--r-- | arch/arm/mach-s3c6400/include/mach/dma.h | 5 |
2 files changed, 12 insertions, 0 deletions
diff --git a/arch/arm/mach-s3c2410/include/mach/dma.h b/arch/arm/mach-s3c2410/include/mach/dma.h index c3a2629e0ded..92e2687009ea 100644 --- a/arch/arm/mach-s3c2410/include/mach/dma.h +++ b/arch/arm/mach-s3c2410/include/mach/dma.h | |||
@@ -110,6 +110,8 @@ enum s3c2410_dma_loadst { | |||
110 | * waiting for reloads */ | 110 | * waiting for reloads */ |
111 | #define S3C2410_DMAF_AUTOSTART (1<<1) /* auto-start if buffer queued */ | 111 | #define S3C2410_DMAF_AUTOSTART (1<<1) /* auto-start if buffer queued */ |
112 | 112 | ||
113 | #define S3C2410_DMAF_CIRCULAR (1 << 2) /* no circular dma support */ | ||
114 | |||
113 | /* dma buffer */ | 115 | /* dma buffer */ |
114 | 116 | ||
115 | struct s3c2410_dma_buf; | 117 | struct s3c2410_dma_buf; |
@@ -194,4 +196,9 @@ struct s3c2410_dma_chan { | |||
194 | 196 | ||
195 | typedef unsigned long dma_device_t; | 197 | typedef unsigned long dma_device_t; |
196 | 198 | ||
199 | static inline bool s3c_dma_has_circular(void) | ||
200 | { | ||
201 | return false; | ||
202 | } | ||
203 | |||
197 | #endif /* __ASM_ARCH_DMA_H */ | 204 | #endif /* __ASM_ARCH_DMA_H */ |
diff --git a/arch/arm/mach-s3c6400/include/mach/dma.h b/arch/arm/mach-s3c6400/include/mach/dma.h index 1067619f0ba0..004edab23954 100644 --- a/arch/arm/mach-s3c6400/include/mach/dma.h +++ b/arch/arm/mach-s3c6400/include/mach/dma.h | |||
@@ -68,6 +68,11 @@ static __inline__ int s3c_dma_has_circular(void) | |||
68 | 68 | ||
69 | #define S3C2410_DMAF_CIRCULAR (1 << 0) | 69 | #define S3C2410_DMAF_CIRCULAR (1 << 0) |
70 | 70 | ||
71 | static inline bool s3c_dma_has_circular(void) | ||
72 | { | ||
73 | return false; | ||
74 | } | ||
75 | |||
71 | #include <plat/dma.h> | 76 | #include <plat/dma.h> |
72 | 77 | ||
73 | #endif /* __ASM_ARCH_IRQ_H */ | 78 | #endif /* __ASM_ARCH_IRQ_H */ |