libpayload: Cache copy of cb_framebuffer
struct
Our AArch64 code supports dynamic framebuffer allocation which makes it necessary to change the framebuffer information during runtime. Having a pointer inside `libsysinfo` made a mess of it as the pointer would either refer to the original struct inside the coreboot table or to a new struct inside payload space. The latter would be unaffected by a relocation of the payload. Instead of the pointer, we'll always keep a copy of the whole struct, which can be altered on demand without affecting the coreboot table. To align the `video/graphics` driver with the console driver, we also replace `fbaddr` with a macro `FB` that calls phys_to_virt(). Change-Id: I3edc09cdb502a71516c1ee71457c1f8dcd01c119 Signed-off-by: Nico Huber <nico.h@gmx.de> Reviewed-on: https://review.coreboot.org/c/coreboot/+/43578 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Angel Pons <th3fanbus@gmail.com> Reviewed-by: Julius Werner <jwerner@chromium.org>
This commit is contained in:
committed by
Patrick Georgi
parent
be842cb72d
commit
5e0db58533
@ -186,8 +186,7 @@ static void cb_parse_checksum(void *ptr, struct sysinfo_t *info)
|
||||
#if CONFIG(LP_COREBOOT_VIDEO_CONSOLE)
|
||||
static void cb_parse_framebuffer(void *ptr, struct sysinfo_t *info)
|
||||
{
|
||||
/* ptr points to a coreboot table entry and is already virtual */
|
||||
info->framebuffer = ptr;
|
||||
info->framebuffer = *(struct cb_framebuffer *)ptr;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
Reference in New Issue
Block a user