Commit 1d7cb11e authored by Kishon Vijay Abraham I's avatar Kishon Vijay Abraham I
Browse files

phy: core: Fix phy_get() to not return error on link creation failure



commit 987351e1 ("phy: core: Add consumer device link support")
added device link support between PHY consumer and PHY provider.
However certain peripherals (DWC3 ULPI) have cyclic dependency
between the PHY provider and PHY consumer causing the device link
creation to fail.

Instead of erroring out on failure to create device link, only add a
debug print to indicate device link creation failed to get USB
working again in multiple platforms.

Fixes: 987351e1 ("phy: core: Add consumer device link support")
Cc: Alexandre Torgue <alexandre.torgue@st.com>
Signed-off-by: default avatarKishon Vijay Abraham I <kishon@ti.com>
Reviewed-by: default avatarAlexandre TORGUE <alexandre.torgue@st.com>
parent 46b7edf1
Loading
Loading
Loading
Loading
+6 −12
Original line number Diff line number Diff line
@@ -688,11 +688,9 @@ struct phy *phy_get(struct device *dev, const char *string)
	get_device(&phy->dev);

	link = device_link_add(dev, &phy->dev, DL_FLAG_STATELESS);
	if (!link) {
		dev_err(dev, "failed to create device link to %s\n",
	if (!link)
		dev_dbg(dev, "failed to create device link to %s\n",
			dev_name(phy->dev.parent));
		return ERR_PTR(-EINVAL);
	}

	return phy;
}
@@ -803,11 +801,9 @@ struct phy *devm_of_phy_get(struct device *dev, struct device_node *np,
	}

	link = device_link_add(dev, &phy->dev, DL_FLAG_STATELESS);
	if (!link) {
		dev_err(dev, "failed to create device link to %s\n",
	if (!link)
		dev_dbg(dev, "failed to create device link to %s\n",
			dev_name(phy->dev.parent));
		return ERR_PTR(-EINVAL);
	}

	return phy;
}
@@ -852,11 +848,9 @@ struct phy *devm_of_phy_get_by_index(struct device *dev, struct device_node *np,
	devres_add(dev, ptr);

	link = device_link_add(dev, &phy->dev, DL_FLAG_STATELESS);
	if (!link) {
		dev_err(dev, "failed to create device link to %s\n",
	if (!link)
		dev_dbg(dev, "failed to create device link to %s\n",
			dev_name(phy->dev.parent));
		return ERR_PTR(-EINVAL);
	}

	return phy;
}