From: William Wu Date: Fri, 14 Apr 2017 09:51:27 +0000 (+0800) Subject: usb: dwc_otg_310: support vbus controlled by both gpio and pmic X-Git-Tag: firefly_0821_release~19 X-Git-Url: http://plrg.eecs.uci.edu/git/?p=firefly-linux-kernel-4.4.55.git;a=commitdiff_plain;h=9a47b6de548a83d198e2a92b53fe735c62832515 usb: dwc_otg_310: support vbus controlled by both gpio and pmic 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 --- diff --git a/drivers/usb/dwc_otg_310/usbdev_rk3036.c b/drivers/usb/dwc_otg_310/usbdev_rk3036.c index e5996181a083..02dec7048022 100755 --- a/drivers/usb/dwc_otg_310/usbdev_rk3036.c +++ b/drivers/usb/dwc_otg_310/usbdev_rk3036.c @@ -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); } } diff --git a/drivers/usb/dwc_otg_310/usbdev_rk3126.c b/drivers/usb/dwc_otg_310/usbdev_rk3126.c index bd3991183b72..2cf9c5a8fbf8 100755 --- a/drivers/usb/dwc_otg_310/usbdev_rk3126.c +++ b/drivers/usb/dwc_otg_310/usbdev_rk3126.c @@ -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); } } diff --git a/drivers/usb/dwc_otg_310/usbdev_rk32.c b/drivers/usb/dwc_otg_310/usbdev_rk32.c index 53e14def84d4..5f3839072615 100644 --- a/drivers/usb/dwc_otg_310/usbdev_rk32.c +++ b/drivers/usb/dwc_otg_310/usbdev_rk32.c @@ -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); } } diff --git a/drivers/usb/dwc_otg_310/usbdev_rk3368.c b/drivers/usb/dwc_otg_310/usbdev_rk3368.c index 833671c1e1e5..3272e4e99c5f 100644 --- a/drivers/usb/dwc_otg_310/usbdev_rk3368.c +++ b/drivers/usb/dwc_otg_310/usbdev_rk3368.c @@ -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); } }