[U-Boot] [PATCH] M28: Added pin name support in GPIO driver
Robert Deliën
Robert at delien.nl
Tue Nov 22 16:40:24 CET 2011
This patch adds adds pin name support in the GPIO driver. With this patch applied, the gpio command supports pins to be addressed with friendly names.
The user's manual refers to pins by the bank number they're in and their number within that bank. With this patch the friendly naming convention to address pin number 5 in bank 3 is b3p5. But names like B00000003p005 are interpreted correctly too.
Signed-off-by: Robert Deliën <robert at delien.nl>
diff --git a/arch/arm/include/asm/arch-mx28/gpio.h b/arch/arm/include/asm/arch-mx28/gpio.h
index be1c944..5ae66e6 100644
--- a/arch/arm/include/asm/arch-mx28/gpio.h
+++ b/arch/arm/include/asm/arch-mx28/gpio.h
@@ -23,8 +23,44 @@
#ifndef __MX28_GPIO_H__
#define __MX28_GPIO_H__
+#include <linux/ctype.h>
+#include <asm/errno.h>
+#include <asm/arch/iomux.h>
+
#ifdef CONFIG_MXS_GPIO
void mxs_gpio_init(void);
+
+static inline int name_to_gpio(const char *name)
+{
+ int pin_nr;
+
+ if (name[0] >= '0' && name[0] <= '9') {
+ pin_nr = simple_strtoul(name, (char **)&name, 10);
+ if (name[0])
+ return -EINVAL;
+ else
+ return pin_nr;
+ }
+
+ if (tolower(name[0]) == 'b') {
+ name++;
+ pin_nr = (simple_strtoul(name, (char **)&name, 10) << MXS_PAD_BANK_SHIFT) & MXS_PAD_BANK_MASK;
+ } else
+ return -EINVAL;
+
+ if (tolower(name[0]) == 'p') {
+ name++;
+ pin_nr |= (simple_strtoul(name, (char **)&name, 10) << MXS_PAD_PIN_SHIFT) & MXS_PAD_PIN_MASK;
+ } else
+ return -EINVAL;
+
+ if (name[0])
+ return -EINVAL;
+
+ return pin_nr;
+}
+#define name_to_gpio(n) name_to_gpio(n)
+
#else
inline void mxs_gpio_init(void) {}
#endif
More information about the U-Boot
mailing list