diff mbox series

[3/4] boot: Move framebuffer reservation to separate helper

Message ID 20240222130811.3878567-4-devarsht@ti.com
State Accepted
Delegated to: Anatolij Gustschin
Headers show
Series Simplefb and fb reservation related updates | expand

Commit Message

Devarsh Thakkar Feb. 22, 2024, 1:08 p.m. UTC
Create separate helper for just reserving framebuffer region without
creating or enabling simple-framebuffer node.

This is useful for scenarios where user want to preserve the bootloader
splash screen till OS boots up and display server gets started without
displaying anything else in between and thus not requiring
simple-framebuffer.

Signed-off-by: Devarsh Thakkar <devarsht@ti.com>
---
 boot/fdt_simplefb.c   | 12 +-----------
 boot/fdt_support.c    | 21 +++++++++++++++++++++
 include/fdt_support.h |  2 ++
 3 files changed, 24 insertions(+), 11 deletions(-)

Comments

Nikhil Jain March 6, 2024, 10:51 a.m. UTC | #1
Hi Devarsh,

On 22/02/24 18:38, Devarsh Thakkar wrote:
> Create separate helper for just reserving framebuffer region without
> creating or enabling simple-framebuffer node.
>
> This is useful for scenarios where user want to preserve the bootloader
> splash screen till OS boots up and display server gets started without
> displaying anything else in between and thus not requiring
> simple-framebuffer.
>
> Signed-off-by: Devarsh Thakkar <devarsht@ti.com>
> ---
>  boot/fdt_simplefb.c   | 12 +-----------
>  boot/fdt_support.c    | 21 +++++++++++++++++++++
>  include/fdt_support.h |  2 ++
>  3 files changed, 24 insertions(+), 11 deletions(-)
Reviewed-by: Nikhil M Jain <n-jain1@ti.com>
>
> diff --git a/boot/fdt_simplefb.c b/boot/fdt_simplefb.c
> index b0221eaf2a..837920bd3a 100644
> --- a/boot/fdt_simplefb.c
> +++ b/boot/fdt_simplefb.c
> @@ -107,7 +107,6 @@ static int fdt_simplefb_enable_existing_node(void *blob)
>  #if IS_ENABLED(CONFIG_VIDEO)
>  int fdt_simplefb_enable_and_mem_rsv(void *blob)
>  {
> -	struct fdt_memory mem;
>  	int ret;
>  
>  	/* nothing to do when video is not active */
> @@ -118,15 +117,6 @@ int fdt_simplefb_enable_and_mem_rsv(void *blob)
>  	if (ret)
>  		return ret;
>  
> -	/* nothing to do when the frame buffer is not defined */
> -	if (gd->video_bottom == gd->video_top)
> -		return 0;
> -
> -	/* reserved with no-map tag the video buffer */
> -	mem.start = gd->video_bottom;
> -	mem.end = gd->video_top - 1;
> -
> -	return fdtdec_add_reserved_memory(blob, "framebuffer", &mem, NULL, 0, NULL,
> -					  FDTDEC_RESERVED_MEMORY_NO_MAP);
> +	return fdt_add_fb_mem_rsv(blob);
>  }
>  #endif
> diff --git a/boot/fdt_support.c b/boot/fdt_support.c
> index 090d82ee80..07aa7337e8 100644
> --- a/boot/fdt_support.c
> +++ b/boot/fdt_support.c
> @@ -22,6 +22,9 @@
>  #include <exports.h>
>  #include <fdtdec.h>
>  #include <version.h>
> +#include <video.h>
> +
> +DECLARE_GLOBAL_DATA_PTR;
>  
>  /**
>   * fdt_getprop_u32_default_node - Return a node's property or a default
> @@ -2042,6 +2045,24 @@ int fdt_setup_simplefb_node(void *fdt, int node, u64 base_address, u32 width,
>  	return 0;
>  }
>  
> +#if IS_ENABLED(CONFIG_VIDEO)
> +int fdt_add_fb_mem_rsv(void *blob)
> +{
> +	struct fdt_memory mem;
> +
> +	/* nothing to do when the frame buffer is not defined */
> +	if (gd->video_bottom == gd->video_top)
> +		return 0;
> +
> +	/* reserved with no-map tag the video buffer */
> +	mem.start = gd->video_bottom;
> +	mem.end = gd->video_top - 1;
> +
> +	return fdtdec_add_reserved_memory(blob, "framebuffer", &mem, NULL, 0, NULL,
> +					  FDTDEC_RESERVED_MEMORY_NO_MAP);
> +}
> +#endif
> +
>  /*
>   * Update native-mode in display-timings from display environment variable.
>   * The node to update are specified by path.
> diff --git a/include/fdt_support.h b/include/fdt_support.h
> index 25600d62f2..4b71b8948d 100644
> --- a/include/fdt_support.h
> +++ b/include/fdt_support.h
> @@ -423,6 +423,8 @@ int arch_fixup_memory_node(void *blob);
>  int fdt_setup_simplefb_node(void *fdt, int node, u64 base_address, u32 width,
>  			    u32 height, u32 stride, const char *format);
>  
> +int fdt_add_fb_mem_rsv(void *blob);
> +
>  int fdt_overlay_apply_verbose(void *fdt, void *fdto);
>  
>  int fdt_valid(struct fdt_header **blobp);
Thanks,
Nikhil
diff mbox series

Patch

diff --git a/boot/fdt_simplefb.c b/boot/fdt_simplefb.c
index b0221eaf2a..837920bd3a 100644
--- a/boot/fdt_simplefb.c
+++ b/boot/fdt_simplefb.c
@@ -107,7 +107,6 @@  static int fdt_simplefb_enable_existing_node(void *blob)
 #if IS_ENABLED(CONFIG_VIDEO)
 int fdt_simplefb_enable_and_mem_rsv(void *blob)
 {
-	struct fdt_memory mem;
 	int ret;
 
 	/* nothing to do when video is not active */
