]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
ALSA: usb-audio: reverse condition logic in set_sync_endpoint
authorEldad Zack <eldad@fogrefinery.com>
Sat, 3 Aug 2013 08:50:19 +0000 (10:50 +0200)
committerTakashi Iwai <tiwai@suse.de>
Tue, 6 Aug 2013 08:50:15 +0000 (10:50 +0200)
Reverse logic on the conditions required to qualify for a sync endpoint
and remove one level of indendation.

Signed-off-by: Eldad Zack <eldad@fogrefinery.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/usb/pcm.c

index 0016f28039f2289688bcee5cc9672f132b028e74..c31dbdc091786b2afa34ff5145640351e6c93094 100644 (file)
@@ -419,49 +419,52 @@ static int set_sync_endpoint(struct snd_usb_substream *subs,
        if (err < 0)
                return err;
 
-       if (((is_playback && attr == USB_ENDPOINT_SYNC_ASYNC) ||
-            (!is_playback && attr == USB_ENDPOINT_SYNC_ADAPTIVE)) &&
-           altsd->bNumEndpoints >= 2) {
-               /* check sync-pipe endpoint */
-               /* ... and check descriptor size before accessing bSynchAddress
-                  because there is a version of the SB Audigy 2 NX firmware lacking
-                  the audio fields in the endpoint descriptors */
-               if ((get_endpoint(alts, 1)->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) != USB_ENDPOINT_XFER_ISOC ||
-                   (get_endpoint(alts, 1)->bLength >= USB_DT_ENDPOINT_AUDIO_SIZE &&
-                    get_endpoint(alts, 1)->bSynchAddress != 0 &&
-                    !implicit_fb)) {
-                       snd_printk(KERN_ERR "%d:%d:%d : invalid sync pipe. bmAttributes %02x, bLength %d, bSynchAddress %02x\n",
-                                  dev->devnum, fmt->iface, fmt->altsetting,
-                                  get_endpoint(alts, 1)->bmAttributes,
-                                  get_endpoint(alts, 1)->bLength,
-                                  get_endpoint(alts, 1)->bSynchAddress);
-                       return -EINVAL;
-               }
-               ep = get_endpoint(alts, 1)->bEndpointAddress;
-               if (!implicit_fb &&
-                   get_endpoint(alts, 0)->bLength >= USB_DT_ENDPOINT_AUDIO_SIZE &&
-                   (( is_playback && ep != (unsigned int)(get_endpoint(alts, 0)->bSynchAddress | USB_DIR_IN)) ||
-                    (!is_playback && ep != (unsigned int)(get_endpoint(alts, 0)->bSynchAddress & ~USB_DIR_IN)))) {
-                       snd_printk(KERN_ERR "%d:%d:%d : invalid sync pipe. is_playback %d, ep %02x, bSynchAddress %02x\n",
-                                  dev->devnum, fmt->iface, fmt->altsetting,
-                                  is_playback, ep, get_endpoint(alts, 0)->bSynchAddress);
-                       return -EINVAL;
-               }
-
-               implicit_fb = (get_endpoint(alts, 1)->bmAttributes & USB_ENDPOINT_USAGE_MASK)
-                               == USB_ENDPOINT_USAGE_IMPLICIT_FB;
+       if (altsd->bNumEndpoints < 2)
+               return 0;
 
-               subs->sync_endpoint = snd_usb_add_endpoint(subs->stream->chip,
-                                                          alts, ep, !subs->direction,
-                                                          implicit_fb ?
-                                                               SND_USB_ENDPOINT_TYPE_DATA :
-                                                               SND_USB_ENDPOINT_TYPE_SYNC);
-               if (!subs->sync_endpoint)
-                       return -EINVAL;
+       if ((is_playback && attr != USB_ENDPOINT_SYNC_ASYNC) ||
+           (!is_playback && attr != USB_ENDPOINT_SYNC_ADAPTIVE))
+               return 0;
 
-               subs->data_endpoint->sync_master = subs->sync_endpoint;
+       /* check sync-pipe endpoint */
+       /* ... and check descriptor size before accessing bSynchAddress
+          because there is a version of the SB Audigy 2 NX firmware lacking
+          the audio fields in the endpoint descriptors */
+       if ((get_endpoint(alts, 1)->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) != USB_ENDPOINT_XFER_ISOC ||
+           (get_endpoint(alts, 1)->bLength >= USB_DT_ENDPOINT_AUDIO_SIZE &&
+            get_endpoint(alts, 1)->bSynchAddress != 0 &&
+            !implicit_fb)) {
+               snd_printk(KERN_ERR "%d:%d:%d : invalid sync pipe. bmAttributes %02x, bLength %d, bSynchAddress %02x\n",
+                          dev->devnum, fmt->iface, fmt->altsetting,
+                          get_endpoint(alts, 1)->bmAttributes,
+                          get_endpoint(alts, 1)->bLength,
+                          get_endpoint(alts, 1)->bSynchAddress);
+               return -EINVAL;
+       }
+       ep = get_endpoint(alts, 1)->bEndpointAddress;
+       if (!implicit_fb &&
+           get_endpoint(alts, 0)->bLength >= USB_DT_ENDPOINT_AUDIO_SIZE &&
+           ((is_playback && ep != (unsigned int)(get_endpoint(alts, 0)->bSynchAddress | USB_DIR_IN)) ||
+            (!is_playback && ep != (unsigned int)(get_endpoint(alts, 0)->bSynchAddress & ~USB_DIR_IN)))) {
+               snd_printk(KERN_ERR "%d:%d:%d : invalid sync pipe. is_playback %d, ep %02x, bSynchAddress %02x\n",
+                          dev->devnum, fmt->iface, fmt->altsetting,
+                          is_playback, ep, get_endpoint(alts, 0)->bSynchAddress);
+               return -EINVAL;
        }
 
+       implicit_fb = (get_endpoint(alts, 1)->bmAttributes & USB_ENDPOINT_USAGE_MASK)
+                       == USB_ENDPOINT_USAGE_IMPLICIT_FB;
+
+       subs->sync_endpoint = snd_usb_add_endpoint(subs->stream->chip,
+                                                  alts, ep, !subs->direction,
+                                                  implicit_fb ?
+                                                       SND_USB_ENDPOINT_TYPE_DATA :
+                                                       SND_USB_ENDPOINT_TYPE_SYNC);
+       if (!subs->sync_endpoint)
+               return -EINVAL;
+
+       subs->data_endpoint->sync_master = subs->sync_endpoint;
+
        return 0;
 }