[alsa-devel] [PATCH 3/3] ASoC: codecs: max98088: Added digital mute function in DAI1 and DAI2

Seungwhan Youn claude.youn at gmail.com
Thu May 12 22:43:30 CEST 2011


Hi Mr. Jin Park,

On Thu, May 12, 2011 at 2:58 PM,  <jinyoungp at nvidia.com> wrote:
> From: Jin Park <jinyoungp at nvidia.com>
>
> Added digital mute function in DAI1 and DAI2.
>
> Signed-off-by: Jin Park <jinyoungp at nvidia.com>
> ---
>  sound/soc/codecs/max98088.c |   32 ++++++++++++++++++++++++++++++++
>  sound/soc/codecs/max98088.h |   13 +++++++++++++
>  2 files changed, 45 insertions(+), 0 deletions(-)
>
> diff --git a/sound/soc/codecs/max98088.c b/sound/soc/codecs/max98088.c
> index c520093..b5ccf37 100644
> --- a/sound/soc/codecs/max98088.c
> +++ b/sound/soc/codecs/max98088.c
> @@ -1582,6 +1582,36 @@ static int max98088_dai2_set_fmt(struct snd_soc_dai *codec_dai,
>        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;

In this case, ~M98088_DAI_MUTE is more nice then "0" to me.

> +
> +       snd_soc_update_bits(codec, M98088_REG_2F_LVL_DAI1_PLAY,
> +                           M98088_DAI_MUTE_MASK, reg);
> +       return 0;

IMHO, we need to chance to get errors during update bits like below.

       return snd_soc_update_bits(codec, M98088_REG_2F_LVL_DAI1_PLAY,
                           M98088_DAI_MUTE_MASK, reg);

> +}
> +
> +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;

Same.

> +
> +       snd_soc_update_bits(codec, M98088_REG_31_LVL_DAI2_PLAY,
> +                           M98088_DAI_MUTE_MASK, reg);
> +       return 0;

Also.

> +}
> +
>  static void max98088_sync_cache(struct snd_soc_codec *codec)
>  {
>        u16 *reg_cache = codec->reg_cache;
> @@ -1643,12 +1673,14 @@ static struct snd_soc_dai_ops max98088_dai1_ops = {
>        .set_sysclk = max98088_dai_set_sysclk,
>        .set_fmt = max98088_dai1_set_fmt,
>        .hw_params = max98088_dai1_hw_params,
> +       .digital_mute = max98088_dai1_digital_mute,
>  };
>
>  static struct snd_soc_dai_ops max98088_dai2_ops = {
>        .set_sysclk = max98088_dai_set_sysclk,
>        .set_fmt = max98088_dai2_set_fmt,
>        .hw_params = max98088_dai2_hw_params,
> +       .digital_mute = max98088_dai2_digital_mute,
>  };
>
>  static struct snd_soc_dai_driver max98088_dai[] = {
> diff --git a/sound/soc/codecs/max98088.h b/sound/soc/codecs/max98088.h
> index 56554c7..be89a4f 100644
> --- a/sound/soc/codecs/max98088.h
> +++ b/sound/soc/codecs/max98088.h
> @@ -133,6 +133,19 @@
>        #define M98088_REC_LINEMODE             (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

Are these macros really need to add in this patch? Because, there is
nothing to use this macros, and also doesn't have any relatives with
"digital mute".

> +
> +/* 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
> +

Same to "M98088_DAI_VOICE_GAIN_MASK", "M98088_DAI_ATTENUATION_MASK"
and "M98088_DAI_ATTENUATION_SHIFT".


More information about the Alsa-devel mailing list