summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndre Przywara <andre.przywara@arm.com>2017-04-26 01:32:50 +0100
committerJagan Teki <jagan@openedev.com>2017-05-17 23:24:13 +0530
commit54254ba78aeb807b8eae9668b9312d8809dbf640 (patch)
tree5207db2df07a28a7d1ce4f5a83e7fe53a061cbc8
parent7f0ef5a945a0a9cef773c2b05b157d2fef3ea7ad (diff)
sunxi: use SPL header DT name for FIT board matching
Now that we can store a DT name in the SPL header, use this string (if available) when finding the right DT blob to load for U-Boot proper. This allows a generic U-Boot (proper) image to be combined with a bunch of supported DTs, with just the SPL (possibly only that string) to be different. Eventually this string can be written after the build process by some firmware update tool. Signed-off-by: Andre Przywara <andre.przywara@arm.com> Reviewed-by: Jagan Teki <jagan@openedev.com>
-rw-r--r--board/sunxi/board.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/board/sunxi/board.c b/board/sunxi/board.c
index c2755b2c6d..f79bd5c62c 100644
--- a/board/sunxi/board.c
+++ b/board/sunxi/board.c
@@ -761,13 +761,19 @@ int ft_board_setup(void *blob, bd_t *bd)
#ifdef CONFIG_SPL_LOAD_FIT
int board_fit_config_name_match(const char *name)
{
- const char *cmp_str;
+ struct boot_file_head *spl = (void *)(ulong)SPL_ADDR;
+ const char *cmp_str = (void *)(ulong)SPL_ADDR;
+ /* Check if there is a DT name stored in the SPL header and use that. */
+ if (spl->dt_name_offset) {
+ cmp_str += spl->dt_name_offset;
+ } else {
#ifdef CONFIG_DEFAULT_DEVICE_TREE
- cmp_str = CONFIG_DEFAULT_DEVICE_TREE;
+ cmp_str = CONFIG_DEFAULT_DEVICE_TREE;
#else
- return 0;
+ return 0;
#endif
+ };
/* Differentiate the two Pine64 board DTs by their DRAM size. */
if (strstr(name, "-pine64") && strstr(cmp_str, "-pine64")) {