1. 13 1月, 2014 1 次提交
  2. 08 1月, 2014 1 次提交
  3. 19 12月, 2013 1 次提交
  4. 11 12月, 2013 2 次提交
    • T
      ALSA: hda - Add static DAC/pin mapping for AD1986A codec · 3690739b
      Takashi Iwai 提交于
      AD1986A codec is a pretty old codec and has really many hidden
      restrictions.  One of such is that each DAC is dedicated to certain
      pin although there are possible connections.  Currently, the generic
      parser tries to assign individual DACs as much as possible, and this
      lead to two bad situations: connections where the sound actually
      doesn't work, and connections conflicting other channels.
      
      We may fix this by trying to find the best connections more harder,
      but as of now, it's easier to give some hints for paired DAC/pin
      connections and honor them if available, since such a hint is needed
      only for specific codecs (right now only AD1986A, and there will be
      unlikely any others in future).
      
      Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=64971
      Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=66621
      Cc: <stable@vger.kernel.org>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      3690739b
    • T
      ALSA: hda - Mute all aamix inputs as default · ebb93c05
      Takashi Iwai 提交于
      Not all channels have been initialized, so far, especially when aamix
      NID itself doesn't have amps but its leaves have.  This patch fixes
      these holes.  Otherwise you might get unexpected loopback inputs,
      e.g. from surround channels.
      
      Cc: <stable@vger.kernel.org>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      ebb93c05
  5. 09 12月, 2013 1 次提交
    • T
      ALSA: hda - Enable stereo mix as default for AD and VIA codecs · f1e762dd
      Takashi Iwai 提交于
      AD and VIA codecs had stereo mixer input enabled as default before
      moving to the generic parser, and people think the lack of such a
      regression.  In this patch, the stereo mixer input is added back to
      the input selection if no auto-mic is available, and if it's not
      disabled explicitly via hint.  This should satisfy most of demands,
      i.e. stereo mix on desktop machines like what it worked before, and it
      still keeps the new auto-mic feature on laptops.
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      f1e762dd
  6. 07 12月, 2013 1 次提交
  7. 06 12月, 2013 1 次提交
  8. 28 11月, 2013 1 次提交
    • T
      ALSA: hda - Check leaf nodes to find aamix amps · 2ded3e5b
      Takashi Iwai 提交于
      The current generic parser assumes blindly that the volume and mute
      amps are found in the aamix node itself.  But on some codecs,
      typically Analog Devices ones, the aamix amps are separately
      implemented in each leaf node of the aamix node, and the current
      driver can't establish the correct amp controls.  This is a regression
      compared with the previous static quirks.
      
      This patch extends the search for the amps to the leaf nodes for
      allowing the aamix controls again on such codecs.
      In this implementation, I didn't code to loop through the whole paths,
      since usually one depth should suffice, and we can't search too
      deeply, as it may result in the conflicting control assignments.
      
      Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=65641
      Cc: <stable@vger.kernel.org>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      2ded3e5b
  9. 27 11月, 2013 2 次提交
    • T
      ALSA: hda - Fix hp-mic mode without VREF bits · 16c0cefe
      Takashi Iwai 提交于
      When the hp mic pin has no VREF bits, the driver forgot to set PIN_IN
      bit.  Spotted during debugging old MacBook Airs.
      
      Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=65681
      Cc: <stable@vger.kernel.org>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      16c0cefe
    • T
      ALSA: hda - Create Headhpone Mic Jack Mode when really needed · ced4cefc
      Takashi Iwai 提交于
      When a headphone jack is configurable as input, the generic parser
      tries to make it retaskable as Headphone Mic.  The switching can be
      done smoothly if Capture Source control exists (i.e. there is another
      input source).  Or when user explicitly enables the creation of jack
      mode controls, "Headhpone Mic Jack Mode" will be created accordingly.
      
      However, if the headphone mic is the only input source, we have to
      create "Headphone Mic Jack Mode" control because there is no capture
      source selection.  Otherwise, the generic parser assumes that the
      input is constantly enabled, thus the headphone is permanently set
      as input.  This situation happens on the old MacBook Airs where no
      input is supported properly, for example.
      
      This patch fixes the problem: now "Headphone Mic Jack Mode" is created
      when such an input selection isn't possible.
      
      Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=65681
      Cc: <stable@vger.kernel.org>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      ced4cefc
  10. 26 11月, 2013 1 次提交
  11. 12 11月, 2013 1 次提交
    • T
      ALSA: hda - Check keep_eapd_on before inv_eapd · 468ac413
      Takashi Iwai 提交于
      We don't change the EAPD bit in set_pin_eapd() if keep_eapd_on flag is
      set by the codec driver and enable is false.  But, we also apply the
      flipping of enable value according to inv_eapd flag in the same
      function, and this confused the former check, handled as if it's
      turned ON.  The inverted EAPD check must be applied after keep_eapd_on
      check, instead.
      
      Cc: <stable@vger.kernel.org>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      468ac413
  12. 05 11月, 2013 1 次提交
  13. 26 10月, 2013 1 次提交
    • T
      ALSA: hda - Add missing initial vmaster hook at build_controls callback · b63eae0a
      Takashi Iwai 提交于
      The generic parser has a support of vmaster hook, but this is
      initialized only in the init callback with the check of the presence
      of the corresponding kctl.  However, since kctl is NULL at the very
      first init callback that is called before build_controls callback, the
      vmaster hook sync is skipped there.  Eventually this leads to the
      uninitialized state depending on the hook implementation.
      
      This patch adds a simple workaround, just calling the sync function
      explicitly at build_controls callback.
      
      Cc: <stable@vger.kernel.org>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      b63eae0a
  14. 14 10月, 2013 1 次提交
  15. 13 8月, 2013 2 次提交
  16. 12 8月, 2013 1 次提交
  17. 29 7月, 2013 1 次提交
    • T
      ALSA: hda - Fix invalid multi-io creation on VAIO-Z laptops · da96fb5b
      Takashi Iwai 提交于
      VAIO-Z laptops need to use the specific DAC for the speaker output
      by some unknown reason although the codec itself supports the flexible
      connection.  So we implemented a workaround by a new flag,
      no_primary_hp, for assigning the speaker pin first.
      
      This worked until 3.8 kernel, but it got broken because the driver
      learned for a better multi-io pin mapping, and not it can assign two
      mic pins for multi-io.  Since the multi-io requires to be the primary
      output, the hp and two mic pins are assigned in prior to the speaker
      in the end.
      
      Although the machine has two mic pins, one of them is used as a noise-
      canceling headphone, thus it's no real retaskable mic jack.  Thus, at
      best, we can disable the multi-io assignment and make the parser
      behavior back to the state before the multi-io.
      
      This patch adds again a new flag, no_multi_io, to indicate that the
      device has no multi-io capability, and set it in the fixup for
      VAIO-Z.  The no_multi_io flag itself can be used generically, added
      via a helper line, too.
      Reported-by: NTormen <my.nl.abos@gmail.com>
      Reported-by: NAdam Williamson <awilliam@redhat.com>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      da96fb5b
  18. 21 7月, 2013 1 次提交
    • T
      ALSA: hda - Add snd_hda_jack_detect_state() helper function · 60ea8ca2
      Takashi Iwai 提交于
      snd_hda_jack_detect() function returns a boolean value for a jack
      plugged in or not, but it also returns always true when the
      corresponding pin is phantom (i.e. fixed).  This is OK in most cases,
      but it makes the generic parser misbehaving about the auto-mute or
      auto-mic switching, e.g. when one of headphone pins is a fixed.
      Namely, the driver decides whether to mute the speaker or not, just
      depending on the headphone plug state: if one of the headphone jacks
      is seen as active, then the speaker is muted.  Thus this will result
      always in the muted speaker output.
      
      So, the problem is the function returns a boolean, after all, although
      we need to think of "phantom" jack.  Now a new function,
      snd_hda_jack_detect_state() is introduced to return these tristates.
      The generic parser uses this function for checking the headphone or
      mic jack states.
      
      Meanwhile, the behavior of snd_hda_jack_detect() is kept as is, for
      keeping compatibility in other driver codes.
      Acked-by: NDavid Henningsson <david.henningsson@canonical.com>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      60ea8ca2
  19. 28 6月, 2013 2 次提交
  20. 25 6月, 2013 1 次提交
    • T
      ALSA: hda - Add auto_mute_via_amp flag to generic parser · 7eebffd3
      Takashi Iwai 提交于
      Add a new flag, auto_mute_via_amp, to determine the behavior of the
      headphone / line-out auto-mute.  When this flag is set, the generic
      driver mutes the speaker and line outputs via the amp mute of each
      pin, instead of changing the pin control values.
      
      This is introduced for devices that don't work expectedly with the pin
      control values; for example, some devices are known to keep enabling
      the speaker outputs no matter which pin control values are set on the
      speaker pins.
      
      The driver doesn't check actually whether the pins have the output amp
      caps, but assumes that the proper mixer (mute) controls are created on
      all these pins.  If not the case, you can't use this flag for your
      device.
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      7eebffd3
  21. 03 6月, 2013 3 次提交
    • T
      ALSA: hda/via - Clean up duplicated codes · 963afde9
      Takashi Iwai 提交于
      The previous commit was written in the way to make the backport to
      3.9.y easier, and left the duplicated open codes intentionally.
      Now let's clean up the duplicated codes.
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      963afde9
    • T
      ALSA: hda - Add keep_eapd_on flag to generic parser · 05909d5c
      Takashi Iwai 提交于
      VT1802 codec seems to reset EAPD of other pins in the hardware level,
      and this was another reason of the silent headphone output on some
      machines.  As a workaround, introduce a new flag indicating to keep
      the EPAD on to the generic parser, and set it in patch_via.c.
      Reported-by: NAlex Riesen <raa.lkml@gmail.com>
      Cc: <stable@vger.kernel.org> [v3.9]
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      05909d5c
    • T
      ALSA: hda - Allow setting automute/automic hooks after parsing · 77afe0e9
      Takashi Iwai 提交于
      Some codec drivers (VIA codecs and some Realtek fixups) set the
      automute and automic hooks after calling
      snd_hda_gen_parse_auto_config().  In the current code, the hook
      pointers are referred only in snd_hda_gen_parse_auto_config() and
      passed to snd_hda_jack_detect_enable_callback(), thus changing the
      hook values won't change the actually called callbacks properly.
      
      This patch fixes this bug by setting the static functions as the
      primary callback functions for the jack detection, and let them
      calling the appropriate hooks dynamically.
      
      Cc: <stable@vger.kernel.org> [v3.9]
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      77afe0e9
  22. 16 5月, 2013 1 次提交
  23. 16 4月, 2013 2 次提交
    • T
      ALSA: hda - Use the primary DAC for all aamix outputs · 5ead56f2
      Takashi Iwai 提交于
      When setting up the aamix output paths, use the primary DAC instead of
      the individual DAC for each output as default.  Otherwise multiple
      DACs will be turned on for a single aamix widget, which results in
      doubly or more volumes, because the duplicated signals will be sent
      through all these DACs for a single stream.
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      5ead56f2
    • T
      ALSA: hda - Fix aamix activation with loopback control on VIA codecs · 65033cc8
      Takashi Iwai 提交于
      When we have a loopback mixer control, this should manage the state
      whether the output paths include the aamix or not.  But the current
      code blindly initializes the output paths with aamix = true, thus the
      aamix is enabled unless the loopback mixer control is changed.
      
      Also, update_aamix_paths() called by the loopback mixer control put
      callback invokes snd_hda_activate_path() with aamix = true even for
      disabling the mixing.  This leaves the aamix path even though the
      loopback control is turned off.
      
      This patch fixes these issues:
      - Introduced aamix_default() helper to indicate whether with_aamix is
        true or false as default
      - Fix the argument in update_aamix_paths() for disabling loopback
      Reported-by: NLydia Wang <LydiaWang@viatech.com.cn>
      Cc: <stable@vger.kernel.org> [v3.9+]
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      65033cc8
  24. 11 4月, 2013 2 次提交
  25. 05 4月, 2013 1 次提交
  26. 22 3月, 2013 3 次提交
  27. 18 3月, 2013 1 次提交
  28. 11 3月, 2013 1 次提交
  29. 08 3月, 2013 2 次提交
    • T
      ALSA: hda - Avoid automatic pin-ctl update for hp/mic when jack ctl exists · 8ba955ce
      Takashi Iwai 提交于
      When the headphone mic jack enum control is created (via explicitly
      specification by user), it doesn't make much sense to change the I/O
      direction dynamically per capture source change, since the I/O
      direction is rather controlled over the enum ctl.
      
      This also reduces the implicit dependency between the capture source
      and the hp mic jack enum ctls, which might confuse a program accessing
      the whole control elements at once like alsactl.
      
      In addition, this patch introduces update_hp_automute_hook() function
      to call the proper hook function.  It's just to remove the open codes
      in multiple places in hda_generic.c.
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      8ba955ce
    • T
      ALSA: hda - Consolidate add_in_jack_modes and add_out_jack_modes hints · f811c3cf
      Takashi Iwai 提交于
      There is no big merit to distinguish these two hints.  Instead, just
      have a single flag, add_jack_modes, for creating the jack mode enum
      ctls for both I/O directions.
      
      The hint string parser code is left and translated as add_jack_modes
      just for keeping compatibility.
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      f811c3cf