[alsa-devel] [PATCH 4/16] ALSA: VIA HDA: Fix stereo mixer recording no sound issue
From: Lydia Wang lydiawang@viatech.com.cn 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 lydiawang@viatech.com.cn --- sound/pci/hda/patch_via.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-)
--- a/sound/pci/hda/patch_via.c +++ b/sound/pci/hda/patch_via.c @@ -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, Lydia Wang wrote:
From: Lydia Wang lydiawang@viatech.com.cn 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
Signed-off-by: Lydia Wang lydiawang@viatech.com.cn
sound/pci/hda/patch_via.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-)
--- a/sound/pci/hda/patch_via.c +++ b/sound/pci/hda/patch_via.c @@ -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,
participants (2)
-
Lydia Wang
-
Takashi Iwai