1. 07 5月, 2015 2 次提交
  2. 28 4月, 2015 2 次提交
    • L
      ASoC: Add helper functions bias level management · fa880775
      Lars-Peter Clausen 提交于
      Currently drivers are responsible for managing the bias_level field of
      their DAPM context. The DAPM state itself is managed by the DAPM core
      though and the core has certain expectations on how and when the bias_level
      field should be updated. If drivers don't adhere to these undefined
      behavior can occur.
      
      This patch adds a few helper functions for manipulating the DAPM context
      state, each function with a description on when it should be used and what
      its effects are. This will also help us to move more of the bias_level
      management from drivers to the DAPM core.
      
      For convenience also add snd_soc_codec_* wrappers around these helpers.
      Signed-off-by: NLars-Peter Clausen <lars@metafoo.de>
      Signed-off-by: NMark Brown <broonie@kernel.org>
      fa880775
    • L
      ASoC: Add helper function getting CODEC's DAPM context · 39ed68c8
      Lars-Peter Clausen 提交于
      The DAPM context in the snd_soc_codec struct is redundant and scheduled to
      be replaced by the DAPM context in the snd_soc_component struct. This patch
      introduces a new helper function snd_soc_codec_get_dapm() which should be
      used for getting the DAPM context for a CODEC rather then directly
      accessing the dapm field. Once there are no more direct users of the dapm
      field left it is possible to transparently switch all drivers to the
      component DAPM context by updating snd_soc_codec_get_dapm() function.
      Signed-off-by: NLars-Peter Clausen <lars@metafoo.de>
      Signed-off-by: NMark Brown <broonie@kernel.org>
      39ed68c8
  3. 18 3月, 2015 1 次提交
  4. 16 3月, 2015 1 次提交
  5. 05 3月, 2015 2 次提交
    • L
      ASoC: Remove snd_soc_jack_new() · 77c71765
      Lars-Peter Clausen 提交于
      There are no users of snd_soc_jack_new() left and new users should use
      snd_soc_card_jack_new() instead. So remove the function.
      Signed-off-by: NLars-Peter Clausen <lars@metafoo.de>
      Signed-off-by: NMark Brown <broonie@kernel.org>
      77c71765
    • L
      ASoC: Allow to register jacks at the card level · 97093996
      Lars-Peter Clausen 提交于
      Jacks are typically card level elements, but are currently registered with a
      CODEC. When it was originally introduced snd_soc_jack_new() took a
      snd_soc_card as its parameter, but at that time DAPM was only implemented at
      the CODEC level and there was only one CODEC per card. This made it clear
      which CODEC to use for the jack DAPM operations. But the multi-component
      patchset added support for having multiple CODECs per card and with it the
      API was updated to register jacks with a specific CODEC instance instead.
      Subsequently DAPM support at the card level has been introduced, but the
      snd_soc_jack_new() API has so remained unchanged.
      
      This leaves us with the issue that the DAPM pins that are managed by the
      jack detection logic usually are part of the card DAPM context but are
      accessed through a CODEC DAPM context. Currently this works fine, but might
      break in the future if we take a more hierarchical approach to DAPM
      contexts.
      
      Furthermore with componentization progressing systems that do not register
      a snd_soc_codec might appear, while these system may still want to able to
      register a jack.
      
      This patch addresses these issues by adding a new function called
      snd_soc_card_jack_new() that can be used to register jacks with the card
      rather than a CODEC.
      
      This new function is mostly identical to snd_soc_jack_new() except that it
      additionally allows to directly specify the DAPM pins associated with the
      jack. This was done since most users of snd_soc_jack_new() typically call
      snd_soc_jack_add_pins() right after it, which is not necessary with the new
      API and allows to reduce the amount of boiler plate code.
      
      The old snd_soc_jack_new() is re-implemented as a wrapper around
      snd_soc_card_jack_new().
      Signed-off-by: NLars-Peter Clausen <lars@metafoo.de>
      Signed-off-by: NMark Brown <broonie@kernel.org>
      97093996
  6. 04 3月, 2015 1 次提交
  7. 24 2月, 2015 1 次提交
    • N
      ASoC: core: Add extra dapm properties for Device Tree · f23e860e
      Nicolin Chen 提交于
      The current helper functions, snd_soc_of_parse_audio_simple_widgets()
      and snd_soc_of_parse_audio_routing(), set dapm_widgets and dapm_routes
      without caring if they are already set by using build-in widgets and
      routes in the card driver. So there could be one of them, build-in one
      or Device Tree one, overrided by the other depending on which one was
      assigned later.
      
      This patch adds an extra pair of dapm_widgets and dapm_routes for DT
      use only so as to prevent unexpected overriding.
      Signed-off-by: NNicolin Chen <nicoleotsuka@gmail.com>
      Signed-off-by: NMark Brown <broonie@kernel.org>
      f23e860e
  8. 23 2月, 2015 1 次提交
  9. 27 1月, 2015 1 次提交
  10. 08 1月, 2015 1 次提交
  11. 26 11月, 2014 2 次提交
    • J
      ASoC: Remove 'const' from the device_node pointers · c362effe
      Jean-Francois Moine 提交于
      As Russell King's explained it, there should not be pointers to
      struct device_node:
      
      "struct device_node is a ref-counted structure.  That means if you
       store a reference to it, you should "get" it, and you should "put"
       it once you've done.  The act of "put"ing the pointed-to structure
       involves writing to that structure, so it is totally unappropriate
       to store a device_node structure as a const pointer.  It forces you
       to have to cast it back to a non-const pointer at various points
       in time to use various OF function calls."
      
      [This isn't quite the application here, we're not geting or putting the
      pointer though we did add some other users who call non-const OF
      functions -- broonie]
      Signed-off-by: NJean-Francois Moine <moinejf@free.fr>
      Signed-off-by: NMark Brown <broonie@kernel.org>
      c362effe
    • L
      ASoC: Disable regmap helpers if regmap is disabled · e874bf5f
      Lars-Peter Clausen 提交于
      If regmap is disabled there will be no users of the ASoC regmap helpers.
      Furthermore regmap_exit() will no be defined causing the following compile
      error:
      	sound/soc/soc-core.c: In function 'snd_soc_component_exit_regmap':
      	sound/soc/soc-core.c:2645:2: error: implicit declaration of function
      		'regmap_exit' [-Werror=implicit-function-declaration]
      
      So disable the helpers if regmap is disabled.
      Reported-by: Nkbuild test robot <fengguang.wu@intel.com>
      Fixes: 20feb881 ASoC: Add helper functions for deferred regmap setup")
      Signed-off-by: NLars-Peter Clausen <lars@metafoo.de>
      Signed-off-by: NMark Brown <broonie@kernel.org>
      e874bf5f
  12. 25 11月, 2014 1 次提交
  13. 19 11月, 2014 1 次提交
  14. 18 11月, 2014 5 次提交
  15. 11 11月, 2014 1 次提交
  16. 09 11月, 2014 1 次提交
  17. 03 11月, 2014 1 次提交
  18. 28 10月, 2014 1 次提交
  19. 06 9月, 2014 2 次提交
  20. 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
  21. 29 8月, 2014 1 次提交
  22. 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
  23. 18 8月, 2014 1 次提交
  24. 17 8月, 2014 1 次提交
  25. 23 7月, 2014 1 次提交