usb: dwc_otg_310: support vbus controlled by both gpio and pmic
authorWilliam Wu <wulf@rock-chips.com>
Fri, 14 Apr 2017 09:51:27 +0000 (17:51 +0800)
committerHuang, Tao <huangtao@rock-chips.com>
Mon, 17 Apr 2017 00:54:22 +0000 (08:54 +0800)
On some rockchip platforms (e.g. rk3368), usb vbus 5v is controlled
by both gpio and pmic at the same time. So we need to set gpio and
pmic when enable/disable usb vbus power.

Change-Id: I327a87f16662026eaab1b6577d0b0116c4b2671f
Signed-off-by: William Wu <wulf@rock-chips.com>
drivers/usb/dwc_otg_310/usbdev_rk3036.c
drivers/usb/dwc_otg_310/usbdev_rk3126.c
drivers/usb/dwc_otg_310/usbdev_rk32.c
drivers/usb/dwc_otg_310/usbdev_rk3368.c

index e5996181a0839cd2003b42c729fc218c43f84fee..02dec704802250ce37e0ad48628d9a348ed32825 100755 (executable)
@@ -185,13 +185,14 @@ 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);
-               else if (usb20otg_get_status(USB_STATUS_BVABLID))
-                       rk_battery_charger_detect_cb(USB_OTG_POWER_OFF);
+
+               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);
-               else if (!usb20otg_get_status(USB_STATUS_BVABLID))
+
+               if (!usb20otg_get_status(USB_STATUS_BVABLID))
                        rk_battery_charger_detect_cb(USB_OTG_POWER_ON);
        }
 }
index bd3991183b728ec290a8a39e0883be7ff49aeca0..2cf9c5a8fbf838e37801b2289a3b9eb9a0ddd77a 100755 (executable)
@@ -194,13 +194,14 @@ 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);
-               else if (usb20otg_get_status(USB_STATUS_BVABLID))
-                       rk_battery_charger_detect_cb(USB_OTG_POWER_OFF);
+
+               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);
-               else if (!usb20otg_get_status(USB_STATUS_BVABLID))
+
+               if (!usb20otg_get_status(USB_STATUS_BVABLID))
                        rk_battery_charger_detect_cb(USB_OTG_POWER_ON);
        }
 }
index 53e14def84d487fc956f7bc03b8f964d1d62f831..5f383907261598e301d6655f53938fa8f8b6bffc 100644 (file)
@@ -183,13 +183,14 @@ 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);
-               else if (usb20otg_get_status(USB_STATUS_BVABLID))
-                       rk_battery_charger_detect_cb(USB_OTG_POWER_OFF);
+
+               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);
-               else if (!usb20otg_get_status(USB_STATUS_BVABLID))
+
+               if (!usb20otg_get_status(USB_STATUS_BVABLID))
                        rk_battery_charger_detect_cb(USB_OTG_POWER_ON);
        }
 }
index 833671c1e1e51f24a1194b35122ab0b9151a97a2..3272e4e99c5fcdd604c1c7f9be0d9e40f1cef616 100644 (file)
@@ -189,13 +189,14 @@ 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);
-               else if (usb20otg_get_status(USB_STATUS_BVABLID))
-                       rk_battery_charger_detect_cb(USB_OTG_POWER_OFF);
+
+               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);
-               else if (!usb20otg_get_status(USB_STATUS_BVABLID))
+
+               if (!usb20otg_get_status(USB_STATUS_BVABLID))
                        rk_battery_charger_detect_cb(USB_OTG_POWER_ON);
        }
 }