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

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
Loading
Loading
Loading
Loading
+27 −4
Original line number Diff line number Diff line
@@ -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: