Lines Matching refs:rtd

74 	struct snd_soc_pcm_runtime *rtd = dev_get_drvdata(dev);
76 return sprintf(buf, "%ld\n", rtd->pmdown_time);
83 struct snd_soc_pcm_runtime *rtd = dev_get_drvdata(dev);
86 ret = kstrtol(buf, 10, &rtd->pmdown_time);
104 struct snd_soc_pcm_runtime *rtd = dev_get_drvdata(dev);
106 if (!rtd)
111 return rtd->num_codecs ? attr->mode : 0; /* enabled only with codec */
261 static int snd_soc_rtd_add_component(struct snd_soc_pcm_runtime *rtd,
267 for_each_rtd_components(rtd, i, comp) {
274 rtd->components[rtd->num_components] = component;
275 rtd->num_components++;
280 struct snd_soc_component *snd_soc_rtdcom_lookup(struct snd_soc_pcm_runtime *rtd,
292 * snd_soc_rtdcom_lookup() will find component from rtd by using
295 * to 1 rtd, this function will return 1st found component.
297 for_each_rtd_components(rtd, i, component) {
350 struct snd_soc_pcm_runtime *rtd;
352 for_each_card_rtds(card, rtd) {
353 if (rtd->dai_link == dai_link)
354 return rtd;
356 dev_dbg(card->dev, "ASoC: failed to find rtd %s\n", dai_link->name);
366 void snd_soc_close_delayed_work(struct snd_soc_pcm_runtime *rtd)
368 struct snd_soc_dai *codec_dai = asoc_rtd_to_codec(rtd, 0);
371 mutex_lock_nested(&rtd->card->pcm_mutex, rtd->card->pcm_subclass);
373 dev_dbg(rtd->dev,
378 rtd->pop_wait ? "yes" : "no");
381 if (rtd->pop_wait == 1) {
382 rtd->pop_wait = 0;
383 snd_soc_dapm_stream_event(rtd, playback,
387 mutex_unlock(&rtd->card->pcm_mutex);
393 /* "dev" means "rtd->dev" */
397 static void soc_free_pcm_runtime(struct snd_soc_pcm_runtime *rtd)
399 if (!rtd)
402 list_del(&rtd->list);
404 if (delayed_work_pending(&rtd->delayed_work))
405 flush_delayed_work(&rtd->delayed_work);
406 snd_soc_pcm_component_free(rtd);
409 * we don't need to call kfree() for rtd->dev
413 * We don't need rtd->dev NULL check, because
414 * it is alloced *before* rtd.
418 device_unregister(rtd->dev);
422 struct snd_soc_pcm_runtime *rtd =
426 if (rtd->close_delayed_work_func)
427 rtd->close_delayed_work_func(rtd);
433 struct snd_soc_pcm_runtime *rtd;
440 * for rtd->dev
458 * for rtd
460 rtd = devm_kzalloc(dev,
461 sizeof(*rtd) +
466 if (!rtd)
469 rtd->dev = dev;
470 INIT_LIST_HEAD(&rtd->list);
472 INIT_LIST_HEAD(&rtd->dpcm[stream].be_clients);
473 INIT_LIST_HEAD(&rtd->dpcm[stream].fe_clients);
475 dev_set_drvdata(dev, rtd);
476 INIT_DELAYED_WORK(&rtd->delayed_work, close_delayed_work);
479 * for rtd->dais
481 rtd->dais = devm_kcalloc(dev, dai_link->num_cpus + dai_link->num_codecs,
484 if (!rtd->dais)
495 rtd->num_cpus = dai_link->num_cpus;
496 rtd->num_codecs = dai_link->num_codecs;
497 rtd->card = card;
498 rtd->dai_link = dai_link;
499 rtd->num = card->num_rtd++;
502 list_add_tail(&rtd->list, &card->rtd_list);
508 return rtd;
511 soc_free_pcm_runtime(rtd);
517 struct snd_soc_pcm_runtime *rtd;
519 for_each_card_rtds(card, rtd)
520 flush_delayed_work(&rtd->delayed_work);
529 struct snd_soc_pcm_runtime *rtd;
547 for_each_card_rtds(card, rtd) {
550 if (rtd->dai_link->ignore_suspend)
553 for_each_rtd_dais(rtd, i, dai) {
560 for_each_card_rtds(card, rtd) {
561 if (rtd->dai_link->ignore_suspend)
564 snd_pcm_suspend_all(rtd->pcm);
572 for_each_card_rtds(card, rtd) {
575 if (rtd->dai_link->ignore_suspend)
579 snd_soc_dapm_stream_event(rtd, stream,
588 for_each_card_rtds(card, rtd) {
590 if (rtd->dai_link->ignore_suspend)
593 for_each_rtd_components(rtd, i, component) {
652 struct snd_soc_pcm_runtime *rtd;
673 for_each_card_rtds(card, rtd) {
676 if (rtd->dai_link->ignore_suspend)
680 snd_soc_dapm_stream_event(rtd, stream,
685 for_each_card_rtds(card, rtd) {
689 if (rtd->dai_link->ignore_suspend)
692 for_each_rtd_dais(rtd, i, dai) {
954 * @rtd: The pcm_runtime to remove
959 struct snd_soc_pcm_runtime *rtd)
964 snd_soc_link_exit(rtd);
969 snd_soc_card_remove_dai_link(card, rtd->dai_link);
971 soc_free_pcm_runtime(rtd);
989 struct snd_soc_pcm_runtime *rtd;
1012 rtd = soc_new_pcm_runtime(card, dai_link);
1013 if (!rtd)
1017 asoc_rtd_to_cpu(rtd, i) = snd_soc_find_dai(cpu);
1018 if (!asoc_rtd_to_cpu(rtd, i)) {
1023 snd_soc_rtd_add_component(rtd, asoc_rtd_to_cpu(rtd, i)->component);
1028 asoc_rtd_to_codec(rtd, i) = snd_soc_find_dai(codec);
1029 if (!asoc_rtd_to_codec(rtd, i)) {
1035 snd_soc_rtd_add_component(rtd, asoc_rtd_to_codec(rtd, i)->component);
1044 snd_soc_rtd_add_component(rtd, component);
1051 snd_soc_remove_pcm_runtime(card, rtd);
1057 struct snd_soc_pcm_runtime *rtd)
1059 struct snd_soc_dai_link *dai_link = rtd->dai_link;
1060 struct snd_soc_dai *cpu_dai = asoc_rtd_to_cpu(rtd, 0);
1065 rtd->pmdown_time = pmdown_time;
1068 ret = snd_soc_link_init(rtd);
1073 ret = snd_soc_runtime_set_dai_fmt(rtd, dai_link->dai_fmt);
1079 soc_dpcm_debugfs_add(rtd);
1081 num = rtd->num;
1086 * device number and then use rtd + a base offset of the BEs.
1088 for_each_rtd_components(rtd, i, component) {
1092 if (rtd->dai_link->no_pcm)
1095 num = rtd->dai_link->id;
1099 ret = snd_soc_dai_compress_new(cpu_dai, rtd, num);
1108 ret = soc_new_pcm(rtd, num);
1115 return snd_soc_pcm_dai_new(rtd);
1272 struct snd_soc_pcm_runtime *rtd;
1276 for_each_card_rtds(card, rtd) {
1277 /* remove all rtd connected DAIs in good order */
1278 snd_soc_pcm_dai_remove(rtd, order);
1285 struct snd_soc_pcm_runtime *rtd;
1289 for_each_card_rtds(card, rtd) {
1293 card->name, rtd->num, order);
1295 /* probe all rtd connected DAIs in good order */
1296 ret = snd_soc_pcm_dai_probe(rtd, order);
1308 struct snd_soc_pcm_runtime *rtd;
1312 for_each_card_rtds(card, rtd) {
1313 for_each_rtd_components(rtd, i, component) {
1326 struct snd_soc_pcm_runtime *rtd;
1330 for_each_card_rtds(card, rtd) {
1331 for_each_rtd_components(rtd, i, component) {
1411 * @rtd: The runtime for which the DAI link format should be changed
1422 int snd_soc_runtime_set_dai_fmt(struct snd_soc_pcm_runtime *rtd,
1431 for_each_rtd_codec_dais(rtd, i, codec_dai) {
1459 for_each_rtd_cpu_dais(rtd, i, cpu_dai) {
1654 /* machine matches, so override the rtd data */
1767 struct snd_soc_pcm_runtime *rtd, *n;
1778 for_each_card_rtds_safe(card, rtd, n)
1779 snd_soc_remove_pcm_runtime(card, rtd);
1814 struct snd_soc_pcm_runtime *rtd;
1893 for_each_card_rtds(card, rtd) {
1894 ret = soc_init_pcm_runtime(card, rtd);