1. 21 9月, 2011 1 次提交
    • M
      ASoC: Trace and collect statistics for DAPM graph walking · de02d078
      Mark Brown 提交于
      One of the longest standing areas for improvement in ASoC has been the
      DAPM algorithm - it repeats the same checks many times whenever it is run
      and makes no effort to limit the areas of the graph it checks meaning we
      do an awful lot of walks over the full graph. This has never mattered too
      much as the size of the graph has generally been small in relation to the
      size of the devices supported and the speed of CPUs but it is annoying.
      
      In preparation for work on improving this insert a trace point after the
      graph walk has been done. This gives us specific timing information for
      the walk, and in order to give quantifiable (non-benchmark) numbers also
      count every time we check a link or check the power for a widget and report
      those numbers. Substantial changes in the algorithm may require tweaks to
      the stats but they should be useful for simpler things.
      Signed-off-by: NMark Brown <broonie@opensource.wolfsonmicro.com>
      de02d078
  2. 19 9月, 2011 1 次提交
  3. 31 8月, 2011 1 次提交
  4. 16 8月, 2011 1 次提交
  5. 26 7月, 2011 2 次提交
  6. 21 7月, 2011 1 次提交
  7. 17 7月, 2011 1 次提交
  8. 06 7月, 2011 1 次提交
  9. 20 6月, 2011 1 次提交
  10. 14 6月, 2011 2 次提交
    • L
      ASoC: dapm - Refactor widget IO functions in preparation for platform widgets. · 0445bdf4
      Liam Girdwood 提交于
      This time with soc_widget_update_bits reflecting recent soc_update_bits changes.
      
      Currently widget IO is tightly coupled to the CODEC drivers. Future platform DSP
      devices have mixer components that can alter power usage and hence require full
      DAPM support.
      
      This provides a generic widget IO operation wrapper in preparation for
      future patches that implement platform driver DAPM.
      Signed-off-by: NLiam Girdwood <lrg@ti.com>
      Signed-off-by: NMark Brown <broonie@opensource.wolfsonmicro.com>
      0445bdf4
    • 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
  11. 09 6月, 2011 1 次提交
  12. 07 6月, 2011 7 次提交
  13. 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
  14. 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
  15. 04 5月, 2011 7 次提交
  16. 28 4月, 2011 1 次提交
  17. 20 4月, 2011 2 次提交
  18. 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
  19. 08 4月, 2011 1 次提交
  20. 05 4月, 2011 1 次提交
  21. 09 3月, 2011 3 次提交
  22. 03 3月, 2011 1 次提交