]> git.sur5r.net Git - u-boot/blobdiff - drivers/net/keystone_net.c
SPDX: Convert all of our single license tags to Linux Kernel style
[u-boot] / drivers / net / keystone_net.c
index e41b7d1365d106f6b93c554b8a5a10824c376413..d4d909b983f07c98b16cf1c1d0e3a6d87169de20 100644 (file)
@@ -1,10 +1,9 @@
+// SPDX-License-Identifier: GPL-2.0+
 /*
  * Ethernet driver for TI K2HK EVM.
  *
  * (C) Copyright 2012-2014
  *     Texas Instruments Incorporated, <www.ti.com>
- *
- * SPDX-License-Identifier:     GPL-2.0+
  */
 #include <common.h>
 #include <command.h>
@@ -56,13 +55,16 @@ struct rx_buff_desc net_rx_buffs = {
 #ifdef CONFIG_DM_ETH
 
 enum link_type {
-       LINK_TYPE_MAC_TO_MAC_AUTO = 0,
-       LINK_TYPE_MAC_TO_PHY_MODE = 1,
-       LINK_TYPE_MAC_TO_MAC_FORCED_MODE = 2,
-       LINK_TYPE_MAC_TO_FIBRE_MODE = 3,
-       LINK_TYPE_MAC_TO_PHY_NO_MDIO_MODE = 4,
-       LINK_TYPE_10G_MAC_TO_PHY_MODE = 10,
-       LINK_TYPE_10G_MAC_TO_MAC_FORCED_MODE = 11,
+       LINK_TYPE_SGMII_MAC_TO_MAC_AUTO         = 0,
+       LINK_TYPE_SGMII_MAC_TO_PHY_MODE         = 1,
+       LINK_TYPE_SGMII_MAC_TO_MAC_FORCED_MODE  = 2,
+       LINK_TYPE_SGMII_MAC_TO_FIBRE_MODE       = 3,
+       LINK_TYPE_SGMII_MAC_TO_PHY_NO_MDIO_MODE = 4,
+       LINK_TYPE_RGMII_LINK_MAC_PHY            = 5,
+       LINK_TYPE_RGMII_LINK_MAC_MAC_FORCED     = 6,
+       LINK_TYPE_RGMII_LINK_MAC_PHY_NO_MDIO    = 7,
+       LINK_TYPE_10G_MAC_TO_PHY_MODE           = 10,
+       LINK_TYPE_10G_MAC_TO_MAC_FORCED_MODE    = 11,
 };
 
 #define mac_hi(mac)     (((mac)[0] << 0) | ((mac)[1] << 8) |    \
@@ -754,7 +756,7 @@ static int ks2_eth_start(struct udevice *dev)
        qm_init();
 
        if (ksnav_init(priv->netcp_pktdma, &priv->net_rx_buffs)) {
-               error("ksnav_init failed\n");
+               pr_err("ksnav_init failed\n");
                goto err_knav_init;
        }
 
@@ -770,7 +772,7 @@ static int ks2_eth_start(struct udevice *dev)
 
                phy_startup(priv->phydev);
                if (priv->phydev->link == 0) {
-                       error("phy startup failed\n");
+                       pr_err("phy startup failed\n");
                        goto err_phy_start;
                }
        }
@@ -920,7 +922,7 @@ static int ks2_eth_probe(struct udevice *dev)
                 */
                mdio_bus = mdio_alloc();
                if (!mdio_bus) {
-                       error("MDIO alloc failed\n");
+                       pr_err("MDIO alloc failed\n");
                        return -ENOMEM;
                }
                priv->mdio_bus = mdio_bus;
