[U-Boot] [PATCH v3 1/2] gpio: omap_gpio: Fix valid gpio range for AM33XX

AM33XX has 4 gpio banks, thus the valid gpio range should be 0 ... 127.
Signed-off-by: Axel Lin axel.lin@ingics.com Acked-by: Stefan Roese sr@denx.de --- v2: define OMAP_MAX_GPIO and use it. v3: no change, just for adding patch 2/2. drivers/gpio/omap_gpio.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/drivers/gpio/omap_gpio.c b/drivers/gpio/omap_gpio.c index a30d7f0..6fa57c9 100644 --- a/drivers/gpio/omap_gpio.c +++ b/drivers/gpio/omap_gpio.c @@ -40,6 +40,12 @@ #include <asm/io.h> #include <asm/errno.h>
+#if defined(CONFIG_AM33XX) +#define OMAP_MAX_GPIO 128 +#else +#define OMAP_MAX_GPIO 192 +#endif + #define OMAP_GPIO_DIR_OUT 0 #define OMAP_GPIO_DIR_IN 1
@@ -55,7 +61,7 @@ static inline int get_gpio_index(int gpio)
int gpio_is_valid(int gpio) { - return (gpio >= 0) && (gpio < 192); + return (gpio >= 0) && (gpio < OMAP_MAX_GPIO); }
static int check_gpio(int gpio)

OMAP54XX and DRA7XX SoCs have 8 banks per 32 GPIOs, that is, 256 in total. The DRA7xx config defines CONFIG_DRA7XX, but also includes omap5_common.h, where CONFIG_OMAP54XX is defined (due to sharing of many internal IPs with the OMAP5, including GPIO).
Reported-by: Lubomir Popov lpopov@mm-sol.com Signed-off-by: Axel Lin axel.lin@ingics.com --- v3: just a new patch adding to this patch serial.
Hi Lubomir, I'd appreciate if you can test this patch serial ( mainly for OMAP5 ).
Thanks, Axel arch/arm/cpu/armv7/omap5/hwinit.c | 4 +++- arch/arm/include/asm/arch-omap5/gpio.h | 2 ++ drivers/gpio/omap_gpio.c | 2 ++ 3 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/arch/arm/cpu/armv7/omap5/hwinit.c b/arch/arm/cpu/armv7/omap5/hwinit.c index daf124e..11ba36b 100644 --- a/arch/arm/cpu/armv7/omap5/hwinit.c +++ b/arch/arm/cpu/armv7/omap5/hwinit.c @@ -43,13 +43,15 @@ DECLARE_GLOBAL_DATA_PTR;
u32 *const omap_si_rev = (u32 *)OMAP_SRAM_SCRATCH_OMAP_REV;
-static struct gpio_bank gpio_bank_54xx[6] = { +static struct gpio_bank gpio_bank_54xx[8] = { { (void *)OMAP54XX_GPIO1_BASE, METHOD_GPIO_24XX }, { (void *)OMAP54XX_GPIO2_BASE, METHOD_GPIO_24XX }, { (void *)OMAP54XX_GPIO3_BASE, METHOD_GPIO_24XX }, { (void *)OMAP54XX_GPIO4_BASE, METHOD_GPIO_24XX }, { (void *)OMAP54XX_GPIO5_BASE, METHOD_GPIO_24XX }, { (void *)OMAP54XX_GPIO6_BASE, METHOD_GPIO_24XX }, + { (void *)OMAP54XX_GPIO7_BASE, METHOD_GPIO_24XX }, + { (void *)OMAP54XX_GPIO8_BASE, METHOD_GPIO_24XX }, };
const struct gpio_bank *const omap_gpio_bank = gpio_bank_54xx; diff --git a/arch/arm/include/asm/arch-omap5/gpio.h b/arch/arm/include/asm/arch-omap5/gpio.h index c14dff0..f507a35 100644 --- a/arch/arm/include/asm/arch-omap5/gpio.h +++ b/arch/arm/include/asm/arch-omap5/gpio.h @@ -46,5 +46,7 @@ #define OMAP54XX_GPIO4_BASE 0x48059000 #define OMAP54XX_GPIO5_BASE 0x4805B000 #define OMAP54XX_GPIO6_BASE 0x4805D000 +#define OMAP54XX_GPIO7_BASE 0x48051000 +#define OMAP54XX_GPIO8_BASE 0x48053000
#endif /* _GPIO_OMAP5_H */ diff --git a/drivers/gpio/omap_gpio.c b/drivers/gpio/omap_gpio.c index 6fa57c9..0092c13 100644 --- a/drivers/gpio/omap_gpio.c +++ b/drivers/gpio/omap_gpio.c @@ -42,6 +42,8 @@
#if defined(CONFIG_AM33XX) #define OMAP_MAX_GPIO 128 +#elif defined(CONFIG_OMAP54XX) +#define OMAP_MAX_GPIO 256 #else #define OMAP_MAX_GPIO 192 #endif
participants (1)
-
Axel Lin