summaryrefslogtreecommitdiff
path: root/drivers/video/video-uclass.c
diff options
context:
space:
mode:
authorBin Meng <bmeng.cn@gmail.com>2016-10-09 04:14:17 -0700
committerBin Meng <bmeng.cn@gmail.com>2016-10-12 10:58:23 +0800
commit3968398eb2d974b4840d7210d8503d7cbd8f4c48 (patch)
treeef831d690e3431618eec471b37dbbe37b806bd9a /drivers/video/video-uclass.c
parent13b2bfce5104ad7b4243025554a354a2000b352b (diff)
downloadu-boot-3968398eb2d974b4840d7210d8503d7cbd8f4c48.tar.gz
u-boot-3968398eb2d974b4840d7210d8503d7cbd8f4c48.tar.bz2
u-boot-3968398eb2d974b4840d7210d8503d7cbd8f4c48.zip
dm: video: Don't do anything in alloc_fb() when plat->size is zero
With DM VESA driver on x86 boards, plat->base/size/align are all zeroes and starting address passed to alloc_fb() happens to be 1MB aligned, so this routine does not trigger any issue. On QEMU with U-Boot as coreboot payload, the starting address is within 1MB range (eg: 0x7fb0000), thus causes failure in video_post_bind(). Actually if plat->size is zero, it makes no sense to do anything in this routine. Add such check there. Signed-off-by: Bin Meng <bmeng.cn@gmail.com> Reviewed-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'drivers/video/video-uclass.c')
-rw-r--r--drivers/video/video-uclass.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/video/video-uclass.c b/drivers/video/video-uclass.c
index b6dd0f5a58..11ca7937dc 100644
--- a/drivers/video/video-uclass.c
+++ b/drivers/video/video-uclass.c
@@ -54,6 +54,9 @@ static ulong alloc_fb(struct udevice *dev, ulong *addrp)
struct video_uc_platdata *plat = dev_get_uclass_platdata(dev);
ulong base, align, size;
+ if (!plat->size)
+ return 0;
+
align = plat->align ? plat->align : 1 << 20;
base = *addrp - plat->size;
base &= ~(align - 1);