diff mbox series

[v4,1/8] spl: Enforce framebuffer reservation from end of RAM

Message ID 20231125162705.1383401-2-devarsht@ti.com
State Superseded
Delegated to: Anatolij Gustschin
Headers show
Series Move framebuffer reservation for SPL to RAM end | expand

Commit Message

Devarsh Thakkar Nov. 25, 2023, 4:26 p.m. UTC
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>
---
V2:
No change.

V3:
Change spl_reserve_video to spl_reserve_video_from_ram_top
which enforce framebuffer reservation from end of RAM.

V4:
Split this to an independent patch with more details added
in comments for API in header file.
---
 common/spl/spl.c | 19 +++++++++++++++++++
 include/spl.h    | 10 ++++++++++
 2 files changed, 29 insertions(+)

Comments

Simon Glass Dec. 2, 2023, 9:16 p.m. UTC | #1
On Sat, 25 Nov 2023 at 09:27, Devarsh Thakkar <devarsht@ti.com> wrote:
>
> 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>
> ---
> V2:
> No change.
>
> V3:
> Change spl_reserve_video to spl_reserve_video_from_ram_top
> which enforce framebuffer reservation from end of RAM.
>
> V4:
> Split this to an independent patch with more details added
> in comments for API in header file.
> ---
>  common/spl/spl.c | 19 +++++++++++++++++++
>  include/spl.h    | 10 ++++++++++

Reviewed-by: Simon Glass <sjg@chromium.org>
diff mbox series

Patch

diff --git a/common/spl/spl.c b/common/spl/spl.c
index 3ce5bfeec8..b65c439e7a 100644
--- a/common/spl/spl.c
+++ b/common/spl/spl.c
@@ -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))
diff --git a/include/spl.h b/include/spl.h
index 0952188901..043875f10f 100644
--- a/include/spl.h
+++ b/include/spl.h
@@ -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