mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-15 16:24:13 +08:00
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: Mark 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.de Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
8320ba0ce5
commit
a3bee62e90
@ -669,36 +669,19 @@ static void sigmadsp_activate_ctrl(struct sigmadsp *sigmadsp,
|
||||
struct sigmadsp_control *ctrl, unsigned int samplerate_mask)
|
||||
{
|
||||
struct snd_card *card = sigmadsp->component->card->snd_card;
|
||||
struct snd_kcontrol_volatile *vd;
|
||||
struct snd_ctl_elem_id id;
|
||||
bool active;
|
||||
bool changed = false;
|
||||
int changed;
|
||||
|
||||
active = sigmadsp_samplerate_valid(ctrl->samplerates, samplerate_mask);
|
||||
|
||||
down_write(&card->controls_rwsem);
|
||||
if (!ctrl->kcontrol) {
|
||||
up_write(&card->controls_rwsem);
|
||||
if (!ctrl->kcontrol)
|
||||
return;
|
||||
}
|
||||
|
||||
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) {
|
||||
changed = snd_ctl_activate_id(card, &ctrl->kcontrol->id, active);
|
||||
if (active && changed > 0) {
|
||||
mutex_lock(&sigmadsp->lock);
|
||||
if (ctrl->cached)
|
||||
sigmadsp_ctrl_write(sigmadsp, ctrl, ctrl->cache);
|
||||
mutex_unlock(&sigmadsp->lock);
|
||||
}
|
||||
|
||||
if (changed)
|
||||
snd_ctl_notify(card, SNDRV_CTL_EVENT_MASK_INFO, &id);
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user