video: Fill video handoff in video post probe
Fill video handoff fields in video_post_probe as at this point we have full framebuffer-related information. Also fill all the fields available in video hand-off struct as those were missing earlier and U-boot framework expects them to be filled for some of the functionalities. While filling framebuffer size in video hand-off structure use the actual framebuffer region size as derived from gd->video_top and gd->video_bottom instead of directly using the size populated in video_uc_plat as it contains unaligned size. Reported-by: Simon Glass <sjg@chromium.org> Signed-off-by: Devarsh Thakkar <devarsht@ti.com> Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
committed by
Tom Rini
parent
eefe23c127
commit
b30414f089
@@ -144,16 +144,6 @@ int video_reserve(ulong *addrp)
|
||||
debug("Video frame buffers from %lx to %lx\n", gd->video_bottom,
|
||||
gd->video_top);
|
||||
|
||||
if (spl_phase() == PHASE_SPL && CONFIG_IS_ENABLED(VIDEO_HANDOFF)) {
|
||||
struct video_handoff *ho;
|
||||
|
||||
ho = bloblist_add(BLOBLISTT_U_BOOT_VIDEO, sizeof(*ho), 0);
|
||||
if (!ho)
|
||||
return log_msg_ret("blf", -ENOENT);
|
||||
ho->fb = *addrp;
|
||||
ho->size = size;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -552,6 +542,26 @@ static int video_post_probe(struct udevice *dev)
|
||||
|
||||
priv->fb_size = priv->line_length * priv->ysize;
|
||||
|
||||
/*
|
||||
* Set up video handoff fields for passing video blob to next stage
|
||||
* NOTE:
|
||||
* This assumes that reserved video memory only uses a single framebuffer
|
||||
*/
|
||||
if (spl_phase() == PHASE_SPL && CONFIG_IS_ENABLED(BLOBLIST)) {
|
||||
struct video_handoff *ho;
|
||||
|
||||
ho = bloblist_add(BLOBLISTT_U_BOOT_VIDEO, sizeof(*ho), 0);
|
||||
if (!ho)
|
||||
return log_msg_ret("blf", -ENOENT);
|
||||
ho->fb = gd->video_bottom;
|
||||
/* Fill aligned size here as calculated in video_reserve() */
|
||||
ho->size = gd->video_top - gd->video_bottom;
|
||||
ho->xsize = priv->xsize;
|
||||
ho->ysize = priv->ysize;
|
||||
ho->line_length = priv->line_length;
|
||||
ho->bpix = priv->bpix;
|
||||
}
|
||||
|
||||
if (IS_ENABLED(CONFIG_VIDEO_COPY) && plat->copy_base)
|
||||
priv->copy_fb = map_sysmem(plat->copy_base, plat->size);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user