1. 22 6月, 2014 6 次提交
    • L
      ASoC: Add DAPM support at the component level · ce0fc93a
      Lars-Peter Clausen 提交于
      This patch adds full DAPM support at the component level. Previously there was
      only full DAPM support for CODECs and partial DAPM support (e.g. no Mixers nor
      MUXs) for platforms. Having DAPM support at the component level will allow all
      types of components to use DAPM and also help in consolidating the DAPM support
      between CODECs and platforms.
      
      Since the DAPM context is directly embedded into the snd_soc_codec and
      snd_soc_platform struct and the 'dapm' field is directly referenced in a lot of
      drivers moving the field just right now is not possible without causing code
      churn. The approach this patch takes is to add two new fields to the component
      struct. One field which is the pointer to the actual DAPM context used by the
      component and one DAPM context that will be used as the default if no other
      context was specified. For CODECs and platforms the pointer is initialized to
      point to the CODEC or platform DAPM context. All generic code when referencing
      a component's DAPM struct will go via the pointer. This will make it possible to
      eventually seamlessly move the DAPM context from snd_soc_codec and
      snd_soc_platform struct over once all direct references have been eliminated.
      Signed-off-by: NLars-Peter Clausen <lars@metafoo.de>
      Signed-off-by: NMark Brown <broonie@linaro.org>
      ce0fc93a
    • L
      ASoC: Add a set_bias_level() callback to the DAPM context struct · 68f831c2
      Lars-Peter Clausen 提交于
      Currently the DAPM code directly looks at the CODEC driver struct to get a
      handle to the set_bias_level() callback. This patch adds a new set_bias_level()
      callback to the DAPM context struct. The DAPM code will use this new callback
      instead of the CODEC callback. For CODECs the new callback is set up to call the
      CODEC specific set_bias_level callback(). Not looking directly at the CODEC
      driver struct will allow non CODEC DAPM contexts to implement a set_bias_level()
      callback.
      
      This is also similar to how the seq_notifier() and stream_event() callbacks are
      currently handled.
      Signed-off-by: NLars-Peter Clausen <lars@metafoo.de>
      Signed-off-by: NMark Brown <broonie@linaro.org>
      68f831c2
    • L
      ASoC: Auto disconnect pins from all DAPM contexts · 7df37884
      Lars-Peter Clausen 提交于
      Currently only pins in CODEC DAPM contexts are automatically marked as
      non-connected if the card has the fully_routed flag set. This makes sense since
      widgets which qualify for auto-disconnection are only found in CODEC DAPM
      contexts. But with componentisation this is going to change, so consider all
      widgets for auto-disconnection.
      
      Also it is probably faster to walk the widgets list only once rather than once
      for each CODEC.
      Signed-off-by: NLars-Peter Clausen <lars@metafoo.de>
      Signed-off-by: NMark Brown <broonie@linaro.org>
      7df37884
    • L
      ASoC: Split component registration into two steps · bb13109d
      Lars-Peter Clausen 提交于
      Split snd_soc_component_register() into snd_soc_component_initialize() and
      snd_soc_component_add(). Using a 2-stage registration approach has the advantage
      that it is possible to modify the component after it has been initialized, but
      before it is made visible to the system. This e.g. allows CODECs or platforms to
      overwrite some of the default settings made in snd_soc_component_initialize().
      
      Similar snd_soc_component_unregister() is split into two steps as well,
      snd_soc_component_delete(), which removes the component from the system, and
      snd_soc_component_cleanup(), which frees all the resources allocated by the
      component.
      
      Furthermore this patch makes sure that if a component is visible on two list
      (e.g. the component list and the CODEC list) it is added or removed to both
      lists atomically.
      Signed-off-by: NLars-Peter Clausen <lars@metafoo.de>
      Signed-off-by: NMark Brown <broonie@linaro.org>
      bb13109d
    • L
      ASoC: Move name and id from CODEC/platform to component · f4333203
      Lars-Peter Clausen 提交于
      The component struct already has a name and id field which are initialized to
      the same values as the same fields in the CODEC and platform structs. So remove
      them from the CODEC and platform structs and used the ones from the component
      struct instead.
      Signed-off-by: NLars-Peter Clausen <lars@metafoo.de>
      Signed-off-by: NMark Brown <broonie@linaro.org>
      f4333203
    • L
      ASoC: Move name_prefix from CODEC to component · 94f99c87
      Lars-Peter Clausen 提交于
      Move the name_prefix from the CODEC struct to the component struct. This will
      eventually allow to specify prefixes for all types of components. It is also
      necessary to make the DAPM code component type independent (i.e. a DAPM context
      does not need to know whether it belongs to a CODEC or a platform or something
      else).
      Signed-off-by: NLars-Peter Clausen <lars@metafoo.de>
      Signed-off-by: NMark Brown <broonie@linaro.org>
      94f99c87
  2. 13 6月, 2014 3 次提交
  3. 12 6月, 2014 3 次提交
  4. 10 6月, 2014 2 次提交
  5. 09 6月, 2014 2 次提交
  6. 06 6月, 2014 4 次提交
  7. 05 6月, 2014 1 次提交
  8. 04 6月, 2014 8 次提交
  9. 03 6月, 2014 3 次提交
    • T
      ASoC: Fix wrong argument for card remove callbacks · 16088cb6
      Takashi Iwai 提交于
      The commit [e1d4d3c8: ASoC: free jack GPIOs before the sound card is
      freed] introduced snd_soc_card remove callbacks to a few drivers, but
      they are implemented with a wrong argument type.  The callback should
      receive snd_soc_card pointer instead of snd_soc_pcm_runtime.
      
      Fixes: e1d4d3c8 ('ASoC: free jack GPIOs before the sound card is freed')
      Acked-by: NMark Brown <broonie@linaro.org>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      16088cb6
    • S
      ASoC: free jack GPIOs before the sound card is freed · e1d4d3c8
      Stephen Warren 提交于
      This is the same change as commit fb6b8e71 "ASoC: tegra: free jack
      GPIOs before the sound card is freed", but applied to all other ASoC
      machine drivers where code inspection indicates the same problem exists.
      
      That commit's description is:
      ==========
      snd_soc_jack_add_gpios() schedules a work queue item to poll the GPIO to
      generate an initial jack status report. If sound card initialization
      fails, that work item needs to be cancelled, so it doesn't run after the
      card has been freed. Specifically, freeing the card calls
      snd_jack_dev_free() which calls snd_jack_dev_disconnect() which sets
      jack->input_dev = NULL, and input_dev is used by snd_jack_report(), which
      is called from the work queue item.
      
      snd_soc_jack_free_gpios() cancels the work item. The Tegra ASoC machine
      drivers do call this function in the platform driver remove() callback.
      However, this happens after the sound card is freed, at least when the
      card is freed due to errors late during snd_soc_instantiate_card(). This
      leaves a window where the work item can execute after the card is freed.
      In next-20140522, sound card initialization does fail for unrelated
      reasons, and hits the problem described above.
      
      To solve this, fix the Tegra ASoC machine drivers to clean up the Jack
      GPIOs during the snd_soc_card's .remove() callback, which is executed
      before the overall card object is freed. also, guard the cleanup call
      based on whether we actually setup up the GPIOs in the first place.
      Ideally, we'd do the cleanup in a struct snd_soc_dai_link .fini/remove
      function to match where the GPIOs get set up. However, there is no such
      callback.
      ==========
      
      Note that I have not even compile-tested this in most cases, since most
      of the drivers rely on specific mach-* support I don't have enabled, and
      don't support COMPILE_TEST. Testing by the relevant board maintainers
      would be useful.
      Signed-off-by: NStephen Warren <swarren@nvidia.com>
      Signed-off-by: NMark Brown <broonie@linaro.org>
      e1d4d3c8
    • T
      ALSA: firewire-lib: Remove a comment about restriction of asynchronous operation · c8109b57
      Takashi Sakamoto 提交于
      The comment for fcp_avc_transaction() describes it doesn't support this type
      of operation. But it was already supported by this commit.
      
      00a7bb81
      ALSA: firewire-lib: Add support for deferred transaction
      Signed-off-by: NTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      c8109b57
  10. 02 6月, 2014 8 次提交