This looks wrong:

#define EndpointRequest \
        ((USB_DIR_IN|USB_TYPE_STANDARD|USB_RECIP_INTERFACE)<<8)
#define EndpointOutRequest \
        ((USB_DIR_OUT|USB_TYPE_STANDARD|USB_RECIP_INTERFACE)<<8)

Shouldn't it be USB_RECIP_ENDPOINT ?

If I'm right, we had issues with some of the set/clear feature
"len" on root hub, not that anybody noticed ... I'm using these
definitions in the aspeed vhub though, and this breaks it, so
in case I'm right:

Subject: [PATCH] usb/hcd: Fix definition of Endpoint{out}Request

The definition for these is incorrect. Thankfully the only user
today is the root hub emulation code and only in corner cases
that seem to have never hit anybody so far. My upcoming driver
for the Aspeed virtual hub will rely on them being correct
however.

Signed-off-by: Benjamin Herrenschmidt <b...@kernel.crashing.org>
--

diff --git a/include/linux/usb/hcd.h b/include/linux/usb/hcd.h
index 40edf6a..8a1552e 100644
--- a/include/linux/usb/hcd.h
+++ b/include/linux/usb/hcd.h
@@ -561,9 +561,9 @@ extern void usb_ep0_reinit(struct usb_device *);
        ((USB_DIR_IN|USB_TYPE_STANDARD|USB_RECIP_INTERFACE)<<8)
 
 #define EndpointRequest \
-       ((USB_DIR_IN|USB_TYPE_STANDARD|USB_RECIP_INTERFACE)<<8)
+       ((USB_DIR_IN|USB_TYPE_STANDARD|USB_RECIP_ENDPOINT)<<8)
 #define EndpointOutRequest \
-       ((USB_DIR_OUT|USB_TYPE_STANDARD|USB_RECIP_INTERFACE)<<8)
+       ((USB_DIR_OUT|USB_TYPE_STANDARD|USB_RECIP_ENDPOINT)<<8)
 
 /* class requests from the USB 2.0 hub spec, table 11-15 */
 #define HUB_CLASS_REQ(dir, type, request) ((((dir) | (type)) << 8) |
(request))


--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to