ALSA: line6: Drop superfluous spinlock for trigger
authorTakashi Iwai <tiwai@suse.de>
Fri, 23 Jan 2015 13:49:22 +0000 (14:49 +0100)
committerTakashi Iwai <tiwai@suse.de>
Wed, 28 Jan 2015 06:21:00 +0000 (07:21 +0100)
The trigger callback is already spinlocked, so we need no more lock
here (even for the linked substreams).  Let's drop it.

Tested-by: Chris Rorvick <chris@rorvick.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/usb/line6/pcm.c
sound/usb/line6/pcm.h

index 9a2a15f4c4e42a38ea96062711c97659b0844a7b..adbcac46b78589000dc94146b7d058e90d3e6fec 100644 (file)
@@ -226,9 +226,8 @@ int snd_line6_trigger(struct snd_pcm_substream *substream, int cmd)
 {
        struct snd_line6_pcm *line6pcm = snd_pcm_substream_chip(substream);
        struct snd_pcm_substream *s;
-       int err;
+       int err = 0;
 
-       spin_lock(&line6pcm->lock_trigger);
        clear_bit(LINE6_INDEX_PREPARED, &line6pcm->flags);
 
        snd_pcm_group_for_each_entry(s, substream) {
@@ -237,32 +236,23 @@ int snd_line6_trigger(struct snd_pcm_substream *substream, int cmd)
                switch (s->stream) {
                case SNDRV_PCM_STREAM_PLAYBACK:
                        err = snd_line6_playback_trigger(line6pcm, cmd);
-
-                       if (err < 0) {
-                               spin_unlock(&line6pcm->lock_trigger);
-                               return err;
-                       }
-
                        break;
 
                case SNDRV_PCM_STREAM_CAPTURE:
                        err = snd_line6_capture_trigger(line6pcm, cmd);
-
-                       if (err < 0) {
-                               spin_unlock(&line6pcm->lock_trigger);
-                               return err;
-                       }
-
                        break;
 
                default:
                        dev_err(line6pcm->line6->ifcdev,
                                "Unknown stream direction %d\n", s->stream);
+                       err = -EINVAL;
+                       break;
                }
+               if (err < 0)
+                       break;
        }
 
-       spin_unlock(&line6pcm->lock_trigger);
-       return 0;
+       return err;
 }
 
 /* control info callback */
@@ -427,7 +417,6 @@ int line6_init_pcm(struct usb_line6 *line6,
 
        spin_lock_init(&line6pcm->lock_audio_out);
        spin_lock_init(&line6pcm->lock_audio_in);
-       spin_lock_init(&line6pcm->lock_trigger);
        line6pcm->impulse_period = LINE6_IMPULSE_DEFAULT_PERIOD;
 
        line6->line6pcm = line6pcm;
index c742b33666ebdc62e77512b347baf5f49490dd28..a84753ee0fa29ce8c4297e931dd8c7aa79fddeb6 100644 (file)
@@ -307,11 +307,6 @@ struct snd_line6_pcm {
        */
        spinlock_t lock_audio_in;
 
-       /**
-                Spin lock to protect trigger.
-       */
-       spinlock_t lock_trigger;
-
        /**
                 PCM playback volume (left and right).
        */