*参照元 [#p7411447]
#backlinks

*説明 [#k5aca460]
-パス: [[linux-4.4.1/sound/soc/soc-core.c]]

-FIXME: これは何?
--説明


**引数 [#pa3d3b86]
-struct snd_soc_card *card
--
--[[linux-4.4.1/snd_soc_card]]
-int num
--


**返り値 [#wfd9858d]
-int
--


**参考 [#pc5dc658]


*実装 [#v567e552]
 static int soc_bind_dai_link(struct snd_soc_card *card, int num)
 {
         struct snd_soc_dai_link *dai_link = &card->dai_link[num];
         struct snd_soc_pcm_runtime *rtd = &card->rtd[num];
         struct snd_soc_dai_link_component *codecs = dai_link->codecs;
         struct snd_soc_dai_link_component cpu_dai_component;
         struct snd_soc_dai **codec_dais = rtd->codec_dais;
         struct snd_soc_platform *platform;
         const char *platform_name;
         int i;
 
-
--[[linux-4.4.1/snd_soc_dai_link]]
--[[linux-4.4.1/snd_soc_pcm_runtime]]
--[[linux-4.4.1/snd_soc_dai_link_component]]
--[[linux-4.4.1/snd_soc_dai]]
--[[linux-4.4.1/snd_soc_platform]]

         dev_dbg(card->dev, "ASoC: binding %s at idx %d\n", dai_link->name, num);
 
-
--[[linux-4.4.1/dev_dbg()]]

         cpu_dai_component.name = dai_link->cpu_name;
         cpu_dai_component.of_node = dai_link->cpu_of_node;
         cpu_dai_component.dai_name = dai_link->cpu_dai_name;
         rtd->cpu_dai = snd_soc_find_dai(&cpu_dai_component);
         if (!rtd->cpu_dai) {
                 dev_err(card->dev, "ASoC: CPU DAI %s not registered\n",
                         dai_link->cpu_dai_name);
                 return -EPROBE_DEFER;
         }
 
-
--[[linux-4.4.1/snd_soc_find_dai()]]

         rtd->num_codecs = dai_link->num_codecs;
 
         /* Find CODEC from registered CODECs */
         for (i = 0; i < rtd->num_codecs; i++) {
                 codec_dais[i] = snd_soc_find_dai(&codecs[i]);
                 if (!codec_dais[i]) {
                         dev_err(card->dev, "ASoC: CODEC DAI %s not registered\n",
                                 codecs[i].dai_name);
                         return -EPROBE_DEFER;
                 }
         }
 
         /* Single codec links expect codec and codec_dai in runtime data */
         rtd->codec_dai = codec_dais[0];
         rtd->codec = rtd->codec_dai->codec;
 
         /* if there's no platform we match on the empty platform */
         platform_name = dai_link->platform_name;
         if (!platform_name && !dai_link->platform_of_node)
                 platform_name = "snd-soc-dummy";
 
         /* find one from the set of registered platforms */
         list_for_each_entry(platform, &platform_list, list) {
                 if (dai_link->platform_of_node) {
                         if (platform->dev->of_node !=
                             dai_link->platform_of_node)
                                 continue;
                 } else {
                         if (strcmp(platform->component.name, platform_name))
                                 continue;
                 }
 
                 rtd->platform = platform;
         }
-
--[[linux-4.4.1/list_for_each_entry()]]
--[[linux-4.4.1/strcmp()]]
--[[linux-4.4.1/platform_list(global)]]

         if (!rtd->platform) {
                 dev_err(card->dev, "ASoC: platform %s not registered\n",
                         dai_link->platform_name);
                 return -EPROBE_DEFER;
         }
 
         card->num_rtd++;
 
         return 0;
 }


*コメント [#k3a1791d]


トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS