ALSA: VIA HDA: Fix stereo mixer recording no sound issue
PATCH 4/16 ALSA: VIA HDA: Fix stereo mixer recording no sound issue
From: Lydia Wang <[email protected]>
Subject: ALSA: VIA HDA: Fix stereo mixer recording no sound issue.
Modify function via_mux_enum_put() to fix stereo mixer recording no sound issue.
Signed-off-by Lydia Wang <[email protected]>
--- sound/pci/hda/patch_via.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-)
sound/pci/hda/patch_via.c +6 -3
@@ -636,6 +636,7 @@struct hda_codec *codec =snd_kcontrol_chip (kcontrol);struct via_spec *spec = codec->spec;unsigned int adc_idx =snd_ctl_get_ioffidx (kcontrol, &ucontrol->id); +int ret;if (!spec->mux_nids[adc_idx])return -EINVAL ;
@@ -644,12 +645,14 @@ AC_VERB_GET_POWER_STATE, 0x00) != AC_PWRST_D0)snd_hda_codec_write (codec, spec->mux_nids[adc_idx],0 ,AC_VERB_SET_POWER_STATE ,AC_PWRST_D0 ); -/* update jack power state */ -set_widgets_power_state (codec); -return snd_hda_input_mux_put (codec, spec->input_mux, ucontrol, + ret =snd_hda_input_mux_put (codec, spec->input_mux, ucontrol, spec->mux_nids[adc_idx], &spec->cur_mux[adc_idx]); +/* update jack power state */ +set_widgets_power_state (codec); + +return ret; } static int via_independent_hp_info(struct snd_kcontrol *kcontrol,
At Mon, 21 Mar 2011 15:26:07 +0800,
Quoted 6 lines · Lydia Wang
From: Lydia Wang <[email protected]>
Subject: ALSA: VIA HDA: Fix stereo mixer recording no sound issue.Modify function
via_mux_enum_put()to fix stereo mixer recording no sound issue.
I prefer this being fixed before the refractoring, so that the fix can be fed to stable kernel directly without much rewrite.
Is it feasible?
thanks,
Takashi
Quoted 35 lines
Signed-off-by Lydia Wang <[email protected]>--- sound/pci/hda/patch_via.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-)sound/pci/hda/patch_via.c +6
-3@@ -636,6 +636,7 @@struct hda_codec *codec =snd_kcontrol_chip (kcontrol);struct via_spec *spec = codec->spec;unsigned int adc_idx =snd_ctl_get_ioffidx (kcontrol, &ucontrol->id); +int ret;if (!spec->mux_nids[adc_idx])return -EINVAL ;@@ -644,12 +645,14 @@ AC_VERB_GET_POWER_STATE, 0x00) != AC_PWRST_D0)snd_hda_codec_write (codec, spec->mux_nids[adc_idx],0 ,AC_VERB_SET_POWER_STATE ,AC_PWRST_D0 ); -/* update jack power state */ -set_widgets_power_state (codec); -return snd_hda_input_mux_put (codec, spec->input_mux, ucontrol, + ret =snd_hda_input_mux_put (codec, spec->input_mux, ucontrol, spec->mux_nids[adc_idx], &spec->cur_mux[adc_idx]); +/* update jack power state */ +set_widgets_power_state (codec); + +return ret; } static int via_independent_hp_info(struct snd_kcontrol *kcontrol,