2010-03-15 19:40:06 -07:00
/*
* arch / arm / mach - tegra / include / mach / gpio . h
*
* Copyright ( C ) 2010 Google , Inc .
*
* Author :
* Erik Gilling < konkers @ google . com >
*
* This software is licensed under the terms of the GNU General Public
* License version 2 , as published by the Free Software Foundation , and
* may be copied , distributed , and modified under those terms .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
*/
# ifndef __MACH_TEGRA_GPIO_H
# define __MACH_TEGRA_GPIO_H
2011-02-13 19:12:27 -08:00
# include <linux/init.h>
2010-03-15 19:40:06 -07:00
# include <mach/irqs.h>
2010-04-07 12:59:42 -07:00
# define TEGRA_NR_GPIOS INT_GPIO_NR
2010-03-15 19:40:06 -07:00
# include <asm-generic/gpio.h>
# define gpio_get_value __gpio_get_value
# define gpio_set_value __gpio_set_value
# define gpio_cansleep __gpio_cansleep
# define TEGRA_GPIO_TO_IRQ(gpio) (INT_GPIO_BASE + (gpio))
2011-02-19 20:38:54 -07:00
# define TEGRA_IRQ_TO_GPIO(irq) ((irq) - INT_GPIO_BASE)
2010-03-15 19:40:06 -07:00
static inline int gpio_to_irq ( unsigned int gpio )
{
2010-04-07 12:59:42 -07:00
if ( gpio < TEGRA_NR_GPIOS )
2010-03-15 19:40:06 -07:00
return INT_GPIO_BASE + gpio ;
return - EINVAL ;
}
static inline int irq_to_gpio ( unsigned int irq )
{
if ( ( irq > = INT_GPIO_BASE ) & & ( irq < INT_GPIO_BASE + INT_GPIO_NR ) )
return irq - INT_GPIO_BASE ;
return - EINVAL ;
}
2011-02-13 19:12:27 -08:00
struct tegra_gpio_table {
int gpio ; /* GPIO number */
bool enable ; /* Enable for GPIO at init? */
} ;
void tegra_gpio_config ( struct tegra_gpio_table * table , int num ) ;
2010-03-15 19:40:06 -07:00
void tegra_gpio_enable ( int gpio ) ;
void tegra_gpio_disable ( int gpio ) ;
# endif