[alsa-devel] [PATCH 3/5] Sound: SOC: TAS571x: implemented digital mute
Kevin Cernekee
cernekee at chromium.org
Mon Mar 14 20:39:27 CET 2016
On Thu, Mar 10, 2016 at 3:22 AM, Petr Kulhavy <petr at barix.com> wrote:
> The driver did not have a mute function. The amplifier was brought out of
> shutdown mode (hard-mute) once for ever in probe(), which was causing
> clicks and pops when altering the I2C register configuration later.
>
> This adds the digital_mute() function. The amplifier unmute in probe()
> was removed.
>
> Signed-off-by: Petr Kulhavy <petr at barix.com>
> Tested-by: Petr Kulhavy <petr at barix.com>
> ---
> sound/soc/codecs/tas571x.c | 22 ++++++++++++++++++----
> 1 file changed, 18 insertions(+), 4 deletions(-)
>
> diff --git a/sound/soc/codecs/tas571x.c b/sound/soc/codecs/tas571x.c
> index 2a63069..431dffa 100644
> --- a/sound/soc/codecs/tas571x.c
> +++ b/sound/soc/codecs/tas571x.c
> @@ -171,6 +171,23 @@ static int tas571x_hw_params(struct snd_pcm_substream *substream,
> TAS571X_SDI_FMT_MASK, val);
> }
>
> +static int tas571x_mute(struct snd_soc_dai *dai, int mute)
> +{
> + struct snd_soc_codec *codec = dai->codec;
> + u8 sysctl2;
> + int ret;
> +
> + sysctl2 = mute ? TAS571X_SYS_CTRL_2_SDN_MASK : 0;
> +
> + ret = snd_soc_update_bits(codec,
> + TAS571X_SYS_CTRL_2_REG,
> + TAS571X_SYS_CTRL_2_SDN_MASK,
> + sysctl2);
> + usleep_range(1000, 2000);
> +
> + return ret;
> +}
> +
> static int tas571x_set_bias_level(struct snd_soc_codec *codec,
> enum snd_soc_bias_level level)
> {
> @@ -218,6 +235,7 @@ static int tas571x_set_bias_level(struct snd_soc_codec *codec,
> static const struct snd_soc_dai_ops tas571x_dai_ops = {
> .set_fmt = tas571x_set_dai_fmt,
> .hw_params = tas571x_hw_params,
> + .digital_mute = tas571x_mute,
> };
Hi Petr,
It is good to see that this driver is getting some use. :-)
An earlier iteration of the code implemented digital_mute, although it
used a different register:
+ return regmap_update_bits(priv->regmap,
+ TAS571X_SOFT_MUTE_REG,
+ TAS571X_SOFT_MUTE_CH_MASK,
+ mute ? TAS571X_SOFT_MUTE_CH_MASK : 0);
This was removed here: https://chromium-review.googlesource.com/#/c/265878/
Are you able to test the modified code on 5711 and 5717 (or 5719)?
More information about the Alsa-devel
mailing list