video: arm: rpi: Bail out early if querying video information fails
authorFabian Vogt <fvogt@suse.com>
Thu, 11 Jul 2019 14:56:24 +0000 (16:56 +0200)
committerAnatolij Gustschin <agust@denx.de>
Mon, 29 Jul 2019 08:14:04 +0000 (10:14 +0200)
When probing we query for the width and hight of the display. If the
firmware does not report any connected display the system will crash.
See https://github.com/raspberrypi/firmware/issues/1157 for details.

Signed-off-by: Fabian Vogt <fvogt@suse.com>
[mb: update commit message]
Signed-off-by: Matthias Brugger <mbrugger@suse.com>
Reviewed-by: Andre Przywara <andre.przywara@arm.com>
Tested-by: Andre Przywara <andre.przywara@arm.com>
drivers/video/bcm2835.c

index bc41090aed76483a790cfbcd0f30d4e662c94fc5..1d2eda084c87619cd3546da691e099185e08ee77 100644 (file)
@@ -19,13 +19,15 @@ static int bcm2835_video_probe(struct udevice *dev)
 
        debug("bcm2835: Query resolution...\n");
        ret = bcm2835_get_video_size(&w, &h);
-       if (ret)
+       if (ret || w == 0 || h == 0)
                return -EIO;
 
        debug("bcm2835: Setting up display for %d x %d\n", w, h);
        ret = bcm2835_set_video_params(&w, &h, 32, BCM2835_MBOX_PIXEL_ORDER_RGB,
                                       BCM2835_MBOX_ALPHA_MODE_IGNORED,
                                       &fb_base, &fb_size, &pitch);
+       if (ret)
+               return -EIO;
 
        debug("bcm2835: Final resolution is %d x %d\n", w, h);