ASoC: ac108: Fix changed interface
[platform/kernel/linux-rpi.git] / sound / soc / seeed / seeed-voicecard.c
index 5de1b40..c24230b 100644 (file)
@@ -86,6 +86,7 @@ static int seeed_voice_card_startup(struct snd_pcm_substream *substream)
        struct seeed_card_data *priv =  snd_soc_card_get_drvdata(rtd->card);
        struct seeed_dai_props *dai_props =
                seeed_priv_to_props(priv, rtd->num);
+       struct snd_soc_dai *cpu_dai = asoc_rtd_to_cpu(rtd, 0);
        int ret;
 
        ret = clk_prepare_enable(dai_props->cpu_dai.clk);
@@ -96,16 +97,16 @@ static int seeed_voice_card_startup(struct snd_pcm_substream *substream)
        if (ret)
                clk_disable_unprepare(dai_props->cpu_dai.clk);
 
-       if (rtd->cpu_dai->driver->playback.channels_min) {
-               priv->channels_playback_default = rtd->cpu_dai->driver->playback.channels_min;
+       if (cpu_dai->driver->playback.channels_min) {
+               priv->channels_playback_default = cpu_dai->driver->playback.channels_min;
        }
-       if (rtd->cpu_dai->driver->capture.channels_min) {
-               priv->channels_capture_default = rtd->cpu_dai->driver->capture.channels_min;
+       if (cpu_dai->driver->capture.channels_min) {
+               priv->channels_capture_default = cpu_dai->driver->capture.channels_min;
        }
-       rtd->cpu_dai->driver->playback.channels_min = priv->channels_playback_override;
-       rtd->cpu_dai->driver->playback.channels_max = priv->channels_playback_override;
-       rtd->cpu_dai->driver->capture.channels_min = priv->channels_capture_override;
-       rtd->cpu_dai->driver->capture.channels_max = priv->channels_capture_override;
+       cpu_dai->driver->playback.channels_min = priv->channels_playback_override;
+       cpu_dai->driver->playback.channels_max = priv->channels_playback_override;
+       cpu_dai->driver->capture.channels_min = priv->channels_capture_override;
+       cpu_dai->driver->capture.channels_max = priv->channels_capture_override;
 
        return ret;
 }
@@ -113,21 +114,23 @@ static int seeed_voice_card_startup(struct snd_pcm_substream *substream)
 static void seeed_voice_card_shutdown(struct snd_pcm_substream *substream)
 {
        struct snd_soc_pcm_runtime *rtd = substream->private_data;
-       struct snd_soc_dai *dai = rtd->codec_dai;
+       struct snd_soc_dai *dai = asoc_rtd_to_codec(rtd, 0);
        struct seeed_card_data *priv =  snd_soc_card_get_drvdata(rtd->card);
        struct seeed_dai_props *dai_props =
                seeed_priv_to_props(priv, rtd->num);
+       struct snd_soc_dai *cpu_dai = asoc_rtd_to_cpu(rtd, 0);
 
-       rtd->cpu_dai->driver->playback.channels_min = priv->channels_playback_default;
-       rtd->cpu_dai->driver->playback.channels_max = priv->channels_playback_default;
-       rtd->cpu_dai->driver->capture.channels_min = priv->channels_capture_default;
-       rtd->cpu_dai->driver->capture.channels_max = priv->channels_capture_default;
+       cpu_dai->driver->playback.channels_min = priv->channels_playback_default;
+       cpu_dai->driver->playback.channels_max = priv->channels_playback_default;
+       cpu_dai->driver->capture.channels_min = priv->channels_capture_default;
+       cpu_dai->driver->capture.channels_max = priv->channels_capture_default;
 
        clk_disable_unprepare(dai_props->cpu_dai.clk);
 
        clk_disable_unprepare(dai_props->codec_dai.clk);
 
-       if (dai->capture_active && substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
+       if (dai->stream_active[SNDRV_PCM_STREAM_CAPTURE] &&
+           substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
                return;
 
        /* interrupt environment */
@@ -145,8 +148,8 @@ static int seeed_voice_card_hw_params(struct snd_pcm_substream *substream,
                                      struct snd_pcm_hw_params *params)
 {
        struct snd_soc_pcm_runtime *rtd = substream->private_data;
-       struct snd_soc_dai *codec_dai = rtd->codec_dai;
-       struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
+       struct snd_soc_dai *codec_dai = asoc_rtd_to_codec(rtd, 0);
+       struct snd_soc_dai *cpu_dai = asoc_rtd_to_cpu(rtd, 0);
        struct seeed_card_data *priv = snd_soc_card_get_drvdata(rtd->card);
        struct seeed_dai_props *dai_props =
                seeed_priv_to_props(priv, rtd->num);
@@ -293,8 +296,8 @@ static int asoc_card_init_dai(struct snd_soc_dai *dai,
 static int seeed_voice_card_dai_init(struct snd_soc_pcm_runtime *rtd)
 {
        struct seeed_card_data *priv =  snd_soc_card_get_drvdata(rtd->card);
-       struct snd_soc_dai *codec = rtd->codec_dai;
-       struct snd_soc_dai *cpu = rtd->cpu_dai;
+       struct snd_soc_dai *codec = asoc_rtd_to_codec(rtd, 0);
+       struct snd_soc_dai *cpu = asoc_rtd_to_cpu(rtd, 0);
        struct seeed_dai_props *dai_props =
                seeed_priv_to_props(priv, rtd->num);
        int ret;