[U-Boot] [PATCH v1 2/5] cmd: pinmux: Add pinmux command

Simon Glass sjg at chromium.org
Wed Sep 26 05:41:56 UTC 2018


Hi Patrice,

On 20 September 2018 at 07:37, Patrice Chotard <patrice.chotard at st.com> wrote:
> pinmux command allows to :
>  - list all pin-controllers available on platforms
>  - select a pin-controller
>  - display the muxing of all pins of the current pin-controller
>    or all pin-controllers depending of given options
>
> Signed-off-by: Patrice Chotard <patrice.chotard at st.com>
> ---
>
>  cmd/Kconfig  |   8 +++++
>  cmd/Makefile |   3 ++
>  cmd/pinmux.c | 115 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>  3 files changed, 126 insertions(+)
>  create mode 100644 cmd/pinmux.c
>
> diff --git a/cmd/Kconfig b/cmd/Kconfig
> index 13d4c991bf8b..2c687ceecf49 100644
> --- a/cmd/Kconfig
> +++ b/cmd/Kconfig
> @@ -937,6 +937,14 @@ config CMD_PCMCIA
>           about 1990. These devices are typically removable memory or network
>           cards using a standard 68-pin connector.
>
> +config CMD_PINMUX
> +       bool "pinmux - show pins muxing"
> +       depends on PINCTRL

Should this be default y? It seems that we should normally enable
commands like this which provide useful info.

[..]

> diff --git a/cmd/pinmux.c b/cmd/pinmux.c
> new file mode 100644
> index 000000000000..1442d6ef63d2
> --- /dev/null
> +++ b/cmd/pinmux.c
> @@ -0,0 +1,115 @@
> +// SPDX-License-Identifier: GPL-2.0+
> +/*
> + * Copyright (C) 2018, STMicroelectronics - All Rights Reserved
> + */
> +
> +#include <command.h>
> +#include <dm.h>
> +#include <errno.h>
> +#include <dm/pinctrl.h>
> +#include <dm/uclass-internal.h>
> +
> +#ifdef CONFIG_PINCTRL
> +
> +#define LIMIT_DEVNAME  30
> +#define LIMIT_OFNAME   32
> +
> +static struct udevice *currdev;
> +
> +static int do_dev(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
> +{
> +       const char *name;
> +       int ret;
> +
> +       switch (argc) {
> +       case 2:
> +               name = argv[1];
> +               ret = uclass_get_device_by_name(UCLASS_PINCTRL, name, &currdev);
> +               if (ret) {
> +                       printf("Can't get the pin-controller: %s!\n", name);
> +                       return CMD_RET_FAILURE;
> +               }
> +       case 1:
> +               if (!currdev) {
> +                       printf("Pin-controller device is not set!\n\n");

Did you intend to have two \n ?

[..]

> +
> +       for (uclass_first_device(UCLASS_PINCTRL, &dev); dev;
> +            uclass_next_device(&dev)) {

Can you please add a macro a bit like uclass_foreach_dev() for this
pattern? It seems to come up a lot.

I'm not sure what to call it. Perhaps uclass_foreach_dev_probe()?

> +               /* insert a separator between each pin-controller display */
> +               printf("--------------------------\n");
> +               printf("%s:\n", dev->name);
> +               ret = pinctrl_pinmux_show(dev);
> +               if (ret)
> +                       return ret;
> +       }
> +       return CMD_RET_SUCCESS;

Or just 0. It will always be 0.


Regards,
Simon


More information about the U-Boot mailing list