• S
    ASoC: dapm: Implement mixer control sharing · 85762e71
    Stephen Warren 提交于
    This is the equivalent of commit af46800b "ASoC: Implement mux control
    sharing", but applied to mixers instead of muxes.
    
    This allows a single control to affect multiple mixer widgets at once,
    which is useful when there is a single set of register bits that affects
    multiple mixers in HW, for example both the L and R mixers of a stereo
    path.
    
    Without this, you either:
    
    1) End up with multiple controls that affect the same register bits, but
    whose DAPM state falls out of sync with HW, since the DAPM state is only
    updated for the specific control that is modified, and not for other
    paths that are affected by the register bit(s).
    
    2) False paths through DAPM, since you end up merging unconnected stereo
    paths together into a single widget which hosts the single control, and
    then branching back out again, thus conjoining the enable states of the
    two input paths.
    
    Now that the kcontrol creation logic is split out into a separate
    function, dapm_create_or_share_mixmux_kcontrol(), also use that to
    replace most of the body of dapm_new_mux(). This should produce no
    functional change, but simply eliminates some mostly duplicated code.
    Signed-off-by: NStephen Warren <swarren@nvidia.com>
    Signed-off-by: NMark Brown <broonie@opensource.wolfsonmicro.com>
    85762e71
soc-dapm.c 93.0 KB