diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2022-02-18 12:59:22 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2022-02-18 12:59:22 +0100 |
commit | f9375977a24c276a9cee2b95d72fa3f3acc371a3 (patch) | |
tree | 6a0a80a0d7ec472eb8b708e8e71571726f4d6791 | |
parent | ba8b2f8a2955585d217af4ef45e70a8787be61bb (diff) | |
parent | 92489ea9cce3b892d3deefe21cfa2cf1a4f870ac (diff) | |
download | barebox-f9375977a24c276a9cee2b95d72fa3f3acc371a3.tar.gz barebox-f9375977a24c276a9cee2b95d72fa3f3acc371a3.tar.xz |
Merge branch 'for-next/state'
-rw-r--r-- | common/state/state.c | 20 | ||||
-rw-r--r-- | include/state.h | 12 |
2 files changed, 28 insertions, 4 deletions
diff --git a/common/state/state.c b/common/state/state.c index 8c34ae83e5..a614c849c7 100644 --- a/common/state/state.c +++ b/common/state/state.c @@ -704,10 +704,12 @@ struct state *state_by_name(const char *name) * * @node The of node of the state instance */ -struct state *state_by_node(const struct device_node *node) +struct state *state_by_node(struct device_node *node) { struct state *state; + of_device_ensure_probed(node); + list_for_each_entry(state, &state_list, list) { if (!strcmp(state->of_path, node->full_name)) return state; @@ -716,6 +718,22 @@ struct state *state_by_node(const struct device_node *node) return NULL; } +/* + * state_by_alias - find a state instance by alias + * + * @name The DT alias of the state instance + */ +struct state *state_by_alias(const char *alias) +{ + struct device_node *node; + + node = of_find_node_by_alias(NULL, alias); + if (!node) + return NULL; + + return state_by_node(node); +} + int state_read_mac(struct state *state, const char *name, u8 *buf) { struct state_variable *svar; diff --git a/include/state.h b/include/state.h index be1b592576..bffcd5a900 100644 --- a/include/state.h +++ b/include/state.h @@ -12,7 +12,8 @@ struct state *state_new_from_node(struct device_node *node, bool readonly); void state_release(struct state *state); struct state *state_by_name(const char *name); -struct state *state_by_node(const struct device_node *node); +struct state *state_by_node(struct device_node *node); +struct state *state_by_alias(const char *alias); int state_load_no_auth(struct state *state); int state_load(struct state *state); @@ -34,10 +35,15 @@ static inline struct state *state_by_name(const char *name) return NULL; } -static inline struct state *state_by_node(const struct device_node *node) +static inline struct state *state_by_node(struct device_node *node) { return NULL; -}; +} + +static inline struct state *state_by_alias(const char *alias) +{ + return NULL; +} static inline int state_load(struct state *state) { |