[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