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;hp=b4e7e31d6a73b8a93e73bb409d495171c4cc09f1 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); } }