Lines Matching +full:spk +full:- +full:shutdown
1 // SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause)
19 #include <sound/soc-dapm.h>
28 #include "acp-mach.h"
59 clk_set_rate(drvdata->wclk, 48000); in acp_clk_enable()
60 clk_set_rate(drvdata->bclk, 48000 * 64); in acp_clk_enable()
62 return clk_prepare_enable(drvdata->wclk); in acp_clk_enable()
67 DAILINK_COMP_ARRAY(COMP_CODEC("i2c-10EC5682:00", "rt5682-aif1")));
78 struct snd_soc_card *card = rtd->card; in acp_card_rt5682_init()
79 struct acp_card_drvdata *drvdata = card->drvdata; in acp_card_rt5682_init()
81 struct snd_soc_component *component = codec_dai->component; in acp_card_rt5682_init()
84 dev_info(rtd->dev, "codec dai name = %s\n", codec_dai->name); in acp_card_rt5682_init()
86 if (drvdata->hs_codec_id != RT5682) in acp_card_rt5682_init()
87 return -EINVAL; in acp_card_rt5682_init()
92 dev_err(rtd->card->dev, "Failed to set dai fmt: %d\n", ret); in acp_card_rt5682_init()
99 dev_err(rtd->dev, "Failed to set codec PLL: %d\n", ret); in acp_card_rt5682_init()
106 dev_err(rtd->dev, "Failed to set codec SYSCLK: %d\n", ret); in acp_card_rt5682_init()
113 dev_err(rtd->dev, "Failed to set rt5682 tdm bclk ratio: %d\n", ret); in acp_card_rt5682_init()
117 drvdata->wclk = clk_get(component->dev, "rt5682-dai-wclk"); in acp_card_rt5682_init()
118 drvdata->bclk = clk_get(component->dev, "rt5682-dai-bclk"); in acp_card_rt5682_init()
126 dev_err(card->dev, "HP jack creation failed %d\n", ret); in acp_card_rt5682_init()
137 dev_err(rtd->dev, "Headset Jack call-back failed: %d\n", ret); in acp_card_rt5682_init()
141 return snd_soc_dapm_add_routes(&rtd->card->dapm, rt5682_map, ARRAY_SIZE(rt5682_map)); in acp_card_rt5682_init()
146 struct snd_pcm_runtime *runtime = substream->runtime; in acp_card_hs_startup()
148 struct snd_soc_card *card = rtd->card; in acp_card_hs_startup()
149 struct acp_card_drvdata *drvdata = card->drvdata; in acp_card_hs_startup()
154 if (drvdata->soc_mclk) in acp_card_hs_startup()
161 dev_err(rtd->card->dev, "Failed to set dai fmt: %d\n", ret); in acp_card_hs_startup()
165 runtime->hw.channels_max = DUAL_CHANNEL; in acp_card_hs_startup()
170 if (!drvdata->soc_mclk) { in acp_card_hs_startup()
173 dev_err(rtd->card->dev, "Failed to enable HS clk: %d\n", ret); in acp_card_hs_startup()
184 struct snd_soc_card *card = rtd->card; in acp_card_shutdown()
185 struct acp_card_drvdata *drvdata = card->drvdata; in acp_card_shutdown()
187 if (!drvdata->soc_mclk) in acp_card_shutdown()
188 clk_disable_unprepare(drvdata->wclk); in acp_card_shutdown()
193 .shutdown = acp_card_shutdown,
198 DAILINK_COMP_ARRAY(COMP_CODEC("i2c-RTL5682:00", "rt5682s-aif1")));
208 struct snd_soc_card *card = rtd->card; in acp_card_rt5682s_init()
209 struct acp_card_drvdata *drvdata = card->drvdata; in acp_card_rt5682s_init()
211 struct snd_soc_component *component = codec_dai->component; in acp_card_rt5682s_init()
215 dev_info(rtd->dev, "codec dai name = %s\n", codec_dai->name); in acp_card_rt5682s_init()
217 if (drvdata->hs_codec_id != RT5682S) in acp_card_rt5682s_init()
218 return -EINVAL; in acp_card_rt5682s_init()
220 if (drvdata->soc_mclk) in acp_card_rt5682s_init()
227 dev_err(rtd->card->dev, "Failed to set dai fmt: %d\n", ret); in acp_card_rt5682s_init()
234 dev_err(rtd->dev, "Failed to set codec PLL: %d\n", ret); in acp_card_rt5682s_init()
241 dev_err(rtd->dev, "Failed to set codec SYSCLK: %d\n", ret); in acp_card_rt5682s_init()
248 dev_err(rtd->dev, "Failed to set rt5682 tdm bclk ratio: %d\n", ret); in acp_card_rt5682s_init()
252 if (!drvdata->soc_mclk) { in acp_card_rt5682s_init()
253 drvdata->wclk = clk_get(component->dev, "rt5682-dai-wclk"); in acp_card_rt5682s_init()
254 drvdata->bclk = clk_get(component->dev, "rt5682-dai-bclk"); in acp_card_rt5682s_init()
263 dev_err(card->dev, "HP jack creation failed %d\n", ret); in acp_card_rt5682s_init()
274 dev_err(rtd->dev, "Headset Jack call-back failed: %d\n", ret); in acp_card_rt5682s_init()
278 return snd_soc_dapm_add_routes(&rtd->card->dapm, rt5682s_map, ARRAY_SIZE(rt5682s_map)); in acp_card_rt5682s_init()
283 .shutdown = acp_card_shutdown,
298 struct snd_pcm_runtime *runtime = substream->runtime; in acp_card_dmic_startup()
314 DAILINK_COMP_ARRAY(COMP_CODEC("i2c-10EC1019:00", "rt1019-aif"),
315 COMP_CODEC("i2c-10EC1019:01", "rt1019-aif")));
318 { "Left Spk", NULL, "Left SPO" },
319 { "Right Spk", NULL, "Right SPO" },
324 .dlc = COMP_CODEC_CONF("i2c-10EC1019:01"),
328 .dlc = COMP_CODEC_CONF("i2c-10EC1019:00"),
335 struct snd_soc_card *card = rtd->card; in acp_card_rt1019_init()
336 struct acp_card_drvdata *drvdata = card->drvdata; in acp_card_rt1019_init()
338 if (drvdata->amp_codec_id != RT1019) in acp_card_rt1019_init()
339 return -EINVAL; in acp_card_rt1019_init()
341 return snd_soc_dapm_add_routes(&rtd->card->dapm, rt1019_map_lr, in acp_card_rt1019_init()
348 struct snd_soc_pcm_runtime *rtd = substream->private_data; in acp_card_rt1019_hw_params()
349 struct snd_soc_card *card = rtd->card; in acp_card_rt1019_hw_params()
350 struct acp_card_drvdata *drvdata = card->drvdata; in acp_card_rt1019_hw_params()
356 if (drvdata->amp_codec_id != RT1019) in acp_card_rt1019_hw_params()
357 return -EINVAL; in acp_card_rt1019_hw_params()
360 if (strcmp(codec_dai->name, "rt1019-aif")) in acp_card_rt1019_hw_params()
379 struct snd_pcm_runtime *runtime = substream->runtime; in acp_card_amp_startup()
381 struct snd_soc_card *card = rtd->card; in acp_card_amp_startup()
382 struct acp_card_drvdata *drvdata = card->drvdata; in acp_card_amp_startup()
385 runtime->hw.channels_max = DUAL_CHANNEL; in acp_card_amp_startup()
391 if (!drvdata->soc_mclk) { in acp_card_amp_startup()
394 dev_err(rtd->card->dev, "Failed to enable AMP clk: %d\n", ret); in acp_card_amp_startup()
403 .shutdown = acp_card_shutdown,
412 {"Spk", NULL, "Speaker"},
417 struct snd_soc_card *card = rtd->card; in acp_card_maxim_init()
418 struct acp_card_drvdata *drvdata = card->drvdata; in acp_card_maxim_init()
420 if (drvdata->amp_codec_id != MAX98360A) in acp_card_maxim_init()
421 return -EINVAL; in acp_card_maxim_init()
423 return snd_soc_dapm_add_routes(&rtd->card->dapm, max98360a_map, in acp_card_maxim_init()
429 .shutdown = acp_card_shutdown,
434 DAILINK_COMP_ARRAY(COMP_CODEC("i2c-10508825:00", "nau8825-hifi")));
443 struct snd_soc_card *card = rtd->card; in acp_card_nau8825_init()
444 struct acp_card_drvdata *drvdata = card->drvdata; in acp_card_nau8825_init()
446 struct snd_soc_component *component = codec_dai->component; in acp_card_nau8825_init()
450 dev_info(rtd->dev, "codec dai name = %s\n", codec_dai->name); in acp_card_nau8825_init()
452 if (drvdata->hs_codec_id != NAU8825) in acp_card_nau8825_init()
453 return -EINVAL; in acp_card_nau8825_init()
455 if (drvdata->soc_mclk) in acp_card_nau8825_init()
462 dev_err(rtd->card->dev, "Failed to set dai fmt: %d\n", ret); in acp_card_nau8825_init()
471 dev_err(card->dev, "HP jack creation failed %d\n", ret); in acp_card_nau8825_init()
482 dev_err(rtd->dev, "Headset Jack call-back failed: %d\n", ret); in acp_card_nau8825_init()
486 return snd_soc_dapm_add_routes(&rtd->card->dapm, nau8825_map, ARRAY_SIZE(nau8825_map)); in acp_card_nau8825_init()
499 dev_err(rtd->dev, "snd_soc_dai_set_sysclk err = %d\n", ret); in acp_nau8825_hw_params()
504 dev_err(rtd->dev, "can't set FLL: %d\n", ret); in acp_nau8825_hw_params()
513 struct snd_pcm_runtime *runtime = substream->runtime; in acp_nau8825_startup()
515 runtime->hw.channels_max = 2; in acp_nau8825_startup()
519 runtime->hw.formats = SNDRV_PCM_FMTBIT_S16_LE; in acp_nau8825_startup()
532 DAILINK_COMP_ARRAY(COMP_CODEC("dmic-codec", "dmic-hifi")));
537 .name = "snd-soc-dummy",
538 .dai_name = "snd-soc-dummy-dai",
561 DAILINK_COMP_ARRAY(COMP_CPU("acp-i2s-sp")));
563 DAILINK_COMP_ARRAY(COMP_CPU("acp-i2s-hs")));
565 DAILINK_COMP_ARRAY(COMP_CPU("acp-sof-sp")));
567 DAILINK_COMP_ARRAY(COMP_CPU("acp-sof-hs")));
569 DAILINK_COMP_ARRAY(COMP_CPU("acp-sof-dmic")));
571 DAILINK_COMP_ARRAY(COMP_CPU("acp-pdm-dmic")));
576 struct device *dev = card->dev; in acp_sofdsp_dai_links_create()
577 struct acp_card_drvdata *drv_data = card->drvdata; in acp_sofdsp_dai_links_create()
580 if (drv_data->hs_cpu_id) in acp_sofdsp_dai_links_create()
582 if (drv_data->amp_cpu_id) in acp_sofdsp_dai_links_create()
584 if (drv_data->dmic_cpu_id) in acp_sofdsp_dai_links_create()
589 return -ENOMEM; in acp_sofdsp_dai_links_create()
591 if (drv_data->hs_cpu_id == I2S_SP) { in acp_sofdsp_dai_links_create()
592 links[i].name = "acp-headset-codec"; in acp_sofdsp_dai_links_create()
602 if (!drv_data->hs_codec_id) { in acp_sofdsp_dai_links_create()
607 if (drv_data->hs_codec_id == RT5682) { in acp_sofdsp_dai_links_create()
613 if (drv_data->hs_codec_id == RT5682S) { in acp_sofdsp_dai_links_create()
622 if (drv_data->hs_cpu_id == I2S_HS) { in acp_sofdsp_dai_links_create()
623 links[i].name = "acp-headset-codec"; in acp_sofdsp_dai_links_create()
633 if (!drv_data->hs_codec_id) { in acp_sofdsp_dai_links_create()
638 if (drv_data->hs_codec_id == NAU8825) { in acp_sofdsp_dai_links_create()
644 if (drv_data->hs_codec_id == RT5682S) { in acp_sofdsp_dai_links_create()
653 if (drv_data->amp_cpu_id == I2S_SP) { in acp_sofdsp_dai_links_create()
654 links[i].name = "acp-amp-codec"; in acp_sofdsp_dai_links_create()
663 if (!drv_data->amp_codec_id) { in acp_sofdsp_dai_links_create()
668 if (drv_data->amp_codec_id == RT1019) { in acp_sofdsp_dai_links_create()
673 card->codec_conf = rt1019_conf; in acp_sofdsp_dai_links_create()
674 card->num_configs = ARRAY_SIZE(rt1019_conf); in acp_sofdsp_dai_links_create()
676 if (drv_data->amp_codec_id == MAX98360A) { in acp_sofdsp_dai_links_create()
685 if (drv_data->amp_cpu_id == I2S_HS) { in acp_sofdsp_dai_links_create()
686 links[i].name = "acp-amp-codec"; in acp_sofdsp_dai_links_create()
695 if (!drv_data->amp_codec_id) { in acp_sofdsp_dai_links_create()
700 if (drv_data->amp_codec_id == MAX98360A) { in acp_sofdsp_dai_links_create()
706 if (drv_data->amp_codec_id == RT1019) { in acp_sofdsp_dai_links_create()
711 card->codec_conf = rt1019_conf; in acp_sofdsp_dai_links_create()
712 card->num_configs = ARRAY_SIZE(rt1019_conf); in acp_sofdsp_dai_links_create()
717 if (drv_data->dmic_cpu_id == DMIC) { in acp_sofdsp_dai_links_create()
718 links[i].name = "acp-dmic-codec"; in acp_sofdsp_dai_links_create()
731 card->dai_link = links; in acp_sofdsp_dai_links_create()
732 card->num_links = num_links; in acp_sofdsp_dai_links_create()
741 struct device *dev = card->dev; in acp_legacy_dai_links_create()
742 struct acp_card_drvdata *drv_data = card->drvdata; in acp_legacy_dai_links_create()
745 if (drv_data->hs_cpu_id) in acp_legacy_dai_links_create()
747 if (drv_data->amp_cpu_id) in acp_legacy_dai_links_create()
749 if (drv_data->dmic_cpu_id) in acp_legacy_dai_links_create()
754 return -ENOMEM; in acp_legacy_dai_links_create()
756 if (drv_data->hs_cpu_id == I2S_SP) { in acp_legacy_dai_links_create()
757 links[i].name = "acp-headset-codec"; in acp_legacy_dai_links_create()
765 if (!drv_data->hs_codec_id) { in acp_legacy_dai_links_create()
770 if (drv_data->hs_codec_id == RT5682) { in acp_legacy_dai_links_create()
776 if (drv_data->hs_codec_id == RT5682S) { in acp_legacy_dai_links_create()
785 if (drv_data->hs_cpu_id == I2S_HS) { in acp_legacy_dai_links_create()
786 links[i].name = "acp-headset-codec"; in acp_legacy_dai_links_create()
790 if (drv_data->platform == REMBRANDT) { in acp_legacy_dai_links_create()
799 if (!drv_data->hs_codec_id) { in acp_legacy_dai_links_create()
804 if (drv_data->hs_codec_id == NAU8825) { in acp_legacy_dai_links_create()
810 if (drv_data->hs_codec_id == RT5682S) { in acp_legacy_dai_links_create()
819 if (drv_data->amp_cpu_id == I2S_SP) { in acp_legacy_dai_links_create()
820 links[i].name = "acp-amp-codec"; in acp_legacy_dai_links_create()
827 if (!drv_data->amp_codec_id) { in acp_legacy_dai_links_create()
832 if (drv_data->amp_codec_id == RT1019) { in acp_legacy_dai_links_create()
837 card->codec_conf = rt1019_conf; in acp_legacy_dai_links_create()
838 card->num_configs = ARRAY_SIZE(rt1019_conf); in acp_legacy_dai_links_create()
840 if (drv_data->amp_codec_id == MAX98360A) { in acp_legacy_dai_links_create()
849 if (drv_data->amp_cpu_id == I2S_HS) { in acp_legacy_dai_links_create()
850 links[i].name = "acp-amp-codec"; in acp_legacy_dai_links_create()
854 if (drv_data->platform == REMBRANDT) { in acp_legacy_dai_links_create()
862 if (!drv_data->amp_codec_id) { in acp_legacy_dai_links_create()
867 if (drv_data->amp_codec_id == MAX98360A) { in acp_legacy_dai_links_create()
873 if (drv_data->amp_codec_id == RT1019) { in acp_legacy_dai_links_create()
878 card->codec_conf = rt1019_conf; in acp_legacy_dai_links_create()
879 card->num_configs = ARRAY_SIZE(rt1019_conf); in acp_legacy_dai_links_create()
884 if (drv_data->dmic_cpu_id == DMIC) { in acp_legacy_dai_links_create()
885 links[i].name = "acp-dmic-codec"; in acp_legacy_dai_links_create()
887 if (drv_data->dmic_codec_id == DMIC) { in acp_legacy_dai_links_create()
897 if (drv_data->platform == REMBRANDT) { in acp_legacy_dai_links_create()
908 card->dai_link = links; in acp_legacy_dai_links_create()
909 card->num_links = num_links; in acp_legacy_dai_links_create()