]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
spl: Enforce framebuffer reservation from end of RAM
authorDevarsh Thakkar <devarsht@ti.com>
Tue, 5 Dec 2023 15:55:16 +0000 (21:25 +0530)
committerTom Rini <trini@konsulko.com>
Mon, 29 Jan 2024 19:49:17 +0000 (14:49 -0500)
Add an API which enforces framebuffer reservation from end of RAM.
This is done so that next stage can directly skip this region before
carrying out further reservations.

Signed-off-by: Devarsh Thakkar <devarsht@ti.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
common/spl/spl.c
include/spl.h

index 3ce5bfeec8b9a520bcbff8da2dda42ad4d68e0c1..b65c439e7aa9b5818a28a30a4c308141fbce946a 100644 (file)
@@ -42,6 +42,7 @@
 #include <fdt_support.h>
 #include <bootcount.h>
 #include <wdt.h>
+#include <video.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 DECLARE_BINMAN_MAGIC_SYM;
@@ -152,6 +153,24 @@ void spl_fixup_fdt(void *fdt_blob)
 #endif
 }
 
+int spl_reserve_video_from_ram_top(void)
+{
+       if (CONFIG_IS_ENABLED(VIDEO)) {
+               ulong addr;
+               int ret;
+
+               addr = gd->ram_top;
+               ret = video_reserve(&addr);
+               if (ret)
+                       return ret;
+               debug("Reserving %luk for video at: %08lx\n",
+                     ((unsigned long)gd->relocaddr - addr) >> 10, addr);
+               gd->relocaddr = addr;
+       }
+
+       return 0;
+}
+
 ulong spl_get_image_pos(void)
 {
        if (!CONFIG_IS_ENABLED(BINMAN_UBOOT_SYMBOLS))
index 095218890147a21cd8a279333d80e2285c79e3dd..043875f10f4fae9dfeea547ac2e10ea4716e24f2 100644 (file)
@@ -889,6 +889,16 @@ int spl_usb_load(struct spl_image_info *spl_image,
 
 int spl_ymodem_load_image(struct spl_image_info *spl_image,
                          struct spl_boot_device *bootdev);
+/**
+ * spl_reserve_video_from_ram_top() - Reserve framebuffer memory from end of RAM
+ *
+ * This enforces framebuffer reservation at SPL stage from end of RAM so that
+ * next stage can directly skip this pre-reserved area before carrying out
+ * further reservations. The allocation address is stored in struct video_uc_plat.
+ *
+ * Return: 0 on success, otherwise error code
+ */
+int spl_reserve_video_from_ram_top(void);
 
 /**
  * spl_invoke_atf - boot using an ARM trusted firmware image