11 Jan, 2012

1 commit


08 Dec, 2011

1 commit


02 Dec, 2011

1 commit

  • A signal generator behaves as an input would but is not considered for
    any of the special behaviour associated with external input pins. This
    is especially useful when automatically working out not connected widgets.

    Signed-off-by: Mark Brown
    Acked-by: Liam Girdwood

    Mark Brown
     

28 Nov, 2011

1 commit


24 Nov, 2011

1 commit

  • A card is fully routed if the DAPM route table describes all connections on
    the board.

    When a card is fully routed, some operations can be automated by the ASoC
    core. The first, and currently only, such operation is described below, and
    implemented by this patch.

    Codecs often have a large number of external pins, and not all of these pins
    will be connected on all board designs. Some machine drivers therefore call
    snd_soc_dapm_nc_pin() for all the unused pins, in order to tell the ASoC core
    never to activate them.

    However, when a card is fully routed, the information needed to derive the
    set of unused pins is present in card->dapm_routes. In this case, have
    the ASoC core automatically call snd_soc_dapm_nc_pin() for each unused
    codec pin.

    This has been tested with soc/tegra/tegra_wm8903.c and soc/tegra/trimslice.c.

    Signed-off-by: Stephen Warren
    Signed-off-by: Mark Brown

    Stephen Warren
     

10 Oct, 2011

1 commit


09 Oct, 2011

2 commits


08 Oct, 2011

1 commit

  • Ensure we only have one sync during the initial startup of the card by
    making snd_soc_dapm_sync() a noop on non-instantiated cards. This avoids
    any bounces due to things like jacks reporting their initial state on
    partially initialised cards. The callers that don't also get called at
    runtime should just be removed.

    Signed-off-by: Mark Brown

    Mark Brown
     

05 Oct, 2011

5 commits


04 Oct, 2011

7 commits


29 Sep, 2011

1 commit


24 Sep, 2011

1 commit

  • Currently we force all devices in the system to be at the same bias level.
    This is due to concerns about power or pop/click impacts from either
    ramping VMID or mismatching VMID on the analogue I/O lines between
    connected devices but does mean we power devices up more often than we
    really need to.

    If a device flags idle_bias_off this will usually mean that it's either
    all digital or ground referenced (in which case the idle and powered bias
    levels are identical) so this concern does not apply and we can save some
    power by leaving it off when not needed itself.

    Signed-off-by: Mark Brown

    Mark Brown
     

23 Sep, 2011

1 commit


21 Sep, 2011

2 commits

  • The indentation is getting a little deep. Should be straight code motion,
    no functional changes.

    Signed-off-by: Mark Brown

    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: Mark Brown

    Mark Brown
     

19 Sep, 2011

1 commit


31 Aug, 2011

2 commits


16 Aug, 2011

1 commit


26 Jul, 2011

2 commits


21 Jul, 2011

1 commit


17 Jul, 2011

1 commit


06 Jul, 2011

1 commit


20 Jun, 2011

1 commit

  • Previously we were using the DAPM context rather than a widget as the
    argument for update_bits() so we didn't need to care that our list walk
    of widgets left us one beyond the end of the list. Now we're using them
    for the register update we need to make sure we're pointing at an actual
    widget not the list_head.

    Fix originally suggested by Liam on IM.

    Signed-off-by: Mark Brown
    Acked-by: Liam Girdwood

    Mark Brown
     

14 Jun, 2011

2 commits

  • 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: Liam Girdwood
    Signed-off-by: Mark Brown

    Liam Girdwood
     
  • 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: Mark Brown
    Acked-by: Liam Girdwood

    Mark Brown
     

09 Jun, 2011

2 commits