summaryrefslogtreecommitdiff
path: root/arch/arm/plat-mxs/include
diff options
context:
space:
mode:
authorLionel Xu <Lionel.Xu@freescale.com>2010-03-02 20:59:58 +0800
committerAlejandro Gonzalez <alex.gonzalez@digi.com>2010-05-25 11:17:16 +0200
commit841484ff48bb675dd8c360dc9346078e3ed4deff (patch)
tree6dff91231753b8be1baa7c46c5166ac521d8689d /arch/arm/plat-mxs/include
parent84e3b517995f1dfbbe94a801d3313a34186fbcd4 (diff)
ENGR00121221 MX28 DMA: Support circular dma chain used on audio playback
Support circular DMA which will be used on audio playback/record. Signed-off-by: Lionel Xu <r63889@freescale.com> (cherry picked from commit 68e74123a031794578464b8a16d4f704fc8e7960) Signed-off-by: Alejandro Gonzalez <alex.gonzalez@digi.com>
Diffstat (limited to 'arch/arm/plat-mxs/include')
-rw-r--r--arch/arm/plat-mxs/include/mach/dmaengine.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/arch/arm/plat-mxs/include/mach/dmaengine.h b/arch/arm/plat-mxs/include/mach/dmaengine.h
index 1071f4e6f674..4bbbcb4b8c85 100644
--- a/arch/arm/plat-mxs/include/mach/dmaengine.h
+++ b/arch/arm/plat-mxs/include/mach/dmaengine.h
@@ -93,11 +93,20 @@ struct mxs_dma_desc {
struct mxs_dma_cmd cmd;
unsigned int flags;
#define MXS_DMA_DESC_READY 0x80000000
+#define MXS_DMA_DESC_FIRST 0x00000001
+#define MXS_DMA_DESC_LAST 0x00000002
dma_addr_t address;
void *buffer;
struct list_head node;
};
+struct mxs_dma_info {
+ unsigned int status;
+#define MXS_DMA_INFO_ERR 0x00000001
+#define MXS_DMA_INFO_ERR_STAT 0x00010000
+ unsigned int buf_addr;
+};
+
/**
* struct mxs_dma_chan - MXS DMA channel
*
@@ -176,6 +185,8 @@ struct mxs_dma_device {
void (*unfreeze) (struct mxs_dma_device *, unsigned int);
int (*read_semaphore) (struct mxs_dma_device *, unsigned int);
void (*add_semaphore) (struct mxs_dma_device *, unsigned int, unsigned);
+ void (*info)(struct mxs_dma_device *,
+ unsigned int, struct mxs_dma_info *info);
void (*enable_irq) (struct mxs_dma_device *, unsigned int, int);
int (*irq_is_pending) (struct mxs_dma_device *, unsigned int);
void (*ack_irq) (struct mxs_dma_device *, unsigned int);
@@ -286,8 +297,12 @@ extern void mxs_dma_freeze(int channel);
* @channel: The channel number. This is one of the globally unique DMA channel
* numbers given in mach/dma.h.
*/
+
extern void mxs_dma_unfreeze(int channel);
+/* get dma channel information */
+extern int mxs_dma_get_info(int channel, struct mxs_dma_info *info);
+
/**
* mxs_dma_cooked - Clean up processed DMA descriptors.
*