Hi I noticed after installing 1.0.16rc-1 today that my Thinkpad T61 with AD1984 had a Master mixer now. Problem is it's not very good in that it 1) does not follow with PCM (the real master) volume well. It causes a volume disparity and does not follow or even boost PCM signal. So it just a bad mister. 2) it does not mute the volume (since PCM is the real master mixer you have to go to PCM to mute the volume!) I have fixed a problem in Gstreamer so that Gnome (gnome volume mixer) does finally work correctly for the AD1984 which does not have a Master. When it looks for a master mixer it now will fallback to PCM as a master mixer (the code is upsteam too). You can find this here: http://bugzilla.gnome.org/show_bug.cgi?id=506928 I have a feeling this is why this patch was put in. I have fixed the problem in Gnome, KDE has allways worked. just fine. But I would honestly love it if this code was removed!!! If you need a Master can you rename PCM to master for the AD1984! I have attached a patch to remove this code .. because it is so does not function well! Signed-off-by : Jerone Young <jerone@xxxxxxxxx> diff -r 5dfc8324ae17 alsa-kernel/pci/hda/patch_analog.c --- a/alsa-kernel/pci/hda/patch_analog.c Fri Jan 25 00:12:14 2008 -0600 +++ b/alsa-kernel/pci/hda/patch_analog.c Fri Jan 25 01:04:13 2008 -0600 @@ -170,26 +170,6 @@ static int ad198x_build_controls(struct } if (spec->dig_in_nid) { err = snd_hda_create_spdif_in_ctls(codec, spec->dig_in_nid); - if (err < 0) - return err; - } - - /* if we have no master control, let's create it */ - if (!snd_hda_find_mixer_ctl(codec, "Master Playback Volume")) { - snd_hda_set_vmaster_tlv(codec, spec->vmaster_nid, - HDA_OUTPUT, spec->vmaster_tlv); - err = snd_hda_add_vmaster(codec, "Master Playback Volume", - spec->vmaster_tlv, - (spec->slave_vols ? - spec->slave_vols : ad_slave_vols)); - if (err < 0) - return err; - } - if (!snd_hda_find_mixer_ctl(codec, "Master Playback Switch")) { - err = snd_hda_add_vmaster(codec, "Master Playback Switch", - NULL, - (spec->slave_sws ? - spec->slave_sws : ad_slave_sws)); if (err < 0) return err; }
diff -r 5dfc8324ae17 alsa-kernel/pci/hda/patch_analog.c --- a/alsa-kernel/pci/hda/patch_analog.c Fri Jan 25 00:12:14 2008 -0600 +++ b/alsa-kernel/pci/hda/patch_analog.c Fri Jan 25 01:04:13 2008 -0600 @@ -170,26 +170,6 @@ static int ad198x_build_controls(struct } if (spec->dig_in_nid) { err = snd_hda_create_spdif_in_ctls(codec, spec->dig_in_nid); - if (err < 0) - return err; - } - - /* if we have no master control, let's create it */ - if (!snd_hda_find_mixer_ctl(codec, "Master Playback Volume")) { - snd_hda_set_vmaster_tlv(codec, spec->vmaster_nid, - HDA_OUTPUT, spec->vmaster_tlv); - err = snd_hda_add_vmaster(codec, "Master Playback Volume", - spec->vmaster_tlv, - (spec->slave_vols ? - spec->slave_vols : ad_slave_vols)); - if (err < 0) - return err; - } - if (!snd_hda_find_mixer_ctl(codec, "Master Playback Switch")) { - err = snd_hda_add_vmaster(codec, "Master Playback Switch", - NULL, - (spec->slave_sws ? - spec->slave_sws : ad_slave_sws)); if (err < 0) return err; }
_______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel