]> git.karo-electronics.de Git - karo-tx-linux.git/commit
ASoC: core: Add signed register volume control logic
authorMarkus Pargmann <mpa@pengutronix.de>
Thu, 16 Jan 2014 15:02:10 +0000 (16:02 +0100)
committerNitin Garg <nitin.garg@freescale.com>
Fri, 16 Jan 2015 03:16:44 +0000 (21:16 -0600)
commit4c0e9bc2f9a9e91010fc4b9c2829d67628e24e9f
tree96af46b6ec0d99fcfe9e871b83e64b94c2ef1508
parent63d995870aa756c4755ab3a7cfdfbfdd474eb7c6
ASoC: core: Add signed register volume control logic

Some codecs use signed volume control representation with non standard
register sizes, e.g. 6 or 7 bit signed integers.

This patch adds generic signed register volume control logic to
soc-core. Instead of a fixed width signed register control, this
implementation uses a 'min' value and the signed bit location to translate
it to an absolute volume. Using the 'sign_bit' we can calculate a
correct mask for the register values and translate it back into signed
integers of standard size.

Signed-off-by: Markus Pargmann <mpa@pengutronix.de>
Signed-off-by: Mark Brown <broonie@linaro.org>
(cherry picked from commit f227b88f0fce5f9b82aa934f8829a741c2e06d82)
include/sound/soc.h
sound/soc/soc-core.c