summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/phy/mdio-mvebu.c8
-rw-r--r--drivers/net/phy/phy.c4
-rw-r--r--drivers/of/of_net.c1
-rw-r--r--include/linux/phy.h1
4 files changed, 10 insertions, 4 deletions
diff --git a/drivers/net/phy/mdio-mvebu.c b/drivers/net/phy/mdio-mvebu.c
index 3dcf644ec2..b90e28102c 100644
--- a/drivers/net/phy/mdio-mvebu.c
+++ b/drivers/net/phy/mdio-mvebu.c
@@ -117,8 +117,9 @@ static int mvebu_mdio_probe(struct device_d *dev)
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 @@ static void mvebu_mdio_remove(struct device_d *dev)
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 1a2fdf1d94..cad4cf5475 100644
--- a/drivers/net/phy/phy.c
+++ b/drivers/net/phy/phy.c
@@ -275,6 +275,10 @@ static struct phy_device *of_mdio_find_phy(struct eth_device *edev)
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 0320c1d4f5..086573fc1a 100644
--- a/drivers/of/of_net.c
+++ b/drivers/of/of_net.c
@@ -28,6 +28,7 @@ static const char *phy_modes[] = {
[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 3229aa6300..7c5d754a12 100644
--- a/include/linux/phy.h
+++ b/include/linux/phy.h
@@ -54,6 +54,7 @@ typedef enum {
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