9
0
Fork 0

gpiolib: make gpiolib command more verbose

This adds some more printf information to gpiolib command, like the
gpiochip handling a specific gpio. Also, current direction and value
of the gpio are printed, if the gpiochip provides the corresponding
callbacks.

Signed-off-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
This commit is contained in:
Sebastian Hesselbarth 2013-11-09 14:24:08 +01:00 committed by Sascha Hauer
parent ed4348e8b2
commit fcc25285a2
1 changed files with 21 additions and 3 deletions

View File

@ -228,16 +228,34 @@ static int do_gpiolib(int argc, char *argv[])
int i;
printf("gpiolib: gpio lists\n");
printf("%*crequested label\n", 11, ' ');
for (i = 0; i < ARCH_NR_GPIOS; i++) {
struct gpio_info *gi = &gpio_desc[i];
int val = -1, dir = -1;
if (!gi->chip)
continue;
printf("gpio %*d: %*s %s\n", 4,
i, 9, gi->requested ? "true" : "false",
/* print chip information and header on first gpio */
if (gi->chip->base == i) {
printf("\ngpios %u-%u, chip %s:\n",
gi->chip->base,
gi->chip->base + gi->chip->ngpio - 1,
gi->chip->dev->name);
printf("%*cdir val requested label\n", 13, ' ');
}
if (gi->chip->ops->get_direction)
dir = gi->chip->ops->get_direction(gi->chip,
i - gi->chip->base);
if (gi->chip->ops->get)
val = gi->chip->ops->get(gi->chip,
i - gi->chip->base);
printf(" gpio %*d: %*s %*s %*s %s\n", 4, i,
3, (dir < 0) ? "unk" : ((dir == GPIO_DIR_IN) ? "in" : "out"),
3, (val < 0) ? "unk" : ((val == 0) ? "lo" : "hi"),
9, gi->requested ? "true" : "false",
gi->label ? gi->label : "");
}