浏览代码

usb: dwc2: Add msleep for host-only

Although a host-only controller should not have any associated delay,
some rockchip SOC platforms will not show the correct host-values of
registers until after a delay.

So add a 50 ms sleep when in host-only mode.

Signed-off-by: John Youn <johnyoun@synopsys.com>
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Heiko Stuebner 8 年之前
父节点
当前提交
a07ce8d34e
共有 1 个文件被更改,包括 10 次插入1 次删除
  1. 10 1
      drivers/usb/dwc2/core.c

+ 10 - 1
drivers/usb/dwc2/core.c

@@ -463,9 +463,18 @@ static void dwc2_clear_force_mode(struct dwc2_hsotg *hsotg)
  */
  */
 void dwc2_force_dr_mode(struct dwc2_hsotg *hsotg)
 void dwc2_force_dr_mode(struct dwc2_hsotg *hsotg)
 {
 {
+	bool ret;
+
 	switch (hsotg->dr_mode) {
 	switch (hsotg->dr_mode) {
 	case USB_DR_MODE_HOST:
 	case USB_DR_MODE_HOST:
-		dwc2_force_mode(hsotg, true);
+		ret = dwc2_force_mode(hsotg, true);
+		/*
+		 * NOTE: This is required for some rockchip soc based
+		 * platforms on their host-only dwc2.
+		 */
+		if (!ret)
+			msleep(50);
+
 		break;
 		break;
 	case USB_DR_MODE_PERIPHERAL:
 	case USB_DR_MODE_PERIPHERAL:
 		dwc2_force_mode(hsotg, false);
 		dwc2_force_mode(hsotg, false);