drivers: net: cpsw: fix phy dt node setting
[oweals/u-boot.git] / drivers / net / cpsw.c
index d7db0fc432f7a93996cfbfd40439699f6de54e86..c31695eba9dd4c97df4bf704edaf532724570770 100644 (file)
@@ -910,8 +910,22 @@ out:
        return ret;
 }
 
+static int cpsw_reap_completed_packets(struct cpsw_priv *priv)
+{
+       int timeout = CPDMA_TIMEOUT;
+
+       /* reap completed packets */
+       while (timeout-- &&
+              (cpdma_process(priv, &priv->tx_chan, NULL, NULL) >= 0))
+               ;
+
+       return timeout;
+}
+
 static void _cpsw_halt(struct cpsw_priv *priv)
 {
+       cpsw_reap_completed_packets(priv);
+
        writel(0, priv->dma_regs + CPDMA_TXCONTROL);
        writel(0, priv->dma_regs + CPDMA_RXCONTROL);
 
@@ -925,18 +939,12 @@ static void _cpsw_halt(struct cpsw_priv *priv)
 
 static int _cpsw_send(struct cpsw_priv *priv, void *packet, int length)
 {
-       void *buffer;
-       int len;
-       int timeout = CPDMA_TIMEOUT;
+       int timeout;
 
        flush_dcache_range((unsigned long)packet,
                           (unsigned long)packet + ALIGN(length, PKTALIGN));
 
-       /* first reap completed packets */
-       while (timeout-- &&
-               (cpdma_process(priv, &priv->tx_chan, &buffer, &len) >= 0))
-               ;
-
+       timeout = cpsw_reap_completed_packets(priv);
        if (timeout == -1) {
                printf("cpdma_process timeout\n");
                return -ETIMEDOUT;
@@ -949,7 +957,7 @@ static int _cpsw_recv(struct cpsw_priv *priv, uchar **pkt)
 {
        void *buffer;
        int len;
-       int ret = -EAGAIN;
+       int ret;
 
        ret = cpdma_process(priv, &priv->rx_chan, &buffer, &len);
        if (ret < 0)
@@ -991,7 +999,7 @@ static int cpsw_phy_init(struct cpsw_priv *priv, struct cpsw_slave *slave)
 
 #ifdef CONFIG_DM_ETH
        if (slave->data->phy_of_handle)
-               dev_set_of_offset(phydev->dev, slave->data->phy_of_handle);
+               phydev->node = offset_to_ofnode(slave->data->phy_of_handle);
 #endif
 
        priv->phydev = phydev;
@@ -1368,7 +1376,7 @@ static int cpsw_eth_ofdata_to_platdata(struct udevice *dev)
 
                        mdio_base = cpsw_get_addr_by_node(fdt, subnode);
                        if (mdio_base == FDT_ADDR_T_NONE) {
-                               error("Not able to get MDIO address space\n");
+                               pr_err("Not able to get MDIO address space\n");
                                return -ENOENT;
                        }
                        priv->data.mdio_base = mdio_base;
@@ -1407,7 +1415,7 @@ static int cpsw_eth_ofdata_to_platdata(struct udevice *dev)
                                                                    subnode);
 
                        if (priv->data.gmii_sel == FDT_ADDR_T_NONE) {
-                               error("Not able to get gmii_sel reg address\n");
+                               pr_err("Not able to get gmii_sel reg address\n");
                                return -ENOENT;
                        }
 
@@ -1418,7 +1426,7 @@ static int cpsw_eth_ofdata_to_platdata(struct udevice *dev)
                        phy_sel_compat = fdt_getprop(fdt, subnode, "compatible",
                                                     NULL);
                        if (!phy_sel_compat) {
-                               error("Not able to get gmii_sel compatible\n");
+                               pr_err("Not able to get gmii_sel compatible\n");
                                return -ENOENT;
                        }
                }
@@ -1434,7 +1442,7 @@ static int cpsw_eth_ofdata_to_platdata(struct udevice *dev)
 
        ret = ti_cm_get_macid(dev, active_slave, pdata->enetaddr);
        if (ret < 0) {
-               error("cpsw read efuse mac failed\n");
+               pr_err("cpsw read efuse mac failed\n");
                return ret;
        }