return -EBUSY;
}
- init_completion(complete);
-
return 0;
}
int ret;
/* Check input task first */
- ret = fsl_asrc_process_buffer_pre(&m2m->complete[IN], index, OUT);
+ ret = fsl_asrc_process_buffer_pre(&m2m->complete[IN], index, IN);
if (ret) {
mxc_asrc_dma_umap(m2m);
return ret;
}
/* ...then output task*/
- ret = fsl_asrc_process_buffer_pre(&m2m->complete[OUT], index, IN);
+ ret = fsl_asrc_process_buffer_pre(&m2m->complete[OUT], index, OUT);
if (ret) {
mxc_asrc_dma_umap(m2m);
return ret;
static long fsl_asrc_ioctl_convert(struct fsl_asrc_pair *pair,
void __user *user)
{
+ struct fsl_asrc_m2m *m2m = pair->private;
struct fsl_asrc *asrc_priv = pair->asrc_priv;
enum asrc_pair_index index = pair->index;
struct asrc_convert_buffer buf;
return ret;
}
+ init_completion(&m2m->complete[IN]);
+ init_completion(&m2m->complete[OUT]);
+
#ifdef ASRC_POLLING_WITHOUT_DMA
fsl_asrc_polling_debug(pair);
#else
static long fsl_asrc_ioctl_flush(struct fsl_asrc_pair *pair, void __user *user)
{
- struct fsl_asrc_m2m *m2m = pair->private;
struct fsl_asrc *asrc_priv = pair->asrc_priv;
enum asrc_pair_index index = pair->index;
- init_completion(&m2m->complete[IN]);
- init_completion(&m2m->complete[OUT]);
-
/* Release DMA and request again */
dma_release_channel(pair->dma_chan[IN]);
dma_release_channel(pair->dma_chan[OUT]);
pair->private = m2m;
pair->asrc_priv = asrc_priv;
- init_completion(&m2m->complete[IN]);
- init_completion(&m2m->complete[OUT]);
-
spin_lock_init(&m2m->lock);
file->private_data = pair;
if (pair->dma_chan[IN])
dmaengine_terminate_all(pair->dma_chan[IN]);
fsl_asrc_input_dma_callback((void *)pair);
- init_completion(&m2m->complete[IN]);
}
if (!completion_done(&m2m->complete[OUT])) {
if (pair->dma_chan[OUT])
dmaengine_terminate_all(pair->dma_chan[OUT]);
fsl_asrc_output_dma_callback((void *)pair);
- init_completion(&m2m->complete[OUT]);
}
spin_unlock_irqrestore(&asrc_priv->lock, lock_flags);