On 27/03/2024 12:32, Mohammad Rafi Shaik wrote: > + > +static int qcm6490_snd_hw_free(struct snd_pcm_substream *substream) > +{ > + struct snd_soc_pcm_runtime *rtd = substream->private_data; > + struct qcm6490_snd_data *data = snd_soc_card_get_drvdata(rtd->card); > + struct snd_soc_dai *cpu_dai = snd_soc_rtd_to_cpu(rtd, 0); > + struct sdw_stream_runtime *sruntime = data->sruntime[cpu_dai->id]; > + > + return qcom_snd_sdw_hw_free(substream, sruntime, > + &data->stream_prepared[cpu_dai->id]); > +} > + > +static const struct snd_soc_ops qcm6490_be_ops = { > + .hw_params = qcm6490_snd_hw_params, > + .hw_free = qcm6490_snd_hw_free, > + .prepare = qcm6490_snd_prepare, > +}; I think you leak sdw_stream, because of missing shutdown. Except that everything looks like sc8280xp, except the snd_init(), so I wonder how important that difference is? Cannot be combined into sc8280xp? Best regards, Krzysztof