Message ID | 20190711145624.23007-1-matthias.bgg@kernel.org |
---|---|
State | Accepted |
Commit | 970baf16d1322d3930a57fc78ddfb15d594d690c |
Delegated to: | Anatolij Gustschin |
Headers | show |
Series | [U-Boot] video: arm: rpi: Bail out early if querying video information fails | expand |
On Thu, 11 Jul 2019 16:56:24 +0200 matthias.bgg@kernel.org wrote: Hi, > From: Fabian Vogt <fvogt@suse.com> > > 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> We could just propagate the value of ret instead of coalescing every error to EIO, but that's just a nit, so: Reviewed-by: Andre Przywara <andre.przywara@arm.com> Tested-by: Andre Przywara <andre.przywara@arm.com> I think this should be merged now, as on the RPi4 this is somewhat of a showstopper, because we don't have PCIe yet, so no USB, and no keyboard support. Which means serial console is the only way to control U-Boot. Cheers, Andre. > --- > drivers/video/bcm2835.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/drivers/video/bcm2835.c b/drivers/video/bcm2835.c > index bc41090aed..1d2eda084c 100644 > --- a/drivers/video/bcm2835.c > +++ b/drivers/video/bcm2835.c > @@ -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); >
On Thu, 11 Jul 2019 16:56:24 +0200 matthias.bgg@kernel.org matthias.bgg@kernel.org wrote: ... > drivers/video/bcm2835.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) Applied to u-boot-video/master, thanks! -- Anatolij
diff --git a/drivers/video/bcm2835.c b/drivers/video/bcm2835.c index bc41090aed..1d2eda084c 100644 --- a/drivers/video/bcm2835.c +++ b/drivers/video/bcm2835.c @@ -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);