From 93ca7270137a1c2a52bedaf31ebefc844d327e0a Mon Sep 17 00:00:00 2001 From: =?utf8?q?Lothar=20Wa=C3=9Fmann?= Date: Mon, 25 Aug 2014 14:25:01 +0200 Subject: [PATCH] gpio: am33xx: print error messages for invalid GPIO requests --- drivers/gpio/am33xx_gpio.c | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/drivers/gpio/am33xx_gpio.c b/drivers/gpio/am33xx_gpio.c index 2b4074551a..f34fdc6bd8 100644 --- a/drivers/gpio/am33xx_gpio.c +++ b/drivers/gpio/am33xx_gpio.c @@ -45,8 +45,11 @@ static unsigned long gpio_map[ARRAY_SIZE(gpio_base)] __attribute__((section("dat int gpio_request(unsigned gpio, const char *name) { - if (gpio >= MAX_GPIO) + if (gpio >= MAX_GPIO) { + printf("ERROR: Invalid GPIO: %u (GPIO%u_%u)\n", gpio, + gpio / 32, gpio % 32); return -EINVAL; + } if (test_and_set_bit(gpio, gpio_map)) return -EBUSY; return 0; @@ -54,9 +57,11 @@ int gpio_request(unsigned gpio, const char *name) int gpio_free(unsigned gpio) { - if (gpio >= MAX_GPIO) + if (gpio >= MAX_GPIO) { + printf("ERROR: Invalid GPIO: %u (GPIO%u_%u)\n", gpio, + gpio / 32, gpio % 32); return -EINVAL; - + } if (test_bit(gpio, gpio_map)) __clear_bit(gpio, gpio_map); else @@ -70,9 +75,11 @@ int gpio_set_value(unsigned gpio, int val) int bank = gpio / 32; int mask = 1 << (gpio % 32); - if (bank >= ARRAY_SIZE(gpio_base)) + if (bank >= ARRAY_SIZE(gpio_base)) { + printf("ERROR: Invalid GPIO: %u (GPIO%u_%u)\n", gpio, + gpio / 32, gpio % 32); return -EINVAL; - + } if (val) writel(mask, &gpio_base[bank]->setdataout); else @@ -85,8 +92,11 @@ int gpio_direction_input(unsigned gpio) int bank = gpio / 32; int mask = 1 << (gpio % 32); - if (bank >= ARRAY_SIZE(gpio_base)) + if (bank >= ARRAY_SIZE(gpio_base)) { + printf("ERROR: Invalid GPIO: %u (GPIO%u_%u)\n", gpio, + gpio / 32, gpio % 32); return -EINVAL; + } writel(readl(&gpio_base[bank]->oe) | mask, &gpio_base[bank]->oe); return 0; @@ -97,9 +107,11 @@ int gpio_direction_output(unsigned gpio, int val) int bank = gpio / 32; int mask = 1 << (gpio % 32); - if (bank >= ARRAY_SIZE(gpio_base)) + if (bank >= ARRAY_SIZE(gpio_base)) { + printf("ERROR: Invalid GPIO: %u (GPIO%u_%u)\n", gpio, + gpio / 32, gpio % 32); return -EINVAL; - + } gpio_set_value(gpio, val); writel(readl(&gpio_base[bank]->oe) & ~mask, &gpio_base[bank]->oe); return 0; -- 2.39.2