瀏覽代碼

usb: dwc2: disable erroneous overcurrent condition

For the case where an external VBUS is used, we should enable the external
VBUS comparator in the driver. This would prevent an unnecessary overcurrent
error which would then disable the host port.

The overcurrent condition was happening on the SoCFPGA Cyclone5 devkit, thus
USB was not working on the devkit. This patch fixes that problem.

Signed-off-by: Dinh Nguyen <dinguyen@opensource.altera.com>
Dinh Nguyen 9 年之前
父節點
當前提交
b5ab663a69
共有 2 個文件被更改,包括 5 次插入1 次删除
  1. 3 1
      drivers/usb/host/dwc2.c
  2. 2 0
      drivers/usb/host/dwc2.h

+ 3 - 1
drivers/usb/host/dwc2.c

@@ -263,7 +263,9 @@ static void dwc_otg_core_init(struct dwc2_core_regs *regs)
 
 	/* Program the ULPI External VBUS bit if needed */
 #ifdef CONFIG_DWC2_PHY_ULPI_EXT_VBUS
-	usbcfg |= DWC2_GUSBCFG_ULPI_EXT_VBUS_DRV;
+	usbcfg |= (DWC2_GUSBCFG_ULPI_EXT_VBUS_DRV |
+		   DWC2_GUSBCFG_ULPI_INT_VBUS_INDICATOR |
+		   DWC2_GUSBCFG_INDICATOR_PASSTHROUGH);
 #else
 	usbcfg &= ~DWC2_GUSBCFG_ULPI_EXT_VBUS_DRV;
 #endif

+ 2 - 0
drivers/usb/host/dwc2.h

@@ -152,6 +152,8 @@ struct dwc2_core_regs {
 #define DWC2_GUSBCFG_ULPI_INT_VBUS_INDICATOR_OFFSET	21
 #define DWC2_GUSBCFG_TERM_SEL_DL_PULSE			(1 << 22)
 #define DWC2_GUSBCFG_TERM_SEL_DL_PULSE_OFFSET		22
+#define DWC2_GUSBCFG_INDICATOR_PASSTHROUGH		(1 << 24)
+#define DWC2_GUSBCFG_INDICATOR_PASSTHROUGH_OFFSET	24
 #define DWC2_GUSBCFG_IC_USB_CAP				(1 << 26)
 #define DWC2_GUSBCFG_IC_USB_CAP_OFFSET			26
 #define DWC2_GUSBCFG_IC_TRAFFIC_PULL_REMOVE		(1 << 27)