dm: video: Don't do anything in alloc_fb() when plat->size is zero
authorBin Meng <bmeng.cn@gmail.com>
Sun, 9 Oct 2016 11:14:17 +0000 (04:14 -0700)
committerBin Meng <bmeng.cn@gmail.com>
Wed, 12 Oct 2016 02:58:23 +0000 (10:58 +0800)
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>
drivers/video/video-uclass.c

index b6dd0f5a58387c4f37f73fe25079a507a84b0c72..11ca7937dc817ed8c40c392182aa8bd38d4f5b8f 100644 (file)
@@ -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);