mirror of https://gitee.com/openkylin/linux.git
ASoC: ak4642: Add Digital Playback Volume control
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
This commit is contained in:
parent
338de9d9da
commit
a300de3cff
|
@ -28,6 +28,7 @@
|
|||
#include <linux/slab.h>
|
||||
#include <sound/soc-dapm.h>
|
||||
#include <sound/initval.h>
|
||||
#include <sound/tlv.h>
|
||||
|
||||
#include "ak4642.h"
|
||||
|
||||
|
@ -103,6 +104,23 @@
|
|||
|
||||
struct snd_soc_codec_device soc_codec_dev_ak4642;
|
||||
|
||||
/*
|
||||
* Playback Volume (table 39)
|
||||
*
|
||||
* max : 0x00 : +12.0 dB
|
||||
* ( 0.5 dB step )
|
||||
* min : 0xFE : -115.0 dB
|
||||
* mute: 0xFF
|
||||
*/
|
||||
static const DECLARE_TLV_DB_SCALE(out_tlv, -11500, 50, 1);
|
||||
|
||||
static const struct snd_kcontrol_new ak4642_snd_controls[] = {
|
||||
|
||||
SOC_DOUBLE_R_TLV("Digital Playback Volume", L_DVC, R_DVC,
|
||||
0, 0xFF, 1, out_tlv),
|
||||
};
|
||||
|
||||
|
||||
/* codec private data */
|
||||
struct ak4642_priv {
|
||||
struct snd_soc_codec codec;
|
||||
|
@ -196,7 +214,6 @@ static int ak4642_dai_startup(struct snd_pcm_substream *substream,
|
|||
*
|
||||
* PLL, Master Mode
|
||||
* Audio I/F Format :MSB justified (ADC & DAC)
|
||||
* Digital Volume: -8dB
|
||||
* Bass Boost Level : Middle
|
||||
*
|
||||
* This operation came from example code of
|
||||
|
@ -206,8 +223,6 @@ static int ak4642_dai_startup(struct snd_pcm_substream *substream,
|
|||
ak4642_write(codec, 0x0e, 0x19);
|
||||
ak4642_write(codec, 0x09, 0x91);
|
||||
ak4642_write(codec, 0x0c, 0x91);
|
||||
ak4642_write(codec, 0x0a, 0x28);
|
||||
ak4642_write(codec, 0x0d, 0x28);
|
||||
ak4642_write(codec, 0x00, 0x64);
|
||||
snd_soc_update_bits(codec, PW_MGMT2, PMHP_MASK, PMHP);
|
||||
snd_soc_update_bits(codec, PW_MGMT2, HPMTN, HPMTN);
|
||||
|
@ -540,6 +555,9 @@ static int ak4642_probe(struct platform_device *pdev)
|
|||
goto pcm_err;
|
||||
}
|
||||
|
||||
snd_soc_add_controls(ak4642_codec, ak4642_snd_controls,
|
||||
ARRAY_SIZE(ak4642_snd_controls));
|
||||
|
||||
dev_info(&pdev->dev, "AK4642 Audio Codec %s", AK4642_VERSION);
|
||||
return ret;
|
||||
|
||||
|
|
Loading…
Reference in New Issue