ASoC: tlv320aic31xx: add explicit support for tlv320dac31xx
authorNikita Yushchenko <nikita.yoush@cogentembedded.com>
Fri, 23 Sep 2016 11:52:52 +0000 (14:52 +0300)
committerMark Brown <broonie@kernel.org>
Mon, 26 Sep 2016 16:42:27 +0000 (09:42 -0700)
commitef9656b6936fb7f66e7e25d284c955f4893ac421
treedaadc3a815e6b5ca88b7373445ff25e1ab3349a1
parent8180bd56bdd1dcade8d1b2a0b6f70b2397bec372
ASoC: tlv320aic31xx: add explicit support for tlv320dac31xx

tlv320dac31xx is a subset of tlv320aic31xx:
- it does not have MIC inputs and ADC, thus capture is not supported,
- it has analog inputs AIN1/AIN2 that can be mixed into output.

Although tlv320dac31xx does work with tlv320aic31xx driver, this setup
does register non-existent widgets and non-existent capture stream.
Thus userspace lists non-existent objects in user interfaces, an can
access these, causing operations with device registers that are
declared as "reserved" in tlv320dac31xx datasheet.

This patch fixes this situation by separating controls/widgets/routes
into common, aic31xx-specific, and dac31xx-specific parts. Only parts
that match actual hardware (as declared in "compatible" device tree
property) are registered.

Changes from v1:
- update device tree binding documentation,
- rebased on top of "ASoC: codec duplicated callback function goes to
  component on tlv320aic31xx" commit.

Signed-off-by: Nikita Yushchenko <nikita.yoush@cogentembedded.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Documentation/devicetree/bindings/sound/tlv320aic31xx.txt
sound/soc/codecs/tlv320aic31xx.c
sound/soc/codecs/tlv320aic31xx.h