ASoC: restructure dmaengine_pcm_request_chan_of()
Restructure the internals of dmaengine_pcm_request_chan_of() as a loop over all channels to be allocated. This makes it easier to add logic that applies to all allocated channels, without having to duplicate that logic in each of the half-duplex/full-duplex paths. Signed-off-by: Stephen Warren <swarren@nvidia.com> Acked-by: Lars-Peter Clausen <lars@metafoo.de> Signed-off-by: Mark Brown <broonie@linaro.org>
This commit is contained in:
parent
a22f33b003
commit
11b3a7add2
|
@ -291,21 +291,26 @@ static void dmaengine_pcm_request_chan_of(struct dmaengine_pcm *pcm,
|
|||
struct device *dev)
|
||||
{
|
||||
unsigned int i;
|
||||
const char *name;
|
||||
|
||||
if ((pcm->flags & (SND_DMAENGINE_PCM_FLAG_NO_DT |
|
||||
SND_DMAENGINE_PCM_FLAG_CUSTOM_CHANNEL_NAME)) ||
|
||||
!dev->of_node)
|
||||
return;
|
||||
|
||||
if (pcm->flags & SND_DMAENGINE_PCM_FLAG_HALF_DUPLEX) {
|
||||
pcm->chan[0] = dma_request_slave_channel(dev, "rx-tx");
|
||||
pcm->chan[1] = pcm->chan[0];
|
||||
} else {
|
||||
for (i = SNDRV_PCM_STREAM_PLAYBACK; i <= SNDRV_PCM_STREAM_CAPTURE; i++) {
|
||||
pcm->chan[i] = dma_request_slave_channel(dev,
|
||||
dmaengine_pcm_dma_channel_names[i]);
|
||||
}
|
||||
for (i = SNDRV_PCM_STREAM_PLAYBACK; i <= SNDRV_PCM_STREAM_CAPTURE;
|
||||
i++) {
|
||||
if (pcm->flags & SND_DMAENGINE_PCM_FLAG_HALF_DUPLEX)
|
||||
name = "rx-tx";
|
||||
else
|
||||
name = dmaengine_pcm_dma_channel_names[i];
|
||||
pcm->chan[i] = dma_request_slave_channel(dev, name);
|
||||
if (pcm->flags & SND_DMAENGINE_PCM_FLAG_HALF_DUPLEX)
|
||||
break;
|
||||
}
|
||||
|
||||
if (pcm->flags & SND_DMAENGINE_PCM_FLAG_HALF_DUPLEX)
|
||||
pcm->chan[1] = pcm->chan[0];
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue