Message ID | 20220830120914.2329522-2-patrice.chotard@foss.st.com |
---|---|
State | Accepted |
Commit | d7124f0ba42263e6a24a829ca523861650bfec65 |
Delegated to: | Tom Rini |
Headers | show |
Series | gpio: update gpio_get_status() | expand |
Hi Patrice On 8/30/22 14:09, Patrice Chotard wrote: > Currently, if pin's function is GPIOF_FUNC, only "func" if displayed > without any other information. It would be interesting, if information is > available, to indicate which pinmuxing's name is used. > > For example, for STM32 SoC's based platform, "gpio status" command > output : > > before > Bank GPIOZ: > GPIOZ0: unused : 0 [ ] > GPIOZ1: unused : 0 [ ] > GPIOZ2: unused : 0 [ ] > GPIOZ3: unused : 0 [ ] > GPIOZ4: func > GPIOZ5: func > GPIOZ6: unused : 0 [ ] > GPIOZ7: unused : 0 [ ] > GPIOZ8: unknown > GPIOZ9: unknown > GPIOZ10: unknown > GPIOZ11: unknown > GPIOZ12: unknown > GPIOZ13: unknown > GPIOZ14: unknown > GPIOZ15: unknown > > After > Bank GPIOZ: > GPIOZ0: unused : 0 [ ] > GPIOZ1: unused : 0 [ ] > GPIOZ2: unused : 0 [ ] > GPIOZ3: unused : 0 [ ] > GPIOZ4: func i2c4-0 > GPIOZ5: func i2c4-0 > GPIOZ6: unused : 0 [ ] > GPIOZ7: unused : 0 [ ] > GPIOZ8: unknown > GPIOZ9: unknown > GPIOZ10: unknown > GPIOZ11: unknown > GPIOZ12: unknown > GPIOZ13: unknown > GPIOZ14: unknown > GPIOZ15: unknown > > Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com> > Reviewed-by: Simon Glass <sjg@chromium.org> > --- > > Changes in v3: > - add lost Simon Glass's reviewed-by during v1 review > > drivers/gpio/gpio-uclass.c | 16 +++++++++++----- > 1 file changed, 11 insertions(+), 5 deletions(-) > Reviewed-by: Patrick Delaunay <patrick.delaunay@foss.st.com> Thanks Patrick
On Tue, Aug 30, 2022 at 02:09:11PM +0200, Patrice Chotard wrote: > Currently, if pin's function is GPIOF_FUNC, only "func" if displayed > without any other information. It would be interesting, if information is > available, to indicate which pinmuxing's name is used. > > For example, for STM32 SoC's based platform, "gpio status" command > output : > > before > Bank GPIOZ: > GPIOZ0: unused : 0 [ ] > GPIOZ1: unused : 0 [ ] > GPIOZ2: unused : 0 [ ] > GPIOZ3: unused : 0 [ ] > GPIOZ4: func > GPIOZ5: func > GPIOZ6: unused : 0 [ ] > GPIOZ7: unused : 0 [ ] > GPIOZ8: unknown > GPIOZ9: unknown > GPIOZ10: unknown > GPIOZ11: unknown > GPIOZ12: unknown > GPIOZ13: unknown > GPIOZ14: unknown > GPIOZ15: unknown > > After > Bank GPIOZ: > GPIOZ0: unused : 0 [ ] > GPIOZ1: unused : 0 [ ] > GPIOZ2: unused : 0 [ ] > GPIOZ3: unused : 0 [ ] > GPIOZ4: func i2c4-0 > GPIOZ5: func i2c4-0 > GPIOZ6: unused : 0 [ ] > GPIOZ7: unused : 0 [ ] > GPIOZ8: unknown > GPIOZ9: unknown > GPIOZ10: unknown > GPIOZ11: unknown > GPIOZ12: unknown > GPIOZ13: unknown > GPIOZ14: unknown > GPIOZ15: unknown > > Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com> > Reviewed-by: Simon Glass <sjg@chromium.org> > Reviewed-by: Patrick Delaunay <patrick.delaunay@foss.st.com> Applied to u-boot/next, thanks!
diff --git a/drivers/gpio/gpio-uclass.c b/drivers/gpio/gpio-uclass.c index 0ed32b7217..d60e46159a 100644 --- a/drivers/gpio/gpio-uclass.c +++ b/drivers/gpio/gpio-uclass.c @@ -884,26 +884,31 @@ int gpio_get_status(struct udevice *dev, int offset, char *buf, int buffsize) const struct dm_gpio_ops *ops = gpio_get_ops(dev); struct gpio_dev_priv *priv; char *str = buf; + const char *label; int func; int ret; int len; + bool used; BUILD_BUG_ON(GPIOF_COUNT != ARRAY_SIZE(gpio_function)); *buf = 0; priv = dev_get_uclass_priv(dev); - ret = gpio_get_raw_function(dev, offset, NULL); + ret = gpio_get_raw_function(dev, offset, &label); if (ret < 0) return ret; func = ret; len = snprintf(str, buffsize, "%s%d: %s", priv->bank_name ? priv->bank_name : "", offset, gpio_function[func]); - if (func == GPIOF_INPUT || func == GPIOF_OUTPUT || - func == GPIOF_UNUSED) { - const char *label; - bool used; + switch (func) { + case GPIOF_FUNC: + snprintf(str + len, buffsize - len, " %s", label ? label : ""); + break; + case GPIOF_INPUT: + case GPIOF_OUTPUT: + case GPIOF_UNUSED: ret = ops->get_value(dev, offset); if (ret < 0) return ret; @@ -913,6 +918,7 @@ int gpio_get_status(struct udevice *dev, int offset, char *buf, int buffsize) used ? 'x' : ' ', used ? " " : "", label ? label : ""); + break; } return 0;