Commit 25709f6d authored by Jin Park's avatar Jin Park Committed by Mark Brown

ASoC: codecs: max98088: Added digital mute function in DAI1 and DAI2

Added digital mute function in DAI1 and DAI2.
Signed-off-by: default avatarJin Park <jinyoungp@nvidia.com>
Acked-by: default avatarLiam Girdwood <lrg@ti.com>
Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
parent 938b4fbc
...@@ -1566,6 +1566,36 @@ static int max98088_dai2_set_fmt(struct snd_soc_dai *codec_dai, ...@@ -1566,6 +1566,36 @@ static int max98088_dai2_set_fmt(struct snd_soc_dai *codec_dai,
return 0; return 0;
} }
static int max98088_dai1_digital_mute(struct snd_soc_dai *codec_dai, int mute)
{
struct snd_soc_codec *codec = codec_dai->codec;
int reg;
if (mute)
reg = M98088_DAI_MUTE;
else
reg = 0;
snd_soc_update_bits(codec, M98088_REG_2F_LVL_DAI1_PLAY,
M98088_DAI_MUTE_MASK, reg);
return 0;
}
static int max98088_dai2_digital_mute(struct snd_soc_dai *codec_dai, int mute)
{
struct snd_soc_codec *codec = codec_dai->codec;
int reg;
if (mute)
reg = M98088_DAI_MUTE;
else
reg = 0;
snd_soc_update_bits(codec, M98088_REG_31_LVL_DAI2_PLAY,
M98088_DAI_MUTE_MASK, reg);
return 0;
}
static void max98088_sync_cache(struct snd_soc_codec *codec) static void max98088_sync_cache(struct snd_soc_codec *codec)
{ {
u16 *reg_cache = codec->reg_cache; u16 *reg_cache = codec->reg_cache;
...@@ -1627,12 +1657,14 @@ static struct snd_soc_dai_ops max98088_dai1_ops = { ...@@ -1627,12 +1657,14 @@ static struct snd_soc_dai_ops max98088_dai1_ops = {
.set_sysclk = max98088_dai_set_sysclk, .set_sysclk = max98088_dai_set_sysclk,
.set_fmt = max98088_dai1_set_fmt, .set_fmt = max98088_dai1_set_fmt,
.hw_params = max98088_dai1_hw_params, .hw_params = max98088_dai1_hw_params,
.digital_mute = max98088_dai1_digital_mute,
}; };
static struct snd_soc_dai_ops max98088_dai2_ops = { static struct snd_soc_dai_ops max98088_dai2_ops = {
.set_sysclk = max98088_dai_set_sysclk, .set_sysclk = max98088_dai_set_sysclk,
.set_fmt = max98088_dai2_set_fmt, .set_fmt = max98088_dai2_set_fmt,
.hw_params = max98088_dai2_hw_params, .hw_params = max98088_dai2_hw_params,
.digital_mute = max98088_dai2_digital_mute,
}; };
static struct snd_soc_dai_driver max98088_dai[] = { static struct snd_soc_dai_driver max98088_dai[] = {
......
...@@ -133,6 +133,19 @@ ...@@ -133,6 +133,19 @@
#define M98088_REC_LINEMODE (1<<7) #define M98088_REC_LINEMODE (1<<7)
#define M98088_REC_LINEMODE_MASK (1<<7) #define M98088_REC_LINEMODE_MASK (1<<7)
/* M98088_REG_2D_MIX_SPK_CNTL */
#define M98088_MIX_SPKR_GAIN_MASK (3<<2)
#define M98088_MIX_SPKR_GAIN_SHIFT 2
#define M98088_MIX_SPKL_GAIN_MASK (3<<0)
#define M98088_MIX_SPKL_GAIN_SHIFT 0
/* M98088_REG_2F_LVL_DAI1_PLAY, M98088_REG_31_LVL_DAI2_PLAY */
#define M98088_DAI_MUTE (1<<7)
#define M98088_DAI_MUTE_MASK (1<<7)
#define M98088_DAI_VOICE_GAIN_MASK (3<<4)
#define M98088_DAI_ATTENUATION_MASK (0xF<<0)
#define M98088_DAI_ATTENUATION_SHIFT 0
/* M98088_REG_35_LVL_MIC1, M98088_REG_36_LVL_MIC2 */ /* M98088_REG_35_LVL_MIC1, M98088_REG_36_LVL_MIC2 */
#define M98088_MICPRE_MASK (3<<5) #define M98088_MICPRE_MASK (3<<5)
#define M98088_MICPRE_SHIFT 5 #define M98088_MICPRE_SHIFT 5
......
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