From: Padmarao Begari <padmarao.beg...@amd.com>

Apart from ENOENT observing return value as ENOSYS when
!DM_REGULATOR that's why cover both configurations.
Changed code is not working as operation should be "&&"
not "||" (ret != -ENOENT && ret != -ENOSYS).

Also fix the remove function where the regulator_set_enable_if_allowed()
function is returning an error.

Signed-off-by: Padmarao Begari <padmarao.beg...@amd.com>
Signed-off-by: Michal Simek <michal.si...@amd.com>
---

 common/usb_onboard_hub.c | 17 +++++++++++------
 1 file changed, 11 insertions(+), 6 deletions(-)

diff --git a/common/usb_onboard_hub.c b/common/usb_onboard_hub.c
index 7fe62b043e6a..57c84e7fce2c 100644
--- a/common/usb_onboard_hub.c
+++ b/common/usb_onboard_hub.c
@@ -146,7 +146,7 @@ static int usb_onboard_hub_probe(struct udevice *dev)
        int ret;
 
        ret = device_get_supply_regulator(dev, "vdd-supply", &hub->vdd);
-       if (ret && ret != -ENOENT) {
+       if (ret && ret != -ENOENT && ret != -ENOSYS) {
                dev_err(dev, "can't get vdd-supply: %d\n", ret);
                return ret;
        }
@@ -204,16 +204,21 @@ static int usb_onboard_hub_bind(struct udevice *dev)
 static int usb_onboard_hub_remove(struct udevice *dev)
 {
        struct onboard_hub *hub = dev_get_priv(dev);
-       int ret;
 
        if (hub->reset_gpio)
                dm_gpio_free(hub->reset_gpio->dev, hub->reset_gpio);
 
-       ret = regulator_set_enable_if_allowed(hub->vdd, false);
-       if (ret)
-               dev_err(dev, "can't disable vdd-supply: %d\n", ret);
+       if (hub->vdd) {
+               int ret;
 
-       return ret;
+               ret = regulator_set_enable_if_allowed(hub->vdd, false);
+               if (ret)
+                       dev_err(dev, "can't disable vdd-supply: %d\n", ret);
+
+               return ret;
+       }
+
+       return 0;
 }
 
 static const struct onboard_hub_data usb2514_data = {
-- 
2.43.0

Reply via email to