[PATCH v2 3/3] renesas: rcar3: Load the correct device tree
Detlev Casanova
detlev.casanova at collabora.com
Wed Jun 14 17:10:04 CEST 2023
On Wednesday, June 14, 2023 9:53:14 A.M. EDT Marek Vasut wrote:
> On 6/12/23 21:51, Detlev Casanova wrote:
> > The Renesas R-Car Gen3 boards use different device trees than
> > the default one.
> >
> > This commit uses the sysinfo's board id and revision
> >
> > to determine which linux device tree to load:
> > * H3 (Starter Kit Premier v2.0): renesas/r8a77951-ulcb.dtb
> > * H3e (Starter Kit Premier v2.1): renesas/r8a779m1-ulcb.dtb
>
> This is not about loading DTs (as the subject would suggest), this is
> about setting the correct default DT name in environment.
>
> > Signed-off-by: Detlev Casanova <detlev.casanova at collabora.com>
> > ---
> >
> > board/renesas/ulcb/ulcb.c | 59 ++++++++++++++++++++++++++++++++++++
> > configs/rcar3_ulcb_defconfig | 1 +
> > 2 files changed, 60 insertions(+)
> >
> > diff --git a/board/renesas/ulcb/ulcb.c b/board/renesas/ulcb/ulcb.c
> > index 1477750f921..cc78e0952b6 100644
> > --- a/board/renesas/ulcb/ulcb.c
> > +++ b/board/renesas/ulcb/ulcb.c
> > @@ -27,6 +27,7 @@
> >
> > #include <asm/arch/sh_sdhi.h>
> > #include <i2c.h>
> > #include <mmc.h>
> >
> > +#include <sysinfo.h>
> >
> > DECLARE_GLOBAL_DATA_PTR;
> >
> > @@ -65,6 +66,64 @@ int board_init(void)
> >
> > return 0;
> >
> > }
> >
> > +int misc_init_r(void)
> > +{
> > + struct udevice *dev;
> > + int board_id;
> > + int rev_major, rev_minor;
> > + int ret = sysinfo_get(&dev);
> > +
> > + if (ret) {
> > + debug("Cannot get sysinfo: %d\n", ret);
> > + return 0;
>
> Why do we ignore errors here ?
>
> > + }
> > +
> > + ret = sysinfo_detect(dev);
> > + if (ret) {
> > + debug("Cannot detect sysinfo: %d\n", ret);
> > + return 0;
> > + }
>
> Looking at all this, I really have to wonder, wouldn't it be nicer to
> introduce a 'sysinfo' command which provides interface to obtain the
> different properties (like board name, id, revision ...) from U-Boot
> command line, and then script the DT selection in U-Boot shell ?
Yes, that could be a good option. This is more based on how raspberry pis are
selecting the correct devicetree in `board/raspberrypi/rpi/rpi.c`.
It is either about having simple shell scripts that are similar between
devices and the implementation is "hidden" in C for each platform (maybe
easier to use but less flexible). Or more complex shell scripts with simpler C
implementation (more flexible but having to modify a boot script can become
complicated for users)
Has this direction choice been discussed in the past already ?
More information about the U-Boot
mailing list