summaryrefslogtreecommitdiff
path: root/zephyr/shim/include/zephyr_gpio_signal.h
diff options
context:
space:
mode:
authorFabio Baltieri <fabiobaltieri@google.com>2022-12-20 16:52:56 +0000
committerChromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com>2023-01-03 19:26:37 +0000
commitfae9790494ff3e3ee2bd6633685294edade58aa8 (patch)
treeb745ec0b18b6f8b02c2cf8bc61c7b4a0024f7bf8 /zephyr/shim/include/zephyr_gpio_signal.h
parent7a4632edbe6e0c675799fea66074a562ed41e2ee (diff)
downloadchrome-ec-fae9790494ff3e3ee2bd6633685294edade58aa8.tar.gz
zephyr: named-gpios: remove DT_PATH usages
Replace a bunch of DT_PATH usages with some common macros to access the named-gpios node based on the DT compatible. BRANCH=none BUG=none TEST=cq dry run TEST=zmake compare-builds -a Signed-off-by: Fabio Baltieri <fabiobaltieri@google.com> Change-Id: Ib99820051b5a55b68915e3b29071ee5f7e45ebfb Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/4114286 Code-Coverage: Zoss <zoss-cl-coverage@prod.google.com> Reviewed-by: Tristan Honscheid <honscheid@google.com>
Diffstat (limited to 'zephyr/shim/include/zephyr_gpio_signal.h')
-rw-r--r--zephyr/shim/include/zephyr_gpio_signal.h28
1 files changed, 19 insertions, 9 deletions
diff --git a/zephyr/shim/include/zephyr_gpio_signal.h b/zephyr/shim/include/zephyr_gpio_signal.h
index 1a98071d6d..9dc0a038bb 100644
--- a/zephyr/shim/include/zephyr_gpio_signal.h
+++ b/zephyr/shim/include/zephyr_gpio_signal.h
@@ -11,6 +11,16 @@
#include <zephyr/devicetree.h>
#include <zephyr/toolchain.h>
+BUILD_ASSERT(DT_NUM_INST_STATUS_OKAY(named_gpios) == 1,
+ "only one named-gpios compatible node may be present");
+
+#define NAMED_GPIOS_NODE DT_COMPAT_GET_ANY_STATUS_OKAY(named_gpios)
+
+/*
+ * Returns the node path for a specific named-gpios gpio
+ */
+#define NAMED_GPIOS_GPIO_NODE(name) DT_CHILD(NAMED_GPIOS_NODE, name)
+
/** @brief Returns the enum-name property as a token
*
* Returns the enum-name property for this node as an upper case token
@@ -58,13 +68,13 @@
enum gpio_signal {
GPIO_UNIMPLEMENTED = -1,
-#if DT_NODE_EXISTS(DT_PATH(named_gpios))
- DT_FOREACH_CHILD(DT_PATH(named_gpios), GPIO_IMPL_SIGNAL)
+#if DT_NODE_EXISTS(NAMED_GPIOS_NODE)
+ DT_FOREACH_CHILD(NAMED_GPIOS_NODE, GPIO_IMPL_SIGNAL)
#endif
GPIO_COUNT,
-#if DT_NODE_EXISTS(DT_PATH(named_gpios))
- DT_FOREACH_CHILD(DT_PATH(named_gpios), GPIO_UNIMPL_SIGNAL)
- DT_FOREACH_CHILD(DT_PATH(named_gpios), GPIO_DT_ALIAS_LIST)
+#if DT_NODE_EXISTS(NAMED_GPIOS_NODE)
+ DT_FOREACH_CHILD(NAMED_GPIOS_NODE, GPIO_UNIMPL_SIGNAL)
+ DT_FOREACH_CHILD(NAMED_GPIOS_NODE, GPIO_DT_ALIAS_LIST)
#endif
GPIO_LIMIT = 0x0FFF,
@@ -85,7 +95,7 @@ BUILD_ASSERT(GPIO_COUNT < GPIO_LIMIT);
* the named_gpios node, into the correct enum gpio_signal that can be used
* with platform/ec gpio API
*/
-#define NAMED_GPIO(name) GPIO_SIGNAL(DT_PATH(named_gpios, name))
+#define NAMED_GPIO(name) GPIO_SIGNAL(DT_CHILD(NAMED_GPIOS_NODE, name))
/** @brief Obtain a named gpio enum from a label and property
*
@@ -132,7 +142,7 @@ BUILD_ASSERT(GPIO_COUNT < GPIO_LIMIT);
#define GPIO_DT_FROM_NODELABEL(label) GPIO_DT_FROM_NODE(DT_NODELABEL(label))
-#if DT_NODE_EXISTS(DT_PATH(named_gpios))
+#if DT_NODE_EXISTS(NAMED_GPIOS_NODE)
/*
* Declare the pointers that refer to the gpio_dt_spec entries
* for each GPIO.
@@ -142,11 +152,11 @@ struct gpio_dt_spec;
#define GPIO_DT_PTR_DECL(id) \
extern const struct gpio_dt_spec *const GPIO_DT_NAME(GPIO_SIGNAL(id));
-DT_FOREACH_CHILD(DT_PATH(named_gpios), GPIO_DT_PTR_DECL)
+DT_FOREACH_CHILD(NAMED_GPIOS_NODE, GPIO_DT_PTR_DECL)
#undef GPIO_DT_PTR_DECL
-#endif /* DT_NODE_EXISTS(DT_PATH(named_gpios)) */
+#endif /* DT_NODE_EXISTS(NAMED_GPIOS_NODE) */
#define IOEXPANDER_ID_EXPAND(id) ioex_chip_##id
#define IOEXPANDER_ID(id) IOEXPANDER_ID_EXPAND(id)