From 775ba3c093be186d345ab7132116fd0ed3e53ba2 Mon Sep 17 00:00:00 2001 From: Sascha Hauer Date: Thu, 15 Aug 2013 08:50:18 +0200 Subject: introduce barebox_set_model Instead of calling of_get_model() in barebox_get_model() add a barebox_set_model() and use it to set the boardinfo once it's available from the devicetree. Signed-off-by: Sascha Hauer --- common/misc.c | 23 +++++++++++++++-------- drivers/of/base.c | 3 +++ include/common.h | 1 + 3 files changed, 19 insertions(+), 8 deletions(-) diff --git a/common/misc.c b/common/misc.c index 14c33048a9..bb7d4479fa 100644 --- a/common/misc.c +++ b/common/misc.c @@ -18,6 +18,7 @@ #include #include +#include int errno; EXPORT_SYMBOL(errno); @@ -126,19 +127,25 @@ EXPORT_SYMBOL(perror); void (*do_execute)(void *func, int argc, char *argv[]); EXPORT_SYMBOL(do_execute); -static const char *model; +static char *model; + +/* + * The model is the verbose name of a board. It can contain + * whitespaces, uppercase/lowcer letters, digits, ',', '.' + * '-', '_' + */ +void barebox_set_model(const char *__model) +{ + free(model); + model = xstrdup(__model); +} +EXPORT_SYMBOL(barebox_set_model); const char *barebox_get_model(void) { if (model) return model; - model = of_get_model(); - if (model) - model = xstrdup(model); - else - model = CONFIG_BOARDINFO; - - return model; + return CONFIG_BOARDINFO; } EXPORT_SYMBOL(barebox_get_model); diff --git a/drivers/of/base.c b/drivers/of/base.c index 4770421a2b..8af51d49ca 100644 --- a/drivers/of/base.c +++ b/drivers/of/base.c @@ -1610,6 +1610,9 @@ int of_probe(void) of_chosen = of_find_node_by_path("/chosen"); of_property_read_string(root_node, "model", &of_model); + if (of_model) + barebox_set_model(of_model); + __of_parse_phandles(root_node); memory = of_find_node_by_path("/memory"); diff --git a/include/common.h b/include/common.h index 09b8c39a7f..7d05d8ba3b 100644 --- a/include/common.h +++ b/include/common.h @@ -235,6 +235,7 @@ static inline void barebox_banner(void) {} #endif const char *barebox_get_model(void); +void barebox_set_model(const char *); #define IOMEM(addr) ((void __force __iomem *)(addr)) -- cgit v1.2.3