From: Kishon Vijay Abraham I Date: Mon, 14 Jul 2014 10:25:01 +0000 (+0530) Subject: phy: core: Fix of_phy_provider_lookup to return PHY provider for sub node X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=2a4c37016ca96e413cd352985d3a0db8cfb7716c;p=GitHub%2FLineageOS%2FG12%2Fandroid_kernel_amlogic_linux-4.9.git phy: core: Fix of_phy_provider_lookup to return PHY provider for sub node Fixed of_phy_provider_lookup to return 'phy_provider' if _of_phy_get passes the node pointer of the sub-node of phy provider node. This is needed when phy provider implements multiple PHYs and each PHY is modelled as the sub-node of PHY provider device node. Signed-off-by: Kishon Vijay Abraham I Acked-by: Lee Jones --- diff --git a/drivers/phy/phy-core.c b/drivers/phy/phy-core.c index 75c97396dbfa..527e744a3809 100644 --- a/drivers/phy/phy-core.c +++ b/drivers/phy/phy-core.c @@ -87,10 +87,15 @@ static struct phy *phy_lookup(struct device *device, const char *port) static struct phy_provider *of_phy_provider_lookup(struct device_node *node) { struct phy_provider *phy_provider; + struct device_node *child; list_for_each_entry(phy_provider, &phy_provider_list, list) { if (phy_provider->dev->of_node == node) return phy_provider; + + for_each_child_of_node(phy_provider->dev->of_node, child) + if (child == node) + return phy_provider; } return ERR_PTR(-EPROBE_DEFER);