"ASoC: startup() failed: %d\n", ret);
                        goto out;
                }
-               source->active++;
+               snd_soc_dai_activate(source, substream->stream);
        }
 
        substream->stream = SNDRV_PCM_STREAM_PLAYBACK;
                                "ASoC: startup() failed: %d\n", ret);
                        goto out;
                }
-               sink->active++;
+               snd_soc_dai_activate(sink, substream->stream);
        }
 
        substream->hw_opened = 1;
                substream->stream = SNDRV_PCM_STREAM_CAPTURE;
                snd_soc_dapm_widget_for_each_source_path(w, path) {
                        source = path->source->priv;
-                       source->active--;
+                       snd_soc_dai_deactivate(source, substream->stream);
                        snd_soc_dai_shutdown(source, substream);
                }
 
                substream->stream = SNDRV_PCM_STREAM_PLAYBACK;
                snd_soc_dapm_widget_for_each_sink_path(w, path) {
                        sink = path->sink->priv;
-                       sink->active--;
+                       snd_soc_dai_deactivate(sink, substream->stream);
                        snd_soc_dai_shutdown(sink, substream);
                }
                break;