
Hi Patrice,
On 20 September 2018 at 07:37, Patrice Chotard patrice.chotard@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@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