> > The isr is going to check for a status phase on the indexed endpoint. > Input endpoints have no status bits and can be skipped for that test. > > Signed-off-by: Michael Grzeschik <m.grzeschik@xxxxxxxxxxxxxx> > --- > This patch is based on the change mentioned by Matthieu CASTET, > but moves the check before using hw_test_and_clear_setup_status. > > drivers/usb/chipidea/udc.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/drivers/usb/chipidea/udc.c b/drivers/usb/chipidea/udc.c > index 69d20fb..9364184 100644 > --- a/drivers/usb/chipidea/udc.c > +++ b/drivers/usb/chipidea/udc.c > @@ -989,6 +989,7 @@ __acquires(ci->lock) > } > > if (hwep->type != USB_ENDPOINT_XFER_CONTROL || > + (i >= ci->hw_ep_max / 2) || > !hw_test_and_clear_setup_status(ci, i)) > continue; > > -- Hi Michael, I can't accept this patch, it more likes a workaround for current broken code. In fact, we only handle ep0out (setup packet) for below code, please try below simple fix. diff --git a/drivers/usb/chipidea/udc.c b/drivers/usb/chipidea/udc.c index c318e66..b86ef9a 100644 --- a/drivers/usb/chipidea/udc.c +++ b/drivers/usb/chipidea/udc.c @@ -997,15 +997,10 @@ __acquires(ci->lock) } } - if (hwep->type != USB_ENDPOINT_XFER_CONTROL || - !hw_test_and_clear_setup_status(ci, i)) + /* Only handle setup packet below */ + if (i != 0) continue; - if (i != 0) { - dev_warn(ci->dev, "ctrl traffic at endpoint %d\n", i); - continue; - } - /* * Flush data and handshake transactions of previous * setup packet. Peter -- 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