DTB_DIR "bcm2711-rpi-4-b.dtb",
true,
},
+ [0x13] = {
+ "400",
+ DTB_DIR "bcm2711-rpi-400.dtb",
+ true,
+ },
+ [0x14] = {
+ "Compute Module 4",
+ DTB_DIR "bcm2711-rpi-cm4.dtb",
+ true,
+ },
};
static const struct rpi_model rpi_models_old_scheme[] = {
gd->ram_size = msg->get_arm_mem.body.resp.mem_size;
+ /*
+ * In some configurations the memory size returned by VideoCore
+ * is not aligned to the section size, what is mandatory for
+ * the u-boot's memory setup.
+ */
+ gd->ram_size &= ~MMU_SECTION_SIZE;
+
return 0;
}
return 0;
}
-static void get_board_rev(void)
+static void get_board_revision(void)
{
ALLOC_CACHE_ALIGN_BUFFER(struct msg_get_board_rev, msg, 1);
int ret;
hw_watchdog_init();
#endif
- get_board_rev();
+ get_board_revision();
gd->bd->bi_boot_params = 0x100;
return (void *)fw_dtb_pointer;
}
-int ft_board_setup(void *blob, bd_t *bd)
+int ft_board_setup(void *blob, struct bd_info *bd)
{
- /*
- * For now, we simply always add the simplefb DT node. Later, we
- * should be more intelligent, and e.g. only do this if no enabled DT
- * node exists for the "real" graphics driver.
- */
- lcd_dt_simplefb_add_node(blob);
+ int node;
+
+ node = fdt_node_offset_by_compatible(blob, -1, "simple-framebuffer");
+ if (node < 0)
+ lcd_dt_simplefb_add_node(blob);
#ifdef CONFIG_EFI_LOADER
/* Reserve the spin table */
- efi_add_memory_map(0, CONFIG_RPI_EFI_NR_SPIN_PAGES,
- EFI_RESERVED_MEMORY_TYPE, 0);
+ efi_add_memory_map(0, CONFIG_RPI_EFI_NR_SPIN_PAGES << EFI_PAGE_SHIFT,
+ EFI_RESERVED_MEMORY_TYPE);
#endif
return 0;