Blackfin arch: add BF54x missing GPIO access functions

Signed-off-by: Michael Hennerich <michael.hennerich@analog.com>
Signed-off-by: Bryan Wu <bryan.wu@analog.com>
This commit is contained in:
Michael Hennerich 2007-07-02 11:45:50 +08:00 committed by Bryan Wu
parent e3f2300036
commit cefe658bca
3 changed files with 22 additions and 3 deletions

View File

@ -52,6 +52,7 @@ inline int check_gpio(unsigned short gpio)
{ {
if (gpio == GPIO_PB15 || gpio == GPIO_PC14 || gpio == GPIO_PC15 \ if (gpio == GPIO_PB15 || gpio == GPIO_PC14 || gpio == GPIO_PC15 \
|| gpio == GPIO_PH14 || gpio == GPIO_PH15 \ || gpio == GPIO_PH14 || gpio == GPIO_PH15 \
|| gpio == GPIO_PJ14 || gpio == GPIO_PJ15 \
|| gpio > MAX_BLACKFIN_GPIOS) || gpio > MAX_BLACKFIN_GPIOS)
return -EINVAL; return -EINVAL;
return 0; return 0;
@ -173,3 +174,19 @@ void gpio_direction_output(unsigned short gpio)
local_irq_restore(flags); local_irq_restore(flags);
} }
EXPORT_SYMBOL(gpio_direction_output); EXPORT_SYMBOL(gpio_direction_output);
void gpio_set_value(unsigned short gpio, unsigned short arg)
{
if (arg)
gpio_array[gpio_bank(gpio)]->port_set = gpio_bit(gpio);
else
gpio_array[gpio_bank(gpio)]->port_clear = gpio_bit(gpio);
}
EXPORT_SYMBOL(gpio_set_value);
unsigned short gpio_get_value(unsigned short gpio)
{
return (1 & (gpio_array[gpio_bank(gpio)]->port_data >> gpio_sub_n(gpio)));
}
EXPORT_SYMBOL(gpio_get_value);

View File

@ -234,6 +234,7 @@
* MODIFICATION HISTORY : * MODIFICATION HISTORY :
**************************************************************/ **************************************************************/
#ifndef BF548_FAMILY
void set_gpio_dir(unsigned short, unsigned short); void set_gpio_dir(unsigned short, unsigned short);
void set_gpio_inen(unsigned short, unsigned short); void set_gpio_inen(unsigned short, unsigned short);
void set_gpio_polar(unsigned short, unsigned short); void set_gpio_polar(unsigned short, unsigned short);
@ -268,7 +269,6 @@ unsigned short get_gpiop_maska(unsigned short);
unsigned short get_gpiop_maskb(unsigned short); unsigned short get_gpiop_maskb(unsigned short);
unsigned short get_gpiop_data(unsigned short); unsigned short get_gpiop_data(unsigned short);
#ifndef BF548_FAMILY
struct gpio_port_t { struct gpio_port_t {
unsigned short data; unsigned short data;
unsigned short dummy1; unsigned short dummy1;
@ -363,8 +363,10 @@ void gpio_free(unsigned short);
void gpio_set_value(unsigned short gpio, unsigned short arg); void gpio_set_value(unsigned short gpio, unsigned short arg);
unsigned short gpio_get_value(unsigned short gpio); unsigned short gpio_get_value(unsigned short gpio);
#ifndef BF548_FAMILY
#define gpio_get_value(gpio) get_gpio_data(gpio) #define gpio_get_value(gpio) get_gpio_data(gpio)
#define gpio_set_value(gpio, value) set_gpio_data(gpio, value) #define gpio_set_value(gpio, value) set_gpio_data(gpio, value)
#endif
void gpio_direction_input(unsigned short gpio); void gpio_direction_input(unsigned short gpio);
void gpio_direction_output(unsigned short gpio); void gpio_direction_output(unsigned short gpio);

View File

@ -187,8 +187,8 @@
#define GPIO_PJ11 155 #define GPIO_PJ11 155
#define GPIO_PJ12 156 #define GPIO_PJ12 156
#define GPIO_PJ13 157 #define GPIO_PJ13 157
#define GPIO_PJ14 158 #define GPIO_PJ14 158 /* N/A */
#define GPIO_PJ15 159 #define GPIO_PJ15 159 /* N/A */
#define MAX_BLACKFIN_GPIOS 160 #define MAX_BLACKFIN_GPIOS 160