Lines Matching +full:m +full:- +full:mode

1 // SPDX-License-Identifier: GPL-2.0
2 /* -----------------------------------------------------------------------
6 * ----------------------------------------------------------------------- */
29 u32 mode; member
40 u32 m; in parse_modenum() local
42 if (!strstarts(option, "mode=")) in parse_modenum()
44 option += strlen("mode="); in parse_modenum()
45 m = simple_strtoull(option, &option, 0); in parse_modenum()
49 cmdline.mode = m; in parse_modenum()
58 int pf = -1; in parse_res()
66 if (*option == '-') { in parse_res()
137 efi_graphics_output_protocol_mode_t *mode; in choose_mode_modenum() local
143 mode = efi_table_attr(gop, mode); in choose_mode_modenum()
145 cur_mode = efi_table_attr(mode, mode); in choose_mode_modenum()
146 if (cmdline.mode == cur_mode) in choose_mode_modenum()
149 max_mode = efi_table_attr(mode, max_mode); in choose_mode_modenum()
150 if (cmdline.mode >= max_mode) { in choose_mode_modenum()
151 efi_err("Requested mode is invalid\n"); in choose_mode_modenum()
155 status = efi_call_proto(gop, query_mode, cmdline.mode, &info_size, &info); in choose_mode_modenum()
157 efi_err("Couldn't get mode information\n"); in choose_mode_modenum()
161 pf = info->pixel_format; in choose_mode_modenum()
167 return cmdline.mode; in choose_mode_modenum()
174 efi_graphics_output_protocol_mode_t *mode = efi_table_attr(gop, mode); in choose_mode() local
175 u32 max_mode = efi_table_attr(mode, max_mode); in choose_mode()
177 for (u32 m = 0; m < max_mode; m++) { in choose_mode() local
182 status = efi_call_proto(gop, query_mode, m, &info_size, &info); in choose_mode()
186 if (match(info, m, ctx)) in choose_mode()
187 return m; in choose_mode()
199 return __fls(mask) - __ffs(mask) + 1; in pixel_bpp()
204 static bool match_res(const efi_graphics_output_mode_info_t *info, u32 mode, void *ctx) in match_res() argument
206 efi_pixel_bitmask_t pi = info->pixel_information; in match_res()
207 int pf = info->pixel_format; in match_res()
212 return cmdline.res.width == info->horizontal_resolution && in match_res()
213 cmdline.res.height == info->vertical_resolution && in match_res()
220 efi_graphics_output_protocol_mode_t *mode = efi_table_attr(gop, mode); in choose_mode_res() local
221 unsigned long cur_mode = efi_table_attr(mode, mode); in choose_mode_res()
223 if (match_res(efi_table_attr(mode, info), cur_mode, NULL)) in choose_mode_res()
230 u32 mode; member
235 static bool match_auto(const efi_graphics_output_mode_info_t *info, u32 mode, void *ctx) in match_auto() argument
237 u32 area = info->horizontal_resolution * info->vertical_resolution; in match_auto()
238 efi_pixel_bitmask_t pi = info->pixel_information; in match_auto()
239 int pf = info->pixel_format; in match_auto()
241 struct match *m = ctx; in match_auto() local
246 if (area > m->area || (area == m->area && depth > m->depth)) in match_auto()
247 *m = (struct match){ mode, area, depth }; in match_auto()
258 return match.mode; in choose_mode_auto()
261 static bool match_list(const efi_graphics_output_mode_info_t *info, u32 mode, void *ctx) in match_list() argument
263 efi_pixel_bitmask_t pi = info->pixel_information; in match_list()
265 int pf = info->pixel_format; in match_list()
291 efi_printk("Mode %3u %c%c: Resolution %ux%u-%s%.0hhu\n", in match_list()
292 mode, in match_list()
293 (mode == cur_mode) ? '*' : ' ', in match_list()
294 !valid ? '-' : ' ', in match_list()
295 info->horizontal_resolution, in match_list()
296 info->vertical_resolution, in match_list()
304 efi_graphics_output_protocol_mode_t *mode = efi_table_attr(gop, mode); in choose_mode_list() local
305 unsigned long cur_mode = efi_table_attr(mode, mode); in choose_mode_list()
306 u32 max_mode = efi_table_attr(mode, max_mode); in choose_mode_list()
310 efi_printk("Available graphics modes are 0-%u\n", max_mode-1); in choose_mode_list()
311 efi_puts(" * = current mode\n" in choose_mode_list()
312 " - = unusable mode\n"); in choose_mode_list()
328 efi_graphics_output_protocol_mode_t *mode; in set_mode() local
348 mode = efi_table_attr(gop, mode); in set_mode()
349 cur_mode = efi_table_attr(mode, mode); in set_mode()
355 efi_err("Failed to set requested mode\n"); in set_mode()
367 *size = __fls(mask) - *pos + 1; in find_bits()
376 &si->red_pos, &si->red_size); in setup_pixel_info()
378 &si->green_pos, &si->green_size); in setup_pixel_info()
380 &si->blue_pos, &si->blue_size); in setup_pixel_info()
382 &si->rsvd_pos, &si->rsvd_size); in setup_pixel_info()
383 si->lfb_depth = si->red_size + si->green_size + in setup_pixel_info()
384 si->blue_size + si->rsvd_size; in setup_pixel_info()
385 si->lfb_linelength = (pixels_per_scan_line * si->lfb_depth) / 8; in setup_pixel_info()
388 si->red_pos = 0; in setup_pixel_info()
389 si->blue_pos = 16; in setup_pixel_info()
391 si->blue_pos = 0; in setup_pixel_info()
392 si->red_pos = 16; in setup_pixel_info()
395 si->green_pos = 8; in setup_pixel_info()
396 si->rsvd_pos = 24; in setup_pixel_info()
397 si->red_size = si->green_size = in setup_pixel_info()
398 si->blue_size = si->rsvd_size = 8; in setup_pixel_info()
400 si->lfb_depth = 32; in setup_pixel_info()
401 si->lfb_linelength = pixels_per_scan_line * 4; in setup_pixel_info()
417 efi_graphics_output_protocol_mode_t *mode; in find_gop() local
427 mode = efi_table_attr(gop, mode); in find_gop()
428 info = efi_table_attr(mode, info); in find_gop()
429 if (info->pixel_format == PIXEL_BLT_ONLY || in find_gop()
430 info->pixel_format >= PIXEL_FORMAT_MAX) in find_gop()
458 efi_graphics_output_protocol_mode_t *mode; in efi_setup_gop() local
474 /* Change mode if requested */ in efi_setup_gop()
478 mode = efi_table_attr(gop, mode); in efi_setup_gop()
479 info = efi_table_attr(mode, info); in efi_setup_gop()
481 si->orig_video_isVGA = VIDEO_TYPE_EFI; in efi_setup_gop()
483 si->lfb_width = info->horizontal_resolution; in efi_setup_gop()
484 si->lfb_height = info->vertical_resolution; in efi_setup_gop()
486 efi_set_u64_split(efi_table_attr(mode, frame_buffer_base), in efi_setup_gop()
487 &si->lfb_base, &si->ext_lfb_base); in efi_setup_gop()
488 if (si->ext_lfb_base) in efi_setup_gop()
489 si->capabilities |= VIDEO_CAPABILITY_64BIT_BASE; in efi_setup_gop()
491 si->pages = 1; in efi_setup_gop()
493 setup_pixel_info(si, info->pixels_per_scan_line, in efi_setup_gop()
494 info->pixel_information, info->pixel_format); in efi_setup_gop()
496 si->lfb_size = si->lfb_linelength * si->lfb_height; in efi_setup_gop()
498 si->capabilities |= VIDEO_CAPABILITY_SKIP_QUIRKS; in efi_setup_gop()