From b5c5923e4e4d526055c559e9bf644c2669335730 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Wed, 21 Aug 2024 10:18:55 -0600 Subject: [PATCH] video: Add a function to obtain the framebuffer address Add a new function which returns the framebuffer address of the first video device. This will allow the global_data field top be dropped. Signed-off-by: Simon Glass --- drivers/video/video-uclass.c | 14 ++++++++++++++ include/video.h | 11 +++++++++++ 2 files changed, 25 insertions(+) diff --git a/drivers/video/video-uclass.c b/drivers/video/video-uclass.c index a5aa8dd529..e358a7949e 100644 --- a/drivers/video/video-uclass.c +++ b/drivers/video/video-uclass.c @@ -152,6 +152,20 @@ int video_reserve(ulong *addrp) return 0; } +ulong video_get_fb(void) +{ + struct udevice *dev; + + uclass_find_first_device(UCLASS_VIDEO, &dev); + if (dev) { + const struct video_uc_plat *uc_plat = dev_get_uclass_plat(dev); + + return uc_plat->base; + } + + return 0; +} + int video_fill_part(struct udevice *dev, int xstart, int ystart, int xend, int yend, u32 colour) { diff --git a/include/video.h b/include/video.h index 4013a94998..606c8a37fb 100644 --- a/include/video.h +++ b/include/video.h @@ -420,4 +420,15 @@ int bmp_info(ulong addr); */ int video_reserve_from_bloblist(struct video_handoff *ho); +/** + * video_get_fb() - Get the first framebuffer address + * + * This function does not probe video devices, so can only be used after a video + * device has been activated. + * + * Return: address of the framebuffer of the first video device found, or 0 if + * there is no device + */ +ulong video_get_fb(void); + #endif -- 2.39.5