usb: dwc_otg_310: support vbus controlled by both gpio and pmic
[firefly-linux-kernel-4.4.55.git] / drivers / usb / dwc_otg_310 / usbdev_rk3126.c
index eaeca4324c5282ee23f68731d97b8ed18303331f..2cf9c5a8fbf838e37801b2289a3b9eb9a0ddd77a 100755 (executable)
@@ -1,3 +1,4 @@
+#ifdef CONFIG_ARM
 #include "usbdev_rk.h"
 #include "usbdev_grf_regs.h"
 #include "dwc_otg_regs.h"
@@ -193,10 +194,15 @@ static void usb20otg_power_enable(int enable)
                /* disable otg_drv power */
                if (gpio_is_valid(control_usb->otg_gpios->gpio))
                        gpio_set_value(control_usb->otg_gpios->gpio, 0);
+
+               rk_battery_charger_detect_cb(USB_OTG_POWER_OFF);
        } else if (1 == enable) {
                /* enable otg_drv power */
                if (gpio_is_valid(control_usb->otg_gpios->gpio))
                        gpio_set_value(control_usb->otg_gpios->gpio, 1);
+
+               if (!usb20otg_get_status(USB_STATUS_BVABLID))
+                       rk_battery_charger_detect_cb(USB_OTG_POWER_ON);
        }
 }
 static void usb20otg_phy_power_down(int power_down)
@@ -408,7 +414,7 @@ static void usb20ehci_phy_suspend(void *pdata, int suspend)
 
        if (suspend) {
                /* enable soft control */
-               writel(UOC_HIWORD_UPDATE(0x1d5, 0x1ff, 0),
+               writel(UOC_HIWORD_UPDATE(0x1d1, 0x1ff, 0),
                       RK_GRF_VIRT + RK312X_GRF_UOC1_CON5);
                usbpdata->phy_status = 1;
        } else {
@@ -846,4 +852,4 @@ MODULE_ALIAS("platform: dwc_control_usb");
 MODULE_AUTHOR("RockChip Inc.");
 MODULE_DESCRIPTION("RockChip Control Module USB Driver");
 MODULE_LICENSE("GPL v2");
-
+#endif