[alsa-devel] [PATCH] ASoC: Fix dapm_is_shared_kcontrol so everything isn't shared

Jarkko Nikula jhnikula at gmail.com
Thu May 26 20:02:47 CEST 2011

On Thu, 26 May 2011 09:57:33 -0600
Stephen Warren <swarren at nvidia.com> wrote:

> Commit af46800 ("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.
> v2:
> * Don't share across DAPM contexts.
> * Changed to Tested-by tag below for Jarkko.
> Reported-by: Liam Girdwood <lrg at ti.com>
> Tested-by: Jarkko Nikula <jhnikula at gmail.com>
> Signed-off-by: Stephen Warren <swarren at nvidia.com>
> ---
>  sound/soc/soc-dapm.c |    5 ++++-
>  1 files changed, 4 insertions(+), 1 deletions(-)
Tested-by confirmation :-)


More information about the Alsa-devel mailing list