diff options
Diffstat (limited to 'arch/blackfin/include/asm/gpio.h')
| -rw-r--r-- | arch/blackfin/include/asm/gpio.h | 157 | 
1 files changed, 20 insertions, 137 deletions
diff --git a/arch/blackfin/include/asm/gpio.h b/arch/blackfin/include/asm/gpio.h index 98d0133346b..99d338ca2ea 100644 --- a/arch/blackfin/include/asm/gpio.h +++ b/arch/blackfin/include/asm/gpio.h @@ -25,8 +25,12 @@  #ifndef __ASSEMBLY__ +#ifndef CONFIG_PINCTRL +  #include <linux/compiler.h> -#include <linux/gpio.h> +#include <asm/blackfin.h> +#include <asm/portmux.h> +#include <asm/irq_handler.h>  /***********************************************************  * @@ -45,7 +49,6 @@  * MODIFICATION HISTORY :  **************************************************************/ -#if !BFIN_GPIO_PINT  void set_gpio_dir(unsigned, unsigned short);  void set_gpio_inen(unsigned, unsigned short);  void set_gpio_polar(unsigned, unsigned short); @@ -115,7 +118,6 @@ struct gpio_port_t {  	unsigned short dummy16;  	unsigned short inen;  }; -#endif  #ifdef BFIN_SPECIAL_GPIO_BANKS  void bfin_special_gpio_free(unsigned gpio); @@ -127,25 +129,21 @@ void bfin_special_gpio_pm_hibernate_suspend(void);  #endif  #ifdef CONFIG_PM -int bfin_pm_standby_ctrl(unsigned ctrl); +void bfin_gpio_pm_hibernate_restore(void); +void bfin_gpio_pm_hibernate_suspend(void); +int bfin_gpio_pm_wakeup_ctrl(unsigned gpio, unsigned ctrl); +int bfin_gpio_pm_standby_ctrl(unsigned ctrl);  static inline int bfin_pm_standby_setup(void)  { -	return bfin_pm_standby_ctrl(1); +	return bfin_gpio_pm_standby_ctrl(1);  }  static inline void bfin_pm_standby_restore(void)  { -	bfin_pm_standby_ctrl(0); +	bfin_gpio_pm_standby_ctrl(0);  } -void bfin_gpio_pm_hibernate_restore(void); -void bfin_gpio_pm_hibernate_suspend(void); -void bfin_pint_suspend(void); -void bfin_pint_resume(void); - -# if !BFIN_GPIO_PINT -int gpio_pm_wakeup_ctrl(unsigned gpio, unsigned ctrl);  struct gpio_port_s {  	unsigned short data; @@ -161,7 +159,6 @@ struct gpio_port_s {  	unsigned short reserved;  	unsigned short mux;  }; -# endif  #endif /*CONFIG_PM*/  /*********************************************************** @@ -178,36 +175,29 @@ struct gpio_port_s {  *************************************************************  * MODIFICATION HISTORY :  **************************************************************/ - -int bfin_gpio_request(unsigned gpio, const char *label); -void bfin_gpio_free(unsigned gpio);  int bfin_gpio_irq_request(unsigned gpio, const char *label);  void bfin_gpio_irq_free(unsigned gpio); -int bfin_gpio_direction_input(unsigned gpio); -int bfin_gpio_direction_output(unsigned gpio, int value); -int bfin_gpio_get_value(unsigned gpio); -void bfin_gpio_set_value(unsigned gpio, int value); +void bfin_gpio_irq_prepare(unsigned gpio); + +static inline int irq_to_gpio(unsigned irq) +{ +	return irq - GPIO_IRQ_BASE; +} +#endif /* CONFIG_PINCTRL */  #include <asm/irq.h>  #include <asm/errno.h> -#ifdef CONFIG_GPIOLIB  #include <asm-generic/gpio.h>		/* cansleep wrappers */  static inline int gpio_get_value(unsigned int gpio)  { -	if (gpio < MAX_BLACKFIN_GPIOS) -		return bfin_gpio_get_value(gpio); -	else -		return __gpio_get_value(gpio); +	return __gpio_get_value(gpio);  }  static inline void gpio_set_value(unsigned int gpio, int value)  { -	if (gpio < MAX_BLACKFIN_GPIOS) -		bfin_gpio_set_value(gpio, value); -	else -		__gpio_set_value(gpio, value); +	__gpio_set_value(gpio, value);  }  static inline int gpio_cansleep(unsigned int gpio) @@ -219,113 +209,6 @@ static inline int gpio_to_irq(unsigned gpio)  {  	return __gpio_to_irq(gpio);  } - -#else /* !CONFIG_GPIOLIB */ - -static inline int gpio_request(unsigned gpio, const char *label) -{ -	return bfin_gpio_request(gpio, label); -} - -static inline void gpio_free(unsigned gpio) -{ -	return bfin_gpio_free(gpio); -} - -static inline int gpio_direction_input(unsigned gpio) -{ -	return bfin_gpio_direction_input(gpio); -} - -static inline int gpio_direction_output(unsigned gpio, int value) -{ -	return bfin_gpio_direction_output(gpio, value); -} - -static inline int gpio_set_debounce(unsigned gpio, unsigned debounce) -{ -	return -EINVAL; -} - -static inline int gpio_request_one(unsigned gpio, unsigned long flags, const char *label) -{ -	int err; - -	err = bfin_gpio_request(gpio, label); -	if (err) -		return err; - -	if (flags & GPIOF_DIR_IN) -		err = bfin_gpio_direction_input(gpio); -	else -		err = bfin_gpio_direction_output(gpio, -			(flags & GPIOF_INIT_HIGH) ? 1 : 0); - -	if (err) -		bfin_gpio_free(gpio); - -	return err; -} - -static inline int gpio_request_array(const struct gpio *array, size_t num) -{ -	int i, err; - -	for (i = 0; i < num; i++, array++) { -		err = gpio_request_one(array->gpio, array->flags, array->label); -		if (err) -			goto err_free; -	} -	return 0; - -err_free: -	while (i--) -		bfin_gpio_free((--array)->gpio); -	return err; -} - -static inline void gpio_free_array(const struct gpio *array, size_t num) -{ -	while (num--) -		bfin_gpio_free((array++)->gpio); -} - -static inline int __gpio_get_value(unsigned gpio) -{ -	return bfin_gpio_get_value(gpio); -} - -static inline void __gpio_set_value(unsigned gpio, int value) -{ -	return bfin_gpio_set_value(gpio, value); -} - -static inline int gpio_get_value(unsigned gpio) -{ -	return __gpio_get_value(gpio); -} - -static inline void gpio_set_value(unsigned gpio, int value) -{ -	return __gpio_set_value(gpio, value); -} - -static inline int gpio_to_irq(unsigned gpio) -{ -	if (likely(gpio < MAX_BLACKFIN_GPIOS)) -		return gpio + GPIO_IRQ_BASE; - -	return -EINVAL; -} - -#include <asm-generic/gpio.h>		/* cansleep wrappers */ -#endif	/* !CONFIG_GPIOLIB */ - -static inline int irq_to_gpio(unsigned irq) -{ -	return (irq - GPIO_IRQ_BASE); -} -  #endif /* __ASSEMBLY__ */  #endif /* __ARCH_BLACKFIN_GPIO_H__ */  | 
