提交 6a22158c 编写于 作者: S Sebastian Andrzej Siewior 提交者: Felipe Balbi

usb: gadget: composite: fix bMaxPacketSize for SuperSpeed

For bMaxPacketSize0 we usually take what is specified in ep0->maxpacket.
This is fine in most cases, however on SuperSpeed bMaxPacketSize0
specifies the exponent instead of the actual size in bytes. The only
valid value on SS is 9 which denotes 512 bytes.
Signed-off-by: NSebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: NFelipe Balbi <balbi@ti.com>
上级 aba1350f
...@@ -1079,11 +1079,13 @@ composite_setup(struct usb_gadget *gadget, const struct usb_ctrlrequest *ctrl) ...@@ -1079,11 +1079,13 @@ composite_setup(struct usb_gadget *gadget, const struct usb_ctrlrequest *ctrl)
cdev->desc.bMaxPacketSize0 = cdev->desc.bMaxPacketSize0 =
cdev->gadget->ep0->maxpacket; cdev->gadget->ep0->maxpacket;
if (gadget_is_superspeed(gadget)) { if (gadget_is_superspeed(gadget)) {
if (gadget->speed >= USB_SPEED_SUPER) if (gadget->speed >= USB_SPEED_SUPER) {
cdev->desc.bcdUSB = cpu_to_le16(0x0300); cdev->desc.bcdUSB = cpu_to_le16(0x0300);
else cdev->desc.bMaxPacketSize0 = 9;
} else {
cdev->desc.bcdUSB = cpu_to_le16(0x0210); cdev->desc.bcdUSB = cpu_to_le16(0x0210);
} }
}
value = min(w_length, (u16) sizeof cdev->desc); value = min(w_length, (u16) sizeof cdev->desc);
memcpy(req->buf, &cdev->desc, value); memcpy(req->buf, &cdev->desc, value);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册