efi/gop: Remove unreachable code from setup_pixel_info
pixel_format must be one of PIXEL_RGB_RESERVED_8BIT_PER_COLOR PIXEL_BGR_RESERVED_8BIT_PER_COLOR PIXEL_BIT_MASK since we skip PIXEL_BLT_ONLY when finding a gop. Remove the redundant code and add another check in find_gop to skip any pixel formats that we don't know about, in case a later version of the UEFI spec adds one. Reformat the code a little. Signed-off-by: Arvind Sankar <nivedita@alum.mit.edu> Link: https://lore.kernel.org/r/20200320020028.1936003-10-nivedita@alum.mit.edu Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
This commit is contained in:
parent
9867fc9de6
commit
d49fd4bbf9
@ -29,49 +29,34 @@ static void
|
||||
setup_pixel_info(struct screen_info *si, u32 pixels_per_scan_line,
|
||||
efi_pixel_bitmask_t pixel_info, int pixel_format)
|
||||
{
|
||||
if (pixel_format == PIXEL_RGB_RESERVED_8BIT_PER_COLOR) {
|
||||
si->lfb_depth = 32;
|
||||
si->lfb_linelength = pixels_per_scan_line * 4;
|
||||
si->red_size = 8;
|
||||
si->red_pos = 0;
|
||||
si->green_size = 8;
|
||||
si->green_pos = 8;
|
||||
si->blue_size = 8;
|
||||
si->blue_pos = 16;
|
||||
si->rsvd_size = 8;
|
||||
si->rsvd_pos = 24;
|
||||
} else if (pixel_format == PIXEL_BGR_RESERVED_8BIT_PER_COLOR) {
|
||||
si->lfb_depth = 32;
|
||||
si->lfb_linelength = pixels_per_scan_line * 4;
|
||||
si->red_size = 8;
|
||||
si->red_pos = 16;
|
||||
si->green_size = 8;
|
||||
si->green_pos = 8;
|
||||
si->blue_size = 8;
|
||||
si->blue_pos = 0;
|
||||
si->rsvd_size = 8;
|
||||
si->rsvd_pos = 24;
|
||||
} else if (pixel_format == PIXEL_BIT_MASK) {
|
||||
find_bits(pixel_info.red_mask, &si->red_pos, &si->red_size);
|
||||
find_bits(pixel_info.green_mask, &si->green_pos,
|
||||
&si->green_size);
|
||||
find_bits(pixel_info.blue_mask, &si->blue_pos, &si->blue_size);
|
||||
find_bits(pixel_info.reserved_mask, &si->rsvd_pos,
|
||||
&si->rsvd_size);
|
||||
if (pixel_format == PIXEL_BIT_MASK) {
|
||||
find_bits(pixel_info.red_mask,
|
||||
&si->red_pos, &si->red_size);
|
||||
find_bits(pixel_info.green_mask,
|
||||
&si->green_pos, &si->green_size);
|
||||
find_bits(pixel_info.blue_mask,
|
||||
&si->blue_pos, &si->blue_size);
|
||||
find_bits(pixel_info.reserved_mask,
|
||||
&si->rsvd_pos, &si->rsvd_size);
|
||||
si->lfb_depth = si->red_size + si->green_size +
|
||||
si->blue_size + si->rsvd_size;
|
||||
si->lfb_linelength = (pixels_per_scan_line * si->lfb_depth) / 8;
|
||||
} else {
|
||||
si->lfb_depth = 4;
|
||||
si->lfb_linelength = si->lfb_width / 2;
|
||||
si->red_size = 0;
|
||||
si->red_pos = 0;
|
||||
si->green_size = 0;
|
||||
si->green_pos = 0;
|
||||
si->blue_size = 0;
|
||||
si->blue_pos = 0;
|
||||
si->rsvd_size = 0;
|
||||
si->rsvd_pos = 0;
|
||||
if (pixel_format == PIXEL_RGB_RESERVED_8BIT_PER_COLOR) {
|
||||
si->red_pos = 0;
|
||||
si->blue_pos = 16;
|
||||
} else /* PIXEL_BGR_RESERVED_8BIT_PER_COLOR */ {
|
||||
si->blue_pos = 0;
|
||||
si->red_pos = 16;
|
||||
}
|
||||
|
||||
si->green_pos = 8;
|
||||
si->rsvd_pos = 24;
|
||||
si->red_size = si->green_size =
|
||||
si->blue_size = si->rsvd_size = 8;
|
||||
|
||||
si->lfb_depth = 32;
|
||||
si->lfb_linelength = pixels_per_scan_line * 4;
|
||||
}
|
||||
}
|
||||
|
||||
@ -100,7 +85,8 @@ find_gop(efi_guid_t *proto, unsigned long size, void **handles)
|
||||
|
||||
mode = efi_table_attr(gop, mode);
|
||||
info = efi_table_attr(mode, info);
|
||||
if (info->pixel_format == PIXEL_BLT_ONLY)
|
||||
if (info->pixel_format == PIXEL_BLT_ONLY ||
|
||||
info->pixel_format >= PIXEL_FORMAT_MAX)
|
||||
continue;
|
||||
|
||||
/*
|
||||
|
Loading…
x
Reference in New Issue
Block a user