Comment 16 for bug 1357928

Revision history for this message
Raymond (superquad-vortex2) wrote : Re: [HDA-Intel - HDA Intel MID, playback] volume slider problem - Slide to bottom and sound stays off even when slider moved up again

the patch was made for stac9200 and stac9205 and only tested by reporter with those two codecs

it is a regression of the driver which applied to all sigmatel codecs

static struct snd_kcontrol_new stac9200_mixer[] = {
- HDA_CODEC_VOLUME("Master Playback Volume", 0xb, 0, HDA_OUTPUT),
+ HDA_CODEC_VOLUME_MIN_MUTE("Master Playback Volume", 0xb, 0, HDA_OUTPUT),
  HDA_CODEC_MUTE("Master Playback Switch", 0xb, 0, HDA_OUTPUT),
  HDA_CODEC_VOLUME("Capture Volume", 0x0a, 0, HDA_OUTPUT),
  HDA_CODEC_MUTE("Capture Switch", 0x0a, 0, HDA_OUTPUT),
@@ -1020,7 +1020,7 @@ static struct snd_kcontrol_new stac92hd71bxx_loopback[] = {
 };

 static struct snd_kcontrol_new stac925x_mixer[] = {
- HDA_CODEC_VOLUME("Master Playback Volume", 0x0e, 0, HDA_OUTPUT),
+ HDA_CODEC_VOLUME_MIN_MUTE("Master Playback Volume", 0xe, 0, HDA_OUTPUT),
  HDA_CODEC_MUTE("Master Playback Switch", 0x0e, 0, HDA_OUTPUT),
  { } /* end */
 };
@@ -1144,6 +1144,8 @@ static int stac92xx_build_controls(struct hda_codec *codec)
      HDA_OUTPUT, vmaster_tlv);
   /* correct volume offset */
   vmaster_tlv[2] += vmaster_tlv[3] * spec->volume_offset;
+ /* minimum value is actually mute */
+ vmaster_tlv[3] |= 0x1000;
   err = snd_hda_add_vmaster(codec, "Master Playback Volume",
        vmaster_tlv, slave_vols);
   if (err < 0)