mirror of
https://github.com/team-infusion-developers/android_kernel_samsung_msm8976.git
synced 2024-10-31 18:09:19 +00:00
ASoC: compress: Fix compress device direction check
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 Tested-by: Ashish Panwar <ashish.panwar@intel.com> Signed-off-by: Vinod Koul <vinod.koul@intel.com> Signed-off-by: Mark Brown <broonie@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
1702ac2fae
commit
9a76e683b6
1 changed files with 21 additions and 4 deletions
|
@ -384,17 +384,34 @@ int soc_new_compress(struct snd_soc_pcm_runtime *rtd, int num)
|
|||
struct snd_compr *compr;
|
||||
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)
|
||||
direction = SND_COMPRESS_PLAYBACK;
|
||||
else if (codec_dai->driver->capture.channels_min)
|
||||
direction = SND_COMPRESS_CAPTURE;
|
||||
else
|
||||
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
|
||||
direction = SND_COMPRESS_CAPTURE;
|
||||
|
||||
compr = kzalloc(sizeof(*compr), GFP_KERNEL);
|
||||
if (compr == NULL) {
|
||||
|
|
Loading…
Reference in a new issue