Lines Matching +full:pdm +full:- +full:fmt
1 // SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause)
19 #include <sound/soc-dapm.h>
29 #include "acp-mach.h"
35 #define NAU8821_CODEC_DAI "nau8821-hifi"
38 #define MAX98388_CODEC_DAI "max98388-aif1"
44 /* Google skyrim proto-0 */
77 clk_set_rate(drvdata->wclk, srate); in acp_clk_enable()
78 clk_set_rate(drvdata->bclk, srate * bclk_ratio); in acp_clk_enable()
80 return clk_prepare_enable(drvdata->wclk); in acp_clk_enable()
85 DAILINK_COMP_ARRAY(COMP_CODEC("i2c-10EC5682:00", "rt5682-aif1")));
118 struct snd_soc_card *card = rtd->card; in acp_card_rt5682_init()
119 struct acp_card_drvdata *drvdata = card->drvdata; in acp_card_rt5682_init()
121 struct snd_soc_component *component = codec_dai->component; in acp_card_rt5682_init()
124 dev_info(rtd->dev, "codec dai name = %s\n", codec_dai->name); in acp_card_rt5682_init()
126 if (drvdata->hs_codec_id != RT5682) in acp_card_rt5682_init()
127 return -EINVAL; in acp_card_rt5682_init()
129 drvdata->wclk = clk_get(component->dev, "rt5682-dai-wclk"); in acp_card_rt5682_init()
130 drvdata->bclk = clk_get(component->dev, "rt5682-dai-bclk"); in acp_card_rt5682_init()
132 ret = snd_soc_dapm_new_controls(&card->dapm, rt5682_widgets, in acp_card_rt5682_init()
135 dev_err(rtd->dev, "unable to add widget dapm controls, ret %d\n", ret); in acp_card_rt5682_init()
142 dev_err(rtd->dev, "unable to add card controls, ret %d\n", ret); in acp_card_rt5682_init()
154 dev_err(card->dev, "HP jack creation failed %d\n", ret); in acp_card_rt5682_init()
165 dev_err(rtd->dev, "Headset Jack call-back failed: %d\n", ret); in acp_card_rt5682_init()
169 return snd_soc_dapm_add_routes(&rtd->card->dapm, rt5682_map, ARRAY_SIZE(rt5682_map)); in acp_card_rt5682_init()
174 struct snd_pcm_runtime *runtime = substream->runtime; in acp_card_hs_startup()
176 struct snd_soc_card *card = rtd->card; in acp_card_hs_startup()
177 struct acp_card_drvdata *drvdata = card->drvdata; in acp_card_hs_startup()
180 unsigned int fmt; in acp_card_hs_startup() local
182 if (drvdata->tdm_mode) in acp_card_hs_startup()
183 fmt = SND_SOC_DAIFMT_DSP_A; in acp_card_hs_startup()
185 fmt = SND_SOC_DAIFMT_I2S; in acp_card_hs_startup()
187 if (drvdata->soc_mclk) in acp_card_hs_startup()
188 fmt |= SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBC_CFC; in acp_card_hs_startup()
190 fmt |= SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBP_CFP; in acp_card_hs_startup()
192 ret = snd_soc_dai_set_fmt(codec_dai, fmt); in acp_card_hs_startup()
194 dev_err(rtd->card->dev, "Failed to set dai fmt: %d\n", ret); in acp_card_hs_startup()
198 runtime->hw.channels_max = DUAL_CHANNEL; in acp_card_hs_startup()
210 struct snd_soc_card *card = rtd->card; in acp_card_shutdown()
211 struct acp_card_drvdata *drvdata = card->drvdata; in acp_card_shutdown()
213 if (!drvdata->soc_mclk) in acp_card_shutdown()
214 clk_disable_unprepare(drvdata->wclk); in acp_card_shutdown()
220 struct snd_soc_pcm_runtime *rtd = substream->private_data; in acp_card_rt5682_hw_params()
221 struct snd_soc_card *card = rtd->card; in acp_card_rt5682_hw_params()
222 struct acp_card_drvdata *drvdata = card->drvdata; in acp_card_rt5682_hw_params()
226 unsigned int fmt, srate, ch, format; in acp_card_rt5682_hw_params() local
232 if (drvdata->tdm_mode) in acp_card_rt5682_hw_params()
233 fmt = SND_SOC_DAIFMT_DSP_A; in acp_card_rt5682_hw_params()
235 fmt = SND_SOC_DAIFMT_I2S; in acp_card_rt5682_hw_params()
237 if (drvdata->soc_mclk) in acp_card_rt5682_hw_params()
238 fmt |= SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBC_CFC; in acp_card_rt5682_hw_params()
240 fmt |= SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBP_CFP; in acp_card_rt5682_hw_params()
242 ret = snd_soc_dai_set_fmt(cpu_dai, fmt); in acp_card_rt5682_hw_params()
243 if (ret && ret != -ENOTSUPP) { in acp_card_rt5682_hw_params()
244 dev_err(rtd->dev, "Failed to set dai fmt: %d\n", ret); in acp_card_rt5682_hw_params()
248 ret = snd_soc_dai_set_fmt(codec_dai, fmt); in acp_card_rt5682_hw_params()
250 dev_err(rtd->card->dev, "Failed to set dai fmt: %d\n", ret); in acp_card_rt5682_hw_params()
254 if (drvdata->tdm_mode) { in acp_card_rt5682_hw_params()
259 if (ret && ret != -ENOTSUPP) { in acp_card_rt5682_hw_params()
260 dev_err(rtd->dev, "set TDM slot err: %d\n", ret); in acp_card_rt5682_hw_params()
266 dev_warn(rtd->dev, "set TDM slot err:%d\n", ret); in acp_card_rt5682_hw_params()
274 dev_err(rtd->dev, "Failed to set codec PLL: %d\n", ret); in acp_card_rt5682_hw_params()
281 dev_err(rtd->dev, "Failed to set codec SYSCLK: %d\n", ret); in acp_card_rt5682_hw_params()
288 dev_err(rtd->dev, "Failed to set rt5682 tdm bclk ratio: %d\n", ret); in acp_card_rt5682_hw_params()
292 if (!drvdata->soc_mclk) { in acp_card_rt5682_hw_params()
295 dev_err(rtd->card->dev, "Failed to enable HS clk: %d\n", ret); in acp_card_rt5682_hw_params()
311 DAILINK_COMP_ARRAY(COMP_CODEC("i2c-RTL5682:00", "rt5682s-aif1")));
343 struct snd_soc_card *card = rtd->card; in acp_card_rt5682s_init()
344 struct acp_card_drvdata *drvdata = card->drvdata; in acp_card_rt5682s_init()
346 struct snd_soc_component *component = codec_dai->component; in acp_card_rt5682s_init()
349 dev_info(rtd->dev, "codec dai name = %s\n", codec_dai->name); in acp_card_rt5682s_init()
351 if (drvdata->hs_codec_id != RT5682S) in acp_card_rt5682s_init()
352 return -EINVAL; in acp_card_rt5682s_init()
354 if (!drvdata->soc_mclk) { in acp_card_rt5682s_init()
355 drvdata->wclk = clk_get(component->dev, "rt5682-dai-wclk"); in acp_card_rt5682s_init()
356 drvdata->bclk = clk_get(component->dev, "rt5682-dai-bclk"); in acp_card_rt5682s_init()
359 ret = snd_soc_dapm_new_controls(&card->dapm, rt5682s_widgets, in acp_card_rt5682s_init()
362 dev_err(rtd->dev, "unable to add widget dapm controls, ret %d\n", ret); in acp_card_rt5682s_init()
369 dev_err(rtd->dev, "unable to add card controls, ret %d\n", ret); in acp_card_rt5682s_init()
381 dev_err(card->dev, "HP jack creation failed %d\n", ret); in acp_card_rt5682s_init()
392 dev_err(rtd->dev, "Headset Jack call-back failed: %d\n", ret); in acp_card_rt5682s_init()
396 return snd_soc_dapm_add_routes(&rtd->card->dapm, rt5682s_map, ARRAY_SIZE(rt5682s_map)); in acp_card_rt5682s_init()
402 struct snd_soc_pcm_runtime *rtd = substream->private_data; in acp_card_rt5682s_hw_params()
403 struct snd_soc_card *card = rtd->card; in acp_card_rt5682s_hw_params()
404 struct acp_card_drvdata *drvdata = card->drvdata; in acp_card_rt5682s_hw_params()
408 unsigned int fmt, srate, ch, format; in acp_card_rt5682s_hw_params() local
414 if (drvdata->tdm_mode) in acp_card_rt5682s_hw_params()
415 fmt = SND_SOC_DAIFMT_DSP_A; in acp_card_rt5682s_hw_params()
417 fmt = SND_SOC_DAIFMT_I2S; in acp_card_rt5682s_hw_params()
419 if (drvdata->soc_mclk) in acp_card_rt5682s_hw_params()
420 fmt |= SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBC_CFC; in acp_card_rt5682s_hw_params()
422 fmt |= SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBP_CFP; in acp_card_rt5682s_hw_params()
424 ret = snd_soc_dai_set_fmt(cpu_dai, fmt); in acp_card_rt5682s_hw_params()
425 if (ret && ret != -ENOTSUPP) { in acp_card_rt5682s_hw_params()
426 dev_err(rtd->dev, "Failed to set dai fmt: %d\n", ret); in acp_card_rt5682s_hw_params()
430 ret = snd_soc_dai_set_fmt(codec_dai, fmt); in acp_card_rt5682s_hw_params()
432 dev_err(rtd->card->dev, "Failed to set dai fmt: %d\n", ret); in acp_card_rt5682s_hw_params()
436 if (drvdata->tdm_mode) { in acp_card_rt5682s_hw_params()
441 if (ret && ret != -ENOTSUPP) { in acp_card_rt5682s_hw_params()
442 dev_err(rtd->dev, "set TDM slot err: %d\n", ret); in acp_card_rt5682s_hw_params()
448 dev_warn(rtd->dev, "set TDM slot err:%d\n", ret); in acp_card_rt5682s_hw_params()
456 dev_err(rtd->dev, "Failed to set codec PLL: %d\n", ret); in acp_card_rt5682s_hw_params()
463 dev_err(rtd->dev, "Failed to set codec SYSCLK: %d\n", ret); in acp_card_rt5682s_hw_params()
470 dev_err(rtd->dev, "Failed to set rt5682 tdm bclk ratio: %d\n", ret); in acp_card_rt5682s_hw_params()
474 clk_set_rate(drvdata->wclk, srate); in acp_card_rt5682s_hw_params()
475 clk_set_rate(drvdata->bclk, srate * ch * format); in acp_card_rt5682s_hw_params()
497 struct snd_pcm_runtime *runtime = substream->runtime; in acp_card_dmic_startup()
513 DAILINK_COMP_ARRAY(COMP_CODEC("i2c-10EC1019:00", "rt1019-aif"),
514 COMP_CODEC("i2c-10EC1019:01", "rt1019-aif")));
533 .dlc = COMP_CODEC_CONF("i2c-10EC1019:01"),
537 .dlc = COMP_CODEC_CONF("i2c-10EC1019:00"),
544 struct snd_soc_card *card = rtd->card; in acp_card_rt1019_init()
545 struct acp_card_drvdata *drvdata = card->drvdata; in acp_card_rt1019_init()
548 if (drvdata->amp_codec_id != RT1019) in acp_card_rt1019_init()
549 return -EINVAL; in acp_card_rt1019_init()
551 ret = snd_soc_dapm_new_controls(&card->dapm, rt1019_widgets, in acp_card_rt1019_init()
554 dev_err(rtd->dev, "unable to add widget dapm controls, ret %d\n", ret); in acp_card_rt1019_init()
561 dev_err(rtd->dev, "unable to add card controls, ret %d\n", ret); in acp_card_rt1019_init()
565 return snd_soc_dapm_add_routes(&rtd->card->dapm, rt1019_map_lr, in acp_card_rt1019_init()
572 struct snd_soc_pcm_runtime *rtd = substream->private_data; in acp_card_rt1019_hw_params()
573 struct snd_soc_card *card = rtd->card; in acp_card_rt1019_hw_params()
574 struct acp_card_drvdata *drvdata = card->drvdata; in acp_card_rt1019_hw_params()
578 unsigned int fmt, srate, ch, format; in acp_card_rt1019_hw_params() local
584 if (drvdata->amp_codec_id != RT1019) in acp_card_rt1019_hw_params()
585 return -EINVAL; in acp_card_rt1019_hw_params()
587 if (drvdata->tdm_mode) in acp_card_rt1019_hw_params()
588 fmt = SND_SOC_DAIFMT_DSP_A; in acp_card_rt1019_hw_params()
590 fmt = SND_SOC_DAIFMT_I2S; in acp_card_rt1019_hw_params()
592 if (drvdata->soc_mclk) in acp_card_rt1019_hw_params()
593 fmt |= SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBC_CFC; in acp_card_rt1019_hw_params()
595 fmt |= SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBP_CFP; in acp_card_rt1019_hw_params()
597 ret = snd_soc_dai_set_fmt(cpu_dai, fmt); in acp_card_rt1019_hw_params()
598 if (ret && ret != -ENOTSUPP) { in acp_card_rt1019_hw_params()
599 dev_err(rtd->dev, "Failed to set dai fmt: %d\n", ret); in acp_card_rt1019_hw_params()
603 if (drvdata->tdm_mode) { in acp_card_rt1019_hw_params()
608 if (ret && ret != -ENOTSUPP) { in acp_card_rt1019_hw_params()
609 dev_err(rtd->dev, "set TDM slot err: %d\n", ret); in acp_card_rt1019_hw_params()
615 if (strcmp(codec_dai->name, "rt1019-aif")) in acp_card_rt1019_hw_params()
618 if (drvdata->tdm_mode) in acp_card_rt1019_hw_params()
633 if (drvdata->tdm_mode) { in acp_card_rt1019_hw_params()
637 dev_err(rtd->card->dev, "Failed to set dai fmt: %d\n", ret); in acp_card_rt1019_hw_params()
644 if (!strcmp(codec_dai->component->name, "i2c-10EC1019:00")) { in acp_card_rt1019_hw_params()
653 if (!strcmp(codec_dai->component->name, "i2c-10EC1019:01")) { in acp_card_rt1019_hw_params()
661 if (!drvdata->soc_mclk) { in acp_card_rt1019_hw_params()
664 dev_err(rtd->card->dev, "Failed to enable AMP clk: %d\n", ret); in acp_card_rt1019_hw_params()
674 struct snd_pcm_runtime *runtime = substream->runtime; in acp_card_amp_startup()
676 runtime->hw.channels_max = DUAL_CHANNEL; in acp_card_amp_startup()
709 struct snd_soc_card *card = rtd->card; in acp_card_maxim_init()
710 struct acp_card_drvdata *drvdata = card->drvdata; in acp_card_maxim_init()
713 if (drvdata->amp_codec_id != MAX98360A) in acp_card_maxim_init()
714 return -EINVAL; in acp_card_maxim_init()
716 ret = snd_soc_dapm_new_controls(&card->dapm, max98360a_widgets, in acp_card_maxim_init()
719 dev_err(rtd->dev, "unable to add widget dapm controls, ret %d\n", ret); in acp_card_maxim_init()
726 dev_err(rtd->dev, "unable to add card controls, ret %d\n", ret); in acp_card_maxim_init()
730 return snd_soc_dapm_add_routes(&rtd->card->dapm, max98360a_map, in acp_card_maxim_init()
737 struct snd_soc_pcm_runtime *rtd = substream->private_data; in acp_card_maxim_hw_params()
738 struct snd_soc_card *card = rtd->card; in acp_card_maxim_hw_params()
739 struct acp_card_drvdata *drvdata = card->drvdata; in acp_card_maxim_hw_params()
741 unsigned int fmt, srate, ch, format; in acp_card_maxim_hw_params() local
748 if (drvdata->tdm_mode) in acp_card_maxim_hw_params()
749 fmt = SND_SOC_DAIFMT_DSP_A; in acp_card_maxim_hw_params()
751 fmt = SND_SOC_DAIFMT_I2S; in acp_card_maxim_hw_params()
753 if (drvdata->soc_mclk) in acp_card_maxim_hw_params()
754 fmt |= SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBC_CFC; in acp_card_maxim_hw_params()
756 fmt |= SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBP_CFP; in acp_card_maxim_hw_params()
758 ret = snd_soc_dai_set_fmt(cpu_dai, fmt); in acp_card_maxim_hw_params()
759 if (ret && ret != -ENOTSUPP) { in acp_card_maxim_hw_params()
760 dev_err(rtd->dev, "Failed to set dai fmt: %d\n", ret); in acp_card_maxim_hw_params()
764 if (drvdata->tdm_mode) { in acp_card_maxim_hw_params()
769 if (ret && ret != -ENOTSUPP) { in acp_card_maxim_hw_params()
770 dev_err(rtd->dev, "set TDM slot err: %d\n", ret); in acp_card_maxim_hw_params()
775 if (!drvdata->soc_mclk) { in acp_card_maxim_hw_params()
778 dev_err(rtd->card->dev, "Failed to enable AMP clk: %d\n", ret); in acp_card_maxim_hw_params()
792 DAILINK_COMP_ARRAY(COMP_CODEC("i2c-ADS8388:00", "max98388-aif1"),
793 COMP_CODEC("i2c-ADS8388:01", "max98388-aif1")));
812 .dlc = COMP_CODEC_CONF("i2c-ADS8388:00"),
816 .dlc = COMP_CODEC_CONF("i2c-ADS8388:01"),
830 struct snd_pcm_runtime *runtime = substream->runtime; in acp_card_max98388_startup()
832 runtime->hw.channels_max = DUAL_CHANNEL; in acp_card_max98388_startup()
845 struct snd_soc_card *card = rtd->card; in acp_card_max98388_init()
846 struct acp_card_drvdata *drvdata = card->drvdata; in acp_card_max98388_init()
849 if (drvdata->amp_codec_id != MAX98388) in acp_card_max98388_init()
850 return -EINVAL; in acp_card_max98388_init()
852 ret = snd_soc_dapm_new_controls(&card->dapm, max98388_widgets, in acp_card_max98388_init()
856 dev_err(rtd->dev, "unable to add widget dapm controls, ret %d\n", ret); in acp_card_max98388_init()
864 dev_err(rtd->dev, "unable to add card controls, ret %d\n", ret); in acp_card_max98388_init()
868 return snd_soc_dapm_add_routes(&rtd->card->dapm, max98388_map, in acp_card_max98388_init()
875 struct snd_soc_pcm_runtime *rtd = substream->private_data; in acp_max98388_hw_params()
876 struct snd_soc_card *card = rtd->card; in acp_max98388_hw_params()
898 DAILINK_COMP_ARRAY(COMP_CODEC("i2c-10508825:00", "nau8825-hifi")));
929 struct snd_soc_card *card = rtd->card; in acp_card_nau8825_init()
930 struct acp_card_drvdata *drvdata = card->drvdata; in acp_card_nau8825_init()
932 struct snd_soc_component *component = codec_dai->component; in acp_card_nau8825_init()
935 dev_info(rtd->dev, "codec dai name = %s\n", codec_dai->name); in acp_card_nau8825_init()
937 if (drvdata->hs_codec_id != NAU8825) in acp_card_nau8825_init()
938 return -EINVAL; in acp_card_nau8825_init()
940 ret = snd_soc_dapm_new_controls(&card->dapm, nau8825_widgets, in acp_card_nau8825_init()
943 dev_err(rtd->dev, "unable to add widget dapm controls, ret %d\n", ret); in acp_card_nau8825_init()
950 dev_err(rtd->dev, "unable to add card controls, ret %d\n", ret); in acp_card_nau8825_init()
962 dev_err(card->dev, "HP jack creation failed %d\n", ret); in acp_card_nau8825_init()
973 dev_err(rtd->dev, "Headset Jack call-back failed: %d\n", ret); in acp_card_nau8825_init()
977 return snd_soc_dapm_add_routes(&rtd->card->dapm, nau8825_map, ARRAY_SIZE(nau8825_map)); in acp_card_nau8825_init()
984 struct snd_soc_card *card = rtd->card; in acp_nau8825_hw_params()
985 struct acp_card_drvdata *drvdata = card->drvdata; in acp_nau8825_hw_params()
989 unsigned int fmt; in acp_nau8825_hw_params() local
994 dev_err(rtd->dev, "snd_soc_dai_set_sysclk err = %d\n", ret); in acp_nau8825_hw_params()
999 dev_err(rtd->dev, "can't set FLL: %d\n", ret); in acp_nau8825_hw_params()
1003 if (drvdata->tdm_mode) in acp_nau8825_hw_params()
1004 fmt = SND_SOC_DAIFMT_DSP_A; in acp_nau8825_hw_params()
1006 fmt = SND_SOC_DAIFMT_I2S; in acp_nau8825_hw_params()
1008 if (drvdata->soc_mclk) in acp_nau8825_hw_params()
1009 fmt |= SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBC_CFC; in acp_nau8825_hw_params()
1011 fmt |= SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBP_CFP; in acp_nau8825_hw_params()
1013 ret = snd_soc_dai_set_fmt(cpu_dai, fmt); in acp_nau8825_hw_params()
1014 if (ret && ret != -ENOTSUPP) { in acp_nau8825_hw_params()
1015 dev_err(rtd->dev, "Failed to set dai fmt: %d\n", ret); in acp_nau8825_hw_params()
1019 ret = snd_soc_dai_set_fmt(codec_dai, fmt); in acp_nau8825_hw_params()
1021 dev_err(rtd->card->dev, "Failed to set dai fmt: %d\n", ret); in acp_nau8825_hw_params()
1025 if (drvdata->tdm_mode) { in acp_nau8825_hw_params()
1030 if (ret && ret != -ENOTSUPP) { in acp_nau8825_hw_params()
1031 dev_err(rtd->dev, "set TDM slot err: %d\n", ret); in acp_nau8825_hw_params()
1037 dev_warn(rtd->dev, "set TDM slot err:%d\n", ret); in acp_nau8825_hw_params()
1046 struct snd_pcm_runtime *runtime = substream->runtime; in acp_nau8825_startup()
1048 runtime->hw.channels_max = 2; in acp_nau8825_startup()
1052 runtime->hw.formats = SNDRV_PCM_FMTBIT_S16_LE; in acp_nau8825_startup()
1066 struct snd_soc_dapm_context *dapm = w->dapm; in platform_clock_control()
1067 struct snd_soc_card *card = dapm->card; in platform_clock_control()
1073 dev_err(card->dev, "Codec dai not found\n"); in platform_clock_control()
1074 return -EIO; in platform_clock_control()
1081 dev_err(card->dev, "set sysclk err = %d\n", ret); in platform_clock_control()
1082 return -EIO; in platform_clock_control()
1088 dev_err(codec_dai->dev, "can't set FS clock %d\n", ret); in platform_clock_control()
1092 dev_err(codec_dai->dev, "can't set FLL: %d\n", ret); in platform_clock_control()
1124 /* HP jack connectors - unknown if we have jack detection */
1144 struct snd_soc_card *card = rtd->card; in acp_8821_init()
1146 struct snd_soc_component *component = codec_dai->component; in acp_8821_init()
1149 dev_info(rtd->dev, "codec dai name = %s\n", codec_dai->name); in acp_8821_init()
1151 ret = snd_soc_dapm_new_controls(&card->dapm, nau8821_widgets, in acp_8821_init()
1154 dev_err(rtd->dev, "unable to add widget dapm controls, ret %d\n", ret); in acp_8821_init()
1162 dev_err(rtd->dev, "unable to add card controls, ret %d\n", ret); in acp_8821_init()
1174 dev_err(rtd->dev, "Headset Jack creation failed %d\n", ret); in acp_8821_init()
1185 return snd_soc_dapm_add_routes(&rtd->card->dapm, nau8821_audio_route, in acp_8821_init()
1191 struct snd_pcm_runtime *runtime = substream->runtime; in acp_8821_startup()
1193 runtime->hw.channels_max = DUAL_CHANNEL; in acp_8821_startup()
1198 snd_pcm_hw_constraint_list(substream->runtime, 0, in acp_8821_startup()
1208 struct snd_soc_card *card = rtd->card; in acp_nau8821_hw_params()
1209 struct acp_card_drvdata *drvdata = card->drvdata; in acp_nau8821_hw_params()
1212 unsigned int fmt; in acp_nau8821_hw_params() local
1214 if (drvdata->soc_mclk) in acp_nau8821_hw_params()
1215 fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBC_CFC; in acp_nau8821_hw_params()
1217 fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBP_CFP; in acp_nau8821_hw_params()
1219 ret = snd_soc_dai_set_fmt(codec_dai, fmt); in acp_nau8821_hw_params()
1221 dev_err(rtd->card->dev, "Failed to set dai fmt: %d\n", ret); in acp_nau8821_hw_params()
1228 dev_err(card->dev, "can't set FS clock %d\n", ret); in acp_nau8821_hw_params()
1232 dev_err(card->dev, "can't set FLL: %d\n", ret); in acp_nau8821_hw_params()
1243 DAILINK_COMP_ARRAY(COMP_CODEC("i2c-NVTN2020:00",
1244 "nau8821-hifi")));
1248 DAILINK_COMP_ARRAY(COMP_CODEC("dmic-codec", "dmic-hifi")));
1270 DAILINK_COMP_ARRAY(COMP_CPU("acp-i2s-sp")));
1272 DAILINK_COMP_ARRAY(COMP_CPU("acp-i2s-hs")));
1274 DAILINK_COMP_ARRAY(COMP_CPU("acp-sof-sp")));
1276 DAILINK_COMP_ARRAY(COMP_CPU("acp-sof-sp-virtual")));
1278 DAILINK_COMP_ARRAY(COMP_CPU("acp-sof-hs")));
1280 DAILINK_COMP_ARRAY(COMP_CPU("acp-sof-hs-virtual")));
1282 DAILINK_COMP_ARRAY(COMP_CPU("acp-sof-dmic")));
1284 DAILINK_COMP_ARRAY(COMP_CPU("acp-pdm-dmic")));
1290 struct snd_soc_component *component = dapm->component; in acp_rtk_set_bias_level()
1291 struct acp_card_drvdata *drvdata = card->drvdata; in acp_rtk_set_bias_level()
1297 if (strncmp(component->name, "i2c-RTL5682", 11) && in acp_rtk_set_bias_level()
1298 strncmp(component->name, "i2c-10EC1019", 12)) in acp_rtk_set_bias_level()
1312 ret = clk_prepare_enable(drvdata->bclk); in acp_rtk_set_bias_level()
1314 dev_err(component->dev, "Failed to enable bclk %d\n", ret); in acp_rtk_set_bias_level()
1320 clk_disable_unprepare(drvdata->bclk); in acp_rtk_set_bias_level()
1333 struct device *dev = card->dev; in acp_sofdsp_dai_links_create()
1334 struct acp_card_drvdata *drv_data = card->drvdata; in acp_sofdsp_dai_links_create()
1337 if (drv_data->hs_cpu_id) in acp_sofdsp_dai_links_create()
1339 if (drv_data->amp_cpu_id) in acp_sofdsp_dai_links_create()
1341 if (drv_data->dmic_cpu_id) in acp_sofdsp_dai_links_create()
1346 return -ENOMEM; in acp_sofdsp_dai_links_create()
1348 if (drv_data->hs_cpu_id == I2S_SP) { in acp_sofdsp_dai_links_create()
1349 links[i].name = "acp-headset-codec"; in acp_sofdsp_dai_links_create()
1359 if (!drv_data->hs_codec_id) { in acp_sofdsp_dai_links_create()
1364 if (drv_data->hs_codec_id == RT5682) { in acp_sofdsp_dai_links_create()
1370 if (drv_data->hs_codec_id == RT5682S) { in acp_sofdsp_dai_links_create()
1376 if (drv_data->hs_codec_id == NAU8821) { in acp_sofdsp_dai_links_create()
1385 if (drv_data->hs_cpu_id == I2S_HS) { in acp_sofdsp_dai_links_create()
1386 links[i].name = "acp-headset-codec"; in acp_sofdsp_dai_links_create()
1396 if (!drv_data->hs_codec_id) { in acp_sofdsp_dai_links_create()
1401 if (drv_data->hs_codec_id == NAU8825) { in acp_sofdsp_dai_links_create()
1407 if (drv_data->hs_codec_id == RT5682S) { in acp_sofdsp_dai_links_create()
1416 if (drv_data->amp_cpu_id == I2S_SP) { in acp_sofdsp_dai_links_create()
1417 links[i].name = "acp-amp-codec"; in acp_sofdsp_dai_links_create()
1419 if (drv_data->platform == RENOIR) { in acp_sofdsp_dai_links_create()
1431 if (!drv_data->amp_codec_id) { in acp_sofdsp_dai_links_create()
1436 if (drv_data->amp_codec_id == RT1019) { in acp_sofdsp_dai_links_create()
1441 card->codec_conf = rt1019_conf; in acp_sofdsp_dai_links_create()
1442 card->num_configs = ARRAY_SIZE(rt1019_conf); in acp_sofdsp_dai_links_create()
1444 if (drv_data->amp_codec_id == MAX98360A) { in acp_sofdsp_dai_links_create()
1453 if (drv_data->amp_cpu_id == I2S_HS) { in acp_sofdsp_dai_links_create()
1454 links[i].name = "acp-amp-codec"; in acp_sofdsp_dai_links_create()
1463 if (!drv_data->amp_codec_id) { in acp_sofdsp_dai_links_create()
1468 if (drv_data->amp_codec_id == MAX98360A) { in acp_sofdsp_dai_links_create()
1474 if (drv_data->amp_codec_id == MAX98388) { in acp_sofdsp_dai_links_create()
1479 card->codec_conf = max98388_conf; in acp_sofdsp_dai_links_create()
1480 card->num_configs = ARRAY_SIZE(max98388_conf); in acp_sofdsp_dai_links_create()
1482 if (drv_data->amp_codec_id == RT1019) { in acp_sofdsp_dai_links_create()
1487 card->codec_conf = rt1019_conf; in acp_sofdsp_dai_links_create()
1488 card->num_configs = ARRAY_SIZE(rt1019_conf); in acp_sofdsp_dai_links_create()
1493 if (drv_data->dmic_cpu_id == DMIC) { in acp_sofdsp_dai_links_create()
1494 links[i].name = "acp-dmic-codec"; in acp_sofdsp_dai_links_create()
1507 card->dai_link = links; in acp_sofdsp_dai_links_create()
1508 card->num_links = num_links; in acp_sofdsp_dai_links_create()
1509 card->set_bias_level = acp_rtk_set_bias_level; in acp_sofdsp_dai_links_create()
1518 struct device *dev = card->dev; in acp_legacy_dai_links_create()
1519 struct acp_card_drvdata *drv_data = card->drvdata; in acp_legacy_dai_links_create()
1522 if (drv_data->hs_cpu_id) in acp_legacy_dai_links_create()
1524 if (drv_data->amp_cpu_id) in acp_legacy_dai_links_create()
1526 if (drv_data->dmic_cpu_id) in acp_legacy_dai_links_create()
1531 return -ENOMEM; in acp_legacy_dai_links_create()
1533 if (drv_data->hs_cpu_id == I2S_SP) { in acp_legacy_dai_links_create()
1534 links[i].name = "acp-headset-codec"; in acp_legacy_dai_links_create()
1542 if (!drv_data->hs_codec_id) { in acp_legacy_dai_links_create()
1547 if (drv_data->hs_codec_id == RT5682) { in acp_legacy_dai_links_create()
1553 if (drv_data->hs_codec_id == RT5682S) { in acp_legacy_dai_links_create()
1562 if (drv_data->hs_cpu_id == I2S_HS) { in acp_legacy_dai_links_create()
1563 links[i].name = "acp-headset-codec"; in acp_legacy_dai_links_create()
1567 if (drv_data->platform == REMBRANDT) { in acp_legacy_dai_links_create()
1576 if (!drv_data->hs_codec_id) { in acp_legacy_dai_links_create()
1581 if (drv_data->hs_codec_id == NAU8825) { in acp_legacy_dai_links_create()
1587 if (drv_data->hs_codec_id == RT5682S) { in acp_legacy_dai_links_create()
1596 if (drv_data->amp_cpu_id == I2S_SP) { in acp_legacy_dai_links_create()
1597 links[i].name = "acp-amp-codec"; in acp_legacy_dai_links_create()
1604 if (!drv_data->amp_codec_id) { in acp_legacy_dai_links_create()
1609 if (drv_data->amp_codec_id == RT1019) { in acp_legacy_dai_links_create()
1614 card->codec_conf = rt1019_conf; in acp_legacy_dai_links_create()
1615 card->num_configs = ARRAY_SIZE(rt1019_conf); in acp_legacy_dai_links_create()
1617 if (drv_data->amp_codec_id == MAX98360A) { in acp_legacy_dai_links_create()
1626 if (drv_data->amp_cpu_id == I2S_HS) { in acp_legacy_dai_links_create()
1627 links[i].name = "acp-amp-codec"; in acp_legacy_dai_links_create()
1631 if (drv_data->platform == REMBRANDT) { in acp_legacy_dai_links_create()
1639 if (!drv_data->amp_codec_id) { in acp_legacy_dai_links_create()
1644 if (drv_data->amp_codec_id == MAX98360A) { in acp_legacy_dai_links_create()
1650 if (drv_data->amp_codec_id == RT1019) { in acp_legacy_dai_links_create()
1655 card->codec_conf = rt1019_conf; in acp_legacy_dai_links_create()
1656 card->num_configs = ARRAY_SIZE(rt1019_conf); in acp_legacy_dai_links_create()
1661 if (drv_data->dmic_cpu_id == DMIC) { in acp_legacy_dai_links_create()
1662 links[i].name = "acp-dmic-codec"; in acp_legacy_dai_links_create()
1664 if (drv_data->dmic_codec_id == DMIC) { in acp_legacy_dai_links_create()
1674 if (drv_data->platform == REMBRANDT) { in acp_legacy_dai_links_create()
1685 card->dai_link = links; in acp_legacy_dai_links_create()
1686 card->num_links = num_links; in acp_legacy_dai_links_create()
1687 card->set_bias_level = acp_rtk_set_bias_level; in acp_legacy_dai_links_create()