Lines Matching +full:codec +full:- +full:analog +full:- +full:controls
1 // SPDX-License-Identifier: GPL-2.0-only
3 * Rockchip machine ASoC driver for boards using a MAX90809 CODEC.
21 #define DRV_NAME "rockchip-snd-max98090"
111 struct snd_soc_dapm_context *dapm = &jack->card->dapm; in rk_jack_event()
167 return -EINVAL; in rk_aif1_hw_params()
173 dev_err(cpu_dai->dev, "Can't set cpu dai clock %d\n", ret); in rk_aif1_hw_params()
180 /* HDMI codec dai does not need to set sysclk. */ in rk_aif1_hw_params()
181 if (!strcmp(rtd->dai_link->name, "HDMI")) in rk_aif1_hw_params()
185 dev_err(codec_dai->dev, "Can't set codec dai clock %d\n", ret); in rk_aif1_hw_params()
198 return snd_pcm_hw_constraint_minmax(substream->runtime, in rk_aif1_startup()
207 SND_SOC_DAILINK_DEFS(analog,
214 DAILINK_COMP_ARRAY(COMP_CODEC(NULL, "i2s-hifi")),
226 struct snd_soc_card *card = runtime->card; in rk_hdmi_init()
227 struct snd_soc_component *component = snd_soc_rtd_to_codec(runtime, 0)->component; in rk_hdmi_init()
234 dev_err(card->dev, "Can't new HDMI Jack %d\n", ret); in rk_hdmi_init()
245 .stream_name = "Analog",
251 SND_SOC_DAILINK_REG(analog),
255 /* HDMI codec dai_link */
268 /* max98090 and HDMI codec dai_link */
272 .stream_name = "Analog",
278 SND_SOC_DAILINK_REG(analog),
299 .name = "ROCKCHIP-I2S",
309 .controls = rk_max98090_controls,
314 .name = "ROCKCHIP-HDMI",
322 .controls = rk_hdmi_controls,
327 .name = "ROCKCHIP-MAX98090-HDMI",
337 .controls = rk_max98090_hdmi_controls,
346 ret = snd_soc_card_jack_new_pins(component->card, "Headset Jack", in rk_98090_headset_init()
364 np, "rockchip,headset-codec", 0); in rk_parse_headset_from_of()
367 "Property 'rockchip,headset-codec' missing/invalid\n"); in rk_parse_headset_from_of()
368 return -EINVAL; in rk_parse_headset_from_of()
377 struct device *dev = &pdev->dev; in snd_rk_mc_probe()
378 struct device_node *np = pdev->dev.of_node; in snd_rk_mc_probe()
383 np_cpu = of_parse_phandle(np, "rockchip,i2s-controller", 0); in snd_rk_mc_probe()
386 dev_err(&pdev->dev, in snd_rk_mc_probe()
387 "Property 'rockchip,i2s-controller missing or invalid\n"); in snd_rk_mc_probe()
388 return -EINVAL; in snd_rk_mc_probe()
392 * Find the card to use based on the presences of audio codec in snd_rk_mc_probe()
393 * and hdmi codec in device property. Set their of_node accordingly. in snd_rk_mc_probe()
395 np_audio = of_parse_phandle(np, "rockchip,audio-codec", 0); in snd_rk_mc_probe()
396 np_hdmi = of_parse_phandle(np, "rockchip,hdmi-codec", 0); in snd_rk_mc_probe()
399 card->dai_link[DAILINK_MAX98090].codecs->of_node = np_audio; in snd_rk_mc_probe()
400 card->dai_link[DAILINK_HDMI].codecs->of_node = np_hdmi; in snd_rk_mc_probe()
401 card->dai_link[DAILINK_MAX98090].cpus->of_node = np_cpu; in snd_rk_mc_probe()
402 card->dai_link[DAILINK_MAX98090].platforms->of_node = np_cpu; in snd_rk_mc_probe()
403 card->dai_link[DAILINK_HDMI].cpus->of_node = np_cpu; in snd_rk_mc_probe()
404 card->dai_link[DAILINK_HDMI].platforms->of_node = np_cpu; in snd_rk_mc_probe()
407 card->dai_link[0].codecs->of_node = np_audio; in snd_rk_mc_probe()
408 card->dai_link[0].cpus->of_node = np_cpu; in snd_rk_mc_probe()
409 card->dai_link[0].platforms->of_node = np_cpu; in snd_rk_mc_probe()
412 card->dai_link[0].codecs->of_node = np_hdmi; in snd_rk_mc_probe()
413 card->dai_link[0].cpus->of_node = np_cpu; in snd_rk_mc_probe()
414 card->dai_link[0].platforms->of_node = np_cpu; in snd_rk_mc_probe()
417 return -EINVAL; in snd_rk_mc_probe()
420 card->dev = dev; in snd_rk_mc_probe()
422 /* Parse headset detection codec. */ in snd_rk_mc_probe()
432 dev_err(&pdev->dev, in snd_rk_mc_probe()
438 ret = devm_snd_soc_register_card(&pdev->dev, card); in snd_rk_mc_probe()
440 dev_err(&pdev->dev, in snd_rk_mc_probe()
449 { .compatible = "rockchip,rockchip-audio-max98090", },
466 MODULE_AUTHOR("jianqun <jay.xu@rock-chips.com>");