@@ -118,15 +117,6 @@  int fdt_simplefb_enable_and_mem_rsv(void *blob)
 	if (ret)
 		return ret;
 
-	/* nothing to do when the frame buffer is not defined */
-	if (gd->video_bottom == gd->video_top)
-		return 0;
-
-	/* reserved with no-map tag the video buffer */
-	mem.start = gd->video_bottom;
-	mem.end = gd->video_top - 1;
-
-	return fdtdec_add_reserved_memory(blob, "framebuffer", &mem, NULL, 0, NULL,
-					  FDTDEC_RESERVED_MEMORY_NO_MAP);
+	return fdt_add_fb_mem_rsv(blob);
 }
 #endif
diff --git a/boot/fdt_support.c b/boot/fdt_support.c
index 090d82ee80..07aa7337e8 100644
--- a/boot/fdt_support.c
+++ b/boot/fdt_support.c
@@ -22,6 +22,9 @@ 
 #include <exports.h>
 #include <fdtdec.h>
 #include <version.h>
+#include <video.h>
+
+DECLARE_GLOBAL_DATA_PTR;
 
 /**
  * fdt_getprop_u32_default_node - Return a node's property or a default
@@ -2042,6 +2045,24 @@  int fdt_setup_simplefb_node(void *fdt, int node, u64 base_address, u32 width,
 	return 0;
 }
 
+#if IS_ENABLED(CONFIG_VIDEO)
+int fdt_add_fb_mem_rsv(void *blob)
+{
+	struct fdt_memory mem;
+
+	/* nothing to do when the frame buffer is not defined */
+	if (gd->video_bottom == gd->video_top)
+		return 0;
+
+	/* reserved with no-map tag the video buffer */
+	mem.start = gd->video_bottom;
+	mem.end = gd->video_top - 1;
+
+	return fdtdec_add_reserved_memory(blob, "framebuffer", &mem, NULL, 0, NULL,
+					  FDTDEC_RESERVED_MEMORY_NO_MAP);
+}
+#endif
+
 /*
  * Update native-mode in display-timings from display environment variable.
  * The node to update are specified by path.
diff --git a/include/fdt_support.h b/include/fdt_support.h
index 25600d62f2..4b71b8948d 100644
--- a/include/fdt_support.h
+++ b/include/fdt_support.h
@@ -423,6 +423,8 @@  int arch_fixup_memory_node(void *blob);
 int fdt_setup_simplefb_node(void *fdt, int node, u64 base_address, u32 width,
 			    u32 height, u32 stride, const char *format);
 
+int fdt_add_fb_mem_rsv(void *blob);
+
 int fdt_overlay_apply_verbose(void *fdt, void *fdto);
 
 int fdt_valid(struct fdt_header **blobp);