From 77debf61ef271957515de00a78ed5486c164f850 Mon Sep 17 00:00:00 2001 From: Patrick Delaunay Date: Mon, 15 Nov 2021 16:32:21 +0100 Subject: [PATCH] common: add fdt_simplefb_enable_and_mem_rsv function Add a new function to activate an existing simple frame buffer node and add the associated reserved memory, with no-map properties. This device tree update is only done when the video device is active and the video buffer is used. This patch uses '#if CONFIG_IS_ENABLED(DM_VIDEO)' because gd->video_bottom and gd->video_top are only defined when CONFIG_DM_VIDEO is activated. Signed-off-by: Patrick Delaunay Reviewed-by: Patrice Chotard --- common/fdt_simplefb.c | 27 +++++++++++++++++++++++++++ include/fdt_simplefb.h | 1 + 2 files changed, 28 insertions(+) diff --git a/common/fdt_simplefb.c b/common/fdt_simplefb.c index 32173030ab..c52846f4bc 100644 --- a/common/fdt_simplefb.c +++ b/common/fdt_simplefb.c @@ -89,3 +89,30 @@ int fdt_simplefb_enable_existing_node(void *blob) return fdt_simplefb_configure_node(blob, off); } + +#if CONFIG_IS_ENABLED(DM_VIDEO) +int fdt_simplefb_enable_and_mem_rsv(void *blob) +{ + struct fdt_memory mem; + int ret; + + /* nothing to do when video is not active */ + if (!video_is_active()) + return 0; + + ret = fdt_simplefb_enable_existing_node(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); +} +#endif diff --git a/include/fdt_simplefb.h b/include/fdt_simplefb.h index 7e54723591..41cd740ac0 100644 --- a/include/fdt_simplefb.h +++ b/include/fdt_simplefb.h @@ -10,4 +10,5 @@ #define _FDT_SIMPLEFB_H_ int fdt_simplefb_add_node(void *blob); int fdt_simplefb_enable_existing_node(void *blob); +int fdt_simplefb_enable_and_mem_rsv(void *blob); #endif -- 2.39.5