1. 14 6月, 2011 1 次提交
    • M
      ASoC: Add weak routes for sidetone style paths · bf3a9e13
      Mark Brown 提交于
      Normally DAPM will power up any connected audio path. This is not ideal
      for sidetone paths as with sidetone paths the audio path is not wanted in
      itself, it is only desired if the two paths it provides a sidetone between
      are both active. If the sidetone path causes a power up then it can be
      hard to minimise pops as we first power up either the sidetone or the main
      output path and then power the other, with the second power up potentially
      introducing a DC offset.
      
      Address this by introducing the concept of a weak path. If a path is marked
      as weak then DAPM will ignore that path when walking the graph, though all
      the relevant controls are still available to the application layer to allow
      these paths to be configured.
      Signed-off-by: NMark Brown <broonie@opensource.wolfsonmicro.com>
      Acked-by: NLiam Girdwood <lrg@ti.com>
      bf3a9e13
  2. 09 6月, 2011 1 次提交
  3. 07 6月, 2011 7 次提交
  4. 27 5月, 2011 1 次提交
    • S
      ASoC: Fix dapm_is_shared_kcontrol so everything isn't shared · 1007da06
      Stephen Warren 提交于
      Commit af46800b ("ASoC: Implement mux control sharing") introduced
      function dapm_is_shared_kcontrol.
      
      When this function returns true, the naming of DAPM controls is derived
      from the kcontrol_new. Otherwise, the name comes from the widget (and
      possibly a widget's naming prefix).
      
      A bug in the implementation of dapm_is_shared_kcontrol made it return 1
      in all cases. Hence, that commit caused a change in control naming for
      all controls instead of just shared controls.
      
      Specifically, a control is always considered shared because it is always
      compared against itself. Solve this by never comparing against the widget
      containing the control being created.
      
      Equally, controls should never be shared between DAPM contexts; when the
      same codec is instantiated multiple times, the same kcontrol_new will be
      used. However, the control should no be shared between the multiple
      instances.
      
      I tested that with the Tegra WM8903 driver:
      * Shared is now mostly 0 as expected, and sometimes 1.
      * The expected controls are still generated after this change.
      
      However, I don't have any systems that have a widget/control naming
      prefix, so I can't test that aspect.
      
      Thanks for Jarkko Nikula for pointing out how to fix this.
      Reported-by: NLiam Girdwood <lrg@ti.com>
      Tested-by: NJarkko Nikula <jhnikula@gmail.com>
      Signed-off-by: NStephen Warren <swarren@nvidia.com>
      Acked-by: NLiam Girdwood <lrg@ti.com>
      Signed-off-by: NMark Brown <broonie@opensource.wolfsonmicro.com>
      1007da06
  5. 26 5月, 2011 1 次提交
    • J
      ASoC: Fix power down for widgetless per-card DAPM context case · ea77b947
      Jarkko Nikula 提交于
      Commit 52ba67bf ("ASoC: Force all DAPM contexts into the same bias state")
      powers up all the DAPM contexts in a card if any DAPM context becomes
      active. Unfortunately power down newer happens if per-card DAPM context
      doesn't have any widgets.
      
      Reason for this is that power state of per-card DAPM context without
      widgets is never cleared and thus all the DAPM contexts remain permanently
      active. Test for widgetless calling DAPM context in dapm_power_widgets()
      doesn't work for per-card DAPM context since power change is never
      originating from widgetless per-card DAPM context.
      
      Fix this by pre-clearing power state flag of non-codec DAPM context at the
      beginning of power sequence.
      Signed-off-by: NJarkko Nikula <jhnikula@gmail.com>
      Acked-by: NLiam Girdwood <lrg@ti.com>
      Signed-off-by: NMark Brown <broonie@opensource.wolfsonmicro.com>
      ea77b947
  6. 04 5月, 2011 7 次提交
  7. 28 4月, 2011 1 次提交
  8. 20 4月, 2011 2 次提交
  9. 09 4月, 2011 2 次提交
    • M
      ASoC: Allow DAPM pin operations to match any context · 0d86733c
      Mark Brown 提交于
      The DAPM pin operations currently require that the specific DAPM context
      that the pin being operated in is contained in be specified. With multi
      component and especially with the addition of a per-card DAPM context
      this isn't ideal as it means that things like disabling unused pins on
      CODECs require looking up the CODEC DAPM context.
      
      Fix this by falling back to matching a widget in any context if there isn't
      a match in the current context. The code isn't ideal currently but will do
      the job.
      Signed-off-by: NMark Brown <broonie@opensource.wolfsonmicro.com>
      Acked-by: NLiam Girdwood <lrg@ti.com>
      0d86733c
    • M
      ASoC: Force all DAPM contexts into the same bias state · 52ba67bf
      Mark Brown 提交于
      Currently we allow all DAPM contexts to determine their own bias level.
      While this should in general work in most situations and will deliver the
      lowest possible power it causes problems for our integration with the
      card bias level as we're calling the card bias level functions for each
      DAPM context even though they're card wide but don't say which CODEC
      we're calling them for. Mitigate against this by forcing everything to
      be in the same state.
      Signed-off-by: NMark Brown <broonie@opensource.wolfsonmicro.com>
      Acked-by: NLiam Girdwood <lrg@ti.com>
      52ba67bf
  10. 08 4月, 2011 1 次提交
  11. 05 4月, 2011 1 次提交
  12. 09 3月, 2011 3 次提交
  13. 03 3月, 2011 2 次提交
  14. 25 2月, 2011 1 次提交
  15. 23 2月, 2011 2 次提交
  16. 19 2月, 2011 1 次提交
  17. 14 2月, 2011 1 次提交
  18. 10 2月, 2011 1 次提交
  19. 28 1月, 2011 1 次提交
  20. 27 1月, 2011 1 次提交
  21. 19 1月, 2011 2 次提交
    • M
      ASoC: Provide per widget type callback when executing DAPM sequences · 474b62d6
      Mark Brown 提交于
      Many modern devices have features such as DC servos which take time to start.
      Currently these are handled by per-widget events but this makes it difficult
      to paralleise operations on multiple widgets, meaning delays can end up
      being needlessly serialised. By providing a callback to drivers when all
      widgets of a given type have been handled during a DAPM sequence the core
      allows drivers to start operations separately and wait for them to complete
      much more simply.
      Signed-off-by: NMark Brown <broonie@opensource.wolfsonmicro.com>
      Acked-by: NLiam Girdwood <lrg@slimlogic.co.uk>
      474b62d6
    • M
      ASoC: Add support for sequencing within · 20e4859d
      Mark Brown 提交于
      With larger devices there may be many widgets of the same type in series
      in an audio path. Allow drivers to specify an additional level of ordering
      within each widget type by adding a subsequence number to widgets and then
      splitting operations on widgets so that widgets of the same type but
      different sequence numbers are processed separately.  A typical example
      would be a supply widget which requires that another widget be enabled
      to provide power or clocking.
      
      SND_SOC_DAPM_PGA_S() and SND_SOC_DAPM_SUPPLY_S() macros are provided
      allowing this to be used with PGAs and supplies as these are the most
      commonly affected widgets.
      Signed-off-by: NMark Brown <broonie@opensource.wolfsonmicro.com>
      Acked-by: NLiam Girdwood <lrg@slimlogic.co.uk>
      20e4859d