[alsa-devel] [PATCH 7/16] ALSA: VIA HDA: Modify notify_aa_path_ctls() function
Lydia Wang
lydiawang at viatech.com.cn
Mon Mar 21 08:29:35 CET 2011
From: Lydia Wang <lydiawang at viatech.com.cn>
Subject: ALSA: VIA HDA: Modify notify_aa_path_ctls() function.
Modify notify_aa_path_ctls() function to get volume control items name
dynamically instead of by giving static item name.
Signed-off-by: Lydia Wang <lydiawang at viatech.com.cn>
---
sound/pci/hda/patch_via.c | 27 +++++++++++++++++----------
1 file changed, 17 insertions(+), 10 deletions(-)
--- a/sound/pci/hda/patch_via.c
+++ b/sound/pci/hda/patch_via.c
@@ -832,16 +832,23 @@
static void notify_aa_path_ctls(struct hda_codec *codec)
{
- int i;
- struct snd_ctl_elem_id id;
- const char *labels[] = {"Mic", "Front Mic", "Line"};
-
- memset(&id, 0, sizeof(id));
- id.iface = SNDRV_CTL_ELEM_IFACE_MIXER;
- for (i = 0; i < ARRAY_SIZE(labels); i++) {
- sprintf(id.name, "%s Playback Volume", labels[i]);
- snd_ctl_notify(codec->bus->card, SNDRV_CTL_EVENT_MASK_VALUE,
- &id);
+ struct snd_card *card = codec->bus->card;
+ struct snd_kcontrol *kctl;
+ struct via_spec *spec = codec->spec;
+ const struct auto_pin_cfg *cfg = &spec->autocfg;
+ list_for_each_entry(kctl, &card->controls, list) {
+ int i;
+ for (i = 0; i < cfg->num_inputs; i++) {
+ char name[32];
+ const char *label;
+ label = hda_get_autocfg_input_label(codec, cfg, i);
+ sprintf(name, "%s Playback Volume", label);
+ if (strcmp(kctl->id.name, name) == 0) {
+ snd_ctl_notify(card, SNDRV_CTL_EVENT_MASK_VALUE,
+ &kctl->id);
+ break;
+ }
+ }
}
}
More information about the Alsa-devel
mailing list