lkml.org 
[lkml]   [2006]   [Dec]   [20]   [last100]   RSS Feed
Views: [more markup]  [less markup]  [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    FromDavid Brownell <>
    Subject[patch 2.6.20-rc1 2/6] OMAP GPIO wrappers
    DateWed, 20 Dec 2006 13:09:44 -0800
    This teaches OMAP how to implement the cross-platform GPIO interfaces.
    
    Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
    
    
    Index: at91/include/asm-arm/arch-omap/gpio.h
    ===================================================================
    --- at91.orig/include/asm-arm/arch-omap/gpio.h	2006-12-19 01:45:33.000000000 -0800
    +++ at91/include/asm-arm/arch-omap/gpio.h	2006-12-19 02:06:11.000000000 -0800
    @@ -76,4 +76,58 @@ extern void omap_set_gpio_direction(int 
     extern void omap_set_gpio_dataout(int gpio, int enable);
     extern int omap_get_gpio_datain(int gpio);
     
    +/*-------------------------------------------------------------------------*/
    +
    +/* wrappers for "new style" GPIO calls. the old OMAP-specfic ones should
    + * eventually be removed (along with this errno.h inclusion), and maybe
    + * gpios should put MPUIOs last too.
    + */
    +
    +#include <asm/errno.h>
    +
    +static inline int gpio_request(unsigned gpio, const char *label)
    +	{ return omap_request_gpio(gpio); }
    +
    +static inline void gpio_free(unsigned gpio)
    +	{ omap_free_gpio(gpio); }
    +
    +
    +static inline int __gpio_set_direction(unsigned gpio, int is_input)
    +{
    +	if (cpu_class_is_omap2()) {
    +		if (gpio > OMAP_MAX_GPIO_LINES)
    +			return -EINVAL;
    +	} else {
    +		if (gpio > (OMAP_MAX_GPIO_LINES + 16 /* MPUIO */))
    +			return -EINVAL;
    +	}
    +	omap_set_gpio_direction(gpio, is_input);
    +	return 0;
    +}
    +
    +static inline int gpio_direction_input(unsigned gpio)
    +	{ return __gpio_set_direction(gpio, 1); }
    +
    +static inline int gpio_direction_output(unsigned gpio)
    +	{ return __gpio_set_direction(gpio, 0); }
    +
    +
    +static inline int gpio_get_value(unsigned gpio)
    +	{ return omap_get_gpio_datain(gpio); }
    +
    +static inline void gpio_set_value(unsigned gpio, int value)
    +	{ omap_set_gpio_dataout(gpio, value); }
    +
    +#include <asm-generic/gpio.h>		/* cansleep wrappers */
    +
    +static inline int gpio_to_irq(unsigned gpio)
    +	{ return OMAP_GPIO_IRQ(gpio); }
    +
    +static inline int irq_to_gpio(unsigned irq)
    +{
    +	if (cpu_class_is_omap1() && (irq < (IH_MPUIO_BASE + 16)))
    +		return (irq - IH_MPUIO_BASE) + OMAP_MAX_GPIO_LINES;
    +	return irq - IH_GPIO_BASE;
    +}
    +
     #endif
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at  http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at  http://www.tux.org/lkml/
    
    \
     
     \ /
      Last update: 2006-12-20 22:25    [from the cache]
    ©2003-2008