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

Nikhil Jain n-jain1 at ti.com
Wed Mar 6 11:51:17 CET 2024


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 at 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 at 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


More information about the U-Boot mailing list