|
@@ -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 */
|