Skip to contentSkip to conversation

ALSA: VIA HDA: Fix notify_aa_path_ctls() invalid issue.

PATCH In review lydiawang 2 participants 2 messages Apr 28, 2011 Sound

lore
Share & tools
lore

lydiawang

author
#0 lore raw

PATCH 1/1 ALSA: VIA HDA: Fix notify_aa_path_ctls() invalid issue.

From: Lydia Wang <[email protected]>
Subject: ALSA: VIA HDA: Fix notify_aa_path_ctls() invalid issue.

In notify_aa_path_ctls(), adds 'rear mic' item and confirms the A-A path control existing before notifying card that the A-A path volume is muted if smart5.1 is enabled.

sound/pci/hda/patch_via.c +7 -3
Index: sound-2.6/sound/pci/hda/patch_via.c
===================================================================
@@ -844,14 +844,18 @@
 {
 	int i;
 	struct snd_ctl_elem_id id;
-	const char *labels[] = {"Mic", "Front Mic", "Line"};
+	const char *labels[] = {"Mic", "Front Mic", "Line", "Rear Mic"};
+	struct snd_kcontrol *ctl;
 
 	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);
+		ctl = snd_hda_find_mixer_ctl(codec, id.name);
+		if (ctl)
+			snd_ctl_notify(codec->bus->card,
+					SNDRV_CTL_EVENT_MASK_VALUE,
+					&ctl->id);
 	}
 }
 
#1 lore raw

At Thu, 28 Apr 2011 16:03:39 +0800,

Quoted 9 lines · lydiawang

From: Lydia Wang <[email protected]>
Subject: ALSA: VIA HDA: Fix notify_aa_path_ctls() invalid issue.

In notify_aa_path_ctls(), adds 'rear mic' item and confirms the A-A path control existing before notifying card that the A-A path volume is muted if smart5.1 is enabled.

Applied now. Thanks.

Takashi

Quoted 27 lines

Index: sound-2.6/sound/pci/hda/patch_via.c
===================================================================

sound/pci/hda/patch_via.c +7 -3
@@ -844,14 +844,18 @@
 {
 	int i;
 	struct snd_ctl_elem_id id;
-	const char *labels[] = {"Mic", "Front Mic", "Line"};
+	const char *labels[] = {"Mic", "Front Mic", "Line", "Rear Mic"};
+	struct snd_kcontrol *ctl;
 
 	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);
+		ctl = snd_hda_find_mixer_ctl(codec, id.name);
+		if (ctl)
+			snd_ctl_notify(codec->bus->card,
+					SNDRV_CTL_EVENT_MASK_VALUE,
+					&ctl->id);
 	}
 }