Lines Matching full:si

107 static void efifb_copy_bmp(u8 *src, u32 *dst, int width, const struct screen_info *si)  in efifb_copy_bmp()  argument
115 *dst++ = (r << si->red_pos) | in efifb_copy_bmp()
116 (g << si->green_pos) | in efifb_copy_bmp()
117 (b << si->blue_pos); in efifb_copy_bmp()
129 static bool efifb_bgrt_sanity_check(const struct screen_info *si, u32 bmp_width) in efifb_bgrt_sanity_check() argument
135 u32 expected_xoffset = (si->lfb_width - bmp_width) / 2; in efifb_bgrt_sanity_check()
140 static bool efifb_bgrt_sanity_check(const struct screen_info *si, u32 bmp_width) in efifb_bgrt_sanity_check() argument
146 static void efifb_show_boot_graphics(struct fb_info *info, const struct screen_info *si) in efifb_show_boot_graphics() argument
173 if (si->lfb_depth != 32) { in efifb_show_boot_graphics()
206 if ((bgrt_tab.image_offset_x + bmp_width) > si->lfb_width || in efifb_show_boot_graphics()
207 (bgrt_tab.image_offset_y + bmp_height) > si->lfb_height) in efifb_show_boot_graphics()
210 if (!efifb_bgrt_sanity_check(si, bmp_width)) in efifb_show_boot_graphics()
215 for (y = 0; y < si->lfb_height; y++, dst += si->lfb_linelength) { in efifb_show_boot_graphics()
219 memset(dst, 0, 4 * si->lfb_width); in efifb_show_boot_graphics()
232 (u32 *)dst + dst_x, bmp_width, si); in efifb_show_boot_graphics()
234 memset((u32 *)dst + dst_x, 0, (si->lfb_width - dst_x) * 4); in efifb_show_boot_graphics()
245 static inline void efifb_show_boot_graphics(struct fb_info *info, const struct screen_info *si) in efifb_show_boot_graphics() argument
278 static void efifb_setup(struct screen_info *si, char *options) in efifb_setup() argument
286 efifb_setup_from_dmi(si, this_opt); in efifb_setup()
289 si->lfb_base = simple_strtoul(this_opt+5, NULL, 0); in efifb_setup()
291 si->lfb_linelength = simple_strtoul(this_opt+7, NULL, 0) * 4; in efifb_setup()
293 si->lfb_height = simple_strtoul(this_opt+7, NULL, 0); in efifb_setup()
295 si->lfb_width = simple_strtoul(this_opt+6, NULL, 0); in efifb_setup()
304 static inline bool fb_base_is_valid(struct screen_info *si) in fb_base_is_valid() argument
306 if (si->lfb_base) in fb_base_is_valid()
309 if (!(si->capabilities & VIDEO_CAPABILITY_64BIT_BASE)) in fb_base_is_valid()
312 if (si->ext_lfb_base) in fb_base_is_valid()
323 struct screen_info *si = dev_get_drvdata(dev); \
324 if (!si) \
326 return sprintf(buf, fmt "\n", (si->lfb_##name)); \
348 struct screen_info *si; in efifb_probe() local
363 si = dev_get_platdata(&dev->dev); in efifb_probe()
364 if (!si) in efifb_probe()
366 si = devm_kmemdup(&dev->dev, si, sizeof(*si), GFP_KERNEL); in efifb_probe()
367 if (!si) in efifb_probe()
370 dev_set_drvdata(&dev->dev, si); in efifb_probe()
372 if (si->orig_video_isVGA != VIDEO_TYPE_EFI) in efifb_probe()
377 efifb_setup(si, option); in efifb_probe()
383 if (!si->lfb_linelength) in efifb_probe()
386 if (!si->lfb_depth) in efifb_probe()
387 si->lfb_depth = 32; in efifb_probe()
388 if (!si->pages) in efifb_probe()
389 si->pages = 1; in efifb_probe()
390 if (!fb_base_is_valid(si)) { in efifb_probe()
397 if (!si->blue_size) { in efifb_probe()
398 si->blue_size = 8; in efifb_probe()
399 si->blue_pos = 0; in efifb_probe()
400 si->green_size = 8; in efifb_probe()
401 si->green_pos = 8; in efifb_probe()
402 si->red_size = 8; in efifb_probe()
403 si->red_pos = 16; in efifb_probe()
404 si->rsvd_size = 8; in efifb_probe()
405 si->rsvd_pos = 24; in efifb_probe()
408 efifb_fix.smem_start = __screen_info_lfb_base(si); in efifb_probe()
410 efifb_defined.bits_per_pixel = si->lfb_depth; in efifb_probe()
411 efifb_defined.xres = si->lfb_width; in efifb_probe()
412 efifb_defined.yres = si->lfb_height; in efifb_probe()
413 efifb_fix.line_length = si->lfb_linelength; in efifb_probe()
423 size_total = si->lfb_size; in efifb_probe()
497 efifb_show_boot_graphics(info, si); in efifb_probe()
504 si->pages); in efifb_probe()
518 efifb_defined.red.offset = si->red_pos; in efifb_probe()
519 efifb_defined.red.length = si->red_size; in efifb_probe()
520 efifb_defined.green.offset = si->green_pos; in efifb_probe()
521 efifb_defined.green.length = si->green_size; in efifb_probe()
522 efifb_defined.blue.offset = si->blue_pos; in efifb_probe()
523 efifb_defined.blue.length = si->blue_size; in efifb_probe()
524 efifb_defined.transp.offset = si->rsvd_pos; in efifb_probe()
525 efifb_defined.transp.length = si->rsvd_size; in efifb_probe()
530 si->rsvd_size, in efifb_probe()
531 si->red_size, in efifb_probe()
532 si->green_size, in efifb_probe()
533 si->blue_size, in efifb_probe()
534 si->rsvd_pos, in efifb_probe()
535 si->red_pos, in efifb_probe()
536 si->green_pos, in efifb_probe()
537 si->blue_pos); in efifb_probe()