Patch "ASoC: compress: Fix compress device direction check" has been added to the 3.14-stable tree
Subsystems (4)
This is a note to let you know that I've just added the patch titled
ASoC: compress: Fix compress device direction check
to the 3.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
asoc-compress-fix-compress-device-direction-check.patch
and it can be found in the queue-3.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
a1068045883ed4a18363a4ebad0c3d55e473b716Mon Sep 17 00:00:00 2001
From: Vinod Koul <[email protected]>
Date: Thu, 7 Jan 2016 21:48:14 +0530
Subject: ASoC: compress: Fix compress device direction check
From: Vinod Koul <[email protected]>
commit a1068045883ed4a18363a4ebad0c3d55e473b716 upstream.
The detection of direction for compress was only taking into account codec capabilities and not CPU ones. Fix this by checking the CPU side capabilities as well
--- sound/soc/soc-compress.c | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-)
sound/soc/soc-compress.c +20 -3
@@ -665,17 +665,34 @@ int soc_new_compress(struct snd_soc_pcm_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 ) {
Patches currently in stable-queue which might be from [email protected] are
queue-3.14/asoc-compress-fix-compress-device-direction-check.patch