1. 18 11月, 2014 5 次提交
  2. 03 10月, 2014 1 次提交
  3. 02 10月, 2014 1 次提交
  4. 30 9月, 2014 2 次提交
  5. 15 9月, 2014 1 次提交
    • T
      ALSA: vx: Use nonatomic PCM ops · db0a5214
      Takashi Iwai 提交于
      Rewrite VXpocket and VX222 drivers to use the new PCM nonatomic ops.
      The former irq tasklet is replaced with a threaded irq handler, and
      the tasklet for the PCM delayed start is simply merged into the normal
      PCM trigger, as well as the replacement of spinlock with mutex.
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      db0a5214
  6. 11 9月, 2014 1 次提交
  7. 08 9月, 2014 1 次提交
  8. 06 9月, 2014 2 次提交
  9. 05 9月, 2014 1 次提交
    • L
      ASoC: Add support for automatically going to BIAS_OFF on suspend · 86dbf2ac
      Lars-Peter Clausen 提交于
      There is a substantial amount of drivers that in go to SND_SOC_BIAS_OFF on
      suspend and go back to SND_SOC_BIAS_SUSPEND on resume (Often this is even
      the only thing done in the suspend and resume handlers). This patch
      introduces a new suspend_bias_off flag, which when set by a driver will let
      the ASoC core automatically put the device's DAPM context at the
      SND_SOC_BIAS_OFF level during suspend. Once the device is resumed the DAPM
      context will go back to SND_SOC_BIAS_STANDBY (if the context is idle,
      otherwise to SND_SOC_BIAS_ON).
      
      This will allow us to remove a fair bit of duplicated code from the drivers.
      Signed-off-by: NLars-Peter Clausen <lars@metafoo.de>
      Signed-off-by: NMark Brown <broonie@kernel.org>
      86dbf2ac
  10. 03 9月, 2014 2 次提交
    • T
      ALSA: pcm: Uninline snd_pcm_stream_lock() and _unlock() · 7af142f7
      Takashi Iwai 提交于
      The previous commit for the non-atomic PCM ops added more codes to
      snd_pcm_stream_lock() and its variants.  Since they are inlined
      functions, it resulted in a significant code size bloat.  For reducing
      the size bloat, this patch changes the inline functions to the normal
      function calls.  The export of rwlock and rwsem are removed as well,
      since they are referred only in pcm_native.c now.
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      7af142f7
    • T
      ALSA: pcm: Allow nonatomic trigger operations · 257f8cce
      Takashi Iwai 提交于
      Currently, many PCM operations are performed in a critical section
      protected by spinlock, typically the trigger and pointer callbacks are
      assumed to be atomic.  This is basically because some trigger action
      (e.g. PCM stop after drain or xrun) is done in the interrupt handler.
      If a driver runs in a threaded irq, however, this doesn't have to be
      atomic.  And many devices want to handle trigger in a non-atomic
      context due to lengthy communications.
      
      This patch tries all PCM calls operational in non-atomic context.
      What it does is very simple: replaces the substream spinlock with the
      corresponding substream mutex when pcm->nonatomic flag is set.  The
      driver that wants to use the non-atomic PCM ops just needs to set the
      flag and keep the rest as is.  (Of course, it must not handle any PCM
      ops in irq context.)
      
      Note that the code doesn't check whether it's atomic-safe or not, but
      trust in 100% that the driver sets pcm->nonatomic correctly.
      
      One possible problem is the case where linked PCM substreams have
      inconsistent nonatomic states.  For avoiding this, snd_pcm_link()
      returns an error if one tries to link an inconsistent PCM substream.
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      257f8cce
  11. 29 8月, 2014 1 次提交
  12. 27 8月, 2014 1 次提交
  13. 19 8月, 2014 7 次提交
    • L
      ASoC: Remove support for legacy snd_soc_platform IO · 75af7c08
      Lars-Peter Clausen 提交于
      There were never any actual users of this in upstream and by we have with
      regmap a replacement in place, which should be used by new drivers.
      Signed-off-by: NLars-Peter Clausen <lars@metafoo.de>
      Signed-off-by: NMark Brown <broonie@linaro.org>
      75af7c08
    • L
      ASoC: Automatically initialize regmap for all components · 886f5692
      Lars-Peter Clausen 提交于
      So far regmap is only automatically initialized for CODECs. Now that we have the
      infrastructure in place to let components have DAPM widgets and controls that
      want to use the generic regmap based IO also make sure to automatically
      initialize regmap for all components.
      Signed-off-by: NLars-Peter Clausen <lars@metafoo.de>
      Signed-off-by: NMark Brown <broonie@linaro.org>
      886f5692
    • L
      ASoC: Pass component instead of DAPM context to AUX dev init callback · 57bf7726
      Lars-Peter Clausen 提交于
      Given that the component is the containing structure it makes more sense to pass
      the component rather than the DAPM context to the AUX dev init callback.
      Signed-off-by: NLars-Peter Clausen <lars@metafoo.de>
      Signed-off-by: NMark Brown <broonie@linaro.org>
      57bf7726
    • L
      ASoC: Move AUX dev support to the component level · 65d9361f
      Lars-Peter Clausen 提交于
      This patch makes it possible to register arbitrary components as a AUX dev
      for a card. This was previously only possible for CODEC components. With
      componentization having made it possible for components to have DAPM contexts
      and controls there is no reason why AUX devs should be artificially limited to
      snd_soc_codec devices.
      Signed-off-by: NLars-Peter Clausen <lars@metafoo.de>
      Signed-off-by: NMark Brown <broonie@linaro.org>
      65d9361f
    • L
      ASoC: Add component level probe/remove support · 61aca564
      Lars-Peter Clausen 提交于
      Now that we have a unified probe and remove path make sure to call them for all
      components. soc_{probe,remove}_component are responsible for setting up the DAPM
      context for the component, initialize the component prefix, manage the debugfs
      entries as well as do the registration of table based controls and DAPM
      elements. They also call the component drivers probe and remove callbacks. This
      patch makes these things available for generic snd_soc_component drivers rather
      than only having them for snd_soc_codec and snd_soc_platform drivers.
      Signed-off-by: NLars-Peter Clausen <lars@metafoo.de>
      Signed-off-by: NMark Brown <broonie@linaro.org>
      61aca564
    • L
      ASoC: Consolidate platform and CODEC probe/remove · f1d45cc3
      Lars-Peter Clausen 提交于
      The platform and CODEC probe and remove code is now largely identical. This
      patch consolidates it at the component level.
      
      The resulting code is slightly larger due to all the boiler plate code setting
      up the indirection for the table based control and DAPM registration.  Once all
      drivers have been update to no longer use the snd_soc_codec_driver and
      snd_soc_platform_driver specific fields for this the indirection can be removed
      again.
      
      This patch contains two noteworthy hacks that are only meant to be temporary to
      be able to update drivers and the core in separate incremental patches.
      
      The first hack is related to that some DPCM platforms expect that the DAPM
      widgets for the DAIs of a snd_soc_component are created in the DAPM context of
      the snd_soc_platform that has the same parent device. For handling this the
      steal_sibling_dai_widgets attribute is introduced. It gets set for
      snd_soc_platforms that register DAPM elements. When creating the DAI widgets for
      a component this flag is checked and if it is found on one of the siblings the
      component will not create any DAI widgets in its own DAPM context. If the
      attribute is set on a platform it will look for siblings components and create
      DAI widgets for them in its own context. The fix for this will be to update
      the offending drivers to only register a single component rather than two.
      
      The second hack deals with the fact that the ASoC card suspend and resume code
      still needs a list of CODECs that have been registered for the card. To handle
      this the generic probe and remove path have a check to see if the component is
      CODEC and if yes add/remove it to the card's CODEC list. While it is possible to
      clean up the suspend/resume code to not need the CODEC list anymore this is a
      bit of a chicken and egg problem since it will become easier to clean up the
      suspend/resume code once there is a unified component layer.
      Signed-off-by: NLars-Peter Clausen <lars@metafoo.de>
      Signed-off-by: NMark Brown <broonie@linaro.org>
      f1d45cc3
    • L
      ASoC: Move debugfs registration to the component level · 81c7cfd1
      Lars-Peter Clausen 提交于
      The debugfs registration is mostly identical between platforms and CODECs. This
      patches consolidates the two implementations at the component level.
      
      Unfortunately there are still a couple of CODEC specific debugfs files that are
      related to legacy ASoC IO that need to be registered. For this a new callback is
      added to the component struct that will be initialized when a CODEC is
      registered and will be used to register the CODEC specific files. Once there are
      no drivers left using legacy IO this can be removed again.
      Signed-off-by: NLars-Peter Clausen <lars@metafoo.de>
      Signed-off-by: NMark Brown <broonie@linaro.org>
      81c7cfd1
  14. 18 8月, 2014 1 次提交
  15. 17 8月, 2014 1 次提交
  16. 01 8月, 2014 1 次提交
    • N
      ASoC: wm8962: Let CODEC driver enable and disable its own MCLK · d7821953
      Nicolin Chen 提交于
      snd_soc_open() will trigger pm_runtime resume() which will then enable
      the regulator and initialization. So we should make sure the MCLK is
      enabled before this resume().
      
      Previously we let the machine driver get the clock and enable it in
      its probe(). However, considering about power saving, it'll be better
      to enable it when it's going to be used and disable it after using.
      
      So this patch just simply adds clk_get() and clk_enable() to WM8962
      driver. Meanwhile, it marks clock pointer to NULL if no clock assigned
      to it so it will not break any current function.
      Signed-off-by: NNicolin Chen <nicoleotsuka@gmail.com>
      Signed-off-by: NMark Brown <broonie@linaro.org>
      d7821953
  17. 23 7月, 2014 3 次提交
  18. 18 7月, 2014 1 次提交
  19. 17 7月, 2014 3 次提交
  20. 15 7月, 2014 1 次提交
  21. 10 7月, 2014 1 次提交
  22. 07 7月, 2014 1 次提交
  23. 05 7月, 2014 1 次提交
    • B
      ASoC: add RT286 CODEC driver · 07cf7cba
      Bard Liao 提交于
      This patch adds Realtek ALC286 codec driver.
      
      ALC286 is a dual mode codec, which can run as HD-A or I2S mode.
      It is controlled by HD-A verb commands via I2C protocol.
      The following is the I/O difference between ALC286 and general I2S codecs.
      1. A HD-A verb command contains three parts, NID, VID, and PID.
         And an I2S command contains only two parts: address and data.
      2. Not only the register address is written, but the read command also
         includes the entire write command.
      3. rt286 uses different registers for read and write the same bits.
      
      We map verb command to regmap structure. However, we read most registers from
      cache to prevent the asymmetry read/write issue in rt286.
      Signed-off-by: NBard Liao <bardliao@realtek.com>
      Signed-off-by: NGustaw Lewandowski <gustaw.lewandowski@intel.com>
      Signed-off-by: NMark Brown <broonie@linaro.org>
      07cf7cba