Use generic-phy API to power on comphy in mvneta driver.

Signed-off-by: Marek Behún <marek.be...@nic.cz>
---
 drivers/net/mvneta.c | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/drivers/net/mvneta.c b/drivers/net/mvneta.c
index d737400a20..31548445d7 100644
--- a/drivers/net/mvneta.c
+++ b/drivers/net/mvneta.c
@@ -22,6 +22,7 @@
 #include <asm/io.h>
 #include <dm/device_compat.h>
 #include <dm/devres.h>
+#include <generic-phy.h>
 #include <linux/errno.h>
 #include <phy.h>
 #include <miiphy.h>
@@ -274,6 +275,7 @@ struct mvneta_port {
        unsigned int link;
        unsigned int duplex;
        unsigned int speed;
+       struct phy comphy;
 
        int init;
        int phyaddr;
@@ -1150,8 +1152,22 @@ static int mvneta_setup_txqs(struct mvneta_port *pp)
        return 0;
 }
 
+static int mvneta_comphy_init(struct mvneta_port *pp)
+{
+       int ret;
+
+       ret = generic_phy_set_mode(&pp->comphy, PHY_MODE_ETHERNET,
+                                  pp->phy_interface);
+       if (ret)
+               return ret;
+
+       return generic_phy_power_on(&pp->comphy);
+}
+
 static void mvneta_start_dev(struct mvneta_port *pp)
 {
+       mvneta_comphy_init(pp);
+
        /* start the Rx/Tx activity */
        mvneta_port_enable(pp);
 }
@@ -1723,6 +1739,12 @@ static int mvneta_probe(struct udevice *dev)
        else
                mvneta_conf_mbus_windows(pp);
 
+       ret = generic_phy_get_by_index(dev, 0, &pp->comphy);
+       if (ret && ret != -ENOENT) {
+               printf("cannot get comphy in mvneta\n");
+               return ret;
+       }
+
        /* PHY interface is already decoded in mvneta_ofdata_to_platdata() */
        pp->phy_interface = pdata->phy_interface;
 
@@ -1776,6 +1798,7 @@ static void mvneta_stop(struct udevice *dev)
 
        mvneta_port_down(pp);
        mvneta_port_disable(pp);
+       generic_phy_power_off(&pp->comphy);
 }
 
 static const struct eth_ops mvneta_ops = {
-- 
2.24.1

Reply via email to