diff options
author | Lionel Xu <Lionel.Xu@freescale.com> | 2010-03-02 20:59:58 +0800 |
---|---|---|
committer | Alejandro Gonzalez <alex.gonzalez@digi.com> | 2010-05-25 11:17:16 +0200 |
commit | 841484ff48bb675dd8c360dc9346078e3ed4deff (patch) | |
tree | 6dff91231753b8be1baa7c46c5166ac521d8689d /arch/arm/plat-mxs/include | |
parent | 84e3b517995f1dfbbe94a801d3313a34186fbcd4 (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.h | 15 |
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. * |