Merge branch 'fix/hda' into for-linus
[safe/jmp/linux-2.6] / sound / usb / usbmidi.c
index 5962e4b..26bad37 100644 (file)
@@ -880,7 +880,7 @@ static void snd_usbmidi_output_trigger(struct snd_rawmidi_substream *substream,
                                snd_rawmidi_transmit_ack(substream, 1);
                        return;
                }
-               tasklet_hi_schedule(&port->ep->tasklet);
+               tasklet_schedule(&port->ep->tasklet);
        }
 }
 
@@ -1392,8 +1392,7 @@ static int snd_usbmidi_get_ms_info(struct snd_usb_midi* umidi,
        for (i = 0; i < intfd->bNumEndpoints; ++i) {
                hostep = &hostif->endpoint[i];
                ep = get_ep_desc(hostep);
-               if ((ep->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) != USB_ENDPOINT_XFER_BULK &&
-                   (ep->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) != USB_ENDPOINT_XFER_INT)
+               if (!usb_endpoint_xfer_bulk(ep) && !usb_endpoint_xfer_int(ep))
                        continue;
                ms_ep = (struct usb_ms_endpoint_descriptor*)hostep->extra;
                if (hostep->extralen < 4 ||
@@ -1401,15 +1400,15 @@ static int snd_usbmidi_get_ms_info(struct snd_usb_midi* umidi,
                    ms_ep->bDescriptorType != USB_DT_CS_ENDPOINT ||
                    ms_ep->bDescriptorSubtype != MS_GENERAL)
                        continue;
-               if ((ep->bEndpointAddress & USB_ENDPOINT_DIR_MASK) == USB_DIR_OUT) {
+               if (usb_endpoint_dir_out(ep)) {
                        if (endpoints[epidx].out_ep) {
                                if (++epidx >= MIDI_MAX_ENDPOINTS) {
                                        snd_printk(KERN_WARNING "too many endpoints\n");
                                        break;
                                }
                        }
-                       endpoints[epidx].out_ep = ep->bEndpointAddress & USB_ENDPOINT_NUMBER_MASK;
-                       if ((ep->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) == USB_ENDPOINT_XFER_INT)
+                       endpoints[epidx].out_ep = usb_endpoint_num(ep);
+                       if (usb_endpoint_xfer_int(ep))
                                endpoints[epidx].out_interval = ep->bInterval;
                        else if (snd_usb_get_speed(umidi->chip->dev) == USB_SPEED_LOW)
                                /*
@@ -1428,8 +1427,8 @@ static int snd_usbmidi_get_ms_info(struct snd_usb_midi* umidi,
                                        break;
                                }
                        }
-                       endpoints[epidx].in_ep = ep->bEndpointAddress & USB_ENDPOINT_NUMBER_MASK;
-                       if ((ep->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) == USB_ENDPOINT_XFER_INT)
+                       endpoints[epidx].in_ep = usb_endpoint_num(ep);
+                       if (usb_endpoint_xfer_int(ep))
                                endpoints[epidx].in_interval = ep->bInterval;
                        else if (snd_usb_get_speed(umidi->chip->dev) == USB_SPEED_LOW)
                                endpoints[epidx].in_interval = 1;
@@ -1495,20 +1494,20 @@ static int snd_usbmidi_detect_endpoints(struct snd_usb_midi* umidi,
 
        for (i = 0; i < intfd->bNumEndpoints; ++i) {
                epd = get_endpoint(hostif, i);
-               if ((epd->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) != USB_ENDPOINT_XFER_BULK &&
-                   (epd->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) != USB_ENDPOINT_XFER_INT)
+               if (!usb_endpoint_xfer_bulk(epd) &&
+                   !usb_endpoint_xfer_int(epd))
                        continue;
                if (out_eps < max_endpoints &&
-                   (epd->bEndpointAddress & USB_ENDPOINT_DIR_MASK) == USB_DIR_OUT) {
-                       endpoint[out_eps].out_ep = epd->bEndpointAddress & USB_ENDPOINT_NUMBER_MASK;
-                       if ((epd->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) == USB_ENDPOINT_XFER_INT)
+                   usb_endpoint_dir_out(epd)) {
+                       endpoint[out_eps].out_ep = usb_endpoint_num(epd);
+                       if (usb_endpoint_xfer_int(epd))
                                endpoint[out_eps].out_interval = epd->bInterval;
                        ++out_eps;
                }
                if (in_eps < max_endpoints &&
-                   (epd->bEndpointAddress & USB_ENDPOINT_DIR_MASK) == USB_DIR_IN) {
-                       endpoint[in_eps].in_ep = epd->bEndpointAddress & USB_ENDPOINT_NUMBER_MASK;
-                       if ((epd->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) == USB_ENDPOINT_XFER_INT)
+                   usb_endpoint_dir_in(epd)) {
+                       endpoint[in_eps].in_ep = usb_endpoint_num(epd);
+                       if (usb_endpoint_xfer_int(epd))
                                endpoint[in_eps].in_interval = epd->bInterval;
                        ++in_eps;
                }
@@ -1607,27 +1606,26 @@ static int snd_usbmidi_create_endpoints_midiman(struct snd_usb_midi* umidi,
        }
 
        epd = get_endpoint(hostif, 0);
-       if ((epd->bEndpointAddress & USB_ENDPOINT_DIR_MASK) != USB_DIR_IN ||
-           (epd->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) != USB_ENDPOINT_XFER_INT) {
+       if (!usb_endpoint_dir_in(epd) || !usb_endpoint_xfer_int(epd)) {
                snd_printdd(KERN_ERR "endpoint[0] isn't interrupt\n");
                return -ENXIO;
        }
        epd = get_endpoint(hostif, 2);
-       if ((epd->bEndpointAddress & USB_ENDPOINT_DIR_MASK) != USB_DIR_OUT ||
-           (epd->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) != USB_ENDPOINT_XFER_BULK) {
+       if (!usb_endpoint_dir_out(epd) || !usb_endpoint_xfer_bulk(epd)) {
                snd_printdd(KERN_ERR "endpoint[2] isn't bulk output\n");
                return -ENXIO;
        }
        if (endpoint->out_cables > 0x0001) {
                epd = get_endpoint(hostif, 4);
-               if ((epd->bEndpointAddress & USB_ENDPOINT_DIR_MASK) != USB_DIR_OUT ||
-                   (epd->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) != USB_ENDPOINT_XFER_BULK) {
+               if (!usb_endpoint_dir_out(epd) ||
+                   !usb_endpoint_xfer_bulk(epd)) {
                        snd_printdd(KERN_ERR "endpoint[4] isn't bulk output\n");
                        return -ENXIO;
                }
        }
 
        ep_info.out_ep = get_endpoint(hostif, 2)->bEndpointAddress & USB_ENDPOINT_NUMBER_MASK;
+       ep_info.out_interval = 0;
        ep_info.out_cables = endpoint->out_cables & 0x5555;
        err = snd_usbmidi_out_endpoint_create(umidi, &ep_info, &umidi->endpoints[0]);
        if (err < 0)