On Fri, Jun 12, 2020 at 10:17:08AM +0800, Shengjiu Wang wrote:
diff --git a/sound/soc/fsl/fsl_asrc_common.h b/sound/soc/fsl/fsl_asrc_common.h
- @req_dma_chan_dev_to_dev: flag for release dev_to_dev chan
Since we only have dma_request call for back-end only:
- @req_dma_chan: flag to release back-end dma chan
I prefer to use the description "flag to release dev_to_dev chan" because we won't release the dma chan of the back-end. if the chan is from the back-end, it is owned by the back-end component.
TBH, it just looks too long. But I wouldn't have problem if you insist so.
@@ -273,19 +299,21 @@ static int fsl_asrc_dma_hw_params(struct snd_soc_component *component, static int fsl_asrc_dma_hw_free(struct snd_soc_component *component, struct snd_pcm_substream *substream) {
bool tx = substream->stream == SNDRV_PCM_STREAM_PLAYBACK; struct snd_pcm_runtime *runtime = substream->runtime; struct fsl_asrc_pair *pair = runtime->private_data;
u8 dir = tx ? OUT : IN; snd_pcm_set_runtime_buffer(substream, NULL);
if (pair->dma_chan[IN])
dma_release_channel(pair->dma_chan[IN]);
if (pair->dma_chan[!dir])
dma_release_channel(pair->dma_chan[!dir]);
if (pair->dma_chan[OUT])
dma_release_channel(pair->dma_chan[OUT]);
if (pair->dma_chan[dir] && pair->req_dma_chan_dev_to_dev)
dma_release_channel(pair->dma_chan[dir]);
Why we only apply this to one direction?
if the chan is from the back-end, it is owned by the back-end component, so it should be released by the back-end component, not here. That's why I added the flag "req_dma_chan".
Ah...I forgot the IN and OUT is for front-end and back-end. The naming isn't very good indeed. Probably we should add a line of comments somewhere as a reminder.
Thanks