[alsa-devel] Commit:ce6cfaf1 query for shared control

Lars-Peter Clausen lars at metafoo.de
Mon Nov 25 08:45:46 CET 2013


On 11/25/2013 08:12 AM, noman pouigt wrote:
> Hello Lars,
> 
> I was wondering if you can enlighten me
> on below query.
> 
> Commit:ce6cfaf1
> 
> From the commit text "The input and
> output paths for each widgets are only
> updated though during the respective run
> for that widget".
> 
> Does this commit text mean: when mux
> or mixer_power_update is called then only
> the widget is powered and it's peer- widget
> source(path source) and widget sink(path sink)?

Hi,

What the commit does is to make sure that if a control is shared between
multiple mixers/muxes to apply all the changes in the same update sequence.
Instead of, as it was done before, to run a update sequence for each mixer/mux.

> 
>               +------+
>      A1 ------|      |
>               | MUX1 |----- C1
>      B1 ------|      |
>               +------+
>                  |
>       control ---+
>                  |
>               +------+
>      A2 ------|      |
>               | MUX2 |----- C2
>      B2 ------|      |
>               +------+
> 
> Can I represent the above diagram as below:
> 
> char *input_text_1[] = {
>         "A1", "B1"
> };
> 
> struct soc_enum input_enum_1 =
>  SOC_ENUM_SINGLE(some_register, some_bit,
>                     2, input_text_1);
> 
> char *input_text_2[] = {
>         "A2", "B2"
> };
> struct soc_enum input_enum_2 =
>  SOC_ENUM_SINGLE(some_register, some_bit,
>                   2, input_text_2);
> 
> 
> struct snd_kcontrol_new input_mux =
>    SOC_DAPM_ENUM("C1", input_enum_1);
> struct snd_kcontrol_new input_mux =
>    SOC_DAPM_ENUM("C2", input_enum_2);
> 
> dapm_route[] {
> "A1", "control","C1"
> "B1", "control","C1"
> "A2", "control","C2"
> "B2", "control","C2"
> };

The control part needs to have the name of one of the enum items. So this
would be { "A1", "A1", "C1" } and so on.

- Lars







More information about the Alsa-devel mailing list