summaryrefslogtreecommitdiff
path: root/include/gpio.wrap
diff options
context:
space:
mode:
authorYilun Lin <yllin@google.com>2018-08-17 15:18:12 +0800
committerchrome-bot <chrome-bot@chromium.org>2018-08-21 10:33:48 -0700
commit0b2179c3179a31fde8678e9700477da2365c63ff (patch)
tree407e3251e637c24b18e1351c291c90f2b480b71a /include/gpio.wrap
parentb042e8ef06ccea5afa33134f37b16b1f61c7f84c (diff)
downloadchrome-ec-0b2179c3179a31fde8678e9700477da2365c63ff.tar.gz
gpio.wrap: add *_R[OW] macros for easier pin configuration.
TEST=make BOARD=kukui -j BUG=b:80159522 BRANCH=None Change-Id: Iea32d39923d88baaacc2973dd71615b1bacfada3 Signed-off-by: Yilun Lin <yllin@google.com> Reviewed-on: https://chromium-review.googlesource.com/1182702 Commit-Ready: Yilun Lin <yllin@chromium.org> Tested-by: Yilun Lin <yllin@chromium.org> Reviewed-by: Nicolas Boichat <drinkcat@chromium.org>
Diffstat (limited to 'include/gpio.wrap')
-rw-r--r--include/gpio.wrap49
1 files changed, 49 insertions, 0 deletions
diff --git a/include/gpio.wrap b/include/gpio.wrap
index d9f9db2890..c36130948b 100644
--- a/include/gpio.wrap
+++ b/include/gpio.wrap
@@ -73,12 +73,61 @@
#define UNIMPLEMENTED(name)
#endif
+/*
+ * RO/RW pin macro.
+ *
+ * Some boards may have very different pin configurations between RO and RW, and
+ * also may vary from revisions to revisions. The RO/RW pin macros can ease the
+ * maintance effort.
+ */
+
+#ifdef SECTION_IS_RO
+#define GPIO_RO(name, pin, flags) GPIO(name, pin, flags)
+#define GPIO_RW(name, pin, flags)
+#define GPIO_INT_RO(name, pin, flags, signal) GPIO_INT(name, pin, flags, signal)
+#define GPIO_INT_RW(name, pin, flags, signal)
+#define ALTERNATE_RO(pinmask, function, module, flags) \
+ ALTERNATE(pinmask, function, module, flags)
+#define ALTERNATE_RW(pinmask, function, module, flags)
+#define UNIMPLEMENTED_RO(name) UNIMPLEMENTED(name)
+#define UNIMPLEMENTED_RW(name)
+#elif defined(SECTION_IS_RW)
+#define GPIO_RO(name, pin, flags)
+#define GPIO_RW(name, pin, flags) GPIO(name, pin, flags)
+#define GPIO_INT_RO(name, pin, flags, signal)
+#define GPIO_INT_RW(name, pin, flags, signal) GPIO_INT(name, pin, flags, signal)
+#define ALTERNATE_RO(pinmask, function, module, flags)
+#define ALTERNATE_RW(pinmask, function, module, flags) \
+ ALTERNATE(pinmask, function, module, flags)
+#define UNIMPLEMENTED_RO(name)
+#define UNIMPLEMENTED_RW(name) UNIMPLEMENTED(name)
+#else
+#define GPIO_RO(name, pin, flags) GPIO(name, pin, flags)
+#define GPIO_RW(name, pin, flags) GPIO(name, pin, flags)
+#define GPIO_INT_RO(name, pin, flags, signal) GPIO_INT(name, pin, flags, signal)
+#define GPIO_INT_RW(name, pin, flags, signal) GPIO_INT(name, pin, flags, signal)
+#define ALTERNATE_RO(pinmask, function, module, flags) \
+ ALTERNATE(pinmask, function, module, flags)
+#define ALTERNATE_RW(pinmask, function, module, flags) \
+ ALTERNATE(pinmask, function, module, flags)
+#define UNIMPLEMENTED_RO(name) UNIMPLEMENTED(name)
+#define UNIMPLEMENTED_RW(name) UNIMPLEMENTED(name)
+#endif
+
#include "gpio.inc"
/*
* Once the gpio.inc file has been included these macros are no longer needed.
*/
#undef GPIO
+#undef GPIO_RO
+#undef GPIO_RW
#undef GPIO_INT
+#undef GPIO_INT_RO
+#undef GPIO_INT_RW
#undef ALTERNATE
+#undef ALTERNATE_RO
+#undef ALTERNATE_RW
#undef UNIMPLEMENTED
+#undef UNIMPLEMENTED_RO
+#undef UNIMPLEMENTED_RW