Lines Matching full:rtd

73 	struct snd_soc_pcm_runtime *rtd = dev_get_drvdata(dev);
75 return sysfs_emit(buf, "%ld\n", rtd->pmdown_time);
82 struct snd_soc_pcm_runtime *rtd = dev_get_drvdata(dev);
85 ret = kstrtol(buf, 10, &rtd->pmdown_time);
103 struct snd_soc_pcm_runtime *rtd = dev_get_drvdata(dev);
105 if (!rtd)
110 return rtd->dai_link->num_codecs ? attr->mode : 0; /* enabled only with codec */
316 static int snd_soc_rtd_add_component(struct snd_soc_pcm_runtime *rtd,
322 for_each_rtd_components(rtd, i, comp) {
329 rtd->num_components++; // increment flex array count at first
330 rtd->components[rtd->num_components - 1] = component;
335 struct snd_soc_component *snd_soc_rtdcom_lookup(struct snd_soc_pcm_runtime *rtd,
347 * snd_soc_rtdcom_lookup() will find component from rtd by using
350 * to 1 rtd, this function will return 1st found component.
352 for_each_rtd_components(rtd, i, component) {
405 struct snd_soc_pcm_runtime *rtd;
407 for_each_card_rtds(card, rtd) {
408 if (rtd->dai_link == dai_link)
409 return rtd;
411 dev_dbg(card->dev, "ASoC: failed to find rtd %s\n", dai_link->name);
421 void snd_soc_close_delayed_work(struct snd_soc_pcm_runtime *rtd)
423 struct snd_soc_dai *codec_dai = snd_soc_rtd_to_codec(rtd, 0);
426 snd_soc_dpcm_mutex_lock(rtd);
428 dev_dbg(rtd->dev,
433 rtd->pop_wait ? "yes" : "no");
436 if (rtd->pop_wait == 1) {
437 rtd->pop_wait = 0;
438 snd_soc_dapm_stream_event(rtd, playback,
442 snd_soc_dpcm_mutex_unlock(rtd);
448 /* "dev" means "rtd->dev" */
452 static void soc_free_pcm_runtime(struct snd_soc_pcm_runtime *rtd)
454 if (!rtd)
457 list_del(&rtd->list);
459 if (delayed_work_pending(&rtd->delayed_work))
460 flush_delayed_work(&rtd->delayed_work);
461 snd_soc_pcm_component_free(rtd);
464 * we don't need to call kfree() for rtd->dev
468 * We don't need rtd->dev NULL check, because
469 * it is alloced *before* rtd.
473 * We don't need to mind freeing for rtd,
474 * because it was created from dev (= rtd->dev)
478 * rtd = devm_kzalloc(dev, ...);
479 * rtd->dev = dev
481 device_unregister(rtd->dev);
485 struct snd_soc_pcm_runtime *rtd =
489 if (rtd->close_delayed_work_func)
490 rtd->close_delayed_work_func(rtd);
496 struct snd_soc_pcm_runtime *rtd;
502 * for rtd->dev
520 * for rtd
522 rtd = devm_kzalloc(dev,
523 struct_size(rtd, components,
528 if (!rtd) {
533 rtd->dev = dev;
534 INIT_LIST_HEAD(&rtd->list);
536 INIT_LIST_HEAD(&rtd->dpcm[stream].be_clients);
537 INIT_LIST_HEAD(&rtd->dpcm[stream].fe_clients);
539 dev_set_drvdata(dev, rtd);
540 INIT_DELAYED_WORK(&rtd->delayed_work, close_delayed_work);
543 * for rtd->dais
545 rtd->dais = devm_kcalloc(dev, dai_link->num_cpus + dai_link->num_codecs,
548 if (!rtd->dais)
559 rtd->card = card;
560 rtd->dai_link = dai_link;
561 rtd->id = card->num_rtd++;
562 rtd->pmdown_time = pmdown_time; /* default power off timeout */
565 list_add_tail(&rtd->list, &card->rtd_list);
571 return rtd;
574 soc_free_pcm_runtime(rtd);
602 struct snd_soc_pcm_runtime *rtd;
604 for_each_card_rtds(card, rtd)
605 flush_delayed_work(&rtd->delayed_work);
611 struct snd_soc_pcm_runtime *rtd;
616 for_each_card_rtds(card, rtd) {
618 if (rtd->dai_link->ignore_suspend)
621 for_each_rtd_dais(rtd, i, dai) {
630 struct snd_soc_pcm_runtime *rtd;
633 for_each_card_rtds(card, rtd) {
635 if (rtd->dai_link->ignore_suspend)
639 snd_soc_dapm_stream_event(rtd, stream, event);
648 struct snd_soc_pcm_runtime *rtd;
668 for_each_card_rtds(card, rtd) {
669 if (rtd->dai_link->ignore_suspend)
672 snd_pcm_suspend_all(rtd->pcm);
687 for_each_card_rtds(card, rtd) {
689 if (rtd->dai_link->ignore_suspend)
692 for_each_rtd_components(rtd, i, component) {
1134 * @rtd: The pcm_runtime to remove
1139 struct snd_soc_pcm_runtime *rtd)
1146 snd_soc_card_remove_dai_link(card, rtd->dai_link);
1148 soc_free_pcm_runtime(rtd);
1166 struct snd_soc_pcm_runtime *rtd;
1189 rtd = soc_new_pcm_runtime(card, dai_link);
1190 if (!rtd)
1194 snd_soc_rtd_to_cpu(rtd, i) = snd_soc_find_dai(cpu);
1195 if (!snd_soc_rtd_to_cpu(rtd, i)) {
1200 snd_soc_rtd_add_component(rtd, snd_soc_rtd_to_cpu(rtd, i)->component);
1205 snd_soc_rtd_to_codec(rtd, i) = snd_soc_find_dai(codec);
1206 if (!snd_soc_rtd_to_codec(rtd, i)) {
1212 snd_soc_rtd_add_component(rtd, snd_soc_rtd_to_codec(rtd, i)->component);
1224 snd_soc_rtd_add_component(rtd, component);
1231 * device number and then use rtd + a base offset of the BEs.
1238 id = rtd->id;
1239 for_each_rtd_components(rtd, i, component) {
1243 if (rtd->dai_link->no_pcm)
1246 id = rtd->dai_link->id;
1248 rtd->id = id;
1253 snd_soc_remove_pcm_runtime(card, rtd);
1277 static void snd_soc_runtime_get_dai_fmt(struct snd_soc_pcm_runtime *rtd)
1279 struct snd_soc_dai_link *dai_link = rtd->dai_link;
1320 until = snd_soc_dai_get_fmt_max_priority(rtd);
1322 for_each_rtd_dais(rtd, j, not_used) {
1325 for_each_rtd_dais(rtd, i, dai) {
1436 * @rtd: The runtime for which the DAI link format should be changed
1447 int snd_soc_runtime_set_dai_fmt(struct snd_soc_pcm_runtime *rtd,
1478 for_each_rtd_codec_dais(rtd, i, codec_dai) {
1479 ext_fmt = rtd->dai_link->codecs[i].ext_fmt;
1489 for_each_rtd_cpu_dais(rtd, i, cpu_dai) {
1490 ext_fmt = rtd->dai_link->cpus[i].ext_fmt;
1501 struct snd_soc_pcm_runtime *rtd)
1503 struct snd_soc_dai_link *dai_link = rtd->dai_link;
1504 struct snd_soc_dai *cpu_dai = snd_soc_rtd_to_cpu(rtd, 0);
1508 ret = snd_soc_link_init(rtd);
1512 snd_soc_runtime_get_dai_fmt(rtd);
1513 ret = snd_soc_runtime_set_dai_fmt(rtd, dai_link->dai_fmt);
1518 soc_dpcm_debugfs_add(rtd);
1521 ret = snd_soc_dai_compress_new(cpu_dai, rtd);
1526 ret = soc_new_pcm(rtd);
1533 ret = snd_soc_pcm_dai_new(rtd);
1537 rtd->initialized = true;
1541 snd_soc_link_exit(rtd);
1685 struct snd_soc_pcm_runtime *rtd;
1689 for_each_card_rtds(card, rtd) {
1690 /* remove all rtd connected DAIs in good order */
1691 snd_soc_pcm_dai_remove(rtd, order);
1698 struct snd_soc_pcm_runtime *rtd;
1702 for_each_card_rtds(card, rtd) {
1703 /* probe all rtd connected DAIs in good order */
1704 ret = snd_soc_pcm_dai_probe(rtd, order);
1716 struct snd_soc_pcm_runtime *rtd;
1720 for_each_card_rtds(card, rtd) {
1721 for_each_rtd_components(rtd, i, component) {
1734 struct snd_soc_pcm_runtime *rtd;
1738 for_each_card_rtds(card, rtd) {
1739 for_each_rtd_components(rtd, i, component) {
1995 /* machine matches, so override the rtd data */
2103 struct snd_soc_pcm_runtime *rtd, *n;
2111 for_each_card_rtds(card, rtd)
2112 if (rtd->initialized)
2113 snd_soc_link_exit(rtd);
2118 for_each_card_rtds_safe(card, rtd, n)
2119 snd_soc_remove_pcm_runtime(card, rtd);
2154 struct snd_soc_pcm_runtime *rtd;
2234 for_each_card_rtds(card, rtd) {
2235 ret = soc_init_pcm_runtime(card, rtd);