usb: fix RK3036 bvalid irq Num
authorlyz <lyz@rock-chips.com>
Thu, 7 Aug 2014 08:15:29 +0000 (16:15 +0800)
committerlyz <lyz@rock-chips.com>
Thu, 7 Aug 2014 08:16:21 +0000 (16:16 +0800)
drivers/usb/dwc_otg_310/usbdev_rk3036.c

index b8fe46c40ce6d2b3d89df1035f2ec32014d49834..c7911c3fd720e25ee8680db6b345ef525e85a305 100755 (executable)
@@ -141,10 +141,28 @@ static int usb20otg_get_status(int id)
        return ret;
 }
 
+#ifdef CONFIG_RK_USB_UART
+/**
+ *  dwc_otg_uart_enabled - check if a usb-uart debugger is enabled in DT
+ *
+ *  Returns true if the status property of node "usb_uart" is set to "okay"
+ *  or "ok", if this property is absent it will use the default status "ok"
+ *  0 otherwise
+ */
+static bool dwc_otg_uart_enabled(void)
+{
+       struct device_node *np;
+
+       np = of_find_node_by_name(NULL, "usb_uart");
+       if(np && of_device_is_available(np))
+               return true;
+
+       return false;
+}
+
 static void dwc_otg_uart_mode(void *pdata, int enter_usb_uart_mode)
 {
-#ifdef CONFIG_RK_USB_UART
-       if (1 == enter_usb_uart_mode) {
+       if ((1 == enter_usb_uart_mode) && dwc_otg_uart_enabled()) {
                /* bypass dm, enter uart mode */
                writel(UOC_HIWORD_UPDATE(0x3, 0x3, 12),
                       RK_GRF_VIRT + RK3036_GRF_UOC1_CON4);
@@ -153,9 +171,13 @@ static void dwc_otg_uart_mode(void *pdata, int enter_usb_uart_mode)
                writel(UOC_HIWORD_UPDATE(0x0, 0x3, 12),
                       RK_GRF_VIRT + RK3036_GRF_UOC1_CON4);
        }
-#endif
 }
-
+#else
+static void dwc_otg_uart_mode(void *pdata, int enter_usb_uart_mode)
+{
+       ;
+}
+#endif
 static void usb20otg_power_enable(int enable)
 {
        if (0 == enable) {