diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/efi_api.h | 47 | ||||
-rw-r--r-- | include/efi_loader.h | 2 |
2 files changed, 49 insertions, 0 deletions
diff --git a/include/efi_api.h b/include/efi_api.h index 03f6687..6960448 100644 --- a/include/efi_api.h +++ b/include/efi_api.h @@ -365,4 +365,51 @@ struct efi_console_control_protocol uint16_t *password); }; +#define EFI_GOP_GUID \ + EFI_GUID(0x9042a9de, 0x23dc, 0x4a38, \ + 0x96, 0xfb, 0x7a, 0xde, 0xd0, 0x80, 0x51, 0x6a) + +#define EFI_GOT_RGBA8 0 +#define EFI_GOT_BGRA8 1 +#define EFI_GOT_BITMASK 2 + +struct efi_gop_mode_info +{ + u32 version; + u32 width; + u32 height; + u32 pixel_format; + u32 pixel_bitmask[4]; + u32 pixels_per_scanline; +}; + +struct efi_gop_mode +{ + u32 max_mode; + u32 mode; + struct efi_gop_mode_info *info; + unsigned long info_size; + efi_physical_addr_t fb_base; + unsigned long fb_size; +}; + +#define EFI_BLT_VIDEO_FILL 0 +#define EFI_BLT_VIDEO_TO_BLT_BUFFER 1 +#define EFI_BLT_BUFFER_TO_VIDEO 2 +#define EFI_BLT_VIDEO_TO_VIDEO 3 + +struct efi_gop +{ + efi_status_t (EFIAPI *query_mode)(struct efi_gop *this, u32 mode_number, + unsigned long *size_of_info, + struct efi_gop_mode_info **info); + efi_status_t (EFIAPI *set_mode)(struct efi_gop *this, u32 mode_number); + efi_status_t (EFIAPI *blt)(struct efi_gop *this, void *buffer, + unsigned long operation, unsigned long sx, + unsigned long sy, unsigned long dx, + unsigned long dy, unsigned long width, + unsigned long height, unsigned long delta); + struct efi_gop_mode *mode; +}; + #endif diff --git a/include/efi_loader.h b/include/efi_loader.h index 74bed26..9f61fc4 100644 --- a/include/efi_loader.h +++ b/include/efi_loader.h @@ -89,6 +89,8 @@ extern struct list_head efi_obj_list; /* Called by bootefi to make all disk storage accessible as EFI objects */ int efi_disk_register(void); +/* Called by bootefi to make GOP (graphical) interface available */ +int efi_gop_register(void); /* * Stub implementation for a protocol opener that just returns the handle as * interface |