ASoC: tlv320aic32x4: Properly implement the positive and negative pins into the mixers
authorJeremy McDermond <nh6z@nh6z.net>
Wed, 11 May 2016 19:09:53 +0000 (12:09 -0700)
committerMark Brown <broonie@kernel.org>
Fri, 13 May 2016 10:54:51 +0000 (11:54 +0100)
commit2213fc350841e99598e52232b56add7b873529a0
tree1e6d29f9d180012381ef2c358a713f9890542155
parent13a06ed55dba0ae3f983ef3c4ea70fc42066e1b5
ASoC: tlv320aic32x4: Properly implement the positive and negative pins into the mixers

The TLV320AIC32x4 has a very flexible mixer on the inputs to the ADCs.  Each
mixer has an available set of available pins that can be connected to the
ADC positive and negative pins via three different resistor values.  This
allows for configuration of differential inputs as well as doing level
manipulation between sources going into the mixers.

The current code only provides positive pins and I implemented the resistors
in an earlier patch.  It turns out that it appears to more accurately model
what's happening to implement each of the pins as a MUX rather than on/off
switches and a mixer.  This way each pin can be set to its desired resistor
value.  Since there are no switches, the mixer is no longer necessary in the
DAPM path.  I set the DAPM paths such that the "off" position of any of the
MUXes turns the path off.

This should allow for any input confiuration available on the codec.

Signed-off-by: Jeremy McDermond <nh6z@nh6z.net>
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/tlv320aic32x4.c