Lines Matching +full:dmic +full:- +full:delay +full:- +full:ms
1 // SPDX-License-Identifier: GPL-2.0-only
11 #include <linux/delay.h>
24 #define DRV_NAME "rk3399-gru-sound"
77 dev_err(rtd->card->dev, "%s() error setting sysclk to %u: %d\n",
99 dev_err(rtd->card->dev, "Can't set cpu clock out %d\n", ret);
106 dev_err(rtd->card->dev, "%s() error setting sysclk to %u: %d\n",
111 /* Wait for DMIC stable */
143 return -EINVAL;
149 dev_err(codec_dai->dev, "Can't set cpu clock out %d\n", ret);
156 dev_err(codec_dai->dev, "Can't set codec clock in %d\n", ret);
162 dev_err(codec_dai->dev, "Can't set pll sysclk mclk %d\n", ret);
173 struct snd_soc_component *component = snd_soc_rtd_to_codec(rtd, 0)->component;
174 struct snd_soc_card *card = rtd->card;
181 dev_err(card->dev, "Can't create DP Jack %d\n", ret);
190 struct snd_soc_component *component = snd_soc_rtd_to_codec(rtd, 0)->component;
198 dev_err(codec_dai->dev, "Init can't set codec clock in %d\n", ret);
204 dev_err(codec_dai->dev, "Init can't set pll sysclk mclk %d\n", ret);
209 ret = snd_soc_card_jack_new_pins(rtd->card, "Headset Jack",
218 dev_err(rtd->card->dev, "New Headset Jack failed! (%d)\n", ret);
247 dev_err(rtd->card->dev, "%s() error setting sysclk to %u: %d\n",
252 /* Wait for DMIC stable */
260 struct snd_pcm_runtime *runtime = substream->runtime;
262 runtime->hw.formats = SNDRV_PCM_FMTBIT_S16_LE;
288 .name = "rk3399-gru-sound",
307 DAILINK_COMP_ARRAY(COMP_CODEC(NULL, "spdif-hifi")),
312 DAILINK_COMP_ARRAY(COMP_CODEC(NULL, "da7219-hifi")),
315 SND_SOC_DAILINK_DEFS(dmic,
317 DAILINK_COMP_ARRAY(COMP_CODEC(NULL, "dmic-hifi")),
327 DAILINK_COMP_ARRAY(COMP_CODEC(NULL, "rt5514-aif1")),
355 .name = "DMIC",
356 .stream_name = "DMIC PCM",
360 SND_SOC_DAILINK_REG(dmic),
404 {"DMic", NULL, "Int Mic"},
454 .compatible = "rockchip,rk3399-cdn-dp",
460 .compatible = "dmic-codec",
495 return -1;
508 card->dai_link = devm_kzalloc(dev, sizeof(rockchip_dais),
510 if (!card->dai_link)
511 return -ENOMEM;
519 return -ENOMEM;
520 card->dapm_routes = routes;
522 np_cpu0 = of_parse_phandle(dev->of_node, "rockchip,cpu", 0);
523 np_cpu1 = of_parse_phandle(dev->of_node, "rockchip,cpu", 1);
525 card->num_dapm_routes = 0;
526 card->num_links = 0;
528 np_codec = of_parse_phandle(dev->of_node,
555 return -EINVAL;
558 dai = &card->dai_link[card->num_links++];
561 if (!dai->codecs->name)
562 dai->codecs->of_node = np_codec;
563 dai->platforms->of_node = np_cpu;
564 dai->cpus->of_node = np_cpu;
566 if (card->num_dapm_routes + rockchip_routes[index].num_routes >
569 return -EINVAL;
572 memcpy(routes + card->num_dapm_routes,
575 card->num_dapm_routes += rockchip_routes[index].num_routes;
586 ret = rockchip_sound_of_parse_dais(&pdev->dev, card);
588 dev_err(&pdev->dev, "Failed to parse dais: %d\n", ret);
592 /* Set DMIC wakeup delay */
593 ret = device_property_read_u32(&pdev->dev, "dmic-wakeup-delay-ms",
597 dev_dbg(&pdev->dev,
598 "no optional property 'dmic-wakeup-delay-ms' found, default: no delay\n");
601 card->dev = &pdev->dev;
602 return devm_snd_soc_register_card(&pdev->dev, card);
606 { .compatible = "rockchip,rk3399-gru-sound", },
623 MODULE_AUTHOR("Xing Zheng <zhengxing@rock-chips.com>");