@@ -932,7 +934,7 @@ static int ks2_eth_probe(struct udevice *dev)
 
                ret = mdio_register(mdio_bus);
                if (ret) {
-                       error("MDIO bus register failed\n");
+                       pr_err("MDIO bus register failed\n");
                        return ret;
                }
        } else {
@@ -990,7 +992,7 @@ static int ks2_eth_bind_slaves(struct udevice *dev, int gbe, int *gbe_0)
        char *slave_name;
 
        interfaces = fdt_subnode_offset(fdt, gbe, "interfaces");
-       fdt_for_each_subnode(fdt, slave, interfaces) {
+       fdt_for_each_subnode(slave, fdt, interfaces) {
                int slave_no;
 
                slave_no = fdtdec_get_int(fdt, slave, "slave-port", -ENOENT);
@@ -1005,17 +1007,17 @@ static int ks2_eth_bind_slaves(struct udevice *dev, int gbe, int *gbe_0)
                        slave_name = malloc(20);
                        snprintf(slave_name, 20, "netcp@slave-%d", slave_no);
                        ret = device_bind_driver_to_node(dev, "eth_ks2_sl",
-                                                        slave_name, slave,
-                                                        &sl_dev);
+                                       slave_name, offset_to_ofnode(slave),
+                                       &sl_dev);
                        if (ret) {
-                               error("ks2_net - not able to bind slave interfaces\n");
+                               pr_err("ks2_net - not able to bind slave interfaces\n");
                                return ret;
                        }
                }
        }
 
        sec_slave = fdt_subnode_offset(fdt, gbe, "secondary-slave-ports");
-       fdt_for_each_subnode(fdt, slave, sec_slave) {
+       fdt_for_each_subnode(slave, fdt, sec_slave) {
                int slave_no;
 
                slave_no = fdtdec_get_int(fdt, slave, "slave-port", -ENOENT);
@@ -1026,9 +1028,9 @@ static int ks2_eth_bind_slaves(struct udevice *dev, int gbe, int *gbe_0)
                slave_name = malloc(20);
                snprintf(slave_name, 20, "netcp@slave-%d", slave_no);
                ret = device_bind_driver_to_node(dev, "eth_ks2_sl", slave_name,
-                                                slave, &sl_dev);
+                                       offset_to_ofnode(slave), &sl_dev);
                if (ret) {
-                       error("ks2_net - not able to bind slave interfaces\n");
+                       pr_err("ks2_net - not able to bind slave interfaces\n");
                        return ret;
                }
        }
@@ -1071,17 +1073,21 @@ static int ks2_eth_parse_slave_interface(int netcp, int slave,
 
                mdio = fdt_parent_offset(fdt, phy);
                if (mdio < 0) {
-                       error("mdio dt not found\n");
+                       pr_err("mdio dt not found\n");
                        return -ENODEV;
                }
                priv->mdio_base = (void *)fdtdec_get_addr(fdt, mdio, "reg");
        }
 
-       if (priv->link_type == LINK_TYPE_MAC_TO_PHY_MODE) {
+       if (priv->link_type == LINK_TYPE_SGMII_MAC_TO_PHY_MODE) {
                priv->phy_if = PHY_INTERFACE_MODE_SGMII;
                pdata->phy_interface = priv->phy_if;
                priv->sgmii_link_type = SGMII_LINK_MAC_PHY;
                priv->has_mdio = true;
+       } else if (priv->link_type == LINK_TYPE_RGMII_LINK_MAC_PHY) {
+               priv->phy_if = PHY_INTERFACE_MODE_RGMII;
+               pdata->phy_interface = priv->phy_if;
+               priv->has_mdio = true;
        }
 
        return 0;
@@ -1092,7 +1098,7 @@ static int ks2_sl_eth_ofdata_to_platdata(struct udevice *dev)
        struct ks2_eth_priv *priv = dev_get_priv(dev);
        struct eth_pdata *pdata = dev_get_platdata(dev);
        const void *fdt = gd->fdt_blob;
-       int slave = dev->of_offset;
+       int slave = dev_of_offset(dev);
        int interfaces;
        int gbe;
        int netcp_devices;
@@ -1119,15 +1125,15 @@ static int ks2_eth_ofdata_to_platdata(struct udevice *dev)
        int netcp_devices;
        int gbe;
 
-       netcp_devices = fdt_subnode_offset(fdt, dev->of_offset,
+       netcp_devices = fdt_subnode_offset(fdt, dev_of_offset(dev),
                                           "netcp-devices");
        gbe = fdt_subnode_offset(fdt, netcp_devices, "gbe");
 
        ks2_eth_bind_slaves(dev, gbe, &gbe_0);
 
-       ks2_eth_parse_slave_interface(dev->of_offset, gbe_0, priv, pdata);
+       ks2_eth_parse_slave_interface(dev_of_offset(dev), gbe_0, priv, pdata);
 
-       pdata->iobase = dev_get_addr(dev);
+       pdata->iobase = devfdt_get_addr(dev);
 
        return 0;
 }