diff options
author | Steven Rostedt (Red Hat) <rostedt@goodmis.org> | 2016-02-23 13:12:36 -0500 |
---|---|---|
committer | Steven Rostedt <rostedt@goodmis.org> | 2016-02-23 13:12:36 -0500 |
commit | 2dbe9ce80e8ea858a1f308c3fcd631a8a4914c0f (patch) | |
tree | 116381d097ccbbe9eb94700a2fa87184c0dceddc /sound/soc/soc-compress.c | |
parent | 916b9c551f405182d314fb52bfaaf650fd204ef7 (diff) | |
parent | 757bcff73ad4726504a3f40d12a970a593249350 (diff) | |
download | linux-rt-2dbe9ce80e8ea858a1f308c3fcd631a8a4914c0f.tar.gz |
Merge tag 'v3.14.60' into v3.14-rt
This is the 3.14.60 stable release
Diffstat (limited to 'sound/soc/soc-compress.c')
-rw-r--r-- | sound/soc/soc-compress.c | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/sound/soc/soc-compress.c b/sound/soc/soc-compress.c index 4f98ff14cf12..e5601f9a7bd7 100644 --- a/sound/soc/soc-compress.c +++ b/sound/soc/soc-compress.c @@ -665,17 +665,34 @@ int soc_new_compress(struct snd_soc_pcm_runtime *rtd, int num) struct snd_pcm *be_pcm; char new_name[64]; int ret = 0, direction = 0; + int playback = 0, capture = 0; /* check client and interface hw capabilities */ snprintf(new_name, sizeof(new_name), "%s %s-%d", rtd->dai_link->stream_name, codec_dai->name, num); if (codec_dai->driver->playback.channels_min) + playback = 1; + if (codec_dai->driver->capture.channels_min) + capture = 1; + + capture = capture && cpu_dai->driver->capture.channels_min; + playback = playback && cpu_dai->driver->playback.channels_min; + + /* + * Compress devices are unidirectional so only one of the directions + * should be set, check for that (xor) + */ + if (playback + capture != 1) { + dev_err(rtd->card->dev, "Invalid direction for compress P %d, C %d\n", + playback, capture); + return -EINVAL; + } + + if(playback) direction = SND_COMPRESS_PLAYBACK; - else if (codec_dai->driver->capture.channels_min) - direction = SND_COMPRESS_CAPTURE; else - return -EINVAL; + direction = SND_COMPRESS_CAPTURE; compr = kzalloc(sizeof(*compr), GFP_KERNEL); if (compr == NULL) { |