
codec driver code
soundsoccodecswm8960.c
源码分析
register
1 2 3 4 5 6 7
|
static const struct wm8960_snd_controls[] = { SOC_DOUBLE_R_TLV("Capture Volume", WM8960_LINVOL, WM8960_RINVOL, 0, 63, 0, adc_tlv), ... }; static int wm8960_probe(struct snd_soc_codec *codec) snd_soc_add_controls(codec, wm8960_snd_controls, ARRAY_SIZE(wm8960_snd_controls));
|
snd_soc_add_controls
将kcontrol添加到snd_card->controls上
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
int snd_soc_add_controls(struct snd_soc_codec *codec, const struct snd_kcontrol_new *controls, int num_controls) { for (i = 0; i < num_controls; i++) { const struct *control = &controls[i]; err = snd_ctl_add(card, snd_soc_cnew(control, codec, control->name, codec->name_prefix)); list_add_tail(&kcontrol->list, &card->controls); card->controls_count += kcontrol->count; kcontrol->id.numid = card->last_numid + 1; card->last_numid += kcontrol->count; } }
|
近期评论