[U-Boot] [PATCH v2] gpio: omap_gpio: Fix valid gpio range for AM33XX

Lubomir Popov lpopov at mm-sol.com
Fri Jun 21 08:59:24 CEST 2013


Hi Axel,

On 21/06/13 06:07, Axel Lin wrote:
> AM33XX has 4 gpio banks, thus the valid gpio range should be 0 ... 127.
> 
> Signed-off-by: Axel Lin <axel.lin at ingics.com>
> ---
> v2: define OMAP_MAX_GPIO and use it.
> This change is mainly based on Stefan's comment, however I use
> OMAP_MAX_GPIO instead of CONFIG_OMAP_MAX_GPIO because having CONFIG_ prefix
> seems meaning it can be configurable in configs.
> 
>  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

Please be aware that 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). The above definitions
should be changed to something like:

#if defined(CONFIG_OMAP54XX)
#define	OMAP_MAX_GPIO		256	/* OMAP54XX and DRA7XX */
#else
#if defined (CONFIG_AM33XX)
#define OMAP_MAX_GPIO		128
#else
#define OMAP_MAX_GPIO		192	/* All other OMAP3/4 */
#endif
#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)
> 

Regards,
Lubo


More information about the U-Boot mailing list