diff options
author | Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> | 2010-07-21 07:12:16 +0200 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2010-07-23 11:17:47 +0200 |
commit | a7e7cd5bd7d1e0134032b8db5e64ceb9dac8b3ca (patch) | |
tree | 3f285221d86cbb9e7d55cfcb0e35a0f7385e1341 /sound/soc | |
parent | Merge branch 'for-2.6.36' of git://git.kernel.org/pub/scm/linux/kernel/git/lr... (diff) | |
download | linux-a7e7cd5bd7d1e0134032b8db5e64ceb9dac8b3ca.tar.xz linux-a7e7cd5bd7d1e0134032b8db5e64ceb9dac8b3ca.zip |
ASoC: da7210: Add HeadPhone Playback Volume control
HeadPhone Playback Volume control register of DA7210 has
reserved area. This patch considered it as mute.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Diffstat (limited to 'sound/soc')
-rw-r--r-- | sound/soc/codecs/da7210.c | 31 |
1 files changed, 27 insertions, 4 deletions
diff --git a/sound/soc/codecs/da7210.c b/sound/soc/codecs/da7210.c index a83aa187a7f2..3e42d1e0e601 100644 --- a/sound/soc/codecs/da7210.c +++ b/sound/soc/codecs/da7210.c @@ -23,6 +23,7 @@ #include <sound/pcm_params.h> #include <sound/soc-dapm.h> #include <sound/initval.h> +#include <sound/tlv.h> #include "da7210.h" @@ -136,6 +137,29 @@ #define DA7210_VERSION "0.0.1" +/* + * Playback Volume + * + * max : 0x3F (+15.0 dB) + * (1.5 dB step) + * min : 0x11 (-54.0 dB) + * mute : 0x10 + * reserved : 0x00 - 0x0F + * + * ** FIXME ** + * + * Reserved area are considered as "mute". + * -> min = -79.5 dB + */ +static const DECLARE_TLV_DB_SCALE(hp_out_tlv, -7950, 150, 1); + +static const struct snd_kcontrol_new da7210_snd_controls[] = { + + SOC_DOUBLE_R_TLV("HeadPhone Playback Volume", + DA7210_HP_L_VOL, DA7210_HP_R_VOL, + 0, 0x3F, 0, hp_out_tlv), +}; + /* Codec private data */ struct da7210_priv { struct snd_soc_codec codec; @@ -218,10 +242,6 @@ static int da7210_startup(struct snd_pcm_substream *substream, struct snd_soc_codec *codec = dai->codec; if (is_play) { - /* PlayBack Volume 40 */ - snd_soc_update_bits(codec, DA7210_HP_L_VOL, 0x3F, 40); - snd_soc_update_bits(codec, DA7210_HP_R_VOL, 0x3F, 40); - /* Enable Out */ snd_soc_update_bits(codec, DA7210_OUTMIX_L, 0x1F, 0x10); snd_soc_update_bits(codec, DA7210_OUTMIX_R, 0x1F, 0x10); @@ -647,6 +667,9 @@ static int da7210_probe(struct platform_device *pdev) if (ret < 0) goto pcm_err; + snd_soc_add_controls(da7210_codec, da7210_snd_controls, + ARRAY_SIZE(da7210_snd_controls)); + dev_info(&pdev->dev, "DA7210 Audio Codec %s\n", DA7210_VERSION); pcm_err: |