summaryrefslogtreecommitdiffstats
path: root/drivers/usb
diff options
context:
space:
mode:
authorAlexander Stein <alexander.stein@ew.tq-group.com>2022-03-09 10:38:42 +0100
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2022-03-15 18:22:15 +0100
commitd790a9db918f7c2356ea2f775cd868551218fc07 (patch)
tree86c3f9ac1ba754126aa883dd244361dac87986e3 /drivers/usb
parentUSB: storage: ums-realtek: fix error code in rts51x_read_mem() (diff)
downloadlinux-d790a9db918f7c2356ea2f775cd868551218fc07.tar.xz
linux-d790a9db918f7c2356ea2f775cd868551218fc07.zip
usb: common: usb-conn-gpio: Make VBUS supply completely optional
It makes sense that if the USB connector is a child of an USB port providing VBUS supply, there is no need to do it again. But this does not handle the case where VBUS is controlled by PWR from USB host controller, without any regulator at all. Support this by making VBUS pure optional. Signed-off-by: Alexander Stein <alexander.stein@ew.tq-group.com> Link: https://lore.kernel.org/r/20220309093842.113260-1-alexander.stein@ew.tq-group.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/usb')
-rw-r--r--drivers/usb/common/usb-conn-gpio.c20
1 files changed, 3 insertions, 17 deletions
diff --git a/drivers/usb/common/usb-conn-gpio.c b/drivers/usb/common/usb-conn-gpio.c
index 0158148cb054..395f9bbe3056 100644
--- a/drivers/usb/common/usb-conn-gpio.c
+++ b/drivers/usb/common/usb-conn-gpio.c
@@ -175,7 +175,6 @@ static int usb_conn_probe(struct platform_device *pdev)
{
struct device *dev = &pdev->dev;
struct usb_conn_info *info;
- bool need_vbus = true;
int ret = 0;
info = devm_kzalloc(dev, sizeof(*info), GFP_KERNEL);
@@ -205,22 +204,9 @@ static int usb_conn_probe(struct platform_device *pdev)
INIT_DELAYED_WORK(&info->dw_det, usb_conn_detect_cable);
- /*
- * If the USB connector is a child of a USB port and that port already provides the VBUS
- * supply, there's no need for the USB connector to provide it again.
- */
- if (dev->parent && dev->parent->of_node) {
- if (of_find_property(dev->parent->of_node, "vbus-supply", NULL))
- need_vbus = false;
- }
-
- if (!need_vbus) {
- info->vbus = devm_regulator_get_optional(dev, "vbus");
- if (PTR_ERR(info->vbus) == -ENODEV)
- info->vbus = NULL;
- } else {
- info->vbus = devm_regulator_get(dev, "vbus");
- }
+ info->vbus = devm_regulator_get_optional(dev, "vbus");
+ if (PTR_ERR(info->vbus) == -ENODEV)
+ info->vbus = NULL;
if (IS_ERR(info->vbus)) {
ret = PTR_ERR(info->vbus);