diff --git a/sound/soc/soc-compress.c b/sound/soc/soc-compress.c index 4e6e9b6463b0..9b1239ba7874 100644 --- a/sound/soc/soc-compress.c +++ b/sound/soc/soc-compress.c @@ -1006,8 +1006,21 @@ int snd_soc_new_compress(struct snd_soc_pcm_runtime *rtd, int num) rtd->compr = compr; compr->private_data = rtd; + for_each_rtdcom(rtd, rtdcom) { + component = rtdcom->component; + + if (component->driver->pcm_new) { + ret = component->driver->pcm_new(rtd); + if (ret < 0) { + pr_err("asoc: compress pcm constructor failed\n"); + goto compr_err; + } + } + } + dev_info(rtd->card->dev, "Compress ASoC: %s <-> %s mapping ok\n", codec_dai->name, cpu_dai->name); + return ret; compr_err: