[PATCH v2] ASoC: da7219: Fix change notifications for tone generator frequency

Adam Thomson Adam.Thomson.Opensource at diasemi.com
Wed Apr 20 10:40:58 CEST 2022


On 17 April 2022 20:28, Mark Brown wrote:

> The tone generator frequency control just returns 0 on successful write,
> not a boolean value indicating if there was a change or not.  Compare
> what was written with the value that was there previously so that
> notifications are generated appropraitely when the value changes.

s/appropraitely/appropriately/

Thanks for the update. Good spot.

> 
> Signed-off-by: Mark Brown <broonie at kernel.org>
> ---
>  sound/soc/codecs/da7219.c | 14 ++++++++++----
>  1 file changed, 10 insertions(+), 4 deletions(-)
> 
> diff --git a/sound/soc/codecs/da7219.c b/sound/soc/codecs/da7219.c
> index a28d3601b932..c08e15830cec 100644
> --- a/sound/soc/codecs/da7219.c
> +++ b/sound/soc/codecs/da7219.c
> @@ -446,7 +446,7 @@ static int da7219_tonegen_freq_put(struct snd_kcontrol
> *kcontrol,
>  	struct soc_mixer_control *mixer_ctrl =
>  		(struct soc_mixer_control *) kcontrol->private_value;
>  	unsigned int reg = mixer_ctrl->reg;
> -	__le16 val;
> +	__le16 val_new, val_old;
>  	int ret;
> 
>  	/*
> @@ -454,13 +454,19 @@ static int da7219_tonegen_freq_put(struct
> snd_kcontrol *kcontrol,
>  	 * Therefore we need to convert to little endian here to align with
>  	 * HW registers.
>  	 */
> -	val = cpu_to_le16(ucontrol->value.integer.value[0]);
> +	val_new = cpu_to_le16(ucontrol->value.integer.value[0]);
> 
>  	mutex_lock(&da7219->ctrl_lock);
> -	ret = regmap_raw_write(da7219->regmap, reg, &val, sizeof(val));
> +	ret = regmap_raw_read(da7219->regmap, reg, &val_old, sizeof(val_old));
> +	if (ret == 0)

Wouldn't it make sense here to only perform the write if the values weren't the
same?

> +		ret = regmap_raw_write(da7219->regmap, reg,
> +				&val_new, sizeof(val_new));
>  	mutex_unlock(&da7219->ctrl_lock);
> 
> -	return ret;
> +	if (ret < 0)
> +		return ret;
> +
> +	return val_old != val_new;
>  }
> 
> 
> --
> 2.30.2



More information about the Alsa-devel mailing list