summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--common/state/state.c20
-rw-r--r--include/state.h12
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)
{