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)) {
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) {
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 */