diff --git a/drivers/net/phy/mdio-mvebu.c b/drivers/net/phy/mdio-mvebu.c index 3dcf644..b90e281 100644 --- a/drivers/net/phy/mdio-mvebu.c +++ b/drivers/net/phy/mdio-mvebu.c @@ -117,8 +117,9 @@ return -ENOMEM; priv->clk = clk_get(dev, NULL); - if (!IS_ERR(priv->clk)) - clk_enable(priv->clk); + if (IS_ERR(priv->clk)) + return PTR_ERR(priv->clk); + clk_enable(priv->clk); priv->miibus.dev.device_node = dev->device_node; priv->miibus.priv = priv; @@ -135,8 +136,7 @@ mdiobus_unregister(&priv->miibus); - if (!IS_ERR(priv->clk)) - clk_disable(priv->clk); + clk_disable(priv->clk); } static struct of_device_id mvebu_mdio_dt_ids[] = { diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c index 1a2fdf1..cad4cf5 100644 --- a/drivers/net/phy/phy.c +++ b/drivers/net/phy/phy.c @@ -275,6 +275,10 @@ phy_node = of_parse_phandle(edev->parent->device_node, "phy-handle", 0); if (!phy_node) + phy_node = of_parse_phandle(edev->parent->device_node, "phy", 0); + if (!phy_node) + phy_node = of_parse_phandle(edev->parent->device_node, "phy-device", 0); + if (!phy_node) return NULL; bus_for_each_device(&mdio_bus_type, dev) { diff --git a/drivers/of/of_net.c b/drivers/of/of_net.c index 0320c1d..086573f 100644 --- a/drivers/of/of_net.c +++ b/drivers/of/of_net.c @@ -28,6 +28,7 @@ [PHY_INTERFACE_MODE_RGMII_TXID] = "rgmii-txid", [PHY_INTERFACE_MODE_RTBI] = "rtbi", [PHY_INTERFACE_MODE_SMII] = "smii", + [PHY_INTERFACE_MODE_QSGMII] = "qsgmii", }; /** diff --git a/include/linux/phy.h b/include/linux/phy.h index 3229aa6..7c5d754 100644 --- a/include/linux/phy.h +++ b/include/linux/phy.h @@ -54,6 +54,7 @@ PHY_INTERFACE_MODE_RGMII_TXID, PHY_INTERFACE_MODE_RTBI, PHY_INTERFACE_MODE_SMII, + PHY_INTERFACE_MODE_QSGMII, } phy_interface_t; #define PHY_INIT_TIMEOUT 100000