Merge remote-tracking branch 'asoc/fix/compress' into asoc-linus
This commit is contained in:
commit
b7f08d29c9
@ -630,6 +630,7 @@ int snd_soc_new_compress(struct snd_soc_pcm_runtime *rtd, int num)
|
|||||||
struct snd_pcm *be_pcm;
|
struct snd_pcm *be_pcm;
|
||||||
char new_name[64];
|
char new_name[64];
|
||||||
int ret = 0, direction = 0;
|
int ret = 0, direction = 0;
|
||||||
|
int playback = 0, capture = 0;
|
||||||
|
|
||||||
if (rtd->num_codecs > 1) {
|
if (rtd->num_codecs > 1) {
|
||||||
dev_err(rtd->card->dev, "Multicodec not supported for compressed stream\n");
|
dev_err(rtd->card->dev, "Multicodec not supported for compressed stream\n");
|
||||||
@ -641,11 +642,27 @@ int snd_soc_new_compress(struct snd_soc_pcm_runtime *rtd, int num)
|
|||||||
rtd->dai_link->stream_name, codec_dai->name, num);
|
rtd->dai_link->stream_name, codec_dai->name, num);
|
||||||
|
|
||||||
if (codec_dai->driver->playback.channels_min)
|
if (codec_dai->driver->playback.channels_min)
|
||||||
direction = SND_COMPRESS_PLAYBACK;
|
playback = 1;
|
||||||
else if (codec_dai->driver->capture.channels_min)
|
if (codec_dai->driver->capture.channels_min)
|
||||||
direction = SND_COMPRESS_CAPTURE;
|
capture = 1;
|
||||||
else
|
|
||||||
|
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;
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(playback)
|
||||||
|
direction = SND_COMPRESS_PLAYBACK;
|
||||||
|
else
|
||||||
|
direction = SND_COMPRESS_CAPTURE;
|
||||||
|
|
||||||
compr = kzalloc(sizeof(*compr), GFP_KERNEL);
|
compr = kzalloc(sizeof(*compr), GFP_KERNEL);
|
||||||
if (compr == NULL) {
|
if (compr == NULL) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user