Commit a7e7cd5b authored by Kuninori Morimoto's avatar Kuninori Morimoto Committed by Mark Brown

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: default avatarKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Acked-by: default avatarLiam Girdwood <lrg@slimlogic.co.uk>
Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
parent 49e70427
...@@ -23,6 +23,7 @@ ...@@ -23,6 +23,7 @@
#include <sound/pcm_params.h> #include <sound/pcm_params.h>
#include <sound/soc-dapm.h> #include <sound/soc-dapm.h>
#include <sound/initval.h> #include <sound/initval.h>
#include <sound/tlv.h>
#include "da7210.h" #include "da7210.h"
...@@ -136,6 +137,29 @@ ...@@ -136,6 +137,29 @@
#define DA7210_VERSION "0.0.1" #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 */ /* Codec private data */
struct da7210_priv { struct da7210_priv {
struct snd_soc_codec codec; struct snd_soc_codec codec;
...@@ -218,10 +242,6 @@ static int da7210_startup(struct snd_pcm_substream *substream, ...@@ -218,10 +242,6 @@ static int da7210_startup(struct snd_pcm_substream *substream,
struct snd_soc_codec *codec = dai->codec; struct snd_soc_codec *codec = dai->codec;
if (is_play) { 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 */ /* Enable Out */
snd_soc_update_bits(codec, DA7210_OUTMIX_L, 0x1F, 0x10); snd_soc_update_bits(codec, DA7210_OUTMIX_L, 0x1F, 0x10);
snd_soc_update_bits(codec, DA7210_OUTMIX_R, 0x1F, 0x10); snd_soc_update_bits(codec, DA7210_OUTMIX_R, 0x1F, 0x10);
...@@ -647,6 +667,9 @@ static int da7210_probe(struct platform_device *pdev) ...@@ -647,6 +667,9 @@ static int da7210_probe(struct platform_device *pdev)
if (ret < 0) if (ret < 0)
goto pcm_err; 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); dev_info(&pdev->dev, "DA7210 Audio Codec %s\n", DA7210_VERSION);
pcm_err: pcm_err:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment