All of lore.kernel.org
 help / color / mirror / Atom feed
From: Detlev Casanova <detlev.casanova@collabora.com>
To: Simon Glass <sjg@chromium.org>
Cc: u-boot@lists.denx.de,
	Marek Vasut <marek.vasut+renesas@mailbox.org>,
	Hai Pham <hai.pham.ud@renesas.com>,
	Tam Nguyen <tam.nguyen.xa@renesas.com>
Subject: Re: [PATCH v5 2/6] cmd: Add a sysinfo command
Date: Mon, 16 Oct 2023 10:21:49 -0400	[thread overview]
Message-ID: <12366510.O9o76ZdvQC@arisu> (raw)
In-Reply-To: <CAPnjgZ1s3OP6cq94qLF3mzkK6YwrjEFc91LOiUQWadj0NBZSqA@mail.gmail.com>

On Monday, October 2, 2023 2:56:28 P.M. EDT Simon Glass wrote:
> On Mon, 2 Oct 2023 at 09:21, Detlev Casanova
> 
> <detlev.casanova@collabora.com> wrote:
> > The command is able to show different information for the running
> > system:
> > * Model name
> > * Board ID
> > * Revision
> > 
> > This command can be used by boot shell scripts to select configurations
> > depending on the specific running system.
> > 
> > Reviewed-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
> > Signed-off-by: Detlev Casanova <detlev.casanova@collabora.com>
> > ---
> > 
> >  cmd/Kconfig   |   6 +++
> >  cmd/Makefile  |   1 +
> >  cmd/sysinfo.c | 133 ++++++++++++++++++++++++++++++++++++++++++++++++++
> >  3 files changed, 140 insertions(+)
> >  create mode 100644 cmd/sysinfo.c
> 
> Reviewed-by: Simon Glass <sjg@chromium.org>
> 
> Would prefer more help text in the Kconfig as this is pretty vague

Indeed, how would that sound ?

Display information to identify the system. It supports showing a board id, a 
revision number as well as a human readable name.

