Lines Matching +full:hdmi +full:- +full:codec
1 // SPDX-License-Identifier: GPL-2.0-only
3 * Rockchip machine ASoC driver for boards using a MAX90809 CODEC.
23 #define DRV_NAME "rockchip-snd-max98090"
47 SND_SOC_DAPM_LINE("HDMI", NULL)
72 {"HDMI", NULL, "TX"}
94 SOC_DAPM_PIN_SWITCH("HDMI")
113 struct snd_soc_dapm_context *dapm = &jack->card->dapm; in rk_jack_event()
169 return -EINVAL; in rk_aif1_hw_params()
175 dev_err(cpu_dai->dev, "Can't set cpu dai clock %d\n", ret); in rk_aif1_hw_params()
182 /* HDMI codec dai does not need to set sysclk. */ in rk_aif1_hw_params()
183 if (!strcmp(rtd->dai_link->name, "HDMI")) in rk_aif1_hw_params()
187 dev_err(codec_dai->dev, "Can't set codec dai clock %d\n", ret); in rk_aif1_hw_params()
200 return snd_pcm_hw_constraint_minmax(substream->runtime, in rk_aif1_startup()
214 SND_SOC_DAILINK_DEFS(hdmi,
216 DAILINK_COMP_ARRAY(COMP_CODEC(NULL, "i2s-hifi")),
228 struct snd_soc_card *card = runtime->card; in rk_hdmi_init()
229 struct snd_soc_component *component = asoc_rtd_to_codec(runtime, 0)->component; in rk_hdmi_init()
233 ret = snd_soc_card_jack_new(card, "HDMI Jack", SND_JACK_LINEOUT, in rk_hdmi_init()
236 dev_err(card->dev, "Can't new HDMI Jack %d\n", ret); in rk_hdmi_init()
257 /* HDMI codec dai_link */
260 .name = "HDMI",
261 .stream_name = "HDMI",
266 SND_SOC_DAILINK_REG(hdmi),
270 /* max98090 and HDMI codec dai_link */
283 .name = "HDMI",
284 .stream_name = "HDMI",
289 SND_SOC_DAILINK_REG(hdmi),
301 .name = "ROCKCHIP-I2S",
316 .name = "ROCKCHIP-HDMI",
329 .name = "ROCKCHIP-MAX98090-HDMI",
348 ret = snd_soc_card_jack_new_pins(component->card, "Headset Jack", in rk_98090_headset_init()
366 np, "rockchip,headset-codec", 0); in rk_parse_headset_from_of()
369 "Property 'rockchip,headset-codec' missing/invalid\n"); in rk_parse_headset_from_of()
370 return -EINVAL; in rk_parse_headset_from_of()
379 struct device *dev = &pdev->dev; in snd_rk_mc_probe()
380 struct device_node *np = pdev->dev.of_node; in snd_rk_mc_probe()
385 np_cpu = of_parse_phandle(np, "rockchip,i2s-controller", 0); in snd_rk_mc_probe()
388 dev_err(&pdev->dev, in snd_rk_mc_probe()
389 "Property 'rockchip,i2s-controller missing or invalid\n"); in snd_rk_mc_probe()
390 return -EINVAL; in snd_rk_mc_probe()
394 * Find the card to use based on the presences of audio codec in snd_rk_mc_probe()
395 * and hdmi codec in device property. Set their of_node accordingly. in snd_rk_mc_probe()
397 np_audio = of_parse_phandle(np, "rockchip,audio-codec", 0); in snd_rk_mc_probe()
398 np_hdmi = of_parse_phandle(np, "rockchip,hdmi-codec", 0); in snd_rk_mc_probe()
401 card->dai_link[DAILINK_MAX98090].codecs->of_node = np_audio; in snd_rk_mc_probe()
402 card->dai_link[DAILINK_HDMI].codecs->of_node = np_hdmi; in snd_rk_mc_probe()
403 card->dai_link[DAILINK_MAX98090].cpus->of_node = np_cpu; in snd_rk_mc_probe()
404 card->dai_link[DAILINK_MAX98090].platforms->of_node = np_cpu; in snd_rk_mc_probe()
405 card->dai_link[DAILINK_HDMI].cpus->of_node = np_cpu; in snd_rk_mc_probe()
406 card->dai_link[DAILINK_HDMI].platforms->of_node = np_cpu; in snd_rk_mc_probe()
409 card->dai_link[0].codecs->of_node = np_audio; in snd_rk_mc_probe()
410 card->dai_link[0].cpus->of_node = np_cpu; in snd_rk_mc_probe()
411 card->dai_link[0].platforms->of_node = np_cpu; in snd_rk_mc_probe()
414 card->dai_link[0].codecs->of_node = np_hdmi; in snd_rk_mc_probe()
415 card->dai_link[0].cpus->of_node = np_cpu; in snd_rk_mc_probe()
416 card->dai_link[0].platforms->of_node = np_cpu; in snd_rk_mc_probe()
419 return -EINVAL; in snd_rk_mc_probe()
422 card->dev = dev; in snd_rk_mc_probe()
424 /* Parse headset detection codec. */ in snd_rk_mc_probe()
434 dev_err(&pdev->dev, in snd_rk_mc_probe()
440 ret = devm_snd_soc_register_card(&pdev->dev, card); in snd_rk_mc_probe()
442 dev_err(&pdev->dev, in snd_rk_mc_probe()
451 { .compatible = "rockchip,rockchip-audio-max98090", },
468 MODULE_AUTHOR("jianqun <jay.xu@rock-chips.com>");