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@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,
mutex_unlock(&da7219->ctrl_lock);&val_new, sizeof(val_new));
- return ret;
- if (ret < 0)
return ret;
- return val_old != val_new;
}
-- 2.30.2