1. 16 3月, 2015 1 次提交
    • T
      ALSA: hda - Treat stereo-to-mono mix properly · cc261738
      Takashi Iwai 提交于
      The commit [ef403edb: ALSA: hda - Don't access stereo amps for
      mono channel widgets] fixed the handling of mono widgets in general,
      but it still misses an exceptional case: namely, a mono mixer widget
      taking a single stereo input.  In this case, it has stereo volumes
      although it's a mono widget, and thus we have to take care of both
      left and right input channels, as stated in HD-audio spec ("7.1.3
      Widget Interconnection Rules").
      
      This patch covers this missing piece by adding proper checks of stereo
      amps in both the generic parser and the proc output codes.
      Reported-by: NRaymond Yau <superquad.vortex2@gmail.com>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      cc261738
  2. 13 3月, 2015 3 次提交
    • T
      ALSA: hda - Don't access stereo amps for mono channel widgets · ef403edb
      Takashi Iwai 提交于
      The current HDA generic parser initializes / modifies the amp values
      always in stereo, but this seems causing the problem on ALC3229 codec
      that has a few mono channel widgets: namely, these mono widgets react
      to actions for both channels equally.
      
      In the driver code, we do care the mono channel and create a control
      only for the left channel (as defined in HD-audio spec) for such a
      node.  When the control is updated, only the left channel value is
      changed.  However, in the resume, the right channel value is also
      restored from the initial value we took as stereo, and this overwrites
      the left channel value.  This ends up being the silent output as the
      right channel has been never touched and remains muted.
      
      This patch covers the places where unconditional stereo amp accesses
      are done and converts to the conditional accesses.
      
      Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=94581
      Cc: <stable@vger.kernel.org>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      ef403edb
    • T
      ALSA: hda - Add workaround for MacBook Air 5,2 built-in mic · 2ddee91a
      Takashi Iwai 提交于
      MacBook Air 5,2 has the same problem as MacBook Pro 8,1 where the
      built-in mic records only the right channel.  Apply the same
      workaround as MBP8,1 to spread the mono channel via a Cirrus codec
      vendor-specific COEF setup.
      Reported-and-tested-by: NVasil Zlatanov <vasil.zlatanov@gmail.com>
      Cc: <stable@vger.kernel.org> # 3.9+
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      2ddee91a
    • T
      ALSA: hda - Set single_adc_amp flag for CS420x codecs · bad994f5
      Takashi Iwai 提交于
      CS420x codecs seem to deal only the single amps of ADC nodes even
      though the nodes receive multiple inputs.  This leads to the
      inconsistent amp value after S3/S4 resume, for example.
      
      The fix is just to set codec->single_adc_amp flag.  Then the driver
      handles these ADC amps as if single connections.
      Reported-and-tested-by: NVasil Zlatanov <vasil.zlatanov@gmail.com>
      Cc: <stable@vger.kernel.org> # 3.9+
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      bad994f5
  3. 12 3月, 2015 4 次提交
    • D
      ALSA: snd-usb: add quirks for Roland UA-22 · fcdcd1de
      Daniel Mack 提交于
      The device complies to the UAC1 standard but hides that fact with
      proprietary descriptors. The autodetect quirk for Roland devices
      catches the audio interface but misses the MIDI part, so a specific
      quirk is needed.
      Signed-off-by: NDaniel Mack <daniel@zonque.org>
      Reported-by: NRafa Lafuente <rafalafuente@gmail.com>
      Tested-by: NRaphaël Doursenaud <raphael@doursenaud.fr>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      fcdcd1de
    • T
      ALSA: control: Add sanity checks for user ctl id name string · be3bb823
      Takashi Iwai 提交于
      There was no check about the id string of user control elements, so we
      accepted even a control element with an empty string, which is
      obviously bogus.  This patch adds more sanity checks of id strings.
      
      Cc: <stable@vger.kernel.org>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      be3bb823
    • S
      ASoC: kirkwood: fix struct clk pointer comparing · aaa6d062
      Shawn Guo 提交于
      Since commit 035a61c3 ("clk: Make clk API return per-user struct clk
      instances"), clk API users can no longer check if two struct clk
      pointers are pointing to the same hardware clock, i.e. struct clk_hw, by
      simply comparing two pointers.  That's because with the per-user clk
      change, a brand new struct clk is created whenever clients try to look
      up the clock by calling clk_get() or sister functions like clk_get_sys()
      and of_clk_get().  This changes the original behavior where the struct
      clk is only created for once when clock driver registers the clock to
      CCF in the first place.  The net change here is before commit
      035a61c3 the struct clk pointer is unique for given hardware
      clock, while after the commit the pointers returned by clk lookup calls
      become different for the same hardware clock.
      
      That said, the struct clk pointer comparing in the code doesn't work any
      more.  Call helper function clk_is_match() instead to fix the problem.
      Signed-off-by: NShawn Guo <shawn.guo@linaro.org>
      Signed-off-by: NMichael Turquette <mturquette@linaro.org>
      Signed-off-by: NStephen Boyd <sboyd@codeaurora.org>
      aaa6d062
    • S
      ASoC: fsl_spdif: fix struct clk pointer comparing · 81efec85
      Shawn Guo 提交于
      Since commit 035a61c3 ("clk: Make clk API return per-user struct clk
      instances"), clk API users can no longer check if two struct clk
      pointers are pointing to the same hardware clock, i.e. struct clk_hw, by
      simply comparing two pointers.  That's because with the per-user clk
      change, a brand new struct clk is created whenever clients try to look
      up the clock by calling clk_get() or sister functions like clk_get_sys()
      and of_clk_get().  This changes the original behavior where the struct
      clk is only created for once when clock driver registers the clock to
      CCF in the first place.  The net change here is before commit
      035a61c3 the struct clk pointer is unique for given hardware
      clock, while after the commit the pointers returned by clk lookup calls
      become different for the same hardware clock.
      
      That said, the struct clk pointer comparing in the code doesn't work any
      more.  Call helper function clk_is_match() instead to fix the problem.
      Signed-off-by: NShawn Guo <shawn.guo@linaro.org>
      Signed-off-by: NMichael Turquette <mturquette@linaro.org>
      Signed-off-by: NStephen Boyd <sboyd@codeaurora.org>
      81efec85
  4. 11 3月, 2015 15 次提交
  5. 10 3月, 2015 2 次提交
  6. 09 3月, 2015 2 次提交
    • T
      ALSA: hda - Fix regression of HD-audio controller fallback modes · a1f3f1ca
      Takashi Iwai 提交于
      The commit [63e51fd7: ALSA: hda - Don't take unresponsive D3
      transition too serious] introduced a conditional fallback behavior to
      the HD-audio controller depending on the flag set.  However, it
      introduced a silly bug, too, that the flag was evaluated in a reverse
      way.  This resulted in a regression of HD-audio controller driver
      where it can't go to the fallback mode at communication errors.
      
      Unfortunately (or fortunately?) this didn't come up until recently
      because the affected code path is an error handling that happens only
      on an unstable hardware chip.  Most of recent chips work stably, thus
      they didn't hit this problem.  Now, we've got a regression report with
      a VIA chip, and this seems indeed requiring the fallback to the
      polling mode, and finally the bug was revealed.
      
      The fix is a oneliner to remove the wrong logical NOT in the check.
      (Lesson learned - be careful about double negation.)
      
      The bug should be backported to stable, but the patch won't be
      applicable to 3.13 or earlier because of the code splits.  The stable
      fix patches for earlier kernels will be posted later manually.
      
      Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=94021
      Fixes: 63e51fd7 ('ALSA: hda - Don't take unresponsive D3 transition too serious')
      Cc: <stable@vger.kernel.org> # v3.14+
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      a1f3f1ca
    • L
      ASoC: Fix component lists locking · 34e81ab4
      Lars-Peter Clausen 提交于
      Any access to the component_list, codec_list and platform_list needs to be
      properly locked by the client_mutex. Otherwise undefined behavior can occur
      if the list is modified in one thread and concurrently accessed from another
      thread.
      
      This patch adds the missing locking to the debugfs file handlers that
      display the registered components, as well as the various components
      unregister functions.
      
      Furthermore the client_lock is now held for the whole
      snd_soc_instantiate_card() sequence to make sure that component removal does
      not race against the card registration.
      Reported-by: NTakashi Iwai <tiwai@suse.de>
      Signed-off-by: NLars-Peter Clausen <lars@metafoo.de>
      Signed-off-by: NMark Brown <broonie@kernel.org>
      34e81ab4
  7. 07 3月, 2015 3 次提交
  8. 06 3月, 2015 2 次提交
  9. 05 3月, 2015 8 次提交