goto fail;
 
        /* REVISIT this rules out high bandwidth periodic transfers */
-       tmp = usb_endpoint_maxp(desc);
-       if (tmp & ~0x07ff) {
+       tmp = usb_endpoint_maxp_mult(desc) - 1;
+       if (tmp) {
                int ok;
 
                if (usb_endpoint_dir_in(desc))
                        musb_dbg(musb, "no support for high bandwidth ISO");
                        goto fail;
                }
-               musb_ep->hb_mult = (tmp >> 11) & 3;
+               musb_ep->hb_mult = tmp;
        } else {
                musb_ep->hb_mult = 0;
        }
 
-       musb_ep->packet_sz = tmp & 0x7ff;
+       musb_ep->packet_sz = usb_endpoint_maxp(desc);
        tmp = musb_ep->packet_sz * (musb_ep->hb_mult + 1);
 
        /* enable the interrupts for the endpoint, set the endpoint
 
         * Some musb cores don't support high bandwidth ISO transfers; and
         * we don't (yet!) support high bandwidth interrupt transfers.
         */
-       qh->hb_mult = 1 + ((qh->maxpacket >> 11) & 0x03);
+       qh->hb_mult = usb_endpoint_maxp_mult(epd);
        if (qh->hb_mult > 1) {
                int ok = (qh->type == USB_ENDPOINT_XFER_ISOC);