[alsa-devel] Adapt eeepc p710 mixer for virtual master control
Adapt eeepc p710 mixer for virtual master control
Currently eeepc p710 mixer doesn't define any slave volume control. This is incompatible with current virtual master control code, that will return -ENOENT in this case.
Signed-off-by: Herton Ronaldo Krzesinski herton@mandriva.com
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index 6f7dd96..bda09ad 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c @@ -12989,8 +12989,8 @@ static struct snd_kcontrol_new alc662_lenovo_101e_mixer[] = { static struct snd_kcontrol_new alc662_eeepc_p701_mixer[] = { HDA_CODEC_MUTE("Speaker Playback Switch", 0x14, 0x0, HDA_OUTPUT),
- HDA_CODEC_VOLUME("LineOut Playback Volume", 0x02, 0x0, HDA_OUTPUT), - HDA_CODEC_MUTE("LineOut Playback Switch", 0x1b, 0x0, HDA_OUTPUT), + HDA_CODEC_VOLUME("Line-Out Playback Volume", 0x02, 0x0, HDA_OUTPUT), + HDA_CODEC_MUTE("Line-Out Playback Switch", 0x1b, 0x0, HDA_OUTPUT),
HDA_CODEC_VOLUME("e-Mic Boost", 0x18, 0, HDA_INPUT), HDA_CODEC_VOLUME("e-Mic Playback Volume", 0x0b, 0x0, HDA_INPUT),
I'll explain the issue a bit more: after commit 2134ea4f37d36addbe86d4901f6c67a22a5db006 "[ALSA] hda-codec - Add virtual master controls", alsamixer for example doesn't work anymore on eeepc p710: "alsamixer: function snd_mixer_load failed: No such file or directory"
I figured out that the problem was with the virtual master controls code and the eeepc p710 mixer that doesn't have any slave volume control. Given eeepc hardware and my understading in reality this virtual master doesn't seem much useful (you have only one playback source - LineOut Playback), only for master switch it is useful as you have Speaker and HeadPhone switches (Headphone is name LineOut Playback Switch in this case) as slave switches. But as only master switch doesn't seem good (it would be strange change vmaster code to accept only a master switch) and I didn't want to refactor the eeepc mixer, this patch seemed a good solution, please comment on it, what do you think?
I also thought of making code to just disable vmaster for this model, I don't know what could be the better solution.
Something should be done also for the other eeepc ep20 model mixer, it will not suffer the same bug, but the way its mixer is currently seems to conflict with the virtual master control idea (may be "MuteCtrl" would be obsoleted).
-- []'s Herton
At Sat, 23 Feb 2008 01:57:22 -0300, Herton Ronaldo Krzesinski wrote:
Adapt eeepc p710 mixer for virtual master control
Currently eeepc p710 mixer doesn't define any slave volume control. This is incompatible with current virtual master control code, that will return -ENOENT in this case.
Signed-off-by: Herton Ronaldo Krzesinski herton@mandriva.com
Thanks, applied to HG tree now.
But, the error was already fixed in the vmaster code. No master volume will be created if no slaves are found. But, this fix is anyway good to be more consistent.
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index 6f7dd96..bda09ad 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c @@ -12989,8 +12989,8 @@ static struct snd_kcontrol_new alc662_lenovo_101e_mixer[] = { static struct snd_kcontrol_new alc662_eeepc_p701_mixer[] = { HDA_CODEC_MUTE("Speaker Playback Switch", 0x14, 0x0, HDA_OUTPUT),
- HDA_CODEC_VOLUME("LineOut Playback Volume", 0x02, 0x0, HDA_OUTPUT),
- HDA_CODEC_MUTE("LineOut Playback Switch", 0x1b, 0x0, HDA_OUTPUT),
HDA_CODEC_VOLUME("Line-Out Playback Volume", 0x02, 0x0, HDA_OUTPUT),
HDA_CODEC_MUTE("Line-Out Playback Switch", 0x1b, 0x0, HDA_OUTPUT),
HDA_CODEC_VOLUME("e-Mic Boost", 0x18, 0, HDA_INPUT), HDA_CODEC_VOLUME("e-Mic Playback Volume", 0x0b, 0x0, HDA_INPUT),
I'll explain the issue a bit more: after commit 2134ea4f37d36addbe86d4901f6c67a22a5db006 "[ALSA] hda-codec - Add virtual master controls", alsamixer for example doesn't work anymore on eeepc p710: "alsamixer: function snd_mixer_load failed: No such file or directory"
I figured out that the problem was with the virtual master controls code and the eeepc p710 mixer that doesn't have any slave volume control. Given eeepc hardware and my understading in reality this virtual master doesn't seem much useful (you have only one playback source - LineOut Playback), only for master switch it is useful as you have Speaker and HeadPhone switches (Headphone is name LineOut Playback Switch in this case) as slave switches. But as only master switch doesn't seem good (it would be strange change vmaster code to accept only a master switch) and I didn't want to refactor the eeepc mixer, this patch seemed a good solution, please comment on it, what do you think?
I also thought of making code to just disable vmaster for this model, I don't know what could be the better solution.
Something should be done also for the other eeepc ep20 model mixer, it will not suffer the same bug, but the way its mixer is currently seems to conflict with the virtual master control idea (may be "MuteCtrl" would be obsoleted).
OK, we need a bit more cleanups there...
thanks,
Takashi
Em Saturday 23 February 2008 07:34:00 Takashi Iwai escreveu:
At Sat, 23 Feb 2008 01:57:22 -0300, Herton Ronaldo Krzesinski wrote:
Adapt eeepc p710 mixer for virtual master control
Currently eeepc p710 mixer doesn't define any slave volume control. This is incompatible with current virtual master control code, that will return -ENOENT in this case.
Signed-off-by: Herton Ronaldo Krzesinski herton@mandriva.com
Thanks, applied to HG tree now.
But, the error was already fixed in the vmaster code. No master volume will be created if no slaves are found. But, this fix is anyway good to be more consistent.
Ah ok sorry for that, for the two patches I forgot to verify hg tree, I was looking only in latest 2.6.25-rcX code.
thanks,
Takashi
-- []'s Herton
participants (2)
-
Herton Ronaldo Krzesinski
-
Takashi Iwai