9
0
Fork 0

common: oftree: Add function to register set status fixup

Added a function to register a fixup to enable or disable
device tree nodes.

Signed-off-by: Teresa Remmet <t.remmet@phytec.de>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
This commit is contained in:
Teresa Remmet 2016-02-25 08:36:47 +01:00 committed by Sascha Hauer
parent c8db6508d8
commit 153c34b347
2 changed files with 37 additions and 0 deletions

View File

@ -139,6 +139,42 @@ static int of_register_bootargs_fixup(void)
}
late_initcall(of_register_bootargs_fixup);
struct of_fixup_status_data {
const char *path;
bool status;
};
static int of_fixup_status(struct device_node *root, void *context)
{
const struct of_fixup_status_data *data = context;
struct device_node *node;
node = of_find_node_by_path_or_alias(root, data->path);
if (!node)
return -ENODEV;
if (data->status)
return of_device_enable(node);
else
return of_device_disable(node);
}
/**
* of_register_set_status_fixup - register fix up to set status of nodes
* Register a fixup to enable or disable a node in the devicet tree by
* passing the path or alias.
*/
int of_register_set_status_fixup(const char *path, bool status)
{
struct of_fixup_status_data *data;
data = xzalloc(sizeof(*data));
data->path = path;
data->status = status;
return of_register_fixup(of_fixup_status, (void *)data);
}
struct of_fixup {
int (*fixup)(struct device_node *, void *);
void *context;

View File

@ -249,6 +249,7 @@ int of_find_path(struct device_node *node, const char *propname, char **outpath,
int of_find_path_by_node(struct device_node *node, char **outpath, unsigned flags);
int of_register_fixup(int (*fixup)(struct device_node *, void *), void *context);
int of_unregister_fixup(int (*fixup)(struct device_node *, void *), void *context);
int of_register_set_status_fixup(const char *node, bool status);
struct device_node *of_find_node_by_alias(struct device_node *root,
const char *alias);
struct device_node *of_find_node_by_path_or_alias(struct device_node *root,