Commit a3bee62e authored by Takashi Iwai's avatar Takashi Iwai

ASoC: sigmadsp: Simplify with snd_ctl_activate_id()

Use the standard snd_ctl_activate_id() helper instead of an open code
for code simplification.
Acked-by: default avatarMark Brown <broonie@kernel.org>
Cc: Lars-Peter Clausen <lars@metafoo.de>
Cc: "Nuno Sá" <nuno.sa@analog.com>
Link: https://lore.kernel.org/r/20230718141304.1032-7-tiwai@suse.deSigned-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 8320ba0c
...@@ -669,36 +669,19 @@ static void sigmadsp_activate_ctrl(struct sigmadsp *sigmadsp, ...@@ -669,36 +669,19 @@ static void sigmadsp_activate_ctrl(struct sigmadsp *sigmadsp,
struct sigmadsp_control *ctrl, unsigned int samplerate_mask) struct sigmadsp_control *ctrl, unsigned int samplerate_mask)
{ {
struct snd_card *card = sigmadsp->component->card->snd_card; struct snd_card *card = sigmadsp->component->card->snd_card;
struct snd_kcontrol_volatile *vd;
struct snd_ctl_elem_id id;
bool active; bool active;
bool changed = false; int changed;
active = sigmadsp_samplerate_valid(ctrl->samplerates, samplerate_mask); active = sigmadsp_samplerate_valid(ctrl->samplerates, samplerate_mask);
if (!ctrl->kcontrol)
down_write(&card->controls_rwsem);
if (!ctrl->kcontrol) {
up_write(&card->controls_rwsem);
return; return;
} changed = snd_ctl_activate_id(card, &ctrl->kcontrol->id, active);
if (active && changed > 0) {
id = ctrl->kcontrol->id;
vd = &ctrl->kcontrol->vd[0];
if (active == (bool)(vd->access & SNDRV_CTL_ELEM_ACCESS_INACTIVE)) {
vd->access ^= SNDRV_CTL_ELEM_ACCESS_INACTIVE;
changed = true;
}
up_write(&card->controls_rwsem);
if (active && changed) {
mutex_lock(&sigmadsp->lock); mutex_lock(&sigmadsp->lock);
if (ctrl->cached) if (ctrl->cached)
sigmadsp_ctrl_write(sigmadsp, ctrl, ctrl->cache); sigmadsp_ctrl_write(sigmadsp, ctrl, ctrl->cache);
mutex_unlock(&sigmadsp->lock); mutex_unlock(&sigmadsp->lock);
} }
if (changed)
snd_ctl_notify(card, SNDRV_CTL_EVENT_MASK_INFO, &id);
} }
/** /**
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment