Probably switch to Live tree API is needed like below. ofnode_for_each_subnode(subnode, dev_ofnode(dev)) { ret = ofnode_device_is_compatible(subnode, "cavium,thunder-8890-mdio");
Regards, Suneel On Fri, Mar 26, 2021 at 8:56 AM Tim Harvey <thar...@gateworks.com> wrote: > > On Thu, Mar 25, 2021 at 11:48 PM Stefan Roese <s...@denx.de> wrote: > > > > On 26.03.21 01:07, Tim Harvey wrote: > > > The fdt node offset is apparently not set properly when probed > > > causing no MDIO busses to be found. Fix this by obtaining the > > > offset. > > > > > > Signed-off-by: Tim Harvey <thar...@gateworks.com> > > > > Reviewed-by: Stefan Roese <s...@denx.de> > > > > Thanks, > > Stefan > > > > > --- > > > drivers/net/octeontx/smi.c | 2 ++ > > > 1 file changed, 2 insertions(+) > > > > > > diff --git a/drivers/net/octeontx/smi.c b/drivers/net/octeontx/smi.c > > > index 91dcd05e4b..27f4423c6a 100644 > > > --- a/drivers/net/octeontx/smi.c > > > +++ b/drivers/net/octeontx/smi.c > > > @@ -325,6 +325,8 @@ 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"); > > > > > Honestly this is the wrong fix for this issue and I'm hoping someone > could educate me. I'm a bit confused at why there are several ways to > work with dt (int offsets vs ofnodes which are unions of int offsets > and node pointers???). > > The above patch was not needed previously so something changed in the > ofnode field of struct udevice between v2019.10 and v2021.01. > > Simon, could you explain what the proper way to work with dev->ofnode > in probe functions is to loop over subnodes? > > Best regards, > > Tim