|
@@ -624,7 +624,7 @@ setup_pixel_info(struct screen_info *si, u32 pixels_per_scan_line,
|
|
|
static efi_status_t
|
|
|
__gop_query32(struct efi_graphics_output_protocol_32 *gop32,
|
|
|
struct efi_graphics_output_mode_info **info,
|
|
|
- unsigned long *size, u32 *fb_base)
|
|
|
+ unsigned long *size, u64 *fb_base)
|
|
|
{
|
|
|
struct efi_graphics_output_protocol_mode_32 *mode;
|
|
|
efi_status_t status;
|
|
@@ -650,7 +650,8 @@ setup_gop32(struct screen_info *si, efi_guid_t *proto,
|
|
|
unsigned long nr_gops;
|
|
|
u16 width, height;
|
|
|
u32 pixels_per_scan_line;
|
|
|
- u32 fb_base;
|
|
|
+ u32 ext_lfb_base;
|
|
|
+ u64 fb_base;
|
|
|
struct efi_pixel_bitmask pixel_info;
|
|
|
int pixel_format;
|
|
|
efi_status_t status;
|
|
@@ -713,6 +714,13 @@ setup_gop32(struct screen_info *si, efi_guid_t *proto,
|
|
|
si->lfb_width = width;
|
|
|
si->lfb_height = height;
|
|
|
si->lfb_base = fb_base;
|
|
|
+
|
|
|
+ ext_lfb_base = (u64)(unsigned long)fb_base >> 32;
|
|
|
+ if (ext_lfb_base) {
|
|
|
+ si->capabilities |= VIDEO_CAPABILITY_64BIT_BASE;
|
|
|
+ si->ext_lfb_base = ext_lfb_base;
|
|
|
+ }
|
|
|
+
|
|
|
si->pages = 1;
|
|
|
|
|
|
setup_pixel_info(si, pixels_per_scan_line, pixel_info, pixel_format);
|
|
@@ -727,7 +735,7 @@ out:
|
|
|
static efi_status_t
|
|
|
__gop_query64(struct efi_graphics_output_protocol_64 *gop64,
|
|
|
struct efi_graphics_output_mode_info **info,
|
|
|
- unsigned long *size, u32 *fb_base)
|
|
|
+ unsigned long *size, u64 *fb_base)
|
|
|
{
|
|
|
struct efi_graphics_output_protocol_mode_64 *mode;
|
|
|
efi_status_t status;
|
|
@@ -753,7 +761,8 @@ setup_gop64(struct screen_info *si, efi_guid_t *proto,
|
|
|
unsigned long nr_gops;
|
|
|
u16 width, height;
|
|
|
u32 pixels_per_scan_line;
|
|
|
- u32 fb_base;
|
|
|
+ u32 ext_lfb_base;
|
|
|
+ u64 fb_base;
|
|
|
struct efi_pixel_bitmask pixel_info;
|
|
|
int pixel_format;
|
|
|
efi_status_t status;
|
|
@@ -816,6 +825,13 @@ setup_gop64(struct screen_info *si, efi_guid_t *proto,
|
|
|
si->lfb_width = width;
|
|
|
si->lfb_height = height;
|
|
|
si->lfb_base = fb_base;
|
|
|
+
|
|
|
+ ext_lfb_base = (u64)(unsigned long)fb_base >> 32;
|
|
|
+ if (ext_lfb_base) {
|
|
|
+ si->capabilities |= VIDEO_CAPABILITY_64BIT_BASE;
|
|
|
+ si->ext_lfb_base = ext_lfb_base;
|
|
|
+ }
|
|
|
+
|
|
|
si->pages = 1;
|
|
|
|
|
|
setup_pixel_info(si, pixels_per_scan_line, pixel_info, pixel_format);
|