Changes since v1:
* Rename the xmax parameter for the SOC_ENUM_SINGLE_VIRT() macro to xitems.
Original cover letter below.
We currently have 5 nearly identical implementations of enum controls. Two for
normal controls and three for DAPM controls. The only difference between them is
how and if the selected enum item is mapped to a register value.
For normal enums there is a direct mapping of the selected item to the register
value, for value enums there is an additional look-up table that maps the
selected item to a register value. DAPM also as a virtual enum which is not
backed by any hardware register and the enum is solely used to influence DAPM
routing decisions. The different implementations can easily be consolidating by
making a few small changes. The series first introduces two helper functions to
translate between the selected item and the register value. These functions will
do the right thing depending on whether the enum has a direct mapping or is a
value enum. These functions will be used to consolidate enums and value enums as
well as MUXs and value MUXs. The next step is consolidate MUXs and virtual MUXs.
This requires enums that are only used as virtual enums to be marked as such.
This is done the same way as for virtual mixer controls by setting reg to
SND_SOC_NOPM. All users of virtual MUXs are updated accordingly and then virtual
MUXs and MUXs are updated to share the same implementation. The last patch in
the series does cleanup of dapm_set_path_status() on top of all this.
Once this has been merged I'll send a second patch-set replacing and removing
the now deprecated ENUM and MUX macros.
The series depends on topic/dapm, topic/enum, topic/sign, topic/adau1373,
topic/max98090, topic/mc13783, fix/wm8994, topic/wm899
Lars-Peter Clausen (11):
ASoC: Remove unused 'reg2' field from soc_enum struct
ASoC: Consolidate enum and value enum controls
ASoC: dapm: Consolidate MUXs and value MUXs
ASoC: Add macros for defining virtual enums
ASoC: adau1373: Use SOC_ENUM_SINGLE_VIRT_DECL()
ASoC: max98090: Use SOC_ENUM_SINGLE_VIRT_DECL()
ASoC: mc13783: Use SOC_ENUM_SINGLE_VIRT_DECL()
ASoC: wm8994: Use SOC_ENUM_SINGLE_VIRT_DECL()
ASoC: wm8995: Use SOC_ENUM_SINGLE_VIRT_DECL()
ASoC: dapm: Consolidate MUXs and virtual MUXs
ASoC: dapm: Break dapm_set_path_status() appart
include/sound/soc-dapm.h | 38 +----
include/sound/soc.h | 41 +++--
sound/soc/codecs/adau1373.c | 4 +-
sound/soc/codecs/max98090.c | 2 +-
sound/soc/codecs/mc13783.c | 6 +-
sound/soc/codecs/wm8994.c | 3 +-
sound/soc/codecs/wm8995.c | 2 +-
sound/soc/soc-core.c | 101 ++----------
sound/soc/soc-dapm.c | 369 +++++++++-----------------------------------
9 files changed, 136 insertions(+), 430 deletions(-)
--
1.8.0