[U-Boot] [RFC PATCH 1/3] at91: add new gpio pin macros

Andreas Bießmann
2013-10-29T12:53:09Z

Signed-off-by: Andreas Bie?mann <andreas.devel@googlemail.com>
---
arch/arm/include/asm/arch-at91/gpio.h | 34 ++++++++++++++++++++++++++++-----
1 file changed, 29 insertions(+), 5 deletions(-)

diff --git a/arch/arm/include/asm/arch-at91/gpio.h b/arch/arm/include/asm/arch-at91/gpio.h
index 0700427..f9ca11e 100644
--- a/arch/arm/include/asm/arch-at91/gpio.h
+++ b/arch/arm/include/asm/arch-at91/gpio.h
@@ -227,8 +227,32 @@ static inline unsigned pin_to_mask(unsigned pin)
at91_set_pio_value((x - PIN_BASE) / 32,(x % 32), y)
#define at91_get_gpio_value(x) \
at91_get_pio_value((x - PIN_BASE) / 32,(x % 32))
-#else
-#define at91_set_gpio_value(x, y) at91_set_pio_value(x, y)
-#define at91_get_gpio_value(x) at91_get_pio_value(x)
-#endif
-#endif
+#else /* CONFIG_ATMEL_LEGACY */
+
+#define GPIO_PIOA_BASE (0)
+#define GPIO_PIOB_BASE (GPIO_PIOA_BASE + 32)
+#define GPIO_PIOC_BASE (GPIO_PIOB_BASE + 32)
+#define GPIO_PIOD_BASE (GPIO_PIOC_BASE + 32)
+#define GPIO_PIOE_BASE (GPIO_PIOD_BASE + 32)
+#define GPIO_PIN_PA(x) (GPIO_PIOA_BASE + (x))
+#define GPIO_PIN_PB(x) (GPIO_PIOB_BASE + (x))
+#define GPIO_PIN_PC(x) (GPIO_PIOC_BASE + (x))
+#define GPIO_PIN_PD(x) (GPIO_PIOD_BASE + (x))
+#define GPIO_PIN_PE(x) (GPIO_PIOE_BASE + (x))
+
+#define at91_gpio_to_port(gpio) (gpio / 32)
+#define at91_gpio_to_pin(gpio) (gpio % 32)
+
+/* remove after transition to generic gpio API of all users */
+#define at91_set_gpio_value(x, y) \
+ at91_set_pio_value(at91_gpio_to_port(x), at91_gpio_to_pin(x), y)
+#define at91_get_gpio_value(x) \
+ at91_get_pio_value(at91_gpio_to_port(x), at91_gpio_to_pin(x))
+
+#define at91_set_gpio_input(x, y) \
+ at91_set_pio_input(at91_gpio_to_port(x), at91_gpio_to_pin(x), y)
+#define at91_set_gpio_output(x, y) \
+ at91_set_pio_output(at91_gpio_to_port(x), at91_gpio_to_pin(x), y)
+
+#endif /* CONFIG_ATMEL_LEGACY */
+#endif /* __ASM_ARCH_AT91_GPIO_H */
--
1.7.10.4