]> git.sur5r.net Git - u-boot/blobdiff - arch/arm/mach-uniphier/board_late_init.c
imx: mx7: implement functions to boot auxiliary core
[u-boot] / arch / arm / mach-uniphier / board_late_init.c
index 0622a1e16e0dfc3a63b04fa46f962538958eca66..c2a32618acc7c607fa8ef60e4ff35a0987f4f8bf 100644 (file)
@@ -1,14 +1,14 @@
 /*
- * Copyright (C) 2014 Panasonic Corporation
- *   Author: Masahiro Yamada <yamada.m@jp.panasonic.com>
+ * Copyright (C) 2014-2015 Masahiro Yamada <yamada.masahiro@socionext.com>
  *
  * SPDX-License-Identifier:    GPL-2.0+
  */
 
 #include <common.h>
 #include <spl.h>
+#include <libfdt.h>
 #include <nand.h>
-#include <asm/io.h>
+#include <linux/io.h>
 #include <../drivers/mtd/nand/denali.h>
 
 static void nand_denali_wp_disable(void)
@@ -26,6 +26,38 @@ static void nand_denali_wp_disable(void)
 #endif
 }
 
+struct uniphier_fdt_file {
+       const char *compatible;
+       const char *file_name;
+};
+
+static const struct uniphier_fdt_file uniphier_fdt_files[] = {
+       { "socionext,ph1-ld4-ref", "uniphier-ph1-ld4-ref.dtb", },
+       { "socionext,ph1-ld6b-ref", "uniphier-ph1-ld6b-ref.dtb", },
+       { "socionext,ph1-ld10-ref", "uniphier-ph1-ld10-ref.dtb", },
+       { "socionext,ph1-pro4-ref", "uniphier-ph1-pro4-ref.dtb", },
+       { "socionext,ph1-pro5-4kbox", "uniphier-ph1-pro5-4kbox.dtb", },
+       { "socionext,ph1-sld3-ref", "uniphier-ph1-sld3-ref.dtb", },
+       { "socionext,ph1-sld8-ref", "uniphier-ph1-sld8-ref.dtb", },
+       { "socionext,proxstream2-gentil", "uniphier-proxstream2-gentil.dtb", },
+       { "socionext,proxstream2-vodka", "uniphier-proxstream2-vodka.dtb", },
+};
+
+static void uniphier_set_fdt_file(void)
+{
+       DECLARE_GLOBAL_DATA_PTR;
+       int i;
+
+       /* lookup DTB file name based on the compatible string */
+       for (i = 0; i < ARRAY_SIZE(uniphier_fdt_files); i++) {
+               if (!fdt_node_check_compatible(gd->fdt_blob, 0,
+                                       uniphier_fdt_files[i].compatible)) {
+                       setenv("fdt_file", uniphier_fdt_files[i].file_name);
+                       return;
+               }
+       }
+}
+
 int board_late_init(void)
 {
        puts("MODE:  ");
@@ -49,5 +81,7 @@ int board_late_init(void)
                return -1;
        }
 
+       uniphier_set_fdt_file();
+
        return 0;
 }