]> git.sur5r.net Git - u-boot/blobdiff - drivers/net/tsec.c
x86: timer: tsc: Allow specifying clock rate from device tree again
[u-boot] / drivers / net / tsec.c
index 44140fb0374b636f2b2884447cc1020abaf9b808..03a46da2f8a1519072e4f730d88e8194db6ba733 100644 (file)
@@ -1,11 +1,10 @@
+// SPDX-License-Identifier: GPL-2.0+
 /*
  * Freescale Three Speed Ethernet Controller driver
  *
  * Copyright 2004-2011, 2013 Freescale Semiconductor, Inc.
  * (C) Copyright 2003, Motorola, Inc.
  * author Andy Fleming
- *
- * SPDX-License-Identifier:    GPL-2.0+
  */
 
 #include <config.h>
@@ -20,8 +19,6 @@
 #include <asm/processor.h>
 #include <asm/io.h>
 
-DECLARE_GLOBAL_DATA_PTR;
-
 #ifndef CONFIG_DM_ETH
 /* Default initializations for TSEC controllers. */
 
@@ -779,45 +776,44 @@ int tsec_probe(struct udevice *dev)
        struct tsec_private *priv = dev_get_priv(dev);
        struct eth_pdata *pdata = dev_get_platdata(dev);
        struct fsl_pq_mdio_info mdio_info;
-       int offset = 0;
-       int reg;
+       struct ofnode_phandle_args phandle_args;
+       ofnode parent;
        const char *phy_mode;
        int ret;
 
-       pdata->iobase = (phys_addr_t)devfdt_get_addr(dev);
+       pdata->iobase = (phys_addr_t)dev_read_addr(dev);
        priv->regs = (struct tsec *)pdata->iobase;
 
-       offset = fdtdec_lookup_phandle(gd->fdt_blob, dev_of_offset(dev),
-                                      "phy-handle");
-       if (offset > 0) {
-               reg = fdtdec_get_int(gd->fdt_blob, offset, "reg", 0);
-               priv->phyaddr = reg;
-       } else {
+       if (dev_read_phandle_with_args(dev, "phy-handle", NULL, 0, 0,
+                                      &phandle_args)) {
                debug("phy-handle does not exist under tsec %s\n", dev->name);
                return -ENOENT;
+       } else {
+               int reg = ofnode_read_u32_default(phandle_args.node, "reg", 0);
+
+               priv->phyaddr = reg;
        }
 
-       offset = fdt_parent_offset(gd->fdt_blob, offset);
-       if (offset > 0) {
-               reg = fdtdec_get_int(gd->fdt_blob, offset, "reg", 0);
-               priv->phyregs_sgmii = (struct tsec_mii_mng *)(reg + 0x520);
+       parent = ofnode_get_parent(phandle_args.node);
+       if (ofnode_valid(parent)) {
+               int reg = ofnode_get_addr_index(parent, 0);
+
+               priv->phyregs_sgmii = (struct tsec_mii_mng *)reg;
        } else {
                debug("No parent node for PHY?\n");
                return -ENOENT;
        }
 
-       offset = fdtdec_lookup_phandle(gd->fdt_blob, dev_of_offset(dev),
-                                      "tbi-handle");
-       if (offset > 0) {
-               reg = fdtdec_get_int(gd->fdt_blob, offset, "reg",
-                                    CONFIG_SYS_TBIPA_VALUE);
-               priv->tbiaddr = reg;
-       } else {
+       if (dev_read_phandle_with_args(dev, "tbi-handle", NULL, 0, 0,
+                                      &phandle_args)) {
                priv->tbiaddr = CONFIG_SYS_TBIPA_VALUE;
+       } else {
+               int reg = ofnode_read_u32_default(phandle_args.node, "reg",
+                                                 CONFIG_SYS_TBIPA_VALUE);
+               priv->tbiaddr = reg;
        }
 
-       phy_mode = fdt_getprop(gd->fdt_blob, dev_of_offset(dev),
-                              "phy-connection-type", NULL);
+       phy_mode = dev_read_prop(dev, "phy-connection-type", NULL);
        if (phy_mode)
                pdata->phy_interface = phy_get_interface_by_name(phy_mode);
        if (pdata->phy_interface == -1) {