net: octeontx: smi: use dt live tree API
authorTim Harvey <tharvey@gateworks.com>
Thu, 17 Jun 2021 23:08:54 +0000 (16:08 -0700)
committerRamon Fried <rfried.dev@gmail.com>
Fri, 18 Jun 2021 08:29:17 +0000 (11:29 +0300)
clean up octeontx_smi_probe by using the live-tree API.

Signed-off-by: Tim Harvey <tharvey@gateworks.com>
Reviewed-by: Stefan Roese <sr@denx.de>
Reviewed-by: Ramon Fried <rfried.dev@gmail.com>
drivers/net/octeontx/smi.c

index 27f4423..d70fa82 100644 (file)
@@ -314,10 +314,12 @@ read_error:
 
 int octeontx_smi_probe(struct udevice *dev)
 {
-       int ret, subnode, cnt = 0, node = dev_ofnode(dev).of_offset;
-       struct mii_dev *bus;
-       struct octeontx_smi_priv *priv;
        pci_dev_t bdf = dm_pci_get_bdf(dev);
+       struct octeontx_smi_priv *priv;
+       struct mii_dev *bus;
+       int ret, cnt = 0;
+       ofnode subnode;
+       u64 baseaddr;
 
        debug("SMI PCI device: %x\n", bdf);
        if (!dm_pci_map_bar(dev, PCI_BASE_ADDRESS_0, PCI_REGION_MEM)) {
@@ -325,14 +327,12 @@ int octeontx_smi_probe(struct udevice *dev)
                return -1;
        }
 
-       node = fdt_node_offset_by_compatible(gd->fdt_blob, -1,
-                                            "cavium,thunder-8890-mdio-nexus");
-       fdt_for_each_subnode(subnode, gd->fdt_blob, node) {
-               ret = fdt_node_check_compatible(gd->fdt_blob, subnode,
-                                               "cavium,thunder-8890-mdio");
-               if (ret)
+       dev_for_each_subnode(subnode, dev) {
+               if (!ofnode_device_is_compatible(subnode,
+                                                "cavium,thunder-8890-mdio"))
+                       continue;
+               if (ofnode_read_u64(subnode, "reg", &baseaddr))
                        continue;
-
                bus = mdio_alloc();
                priv = malloc(sizeof(*priv));
                if (!bus || !priv) {
@@ -347,9 +347,7 @@ int octeontx_smi_probe(struct udevice *dev)
                bus->priv = priv;
 
                priv->mode = CLAUSE22;
-               priv->baseaddr = (void __iomem *)fdtdec_get_addr(gd->fdt_blob,
-                                                                subnode,
-                                                                "reg");
+               priv->baseaddr = (void __iomem *)baseaddr;
                debug("mdio base addr %p\n", priv->baseaddr);
 
                /* use given name or generate its own unique name */