1. 12 Jan, 2013 29 commits
  2. 10 Jan, 2013 11 commits
    • Takashi Iwai's avatar
      ALSA: hda - Remove snd_hda_codec_amp_update() call from patch_*.c · 8092e606
      Takashi Iwai authored
      It's used only in one place in patch_analog.c, and it can be replaced
      with others better.
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      8092e606
    • Takashi Iwai's avatar
      ALSA: hda/realtek - Fix initialization of input amps in output paths · 9366ede7
      Takashi Iwai authored
      When initializing the output paths, we assumed the input amps have
      almost two inputs blindly.  It's not only generic but even incorrect
      for some codecs like ALC268 & co.  Also, the same assumption (two
      sources) exists for the bind input-amp controls.
      
      This patch changes the codes in these places to handle the input
      connections in a more generic way.
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      9366ede7
    • Takashi Iwai's avatar
      ALSA: hda/realtek - Check amp capabilities of aa-mixer widget · bd32f782
      Takashi Iwai authored
      For handling the analog-loopback paths more generically, check the amp
      capabilities of the aa-mixer widget, and create only the appropriate
      mixer elements.
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      bd32f782
    • Takashi Iwai's avatar
      ALSA: hda/realtek - Parse analog loopback paths more generically · c2fd19c2
      Takashi Iwai authored
      Improve the parser of analog loopback paths and handle in a more
      generic way.  The following changes are included in this patch:
      
      - Instead of assuming direct connections between pins and
        the mixer widget, track the whole path between them.  This fixes
        some missing connections like ALC660.
      
      - Introduce the path list for loopback paths like input and output
        path lists.  Currently it's not used for any real purposes, yet.
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      c2fd19c2
    • Takashi Iwai's avatar
      ALSA: hda/realtek - Parse input paths · 36f0fd54
      Takashi Iwai authored
      Just like the output paths, parse the whole paths for inputs as well
      and store in a path list.  For that purpose, rewrite the output parser
      code to be generically usable.
      
      The input path list is not referred at all in this patch.  It'll be
      used to replace the fixed adc/capsrc array in later patches for more
      flexible input path selections.
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      36f0fd54
    • Takashi Iwai's avatar
      ALSA: hda/realtek - Make path->idx[] and path->multi[] consistent · 95e960ce
      Takashi Iwai authored
      So far, idx[i] and multi[i] indicate the attribute of the widget
      path[i - 1].  This was just for simplifying the code in
      __parse_output_path(), but this is rather confusing for later use.
      It's more natural if both idx[i] and multi[i] point to the same widget
      of path[i].  This patch changes to that way.
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      95e960ce
    • Takashi Iwai's avatar
      ALSA: hda/realtek - Simplify the output volume initialization · 78e635c9
      Takashi Iwai authored
      Simplify the output path initialization using the existing path
      information instead of assuming the topology specific to Realtek
      codecs.  This is also implicitly a fix for some amp values on output
      pins where the old parser missed (e.g. ALC260 output pins).
      
      The same function alc_auto_set_output_and_unmute() can be used now for
      the multi-io activation, since the output selection means nothing but
      activating the given output path.
      
      And, finally at this stage, we can get rid of alc_go_down_to_selector()
      and other functions that are codec really specifically to Realtek
      codecs.
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      78e635c9
    • Takashi Iwai's avatar
      ALSA: hda/realtek - Reduce vol/mute ctl lookups at parsing codec · 792cf2fa
      Takashi Iwai authored
      So far, Realtek codec driver evaluates the NIDs for volume and mute
      controls twice, once while parsing the DACs and evaluating the
      assignment, and another while creating the mixer elements.  This is
      utterly redundant and even fragile, as it's assuming that the ctl
      element evaluation is identical between both parsing DACs and creating
      mixer elements.
      
      This patch simplifies the code flow by doing the volume / mute
      controls evaluation only once while parsing the DACs.  The patch ended
      up in larger changes than expected because of some cleanups became
      mandatory.
      
      As a gratis bonus, this patch also fixes some cases where the stereo
      channels are used wrongly for mono amps.
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      792cf2fa
    • Takashi Iwai's avatar
      ALSA: hda - Fix mono amp values in proc output · 2f179721
      Takashi Iwai authored
      The mono widget is always connected to the left channel, thus the left
      channel amp value also should be referred for mono widgets instead of
      the right channel.
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      2f179721
    • Takashi Iwai's avatar
      ALSA: hda/realtek - Manage mixer controls in out_path list · ba811127
      Takashi Iwai authored
      As we parse the output paths more precisely now, we can use this path
      list for parsing the widgets for volume and mute mixer controls.
      The spec->vol_ctls[] and sw_ctls[] bitmasks are replaced with the
      ctls[] in each output path instance.
      
      Interestingly, this move alone automagically fixes some bugs that the
      conflicting volume or mute NIDs weren't properly detected.
      Also, by parsing the whole path, there are more chances to get a free
      widget for volume/mute controls.
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      ba811127
    • Takashi Iwai's avatar
      ALSA: hda/realtek - Add output path parser · 30dcd3b4
      Takashi Iwai authored
      Add the output path parser to Realtek codec driver as we already have
      in patch_via.c.  The nid_path struct represents the complete output
      path from a DAC to a pin.  The alc_spec contains an array of these
      paths, and a new path is added at each time when a new DAC is
      assigned.
      
      So far, this path list is used only in limited codes: namely in this
      patch, only alc_is_dac_already_used() checks the list instead of dac
      arrays in all possible outputs.  In the later development, the path
      list will be referred from more places, such as the mixer control
      assignment / check, the mute/unmute of active routes, etc.
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      30dcd3b4