Commit d2e9a13a authored by Chanho Park's avatar Chanho Park Committed by Felipe Balbi

usb: dwc3: set up burst size only superspeed mode

When connection is established non-ss mode, endpoint.maxburst is correctly set
to 0, this means that current code will set maxburst bitfield on DEPCFG's
parameter 0 to the highest possible value (0x0f) which is wrong.

Even though this hasn't caused any issues so far (HW seems to ignore that when
not running in SS mode) we want to make sure maxburst bitfield is only set to
anything other than zero if we're running on SuperSpeed mode. In order to
achieve that, let's check for gadget's operating speed before setting maxburst
bitfield when issuing DEPCFG command.

[ balbi@ti.com : improved commit log a bit in order to clarify the situation ]
Signed-off-by: default avatarChanho Park <chanho61.park@samsung.com>
Signed-off-by: default avatarKyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
parent 2a540edf
...@@ -439,8 +439,14 @@ static int dwc3_gadget_set_ep_config(struct dwc3 *dwc, struct dwc3_ep *dep, ...@@ -439,8 +439,14 @@ static int dwc3_gadget_set_ep_config(struct dwc3 *dwc, struct dwc3_ep *dep,
memset(&params, 0x00, sizeof(params)); memset(&params, 0x00, sizeof(params));
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 - 1);
/* Burst size is only needed in SuperSpeed mode */
if (dwc->gadget.speed == USB_SPEED_SUPER) {
u32 burst = dep->endpoint.maxburst - 1;
params.param0 |= DWC3_DEPCFG_BURST_SIZE(burst);
}
if (ignore) if (ignore)
params.param0 |= DWC3_DEPCFG_IGN_SEQ_NUM; params.param0 |= DWC3_DEPCFG_IGN_SEQ_NUM;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment