• Home
  • Raw
  • Download

Lines Matching +full:codec +full:- +full:mclk2

1 // SPDX-License-Identifier: GPL-2.0+
17 #include <sound/soc-dapm.h>
42 struct snd_soc_card *card = rtd->card; in midas_start_fll1()
49 rate = priv->fll1_rate; in midas_start_fll1()
57 if (rate != priv->fll1_rate && priv->fll1_rate) { in midas_start_fll1()
58 /* while reconfiguring, switch to MCLK2 for SYSCLK */ in midas_start_fll1()
62 dev_err(card->dev, "Unable to switch to MCLK2: %d\n", ret); in midas_start_fll1()
70 dev_err(card->dev, "Failed to set FLL1 rate: %d\n", ret); in midas_start_fll1()
73 priv->fll1_rate = rate; in midas_start_fll1()
76 priv->fll1_rate, SND_SOC_CLOCK_IN); in midas_start_fll1()
78 dev_err(card->dev, "Failed to set SYSCLK source: %d\n", ret); in midas_start_fll1()
85 dev_err(card->dev, "Failed to set OPCLK source: %d\n", ret); in midas_start_fll1()
94 struct snd_soc_card *card = rtd->card; in midas_stop_fll1()
102 dev_err(card->dev, "Unable to switch to MCLK2: %d\n", ret); in midas_stop_fll1()
108 dev_err(card->dev, "Unable to stop FLL1: %d\n", ret); in midas_stop_fll1()
112 priv->fll1_rate = 0; in midas_stop_fll1()
120 struct snd_soc_pcm_runtime *rtd = substream->private_data; in midas_aif1_hw_params()
143 struct snd_soc_component *codec = snd_soc_dapm_to_component(w->dapm); in midas_ext_spkmode() local
148 ret = snd_soc_component_update_bits(codec, WM8994_SPKOUT_MIXERS, in midas_ext_spkmode()
153 ret = snd_soc_component_update_bits(codec, WM8994_SPKOUT_MIXERS, in midas_ext_spkmode()
165 struct snd_soc_card *card = w->dapm->card; in midas_mic_bias()
170 return regulator_enable(priv->reg_mic_bias); in midas_mic_bias()
172 return regulator_disable(priv->reg_mic_bias); in midas_mic_bias()
181 struct snd_soc_card *card = w->dapm->card; in midas_submic_bias()
186 return regulator_enable(priv->reg_submic_bias); in midas_submic_bias()
188 return regulator_disable(priv->reg_submic_bias); in midas_submic_bias()
197 struct snd_soc_card *card = w->dapm->card; in midas_fm_set()
200 if (!priv->gpio_fm_sel) in midas_fm_set()
205 gpiod_set_value_cansleep(priv->gpio_fm_sel, 1); in midas_fm_set()
208 gpiod_set_value_cansleep(priv->gpio_fm_sel, 0); in midas_fm_set()
218 struct snd_soc_card *card = w->dapm->card; in midas_line_set()
221 if (!priv->gpio_lineout_sel) in midas_line_set()
226 gpiod_set_value_cansleep(priv->gpio_lineout_sel, 1); in midas_line_set()
229 gpiod_set_value_cansleep(priv->gpio_lineout_sel, 0); in midas_line_set()
273 &card->dai_link[0]); in midas_set_bias_level()
276 if (dapm->dev != aif1_dai->dev) in midas_set_bias_level()
294 &card->dai_link[0]); in midas_late_probe()
299 /* Use MCLK2 as SYSCLK for boot */ in midas_late_probe()
303 dev_err(aif1_dai->dev, "Failed to switch to MCLK2: %d\n", ret); in midas_late_probe()
311 &priv->headset_jack, NULL, 0); in midas_late_probe()
315 wm8958_mic_detect(aif1_dai->component, &priv->headset_jack, in midas_late_probe()
362 .name = "midas-audio",
367 DAILINK_COMP_ARRAY(COMP_CODEC(NULL, "wm8994-aif1")),
372 DAILINK_COMP_ARRAY(COMP_CODEC(NULL, "wm8994-aif2")),
377 DAILINK_COMP_ARRAY(COMP_CODEC(NULL, "wm8994-aif3")),
419 struct device_node *cpu = NULL, *codec = NULL; in midas_probe() local
421 struct device *dev = &pdev->dev; in midas_probe()
428 return -ENOMEM; in midas_probe()
431 card->dev = dev; in midas_probe()
433 priv->reg_mic_bias = devm_regulator_get(dev, "mic-bias"); in midas_probe()
434 if (IS_ERR(priv->reg_mic_bias)) { in midas_probe()
436 return PTR_ERR(priv->reg_mic_bias); in midas_probe()
439 priv->reg_submic_bias = devm_regulator_get(dev, "submic-bias"); in midas_probe()
440 if (IS_ERR(priv->reg_submic_bias)) { in midas_probe()
442 return PTR_ERR(priv->reg_submic_bias); in midas_probe()
445 priv->gpio_fm_sel = devm_gpiod_get_optional(dev, "fm-sel", GPIOD_OUT_HIGH); in midas_probe()
446 if (IS_ERR(priv->gpio_fm_sel)) { in midas_probe()
448 return PTR_ERR(priv->gpio_fm_sel); in midas_probe()
451 priv->gpio_lineout_sel = devm_gpiod_get_optional(dev, "lineout-sel", in midas_probe()
453 if (IS_ERR(priv->gpio_lineout_sel)) { in midas_probe()
455 return PTR_ERR(priv->gpio_lineout_sel); in midas_probe()
464 ret = snd_soc_of_parse_audio_routing(card, "samsung,audio-routing"); in midas_probe()
470 cpu = of_get_child_by_name(dev->of_node, "cpu"); in midas_probe()
472 return -EINVAL; in midas_probe()
474 codec = of_get_child_by_name(dev->of_node, "codec"); in midas_probe()
475 if (!codec) { in midas_probe()
477 return -EINVAL; in midas_probe()
480 cpu_dai_node = of_parse_phandle(cpu, "sound-dai", 0); in midas_probe()
483 dev_err(dev, "parsing cpu/sound-dai failed\n"); in midas_probe()
484 of_node_put(codec); in midas_probe()
485 return -EINVAL; in midas_probe()
488 codec_dai_node = of_parse_phandle(codec, "sound-dai", 0); in midas_probe()
489 of_node_put(codec); in midas_probe()
491 dev_err(dev, "audio-codec property invalid/missing\n"); in midas_probe()
492 ret = -EINVAL; in midas_probe()
497 dai_link->codecs->of_node = codec_dai_node; in midas_probe()
498 dai_link->cpus->of_node = cpu_dai_node; in midas_probe()
499 dai_link->platforms->of_node = cpu_dai_node; in midas_probe()
525 { .compatible = "samsung,midas-audio" },
532 .name = "midas-audio",