efi_loader: GOP: Add 30bpp support
Provide correct framebuffer information for 30bpp modes. Signed-off-by: Mark Kettenis <kettenis@openbsd.org>
This commit is contained in:
parent
0efe41ca15
commit
01fcf0eea6
@ -432,7 +432,7 @@ efi_status_t EFIAPI gop_blt(struct efi_gop *this, struct efi_gop_pixel *buffer,
|
||||
efi_status_t efi_gop_register(void)
|
||||
{
|
||||
struct efi_gop_obj *gopobj;
|
||||
u32 bpix, col, row;
|
||||
u32 bpix, format, col, row;
|
||||
u64 fb_base, fb_size;
|
||||
void *fb;
|
||||
efi_status_t ret;
|
||||
@ -449,6 +449,7 @@ efi_status_t efi_gop_register(void)
|
||||
|
||||
priv = dev_get_uclass_priv(vdev);
|
||||
bpix = priv->bpix;
|
||||
format = priv->format;
|
||||
col = video_get_xsize(vdev);
|
||||
row = video_get_ysize(vdev);
|
||||
fb_base = (uintptr_t)priv->fb;
|
||||
@ -458,6 +459,7 @@ efi_status_t efi_gop_register(void)
|
||||
int line_len;
|
||||
|
||||
bpix = panel_info.vl_bpix;
|
||||
format = VIDEO_UNKNOWN;
|
||||
col = panel_info.vl_col;
|
||||
row = panel_info.vl_row;
|
||||
fb_base = gd->fb_base;
|
||||
@ -517,7 +519,15 @@ efi_status_t efi_gop_register(void)
|
||||
if (bpix == LCD_COLOR32)
|
||||
#endif
|
||||
{
|
||||
gopobj->info.pixel_format = EFI_GOT_BGRA8;
|
||||
if (format == VIDEO_X2R10G10B10) {
|
||||
gopobj->info.pixel_format = EFI_GOT_BITMASK;
|
||||
gopobj->info.pixel_bitmask[0] = 0x3ff00000; /* red */
|
||||
gopobj->info.pixel_bitmask[1] = 0x000ffc00; /* green */
|
||||
gopobj->info.pixel_bitmask[2] = 0x000003ff; /* blue */
|
||||
gopobj->info.pixel_bitmask[3] = 0xc0000000; /* reserved */
|
||||
} else {
|
||||
gopobj->info.pixel_format = EFI_GOT_BGRA8;
|
||||
}
|
||||
} else {
|
||||
gopobj->info.pixel_format = EFI_GOT_BITMASK;
|
||||
gopobj->info.pixel_bitmask[0] = 0xf800; /* red */
|
||||
|
Loading…
Reference in New Issue
Block a user