提交 2f3090c6 编写于 作者: T Thinh Nguyen 提交者: Felipe Balbi

usb: dwc3: Check controller type before setting speed

DWC_usb3 speed can only be set up to SuperSpeed. Limit the setting to
SuperSpeed only should the value be higher. Otherwise, the controller
will read an invalid speed value and set the device to an incorrect
speed.
Signed-off-by: NThinh Nguyen <thinhn@synopsys.com>
Signed-off-by: NFelipe Balbi <felipe.balbi@linux.intel.com>
上级 80b77634
...@@ -2044,7 +2044,10 @@ static void dwc3_gadget_set_speed(struct usb_gadget *g, ...@@ -2044,7 +2044,10 @@ static void dwc3_gadget_set_speed(struct usb_gadget *g,
reg |= DWC3_DCFG_SUPERSPEED; reg |= DWC3_DCFG_SUPERSPEED;
break; break;
case USB_SPEED_SUPER_PLUS: case USB_SPEED_SUPER_PLUS:
reg |= DWC3_DCFG_SUPERSPEED_PLUS; if (dwc3_is_usb31(dwc))
reg |= DWC3_DCFG_SUPERSPEED_PLUS;
else
reg |= DWC3_DCFG_SUPERSPEED;
break; break;
default: default:
dev_err(dwc->dev, "invalid speed (%d)\n", speed); dev_err(dwc->dev, "invalid speed (%d)\n", speed);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册