diff --git a/common/misc.c b/common/misc.c index e9fdacc..8066494 100644 --- a/common/misc.c +++ b/common/misc.c @@ -125,3 +125,20 @@ void (*do_execute)(void *func, int argc, char *argv[]); EXPORT_SYMBOL(do_execute); + +static const char *boardinfo; + +const char *barebox_boardinfo(void) +{ + if (boardinfo) + return boardinfo; + + boardinfo = of_get_model(); + if (boardinfo) + boardinfo = xstrdup(boardinfo); + else + boardinfo = CONFIG_BOARDINFO; + + return boardinfo; +} +EXPORT_SYMBOL(barebox_boardinfo); diff --git a/common/version.c b/common/version.c index d33f4d0..e21dbbe 100644 --- a/common/version.c +++ b/common/version.c @@ -1,7 +1,6 @@ #include #include #include -#include const char version_string[] = "barebox " UTS_RELEASE " " UTS_VERSION "\n"; @@ -9,13 +8,6 @@ void barebox_banner (void) { - const char *board; - - board = of_get_model(); - - if (!board) - board = CONFIG_BOARDINFO; - pr_info("\n\n%s\n\n", version_string); - pr_info("Board: %s\n", board); + pr_info("Board: %s\n", barebox_boardinfo()); } diff --git a/include/common.h b/include/common.h index 59fcd35..88af931 100644 --- a/include/common.h +++ b/include/common.h @@ -233,6 +233,8 @@ static inline void barebox_banner(void) {} #endif +const char *barebox_boardinfo(void); + #define IOMEM(addr) ((void __force __iomem *)(addr)) #define DIV_ROUND_UP(n,d) (((n) + (d) - 1) / (d)) diff --git a/lib/process_escape_sequence.c b/lib/process_escape_sequence.c index 7cc3898..612976b 100644 --- a/lib/process_escape_sequence.c +++ b/lib/process_escape_sequence.c @@ -54,7 +54,7 @@ dest[i++] = 0x1b; break; case 'h': - i += snprintf(dest + i, destlen - i, "%s", CONFIG_BOARDINFO); + i += snprintf(dest + i, destlen - i, "%s", barebox_boardinfo()); break; case 'w': i += snprintf(dest + i, destlen - i, "%s", getcwd());