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>
This commit is contained in:
Родитель
49e7042799
Коммит
a7e7cd5bd7
|
@ -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 @@
|
||||||
|
|
||||||
#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,
|
||||||
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)
|
||||||
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:
|
||||||
|
|
Загрузка…
Ссылка в новой задаче