• Steve Longerbeam's avatar
    [ALSA] hda-codec - bug fixes for stac92xx HDA codecs. · 7b043899
    Steve Longerbeam authored
    * fixed surround playback on stac922x. Pin direction control bits were
      not being set correctly in stac92xx_set_pinctl(). Specifically it
      would refuse to set the port as an output if the port was already
      configured as an input. Last hunk (#8).
    * fixed an input mux bug on 92xx codecs. When there is more than one
      possible input calculated for the muxes, the actual mux widget never
      gets set from its reset default, which is index 0, in the stac9221
      case that is port E. So alsamixer/amixer/gnome-mixer report the Mic
      as being the selected input source, but in fact is something else
      (line-in port E in stac9221 case). Another problem with this is that
      if you actually try to set the mux input to 'Mic', nothing happens
      because *cur_val == idx (see snd_hda_input_mux_put). You have to
      actually toggle input source to line-in then back to mic to actually
      set the mux widget. Hunk #7.
    * fixed some typos in patch_sigmatel.c. Hunk #6.
    * fix to stac92xx_add_dyn_out_pins() that fixes surround playback on
      codecs with less that 4 DACs (stac9205 for example). It reads the widget
      caps cache created by hda_codec to count the total number of analog DACs
      found. It then uses that to determine whether there will be enough
      independent DACs available for line/mic switch controls. Hunk #1, #2,
      and #3.
    * improvements to stac92xx_auto_fill_dac_nids() to make it more general.
      This fixes surround playback on some codecs in combination with the
      fix to stac92xx_add_dyn_out_pins() above. It reads the full connection
      list now, instead of just the first entry, and then locates an analog
      DAC in the list. If one is found and it's free, assign it to that line-out.
      If no free DAC is found for the line-out, return -ENODEV. It also makes
      sure to actually select the chosen DAC if more than one DAC is input to
      the pin. Hunks #4, #5.
    Signed-off-by: default avatarSteve Longerbeam <stevel@embeddedalley.com>
    Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
    Signed-off-by: default avatarJaroslav Kysela <perex@suse.cz>
    7b043899
patch_sigmatel.c 70.2 KB