5.注册soc声卡设备
[cpp] static int snd_soc_register_card(struct snd_soc_card *card)
{
int i;
if (!card->name || !card->dev)
return -EINVAL;
card->rtd = kzalloc(sizeof(struct snd_soc_pcm_runtime) * card->num_links,GFP_KERNEL); //分配多个soc pcm内存
if (card->rtd == NULL)
return -ENOMEM;
for (i = 0; i < card->num_links; i++)
card->rtd[i].dai_link = &card->dai_link[i]; //dai link数组
card->instantiated = 0; //soc声卡实例化标志设置为0
mutex_init(&card->mutex);
mutex_lock(&client_mutex);
list_add(&card->list, &card_list); //添加soc声卡到全局card_list链表
snd_soc_instantiate_cards(); //实例化所有soc声卡
mutex_unlock(&client_mutex);
dev_dbg(card->dev, "Registered card '%s'\n", card->name);
return 0;
}