[PATCH 6/6] net: octeontx: smi: fix mii probe

Tim Harvey tharvey at gateworks.com
Thu Apr 29 16:27:09 CEST 2021


On Wed, Apr 28, 2021 at 10:21 PM Stefan Roese <sr at denx.de> wrote:
>
> Hi Tim,
>
> On 28.04.21 17:11, Tim Harvey wrote:
> > On Mon, Apr 26, 2021 at 10:19 PM Stefan Roese <sr at denx.de> wrote:
> >>
> >> Hi Tim,
> >>
> >> On 26.03.21 16:55, Tim Harvey wrote:
> >>> On Thu, Mar 25, 2021 at 11:48 PM Stefan Roese <sr at 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 <tharvey at gateworks.com>
> >>>>
> >>>> Reviewed-by: Stefan Roese <sr at 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?
> >>
> >> This version is in mainline now. Tim, could you please re-visit this
> >> and perhaps switch to using live tree API, as suggested by Suneel:
> >>
> >>          ofnode_for_each_subnode(subnode, dev_ofnode(dev)) {
> >>                  ret = ofnode_device_is_compatible(subnode,
> >>                          "cavium,thunder-8890-mdio");
> >>
> >
> > Stefan,
> >
> > Yes, I can submit this but I would really like to understand the
> > original issue. Do you or Simon perhaps know why the fdt node offset
> > in dev passed to probe is wrong? It's not null but it does not appear
> > to point to a device-tree (or perhaps I was using the wrong functions
> > on it not fully understanding the current state of this live tree
> > API).
>
> I don't have an OcteonTX board installed right now, so it's not easy to
> really verify this. AFAIU, fdt_for_each_subnode() etc is deprecated and
> the use of e.g. this API seems "more modern":
>
>         ofnode subnode;
>
>         dev_for_each_subnode(subnode, dev) {
>                 ...
>
> Does this work for you?
>

Stefan,

Yes thanks - I didn't read your original suggestion closely enough. I
have a patch I will submit.

Thanks,

Tim


More information about the U-Boot mailing list