• Lars-Peter Clausen's avatar
    ASoC: Consolidate enum and value enum controls · 29ae2fa5
    Lars-Peter Clausen authored
    The implementations for enum and value enum controls are almost identical. The
    only difference is that the value enum uses an additional look-up table to map
    the control value to the register value, while the enum control uses a direct
    mapping. Enums and value enums can easily be distinguished at runtime, for value
    enums the values field of the snd_soc_enum struct contains the look-up table,
    while for enums it is NULL. This patch adds two new small helper functions
    called snd_soc_enum_item_to_val() and snd_soc_enum_val_to_item() which map
    between register value and control item. If the items field of the snd_soc_enum
    struct is NULL the function will do a direct mapping otherwise they'll use the
    look-up table to do the mapping. Using these small helper functions it is
    possible to use the same kcontrol handlers for both enums and value enums. The
    functions are added a inline functions in soc.h so they can also be used by the
    DAPM code to accomplish similar consolidation.
    Signed-off-by: default avatarLars-Peter Clausen <lars@metafoo.de>
    Signed-off-by: default avatarMark Brown <broonie@linaro.org>
    29ae2fa5
soc-core.c 117 KB