Merge tag 'u-boot-amlogic-20181126' of git://git.denx.de/u-boot-amlogic
[oweals/u-boot.git] / arch / arm / mach-meson / board-common.c
index 6340445053b0eae19e432eda7deaf2a184c1472b..8c41301674e3eafb67f69f161f80b610c29e7f20 100644 (file)
@@ -4,6 +4,7 @@
  */
 
 #include <common.h>
+#include <asm/arch/boot.h>
 #include <linux/libfdt.h>
 #include <linux/err.h>
 #include <asm/arch/mem.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
+__weak int board_init(void)
+{
+       return 0;
+}
+
 int dram_init(void)
 {
        const fdt64_t *val;
@@ -34,6 +40,18 @@ int dram_init(void)
        return 0;
 }
 
+__weak int meson_ft_board_setup(void *blob, bd_t *bd)
+{
+       return 0;
+}
+
+int ft_board_setup(void *blob, bd_t *bd)
+{
+       meson_init_reserved_memory(blob);
+
+       return meson_ft_board_setup(blob, bd);
+}
+
 void meson_board_add_reserved_memory(void *fdt, u64 start, u64 size)
 {
        int ret;
@@ -49,6 +67,50 @@ void meson_board_add_reserved_memory(void *fdt, u64 start, u64 size)
        }
 }
 
+static void meson_set_boot_source(void)
+{
+       const char *source;
+
+       switch (meson_get_boot_device()) {
+       case BOOT_DEVICE_EMMC:
+               source = "emmc";
+               break;
+
+       case BOOT_DEVICE_NAND:
+               source = "nand";
+               break;
+
+       case BOOT_DEVICE_SPI:
+               source = "spi";
+               break;
+
+       case BOOT_DEVICE_SD:
+               source = "sd";
+               break;
+
+       case BOOT_DEVICE_USB:
+               source = "usb";
+               break;
+
+       default:
+               source = "unknown";
+       }
+
+       env_set("boot_source", source);
+}
+
+__weak int meson_board_late_init(void)
+{
+       return 0;
+}
+
+int board_late_init(void)
+{
+       meson_set_boot_source();
+
+       return meson_board_late_init();
+}
+
 void reset_cpu(ulong addr)
 {
        psci_system_reset();