musb driver bug?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

I am debugging a weird musb problem in which musb is in high-speed
device mode loaded with g_mass_storage. For some reason, musb received
10 bytes in SETUP packets during enumeration. Please see the following
log from musb.

<after connected to host>
[ 447.100858] musb-hdrc musb-hdrc.0: usbintr (1) epintr(0)
[ 447.250856] musb-hdrc musb-hdrc.0: usbintr (4) epintr(0)
[ 447.569139] musb-hdrc musb-hdrc.0: usbintr (0) epintr(1)
[ 447.574515] musb_g_ep0_irq 720: SetupEnd came in a wrong ep0stage setup
[ 447.581189] musb_g_ep0_irq 815: SETUP packet len 10 != 8 ?
[ 447.586737] musb-hdrc musb-hdrc.0: usbintr (0) epintr(1)
[ 447.592103] musb_g_ep0_irq 815: SETUP packet len 10 != 8 ?
[ 447.597652] musb-hdrc musb-hdrc.0: Unhandled USB IRQ 00000001-00000000
......

When look at the following code in musb_gadget_ep0.c, when len != 8,
musb_read_setup() is not called, so it just breaks out without
flushing the fifo or sending
MUSB_CSR0_P_SVDRXPKTRDY. Is this a bug? I would think in this error
case the data will be always in fifo and not be able receive further
packets. I cannot confirm this since I an not able to hook up the
analyzer at this moment.

 797         case MUSB_EP0_STAGE_SETUP:
 798 setup:
 799                 if (csr & MUSB_CSR0_RXPKTRDY) {
 800                         struct usb_ctrlrequest  setup;
 801                         int                     handled = 0;
 802
 803                         if (len != 8) {
 804                                 ERR("SETUP packet len %d != 8 ?\n", len);
 805                                 break;
 806                         }
 807                         musb_read_setup(musb, &setup);
 808                         retval = IRQ_HANDLED;

Thanks,
-Bin.
--
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




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux