diff options
author | Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> | 2012-12-20 15:31:49 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2012-12-22 16:40:33 +0100 |
commit | eb5eb6c147f9d4598b3d1e6546417d20c6905841 (patch) | |
tree | 8cdd5f4597c181252d6f00c6bc7ce7c464a7c08e /arch/arm/mach-at91/include | |
parent | 99bb1fbd6da2f3545c21f8148c679d52a543af18 (diff) | |
download | barebox-eb5eb6c147f9d4598b3d1e6546417d20c6905841.tar.gz barebox-eb5eb6c147f9d4598b3d1e6546417d20c6905841.tar.xz |
at91: gpio: switch to ops
imported from the kernel
this allow to simplify the mux implemtation and will simplify the gpio support
from bare_init or pbl
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'arch/arm/mach-at91/include')
-rw-r--r-- | arch/arm/mach-at91/include/mach/gpio.h | 48 |
1 files changed, 42 insertions, 6 deletions
diff --git a/arch/arm/mach-at91/include/mach/gpio.h b/arch/arm/mach-at91/include/mach/gpio.h index eef7bd2e82..16060b1738 100644 --- a/arch/arm/mach-at91/include/mach/gpio.h +++ b/arch/arm/mach-at91/include/mach/gpio.h @@ -194,21 +194,59 @@ static inline int gpio_is_valid(int gpio) #define AT91_PIN_PE30 (0x80 + 30) #define AT91_PIN_PE31 (0x80 + 31) +enum at91_mux { + AT91_MUX_GPIO = 0, + AT91_MUX_PERIPH_A = 1, + AT91_MUX_PERIPH_B = 2, + AT91_MUX_PERIPH_C = 3, + AT91_MUX_PERIPH_D = 4, +}; + /* - * mux the pin to the "GPIO" peripheral role. + * mux the pin */ -int at91_set_GPIO_periph(unsigned pin, int use_pullup); +int at91_mux_pin(unsigned pin, enum at91_mux mux, int use_pullup); +/* + * mux the pin to the "GPIO" peripheral role. + */ +static inline int at91_set_GPIO_periph(unsigned pin, int use_pullup) +{ + return at91_mux_pin(pin, AT91_MUX_GPIO, use_pullup); +} /* * mux the pin to the "A" internal peripheral role. */ -int at91_set_A_periph(unsigned pin, int use_pullup); +static inline int at91_set_A_periph(unsigned pin, int use_pullup) +{ + return at91_mux_pin(pin, AT91_MUX_PERIPH_A, use_pullup); +} /* * mux the pin to the "B" internal peripheral role. */ -int at91_set_B_periph(unsigned pin, int use_pullup); +static inline int at91_set_B_periph(unsigned pin, int use_pullup) +{ + return at91_mux_pin(pin, AT91_MUX_PERIPH_B, use_pullup); +} + +/* + * mux the pin to the "C" internal peripheral role. + */ +static inline int at91_set_C_periph(unsigned pin, int use_pullup) +{ + return at91_mux_pin(pin, AT91_MUX_PERIPH_C, use_pullup); +} + +/* + * mux the pin to the "C" internal peripheral role. + */ +static inline int at91_set_D_periph(unsigned pin, int use_pullup) +{ + return at91_mux_pin(pin, AT91_MUX_PERIPH_D, use_pullup); +} + /* * mux the pin to the gpio controller (instead of "A" or "B" peripheral), and * configure it for an input. @@ -237,8 +275,6 @@ int at91_set_multi_drive(unsigned pin, int is_on); */ int at91_set_gpio_value(unsigned pin, int value); -extern int at91_set_C_periph(unsigned pin, int use_pullup); -extern int at91_set_D_periph(unsigned pin, int use_pullup); extern int at91_set_debounce(unsigned pin, int is_on, int div); extern int at91_set_pulldown(unsigned pin, int is_on); extern int at91_disable_schmitt_trig(unsigned pin); |