snd_soc_add_dapm_routes(&my_card, my_routes, ARRAY_SIZE(my_routes)); // 注册snd_soc_card到ASoC平台 snd_soc_register_card(&my_card); return 0; } ``` 通过以上步骤,我们成功地配置了snd_soc_dapm_route,并将其注册到ASoC平台,实现了对音频信号的路由控制。对于刚入行的小白开发者来说,掌握sn...
-->soc_bind_dai_link// 为每个dai link查找 相应的DAI实例(component_list)、codec DAI实例(component_list)、platform 实例(platform_list)、codec实例-->snd_card_new// 向ALSA注册sound card-->snd_soc_dapm_new_controls// 注册machine级别的 widgets-->structsnd_soc_card->probe()函数 -->soc_probe...
card->name || !card->dev)7return-EINVAL;89for(i =0; i < card->num_links; i++) {10structsnd_soc_dai_link *link = &card->dai_link[i];1112ret =soc_init_dai_link(card, link);//检查dai_link中codec、platform、CPU dai信息是否完整13if(ret) {14dev_err...
此处一块来看一下snd_soc_add_component函数中的异常处理函数,snd_soc_del_component_unlocked函数中通过snd_soc_unregister_dais来完成snd_soc_dai_driver的反注册过程,然后通过snd_soc_unbind_card函数将card从list中删除,最后通过list_del将component组件的component->list销毁掉,具体函数实现如下: staticvoidsnd_soc...
snd_soc_new_pcms snd_card_create snd_ctl_create snd_ctl_dev_register创建"controlC%i"声卡对应的控制节点, 他的fops为snd_ctl_f_ops snd_pcm_dev_register snd_register_device_for_dev 创建"pcmC%iD%ip"或者"pcmC%iD%ic"设备节点,它的fops为snd_pcm_f_ops[2] ...
==> soc_new_pcm ==> snd_pcm_new snd_soc_new_pcms snd_card_create snd_ctl_create snd_ctl_dev_register创建"controlC%i"声卡对应的控制节点, 他的fops为snd_ctl_f_ops snd_pcm_dev_register snd_register_device_for_dev 创建"pcmC%iD%ip"或者"pcmC%iD%ic"设备节点,它的fops为snd_pcm_f_ops...
.card= &snd_soc_machine_afeb9260, .codec_dev= &soc_codec_dev_tlv320aic23, }; staticstructplatform_device *afeb9260_snd_device; staticint__initafeb9260_soc_init(void) { interr; structdevice *dev; structatmel_ssc_info *ssc_p = afeb9260_dai.cpu_dai->private_data; ...
static void snd_soc_del_component_unlocked(struct snd_soc_component *component) { struct snd_soc_card *card = component->card; snd_soc_unregister_dais(component); if (card) snd_soc_unbind_card(card, false); list_del(&component->list); } 一块再看一下snd_soc_unregister_dais函数,此函数...
compatible = "linux,snd-soc-dummy"; model = "codec-test"; #sound-dai-cells = <0>; status = "okay"; } sound-sai1 { compatible = "simple-audio-card"; model = "imx-sai1"; status = "okay"; simple-audio-card,name = "sound_sai1"; simple-audio-card,format = "i2s"; simple-aud...
structsnd_soc_dai_ops接⼝介绍 CPU DAI和codec DAI 驱动⽤结构体 struct snd_soc_dai_driver描述,其字段ops的类型是 struct snd_soc_dai_ops,定义了DAI驱动的操作接⼝。代码如下:struct snd_soc_dai_ops { /* * DAI clocking configuration, all optional.* Called by soc_card drivers, normally ...