Hello.
Felipe Balbi wrote:
From: Ming Lei <tom.leiming@xxxxxxxxx>
This patch has been tested OK on beagle B5 board and
use usbtest #15 and #16 as testcase.
Signed-off-by: Ming Lei <tom.leiming@xxxxxxxxx>
Reviewed-by: Sergei Shtylyov <sshtylyov@xxxxxxxxxx>
Cc: David Brownell <dbrownell@xxxxxxxxxxxxxxxxxxxxx>
Cc: Anand Gadiyar <gadiyar@xxxxxx>
Cc: Mike Frysinger <vapier@xxxxxxxxxx>
Cc: Sergei Shtylyov <sshtylyov@xxxxxxxxxxxxx>
Signed-off-by: Felipe Balbi <balbi@xxxxxx>
diff --git a/drivers/usb/musb/musb_gadget.c b/drivers/usb/musb/musb_gadget.c
index d065e23..36968fc 100644
--- a/drivers/usb/musb/musb_gadget.c
+++ b/drivers/usb/musb/musb_gadget.c
[...]
@@ -875,9 +878,25 @@ static int musb_gadget_enable(struct usb_ep *ep,
/* REVISIT this rules out high bandwidth periodic transfers */
tmp = le16_to_cpu(desc->wMaxPacketSize);
- if (tmp & ~0x07ff)
- goto fail;
- musb_ep->packet_sz = tmp;
+ if (tmp & ~0x07ff) {
+ int ok;
+
+ if (usb_endpoint_dir_in(desc))
+ ok = musb->hb_iso_tx;
+ else
+ ok = musb->hb_iso_rx;
+
+ if (!ok) {
+ DBG(4, "%s: not support ISO high bandwidth\n", __func__);
Argh, have not noticed this before. DBG() already prints __func__ and
__LINE__. And "not support" is not proper English too. :-)
+ goto fail;
+ }
+ musb_ep->hb_mult = (tmp >> 11) & 3;
+ } else {
+ musb_ep->hb_mult = 0;
+ }
+
+ musb_ep->packet_sz = tmp & 0x7ff;
+ tmp = musb_ep->packet_sz * (musb_ep->hb_mult + 1);
/* enable the interrupts for the endpoint, set the endpoint
* packet size (or fail), set the mode, clear the fifo
@@ -890,8 +909,11 @@ static int musb_gadget_enable(struct usb_ep *ep,
musb_ep->is_in = 1;
if (!musb_ep->is_in)
goto fail;
- if (tmp > hw_ep->max_packet_sz_tx)
+
+ if (tmp > hw_ep->max_packet_sz_tx) {
+ DBG(4, "%s: packet size beyond hw fifo size\n", __func__);
Same about __func__ here.
@@ -927,8 +949,11 @@ static int musb_gadget_enable(struct usb_ep *ep,
musb_ep->is_in = 0;
if (musb_ep->is_in)
goto fail;
- if (tmp > hw_ep->max_packet_sz_rx)
+
+ if (tmp > hw_ep->max_packet_sz_rx) {
+ DBG(4, "%s: packet size beyond hw fifo size\n", __func__);
__func__ not needed again.
WBR, Sergei
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html