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);
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;
}
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 */
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);
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;