Commit db219732 authored by Sebastian Reichel's avatar Sebastian Reichel Committed by David S. Miller

net: ethernet: stmmac: dwmac-rk: fix optional phy regulator handling

The usual devm_regulator_get() call already handles "optional"
regulators by returning a valid dummy and printing a warning
that the dummy regulator should be described properly. This
code open coded the same behaviour, but masked any errors that
are not -EPROBE_DEFER and is quite noisy.

This change effectively unmasks and propagates regulators errors
not involving -ENODEV, downgrades the error print to warning level
if no regulator is specified and captures the probe defer message
for /sys/kernel/debug/devices_deferred.

Fixes: 2e12f536 ("net: stmmac: dwmac-rk: Use standard devicetree property for phy regulator")
Signed-off-by: default avatarSebastian Reichel <sebastian.reichel@collabora.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent ea449f7f
...@@ -1586,9 +1586,6 @@ static int phy_power_on(struct rk_priv_data *bsp_priv, bool enable) ...@@ -1586,9 +1586,6 @@ static int phy_power_on(struct rk_priv_data *bsp_priv, bool enable)
int ret; int ret;
struct device *dev = &bsp_priv->pdev->dev; struct device *dev = &bsp_priv->pdev->dev;
if (!ldo)
return 0;
if (enable) { if (enable) {
ret = regulator_enable(ldo); ret = regulator_enable(ldo);
if (ret) if (ret)
...@@ -1636,14 +1633,11 @@ static struct rk_priv_data *rk_gmac_setup(struct platform_device *pdev, ...@@ -1636,14 +1633,11 @@ static struct rk_priv_data *rk_gmac_setup(struct platform_device *pdev,
} }
} }
bsp_priv->regulator = devm_regulator_get_optional(dev, "phy"); bsp_priv->regulator = devm_regulator_get(dev, "phy");
if (IS_ERR(bsp_priv->regulator)) { if (IS_ERR(bsp_priv->regulator)) {
if (PTR_ERR(bsp_priv->regulator) == -EPROBE_DEFER) { ret = PTR_ERR(bsp_priv->regulator);
dev_err(dev, "phy regulator is not available yet, deferred probing\n"); dev_err_probe(dev, ret, "failed to get phy regulator\n");
return ERR_PTR(-EPROBE_DEFER); return ERR_PTR(ret);
}
dev_err(dev, "no regulator found\n");
bsp_priv->regulator = NULL;
} }
ret = of_property_read_string(dev->of_node, "clock_in_out", &strings); ret = of_property_read_string(dev->of_node, "clock_in_out", &strings);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment