[U-Boot] [PATCH] OMAP: Add function to get state of a GPIO output

V, Aneesh aneesh at ti.com
Tue Sep 6 17:11:32 CEST 2011


Hi Sandeep, Joel,

On Sun, Sep 4, 2011 at 11:10 PM,  <s-paulraj at ti.com> wrote:
> From: Joel A Fernandes <agnel.joel at gmail.com>
>
> Read directly from OMAP_GPIO_DATAOUT to get the output state of the GPIO pin
>
> Signed-off-by: Joel A Fernandes <agnel.joel at gmail.com>
> Signed-off-by: Jason Kridner <jkridner at beagleboard.org>
> Signed-off-by: Sandeep Paulraj <s-paulraj at ti.com>
> ---
>  arch/arm/cpu/armv7/omap-common/gpio.c |   20 ++++++++++++++++++++
>  arch/arm/include/asm/omap_gpio.h      |    2 ++
>  2 files changed, 22 insertions(+), 0 deletions(-)
>
> diff --git a/arch/arm/cpu/armv7/omap-common/gpio.c b/arch/arm/cpu/armv7/omap-common/gpio.c
> index 2fcaf5a..4749524 100644
> --- a/arch/arm/cpu/armv7/omap-common/gpio.c
> +++ b/arch/arm/cpu/armv7/omap-common/gpio.c
> @@ -151,6 +151,26 @@ int omap_get_gpio_datain(int gpio)
>                        & (1 << get_gpio_index(gpio))) != 0;
>  }
>
> +int omap_get_gpio_dataout(int gpio)

This patch added a build warning like this:

gpio.c: In function 'omap_get_gpio_dataout':
gpio.c:161: warning: assignment discards qualifiers from pointer target type

The fix is this:


diff --git a/arch/arm/cpu/armv7/omap-common/gpio.c
b/arch/arm/cpu/armv7/omap-common/gpio.c
index 4749524..c4126fe 100644
--- a/arch/arm/cpu/armv7/omap-common/gpio.c
+++ b/arch/arm/cpu/armv7/omap-common/gpio.c
@@ -153,7 +153,7 @@ int omap_get_gpio_datain(int gpio)

 int omap_get_gpio_dataout(int gpio)
 {
-       struct gpio_bank *bank;
+       const struct gpio_bank *bank;
        void *reg;

        if (check_gpio(gpio) < 0)

> +{
> +       struct gpio_bank *bank;
> +       void *reg;
> +
> +       if (check_gpio(gpio) < 0)
> +               return -EINVAL;
> +       bank = get_gpio_bank(gpio);
> +       reg = bank->base;
> +       switch (bank->method) {
> +       case METHOD_GPIO_24XX:
> +               reg += OMAP_GPIO_DATAOUT;
> +               break;
> +       default:
> +               return -EINVAL;
> +       }
> +       return (__raw_readl(reg)
> +                       & (1 << get_gpio_index(gpio))) != 0;
> +}
> +
>  static void _reset_gpio(const struct gpio_bank *bank, int gpio)
>  {
>        _set_gpio_direction(bank, get_gpio_index(gpio), 1);
> diff --git a/arch/arm/include/asm/omap_gpio.h b/arch/arm/include/asm/omap_gpio.h
> index 3089e1c..8741572 100644
> --- a/arch/arm/include/asm/omap_gpio.h
> +++ b/arch/arm/include/asm/omap_gpio.h
> @@ -61,5 +61,7 @@ void omap_set_gpio_direction(int gpio, int is_input);
>  void omap_set_gpio_dataout(int gpio, int enable);
>  /* Get the value of a gpio input */
>  int omap_get_gpio_datain(int gpio);
> +/* Get the value of a gpio output */
> +int omap_get_gpio_dataout(int gpio);
>
>  #endif /* _GPIO_H_ */
> --
> 1.6.0.4
>
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
>


More information about the U-Boot mailing list