From: Liam Girdwood liam.r.girdwood@linux.intel.com
Let clients know if they can expect a callback from DMA.
Signed-off-by: Liam Girdwood liam.r.girdwood@linux.intel.com Signed-off-by: Keyon Jie yang.jie@linux.intel.com --- src/drivers/dw-dma.c | 4 +++- src/include/reef/dma.h | 6 +++--- 2 files changed, 6 insertions(+), 4 deletions(-)
diff --git a/src/drivers/dw-dma.c b/src/drivers/dw-dma.c index cbfed0e..c566509 100644 --- a/src/drivers/dw-dma.c +++ b/src/drivers/dw-dma.c @@ -729,7 +729,7 @@ static int dw_dma_pm_context_store(struct dma *dma) return 0; }
-static void dw_dma_set_cb(struct dma *dma, int channel, int type, +static int dw_dma_set_cb(struct dma *dma, int channel, int type, void (*cb)(void *data, uint32_t type, struct dma_sg_elem *next), void *data) { @@ -741,6 +741,8 @@ static void dw_dma_set_cb(struct dma *dma, int channel, int type, p->chan[channel].cb_data = data; p->chan[channel].cb_type = type; spin_unlock_irq(&dma->lock, flags); + + return 0; }
/* reload using LLI data */ diff --git a/src/include/reef/dma.h b/src/include/reef/dma.h index aab9217..71bce56 100644 --- a/src/include/reef/dma.h +++ b/src/include/reef/dma.h @@ -103,7 +103,7 @@ struct dma_ops { int (*set_config)(struct dma *dma, int channel, struct dma_sg_config *config);
- void (*set_cb)(struct dma *dma, int channel, int type, + int (*set_cb)(struct dma *dma, int channel, int type, void (*cb)(void *data, uint32_t type, struct dma_sg_elem *next), void *data);
@@ -173,10 +173,10 @@ static inline void dma_channel_put(struct dma *dma, int channel) dma->ops->channel_put(dma, channel); }
-static inline void dma_set_cb(struct dma *dma, int channel, int type, +static inline int dma_set_cb(struct dma *dma, int channel, int type, void (*cb)(void *data, uint32_t type, struct dma_sg_elem *next), void *data) { - dma->ops->set_cb(dma, channel, type, cb, data); + return dma->ops->set_cb(dma, channel, type, cb, data); }
static inline int dma_start(struct dma *dma, int channel)