提交 b785ea7c 编写于 作者: F Felipe Balbi

usb: gadget: composite: fix ep->maxburst initialization

bMaxBurst field on endpoint companion descriptor
is supposed to contain the number of burst minus
1. When passing that to controller drivers, we
should be passing the real number instead (by
incrementing 1).

While doing that, also fix the assumption on
dwc3 that value comes decremented by one.
Signed-off-by: NFelipe Balbi <balbi@ti.com>
上级 fbcaba0e
...@@ -414,7 +414,7 @@ static int dwc3_gadget_set_ep_config(struct dwc3 *dwc, struct dwc3_ep *dep, ...@@ -414,7 +414,7 @@ static int dwc3_gadget_set_ep_config(struct dwc3 *dwc, struct dwc3_ep *dep,
params.param0 = DWC3_DEPCFG_EP_TYPE(usb_endpoint_type(desc)) params.param0 = DWC3_DEPCFG_EP_TYPE(usb_endpoint_type(desc))
| DWC3_DEPCFG_MAX_PACKET_SIZE(usb_endpoint_maxp(desc)) | DWC3_DEPCFG_MAX_PACKET_SIZE(usb_endpoint_maxp(desc))
| DWC3_DEPCFG_BURST_SIZE(dep->endpoint.maxburst); | DWC3_DEPCFG_BURST_SIZE(dep->endpoint.maxburst - 1);
params.param1 = DWC3_DEPCFG_XFER_COMPLETE_EN params.param1 = DWC3_DEPCFG_XFER_COMPLETE_EN
| DWC3_DEPCFG_XFER_NOT_READY_EN; | DWC3_DEPCFG_XFER_NOT_READY_EN;
......
...@@ -117,6 +117,7 @@ int config_ep_by_speed(struct usb_gadget *g, ...@@ -117,6 +117,7 @@ int config_ep_by_speed(struct usb_gadget *g,
struct usb_function *f, struct usb_function *f,
struct usb_ep *_ep) struct usb_ep *_ep)
{ {
struct usb_composite_dev *cdev = get_gadget_data(g);
struct usb_endpoint_descriptor *chosen_desc = NULL; struct usb_endpoint_descriptor *chosen_desc = NULL;
struct usb_descriptor_header **speed_desc = NULL; struct usb_descriptor_header **speed_desc = NULL;
...@@ -180,10 +181,12 @@ int config_ep_by_speed(struct usb_gadget *g, ...@@ -180,10 +181,12 @@ int config_ep_by_speed(struct usb_gadget *g,
_ep->mult = comp_desc->bmAttributes & 0x3; _ep->mult = comp_desc->bmAttributes & 0x3;
case USB_ENDPOINT_XFER_BULK: case USB_ENDPOINT_XFER_BULK:
case USB_ENDPOINT_XFER_INT: case USB_ENDPOINT_XFER_INT:
_ep->maxburst = comp_desc->bMaxBurst; _ep->maxburst = comp_desc->bMaxBurst + 1;
break; break;
default: default:
/* Do nothing for control endpoints */ if (comp_desc->bMaxBurst != 0)
ERROR(cdev, "ep0 bMaxBurst must be 0\n");
_ep->maxburst = 1;
break; break;
} }
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册