Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cefe658b authored by Michael Hennerich's avatar Michael Hennerich Committed by Bryan Wu
Browse files

Blackfin arch: add BF54x missing GPIO access functions

parent e3f23000
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -52,6 +52,7 @@ inline int check_gpio(unsigned short gpio)
{
	if (gpio == GPIO_PB15 || gpio == GPIO_PC14 || gpio == GPIO_PC15 \
			|| gpio == GPIO_PH14 || gpio == GPIO_PH15 \
			|| gpio == GPIO_PJ14 || gpio == GPIO_PJ15 \
			|| gpio > MAX_BLACKFIN_GPIOS)
		return -EINVAL;
	return 0;
@@ -173,3 +174,19 @@ void gpio_direction_output(unsigned short gpio)
	local_irq_restore(flags);
}
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);
+3 −1
Original line number Diff line number Diff line
@@ -234,6 +234,7 @@
* MODIFICATION HISTORY :
**************************************************************/

#ifndef BF548_FAMILY
void set_gpio_dir(unsigned short, unsigned short);
void set_gpio_inen(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_data(unsigned short);

#ifndef BF548_FAMILY
struct gpio_port_t {
	unsigned short data;
	unsigned short dummy1;
@@ -363,8 +363,10 @@ void gpio_free(unsigned short);
void gpio_set_value(unsigned short gpio, unsigned short arg);
unsigned short gpio_get_value(unsigned short gpio);

#ifndef BF548_FAMILY
#define gpio_get_value(gpio) 		get_gpio_data(gpio)
#define gpio_set_value(gpio, value)	set_gpio_data(gpio, value)
#endif

void gpio_direction_input(unsigned short gpio);
void gpio_direction_output(unsigned short gpio);
+2 −2
Original line number Diff line number Diff line
@@ -187,8 +187,8 @@
#define GPIO_PJ11	155
#define GPIO_PJ12	156
#define GPIO_PJ13	157
#define GPIO_PJ14	158
#define GPIO_PJ15	159
#define GPIO_PJ14	158	/* N/A */
#define GPIO_PJ15	159	/* N/A */

#define MAX_BLACKFIN_GPIOS 160