ASoC: sigmadsp: Simplify with snd_ctl_activate_id()
authorTakashi Iwai <tiwai@suse.de>
Tue, 18 Jul 2023 14:12:59 +0000 (16:12 +0200)
committerTakashi Iwai <tiwai@suse.de>
Thu, 20 Jul 2023 08:02:42 +0000 (10:02 +0200)
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>
sound/soc/codecs/sigmadsp.c

index 3047a6f..b93c078 100644 (file)
@@ -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);
 }
 
 /**