> > diff --git a/cmd/Kconfig b/cmd/Kconfig
> > index 43ca10f69cc..67d019aa795 100644
> > --- a/cmd/Kconfig
> > +++ b/cmd/Kconfig
> > @@ -218,6 +218,12 @@ config CMD_SBI
> > 
> >         help
> >         
> >           Display information about the SBI implementation.
> > 
> > +config CMD_SYSINFO
> > +       bool "sysinfo"
> > +       depends on SYSINFO
> > +       help
> > +         Display information about the system.
> > +
> > 
> >  endmenu
> >  
> >  menu "Boot commands"
> > 
> > diff --git a/cmd/Makefile b/cmd/Makefile
> > index 9bebf321c39..972f3a4720e 100644
> > --- a/cmd/Makefile
> > +++ b/cmd/Makefile
> > @@ -167,6 +167,7 @@ obj-$(CONFIG_CMD_SPI) += spi.o
> > 
> >  obj-$(CONFIG_CMD_STRINGS) += strings.o
> >  obj-$(CONFIG_CMD_SMC) += smccc.o
> >  obj-$(CONFIG_CMD_SYSBOOT) += sysboot.o
> > 
> > +obj-$(CONFIG_CMD_SYSINFO) += sysinfo.o
> > 
> >  obj-$(CONFIG_CMD_STACKPROTECTOR_TEST) += stackprot_test.o
> >  obj-$(CONFIG_CMD_TEMPERATURE) += temperature.o
> >  obj-$(CONFIG_CMD_TERMINAL) += terminal.o
> > 
> > diff --git a/cmd/sysinfo.c b/cmd/sysinfo.c
> > new file mode 100644
> > index 00000000000..46369ff9ac7
> > --- /dev/null
> > +++ b/cmd/sysinfo.c
> > @@ -0,0 +1,133 @@
> > +// SPDX-License-Identifier: GPL-2.0+
> > +/*
> > + * Copyright 2023
> > + * Detlev Casanova <detlev.casanova@collabora.com>
> > + */
> > +
> > +#include <command.h>
> > +#include <env.h>
> > +#include <sysinfo.h>
> > +#include <exports.h>
> > +
> > +static int get_sysinfo(struct udevice **devp)
> > +{
> > +       int ret = sysinfo_get(devp);
> > +
> > +       if (ret) {
> > +               printf("Cannot get sysinfo: %d\n", ret);
> > +               return ret;
> > +       }
> > +
> > +       ret = sysinfo_detect(*devp);
> > +       if (ret) {
> > +               printf("Cannot detect sysinfo: %d\n", ret);
> > +               return ret;
> > +       }
> > +
> > +       return 0;
> > +}
> > +
> > +static int do_sysinfo_model(struct cmd_tbl *cmdtp, int flag, int argc,
> > +                           char *const argv[])
> > +{
> > +       struct udevice *dev;
> > +       char model[64];
> > +       int ret = get_sysinfo(&dev);
> > +
> > +       if (ret)
> > +               return CMD_RET_FAILURE;
> > +
> > +       ret = sysinfo_get_str(dev,
> > +                             SYSINFO_ID_BOARD_MODEL,
> > +                             sizeof(model),
> > +                             model);
> > +       if (ret) {
> > +               printf("Cannot get sysinfo str: %d\n", ret);
> > +               return CMD_RET_FAILURE;
> > +       }
> > +
> > +       if (argc == 2)
> > +               ret = env_set(argv[1], model);
> > +       else
> > +               printf("%s\n", model);
> > +
> > +       if (ret)
> > +               return CMD_RET_FAILURE;
> > +       else
> > +               return CMD_RET_SUCCESS;
> > +}
> > +
> > +static int do_sysinfo_id(struct cmd_tbl *cmdtp, int flag, int argc,
> > +                        char *const argv[])
> > +{
> > +       struct udevice *dev;
> > +       u32 board_id;
> > +       int ret = get_sysinfo(&dev);
> > +
> > +       if (ret)
> > +               return CMD_RET_FAILURE;
> > +
> > +       ret = sysinfo_get_int(dev, SYSINFO_ID_BOARD_ID, &board_id);
> > +       if (ret) {
> > +               printf("Cannot get sysinfo int: %d\n", ret);
> > +               return CMD_RET_FAILURE;
> > +       }
> > +
> > +       if (argc == 2)
> > +               ret = env_set_hex(argv[1], board_id);
> > +       else
> > +               printf("0x%02x\n", board_id);
> > +
> > +       if (ret)
> > +               return CMD_RET_FAILURE;
> > +       else
> > +               return CMD_RET_SUCCESS;
> > +}
> > +
> > +static int do_sysinfo_revision(struct cmd_tbl *cmdtp, int flag, int argc,
> > +                              char *const argv[])
> > +{
> > +       struct udevice *dev;
> > +       int rev_major;
> > +       int rev_minor;
> > +       char rev[64];
> > +       int ret = get_sysinfo(&dev);
> > +
> > +       if (ret)
> > +               return CMD_RET_FAILURE;
> > +
> > +       ret = sysinfo_get_int(dev, SYSINFO_ID_BOARD_REV_MAJOR,
> > &rev_major);
> > +       if (ret) {
> > +               printf("Cannot get sysinfo int: %d\n", ret);
> > +               return CMD_RET_FAILURE;
> > +       }
> > +
> > +       ret = sysinfo_get_int(dev, SYSINFO_ID_BOARD_REV_MINOR,
> > &rev_minor);
> > +       if (ret) {
> > +               printf("Cannot get sysinfo int: %d\n", ret);
> > +               return CMD_RET_FAILURE;
> > +       }
> > +
> > +       snprintf(rev, sizeof(rev), "%d.%d", rev_major, rev_minor);
> > +
> > +       if (argc == 2)
> > +               ret = env_set(argv[1], rev);
> > +       else
> > +               printf("%s\n", rev);
> > +
> > +       if (ret)
> > +               return CMD_RET_FAILURE;
> > +       else
> > +               return CMD_RET_SUCCESS;
> > +}
> > +
> > +static char sysinfo_help_text[] =
> > +       "model <varname>     - Show or set the board model in varname\n"
> > +       "sysinfo id <varname>        - Show or set the board id in varname
> > (in format 0xHH)\n" +       "sysinfo revision <varname>  - Show or set
> > the board revision in varname"; +
> > +U_BOOT_CMD_WITH_SUBCMDS(sysinfo, "System information", sysinfo_help_text,
> > +                       U_BOOT_SUBCMD_MKENT(model, 2, 1,
> > do_sysinfo_model),
> > +                       U_BOOT_SUBCMD_MKENT(id, 2, 1, do_sysinfo_id),
> > +                       U_BOOT_SUBCMD_MKENT(revision, 2, 1,
> > do_sysinfo_revision), +);
> > --
> > 2.41.0





  reply	other threads:[~2023-10-16 14:21 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-10-02 15:20 [PATCH v5 0/6] Introduce the sysinfo command Detlev Casanova
2023-10-02 15:20 ` [PATCH v5 1/6] sysinfo: Add IDs for board id and revision Detlev Casanova
2023-10-02 18:56   ` Simon Glass
2023-10-16 17:37   ` Heinrich Schuchardt
2023-10-16 18:11     ` Marek Vasut
2023-10-18 17:00     ` Detlev Casanova
2023-10-02 15:20 ` [PATCH v5 2/6] cmd: Add a sysinfo command Detlev Casanova
2023-10-02 18:56   ` Simon Glass
2023-10-16 14:21     ` Detlev Casanova [this message]
2023-10-16 21:54       ` Simon Glass
2023-10-02 15:20 ` [PATCH v5 3/6] sysinfo: Add a test Detlev Casanova
2023-10-02 18:56   ` Simon Glass
2023-10-02 15:20 ` [PATCH v5 4/6] sysinfo: Add documentation Detlev Casanova
2023-10-02 18:56   ` Simon Glass
2023-10-16 18:02   ` Heinrich Schuchardt
2023-10-02 15:20 ` [PATCH v5 5/6] sysinfo: rcar3: Use int instead of char for revision Detlev Casanova
2023-10-07 21:32   ` Marek Vasut
2023-10-02 15:20 ` [PATCH v5 6/6] sysinfo: rcar3: Implement BOARD_ID and BOARD_REV_* Detlev Casanova
2023-10-07 21:35   ` Marek Vasut
2023-10-16 17:03     ` Detlev Casanova
2023-10-16 18:12       ` Marek Vasut

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=12366510.O9o76ZdvQC@arisu \
    --to=detlev.casanova@collabora.com \
    --cc=hai.pham.ud@renesas.com \
    --cc=marek.vasut+renesas@mailbox.org \
    --cc=sjg@chromium.org \
    --cc=tam.nguyen.xa@renesas.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.