On Thu, Apr 29, 2021 at 9:10 AM Simon Glass <s...@chromium.org> wrote: > > Hi Tim, > > On Fri, 16 Apr 2021 at 14:30, Tim Harvey <thar...@gateworks.com> wrote: > > > > When looking for an alias with the highest id skip aliases for nodes > > that are disabled. > > > > Signed-off-by: Tim Harvey <thar...@gateworks.com> > > --- > > lib/fdtdec.c | 2 ++ > > 1 file changed, 2 insertions(+) > > > > diff --git a/lib/fdtdec.c b/lib/fdtdec.c > > index 864589193b..d47195525a 100644 > > --- a/lib/fdtdec.c > > +++ b/lib/fdtdec.c > > @@ -546,6 +546,8 @@ int fdtdec_get_alias_highest_id(const void *blob, const > > char *base) > > if (*prop != '/' || prop[len - 1] || > > strncmp(name, base, base_len)) > > continue; > > + if (!fdtdec_get_is_enabled(blob, fdt_path_offset(blob, > > prop))) > > + continue; > > We really can't do this here. It is quite an expensive operation to > locate the node for a path. > > Why is this needed? It seems odd to have an alias pointing to a disabled > device. >
Simon, The issue I ran into here was with an imx6 based board that does not use the FEC ethernet on the SoC. In this case imx6qdl.dtsi delcares an alias 'thernet0 = &fec' yet the fec node is not enabled. However because fdtdec_get_alias_highest_id does not skip this alias to a disabled device any enumerated ethernet devices get an index of 1 instead of 0 which is incorrect and causes the mac addresses to be misaligned. In general it is just wrong to reserve id's for disabled devices. Tim