The Texas Instruments TAS5805M is a class D audio amplifier with an
integrated DSP. DSP configuration is expected to be supplied via a
device-tree attribute containing a sequence of register writes.
These register writes set up application-specific DSP settings and are
expected to be generated using TI's PPC3 tool.
Signed-off-by: Daniel Beer <daniel.beer@xxxxxxxxxxxxxxxxx>
---
+
+static int tas5805m_vol_put(struct snd_kcontrol *kcontrol,
+ struct snd_ctl_elem_value *ucontrol)
+{
+ struct snd_soc_component *component =
+ snd_soc_kcontrol_component(kcontrol);
+ struct tas5805m_priv *tas5805m =
+ snd_soc_component_get_drvdata(component);
+
+ if (!(volume_is_valid(ucontrol->value.integer.value[0]) &&
+ volume_is_valid(ucontrol->value.integer.value[1])))
+ return -EINVAL;
+
+ mutex_lock(&tas5805m->lock);
+ tas5805m->vol[0] = ucontrol->value.integer.value[0];
+ tas5805m->vol[1] = ucontrol->value.integer.value[1];
+ dev_dbg(component->dev, "set vol=%d/%d (is_powered=%d)\n",
+ tas5805m->vol[0], tas5805m->vol[1], tas5805m->is_powered);
+ if (tas5805m->is_powered)
+ tas5805m_refresh_unlocked(component);
+ mutex_unlock(&tas5805m->lock);
+
+ return 0;
+}
+