Nico Huber has submitted this change. ( https://review.coreboot.org/c/coreboot/+/49404 )
Change subject: lib/edid_fill_fb: Relax bits_per_pixel constraint ......................................................................
lib/edid_fill_fb: Relax bits_per_pixel constraint
The Picasso VBIOS is not setting the reserved_mask_size correctly. This change relaxes the constraint to allow bpp_mask <= bits_per_pixel. This is how the code previously used to work before CB:39002.
BUG=b:177094598, b:177422379 TEST=boot zork and see depthcharge working
Signed-off-by: Raul E Rangel rrangel@chromium.org Change-Id: I2e67532fa949fbd673269d8d7f1c0d8af6124ac9 Reviewed-on: https://review.coreboot.org/c/coreboot/+/49404 Tested-by: build bot (Jenkins) no-reply@coreboot.org Reviewed-by: Nico Huber nico.h@gmx.de Reviewed-by: Angel Pons th3fanbus@gmail.com Reviewed-by: Yu-Ping Wu yupingso@google.com --- M src/lib/edid_fill_fb.c 1 file changed, 10 insertions(+), 3 deletions(-)
Approvals: build bot (Jenkins): Verified Nico Huber: Looks good to me, approved Angel Pons: Looks good to me, but someone else must approve Yu-Ping Wu: Looks good to me, approved
diff --git a/src/lib/edid_fill_fb.c b/src/lib/edid_fill_fb.c index 712cd0f..7e8aa95 100644 --- a/src/lib/edid_fill_fb.c +++ b/src/lib/edid_fill_fb.c @@ -48,10 +48,17 @@
bpp_mask = fb->blue_mask_size + fb->green_mask_size + fb->red_mask_size + fb->reserved_mask_size; - if (fb->bits_per_pixel != bpp_mask) { - printk(BIOS_ERR, "%s: BPP=%d and channel bit mask=%d doesn't match." - " This is a driver bug.\n", __func__, fb->bits_per_pixel, bpp_mask); + if (bpp_mask > fb->bits_per_pixel) { + printk(BIOS_ERR, + "%s: channel bit mask=%d is greater than BPP=%d ." + " This is a driver bug. Framebuffer is invalid.\n", + __func__, bpp_mask, fb->bits_per_pixel); return NULL; + } else if (bpp_mask != fb->bits_per_pixel) { + printk(BIOS_WARNING, + "%s: channel bit mask=%d and BPP=%d don't match." + " This is a driver bug.\n", + __func__, bpp_mask, fb->bits_per_pixel); }
info = fb_new_framebuffer_info();