ASoC: core: Fix volsw_range funcs so SOC_DOUBLE_R_RANGE_TLV works.
authorHoward Mitchell <hm@hmbedded.co.uk>
Fri, 19 Sep 2014 11:50:31 +0000 (12:50 +0100)
committerMark Brown <broonie@kernel.org>
Wed, 24 Sep 2014 08:37:03 +0000 (09:37 +0100)
commit5c7c343a1159d1cb7604b6137cf547b2c1e2375d
tree692c0e9671eb90da2889caf384e4b58d83958863
parent8c8f2f6fc1c8eec9e14810f21386fe295a42a40f
ASoC: core: Fix volsw_range funcs so SOC_DOUBLE_R_RANGE_TLV works.

This fixes a bug when using the SOC_DOUBLE_R_RANGE_TLV macro in
the invert mode. In the non-invert case, e.g.

SOC_DOUBLE_R_RANGE_TLV("<name>", <reg_l>, <reg_r>,
0, 40, 255, 0, <tlv>)

the range sent to the hardware is 40..255, but in the invert case:

SOC_DOUBLE_R_RANGE_TLV("<name>", <reg_l>, <reg_r>,
0, 40, 255, 1, <tlv>)

the range 215..0 was being sent to the hardware. This commit
corrects this to 255..40 so it is consistent with the non-invert
case.

Signed-off-by: Howard Mitchell <hm@hmbedded.co.uk>
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/soc-core.c