1. 30 7月, 2013 4 次提交
  2. 24 7月, 2013 6 次提交
    • L
      ASoC: tlv320aic3x: Use snd_soc_dapm_mixer_update_power · 5d99d778
      Lars-Peter Clausen 提交于
      Use snd_soc_dapm_mixer_update_power() instead of reimplementing its
      functionality.
      Signed-off-by: NLars-Peter Clausen <lars@metafoo.de>
      Signed-off-by: NMark Brown <broonie@linaro.org>
      5d99d778
    • L
      ASoC: dapm: Add a update parameter to snd_soc_dapm_{mux,mixer}_update_power · 6b3fc03b
      Lars-Peter Clausen 提交于
      In order to avoid race conditions the assignment of dapm->update should happen
      while card->dapm_mutex is being held. To allow CODEC drivers to run a register
      update when using snd_soc_dapm_mux_update_power() or
      snd_soc_dapm_mixer_update_power() add a update parameter to these two functions.
      The update parameter will be assigned to dapm->update while card->dapm_mutex is
      locked.
      Signed-off-by: NLars-Peter Clausen <lars@metafoo.de>
      Signed-off-by: NMark Brown <broonie@linaro.org>
      6b3fc03b
    • L
      ASoC: dapm: Run widget updates for shared controls at the same time · ce6cfaf1
      Lars-Peter Clausen 提交于
      Currently when updating a control that is shared between multiple widgets the
      whole power-up/power-down sequence is being run once for each widget. The
      control register is updated during the first run, which means the CODEC internal
      routing is also updated for all widgets during this first run. The input and
      output paths for each widgets are only updated though during the respective run
      for that widget. This leads to a slight inconsistency between the CODEC's
      internal state and ASoC's state, which causes non optimal behavior in regard to
      click and pop avoidance.
      
      E.g. consider the following setup where two MUXs share the same control.
      
                +------+
       A1 ------|      |
                | MUX1 |----- C1
       B1 ------|      |
                +------+
                   |
        control ---+
                   |
                +------+
       A2 ------|      |
                | MUX2 |----- C2
       B2 ------|      |
                +------+
      
      If the control is updated to switch the MUXs from input A to input B with the
      current code the power-up/power-down sequence will look like this:
      
      Run soc_dapm_mux_update_power for MUX1
        Power-down A1
        Update MUXing
        Power-up B1
      
      Run soc_dapm_mux_update_power for MUX2
        Power-down A2
        (Update MUXing)
        Power-up B2
      
      Note that the second 'Update Muxing' is a no-op, since the register was already
      updated.
      
      While the preferred order for avoiding pops and clicks should be:
      
      Run soc_dapm_mux_update_power for control
        Power-down A1
        Power-down A2
        Update MUXing
        Power-up B1
        Power-up B2
      
      This patch changes the behavior to the later by running the updates for all
      widgets that the control is attached to at the same time.
      
      The new code is also a bit simpler since callers of
      soc_dapm_{mux,muxer}_update_power don't have to loop over each widget anymore
      and neither do we need to keep track for which of the kcontrol's widgets the
      current update is.
      Signed-off-by: NLars-Peter Clausen <lars@metafoo.de>
      Signed-off-by: NMark Brown <broonie@linaro.org>
      ce6cfaf1
    • L
      ASoC: dapm: Pass snd_soc_card directly to soc_dpcm_runtime_update() · c3f48ae6
      Lars-Peter Clausen 提交于
      soc_dpcm_runtime_update() operates on a ASoC card as a whole. Currently it takes
      a snd_soc_dapm_widget as its only parameter though. The widget is then used to
      look up the card and is otherwise unused. This patch changes the function to
      take a pointer to the card directly. This makes it possible to to call
      soc_dpcm_runtime_update() for updates which are not related to one specific
      widget.
      Signed-off-by: NLars-Peter Clausen <lars@metafoo.de>
      Signed-off-by: NMark Brown <broonie@linaro.org>
      c3f48ae6
    • M
      ASoC: dapm: Use generic power check for everything except DAIs · 63c69a6e
      Mark Brown 提交于
      As noticed by Lars-Peter Clausen since the move to using widgets to hook
      into the DAIs we no longer directly manage the power of AIF or DAC/ADC
      widgets from the stream integration so they can just use the generic power
      checks instead of the custom stream integration ones they currently do.
      Signed-off-by: NMark Brown <broonie@linaro.org>
      63c69a6e
    • L
      ASoC: dapm: Fix return value of snd_soc_dapm_put_{volsw,enum_virt}() · 56a67834
      Lars-Peter Clausen 提交于
      The ALSA core expect the put callback of a control to return 1 if the value of
      the control changed and 0 if it did not. Both snd_soc_dapm_put_volsw() and
      snd_soc_dapm_put_enum_virt() currently always returns 0. For both functions we
      already have a 'change' variable which either contains 1 or 0 depending on
      whether the value has changed or not, so just return that.
      Signed-off-by: NLars-Peter Clausen <lars@metafoo.de>
      Signed-off-by: NMark Brown <broonie@linaro.org>
      56a67834
  3. 23 7月, 2013 1 次提交
  4. 19 7月, 2013 1 次提交
  5. 18 7月, 2013 1 次提交
  6. 17 7月, 2013 1 次提交
    • T
      ALSA: seq-oss: Initialize MIDI clients asynchronously · 256ca9c3
      Takashi Iwai 提交于
      We've got bug reports that the module loading stuck on Debian system
      with 3.10 kernel.  The debugging session revealed that the initial
      registration of OSS sequencer clients stuck at module loading time,
      which involves again with request_module() at the init phase.  This is
      triggered only by special --install stuff Debian is using, but it's
      still not good to have such loops.
      
      As a workaround, call the registration part asynchronously.  This is a
      better approach irrespective of the hang fix, in anyway.
      Reported-and-tested-by: NPhilipp Matthias Hahn <pmhahn@pmhahn.de>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      256ca9c3
  7. 16 7月, 2013 9 次提交
  8. 15 7月, 2013 3 次提交
  9. 12 7月, 2013 5 次提交
  10. 11 7月, 2013 1 次提交
  11. 10 7月, 2013 1 次提交
    • E
      ALSA: usb-audio: fix regression for fixed stream quirk · 42d4ab83
      Eldad Zack 提交于
      Commit 8f898e92 removed the redundant
      reads of bInterfaceProtocol from the descriptors, but introduced a
      regression to devices with quirks of type QUIRK_AUDIO_FIXED_ENDPOINT,
      since fp->protocol is not set in setup process.
      
      As a consequence, audio streams would not get initialized, as the
      following logs show:
      
      [   48.923043] setting usb interface 3:1
      [   48.923056] Creating new capture data endpoint #81
      [   48.923484] 4:3:1: cannot set freq 48000 to ep 0x81
      
      This patch sets fp->protocol in create_fixed_stream_quirk() and
      resolves the regression.
      Signed-off-by: NEldad Zack <eldad@fogrefinery.com>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      42d4ab83
  12. 08 7月, 2013 1 次提交
  13. 05 7月, 2013 3 次提交
  14. 04 7月, 2013 3 次提交
    • S
      ASoC: wm8962: fix NULL pdata pointer · 4642aabd
      Shawn Guo 提交于
      There is an error in merge commit 384b8345 on conflict resolution which
      causes the following NULL pdata pointer bug.
      
      wm8962 0-001a: customer id 0 revision D
      Unable to handle kernel NULL pointer dereference at virtual address 00000004
      pgd = 80004000
      [00000004] *pgd=00000000
      Internal error: Oops: 5 [#1] SMP ARM
      Modules linked in:
      CPU: 0 PID: 1 Comm: swapper/0 Not tainted 3.10.0+ #1
      task: bf870000 ti: bf874000 task.ti: bf874000
      PC is at wm8962_probe+0x134/0x6c8
      LR is at regmap_unlock_mutex+0x10/0x14
      pc : [<80452100>]    lr : [<80304cf4>]    psr: a0000113
      sp : bf875c98  ip : 00000000  fp : bf875cd4
      r10: 00000000  r9 : bfb1830c  r8 : 80779bc4
      r7 : 00000000  r6 : 00000001  r5 : bfbac010  r4 : bfb33e00
      r3 : 80304ce4  r2 : 00000000  r1 : 00000001  r0 : fffffffb
      Flags: NzCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
      Control: 10c53c7d  Table: 1000404a  DAC: 00000017
      Process swapper/0 (pid: 1, stack limit = 0xbf874238)
      Stack: (0xbf875c98 to 0xbf876000)
      ...
      
      Fix the error by assigning pdata a correct pointer.
      Signed-off-by: NShawn Guo <shawn.guo@linaro.org>
      Signed-off-by: NMark Brown <broonie@linaro.org>
      4642aabd
    • A
      ASoC: imx-sgtl5000: return E_PROBE_DEFER if ssi/codec not found · 28e5ca73
      Arnaud Patard (Rtp) 提交于
      If the ssi or codec drivers are not loaded (for instance, because spi or i2c
      bus drivers are not loaded), returning -EINVAL will for people to unload and
      then reload the module to get sound working. Returning E_PROBE_DEFER will
      mitigate this.
      Signed-off-by: NArnaud Patard <arnaud.patard@rtp-net.org>
      Signed-off-by: NMark Brown <broonie@linaro.org>
      28e5ca73
    • S
      ASoC: Samsung: Remove redundant comment · b3ff0466
      Sachin Kamat 提交于
      There is a typo in the filename (i2c mentioned instead of i2s).
      However, this is a redundant piece of information. Delete it
      altogether.
      Signed-off-by: NSachin Kamat <sachin.kamat@linaro.org>
      Signed-off-by: NMark Brown <broonie@linaro.org>
      b3ff0466