ASoC: dpcm: Explicitly set BE DAI link supported stream directions
authorLiam Girdwood <liam.r.girdwood@linux.intel.com>
Tue, 7 Jan 2014 17:51:42 +0000 (17:51 +0000)
committerMark Brown <broonie@linaro.org>
Tue, 7 Jan 2014 17:57:48 +0000 (17:57 +0000)
Some BE DAIs can be "dummy" (when the DSP is controlling the DAI) and as such
wont have set a minimum number of playback or capture channels required for BE
DAI registration (to establish supported stream directions).

Force machine drivers to explicitly set whether they support playback and capture
stream directions for every BE DAIs.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
include/sound/soc.h
sound/soc/soc-pcm.c

index 1f741cb24f337c3e4662c2ff2cd45f78985c54c1..a5ef14f06124684bd52f611d52e1667e800a9e10 100644 (file)
@@ -886,6 +886,10 @@ struct snd_soc_dai_link {
        /* This DAI link can route to other DAI links at runtime (Frontend)*/
        unsigned int dynamic:1;
 
+       /* DPCM capture and Playback support */
+       unsigned int dpcm_capture:1;
+       unsigned int dpcm_playback:1;
+
        /* pmdown_time is ignored at stop */
        unsigned int ignore_pmdown_time:1;
 
index 42782c01e41320e924efb4b93c839802f0df5722..141a302e4e77a5b382ec589a690e625857037052 100644 (file)
@@ -2026,10 +2026,8 @@ int soc_new_pcm(struct snd_soc_pcm_runtime *rtd, int num)
        int ret = 0, playback = 0, capture = 0;
 
        if (rtd->dai_link->dynamic || rtd->dai_link->no_pcm) {
-               if (cpu_dai->driver->playback.channels_min)
-                       playback = 1;
-               if (cpu_dai->driver->capture.channels_min)
-                       capture = 1;
+               playback = rtd->dai_link->dpcm_playback;
+               capture = rtd->dai_link->dpcm_capture;
        } else {
                if (codec_dai->driver->playback.channels_min &&
                    cpu_dai->driver->playback.channels_min)