static int avs_dai_startup(struct snd_pcm_substream *substream, struct snd_soc_dai *dai, bool is_fe,
                           const struct snd_soc_dai_ops *ops)
 {
+       struct snd_soc_pcm_runtime *rtd = snd_pcm_substream_chip(substream);
+       struct avs_dev *adev = to_avs_dev(dai->dev);
        struct avs_tplg_path_template *template;
        struct avs_dma_data *data;
 
        data->template = template;
        snd_soc_dai_set_dma_data(dai, substream, data);
 
+       if (rtd->dai_link->ignore_suspend)
+               adev->num_lp_paths++;
+
        return 0;
 }
 
 
 static void avs_dai_nonhda_be_shutdown(struct snd_pcm_substream *substream, struct snd_soc_dai *dai)
 {
+       struct snd_soc_pcm_runtime *rtd = snd_pcm_substream_chip(substream);
+       struct avs_dev *adev = to_avs_dev(dai->dev);
        struct avs_dma_data *data;
 
+       if (rtd->dai_link->ignore_suspend)
+               adev->num_lp_paths--;
+
        data = snd_soc_dai_get_dma_data(dai, substream);
 
        snd_soc_dai_set_dma_data(dai, substream, NULL);
 
 static void avs_dai_fe_shutdown(struct snd_pcm_substream *substream, struct snd_soc_dai *dai)
 {
+       struct snd_soc_pcm_runtime *rtd = snd_pcm_substream_chip(substream);
+       struct avs_dev *adev = to_avs_dev(dai->dev);
        struct avs_dma_data *data;
 
+       if (rtd->dai_link->ignore_suspend)
+               adev->num_lp_paths--;
+
        data = snd_soc_dai_get_dma_data(dai, substream);
 
        snd_soc_dai_set_dma_data(dai, substream, NULL);