diff options
-rw-r--r-- | arch/x86/include/asm/fsp/fsp_hob.h | 26 | ||||
-rw-r--r-- | arch/x86/include/asm/fsp/fsp_support.h | 12 | ||||
-rw-r--r-- | arch/x86/lib/fsp/fsp_support.c | 7 |
3 files changed, 45 insertions, 0 deletions
diff --git a/arch/x86/include/asm/fsp/fsp_hob.h b/arch/x86/include/asm/fsp/fsp_hob.h index 8ce665e512f..244f86ef3d4 100644 --- a/arch/x86/include/asm/fsp/fsp_hob.h +++ b/arch/x86/include/asm/fsp/fsp_hob.h @@ -127,6 +127,26 @@ struct hob_guid { /* GUID specific data goes here */ }; +enum pixel_format { + pixel_rgbx_8bpc, /* RGB 8 bit per color */ + pixel_bgrx_8bpc, /* BGR 8 bit per color */ + pixel_bitmask, +}; + +struct __packed hob_graphics_info { + phys_addr_t fb_base; /* framebuffer base address */ + u32 fb_size; /* framebuffer size */ + u32 version; + u32 width; + u32 height; + enum pixel_format pixel_format; + u32 red_mask; + u32 green_mask; + u32 blue_mask; + u32 reserved_mask; + u32 pixels_per_scanline; +}; + /** * get_next_hob() - return a pointer to the next HOB in the HOB list * @@ -250,4 +270,10 @@ static inline u16 get_guid_hob_data_size(const struct hob_header *hdr) { 0xb3, 0x16, 0x36, 0x35, 0x36, 0x67, 0xad, 0x44 } \ } +#define FSP_GRAPHICS_INFO_HOB_GUID \ + { \ + 0x39f62cce, 0x6825, 0x4669, \ + { 0xbb, 0x56, 0x54, 0x1a, 0xba, 0x75, 0x3a, 0x07 } \ + } + #endif diff --git a/arch/x86/include/asm/fsp/fsp_support.h b/arch/x86/include/asm/fsp/fsp_support.h index 61d811f70e0..97a50b0a73d 100644 --- a/arch/x86/include/asm/fsp/fsp_support.h +++ b/arch/x86/include/asm/fsp/fsp_support.h @@ -191,6 +191,18 @@ void *fsp_get_nvs_data(const void *hob_list, u32 *len); void *fsp_get_bootloader_tmp_mem(const void *hob_list, u32 *len); /** + * This function retrieves graphics information. + * + * @hob_list: A HOB list pointer. + * @len: A pointer to the graphics info HOB length. + * If the HOB is located, the length will be updated. + * + * @retval NULL: Failed to find the graphics info HOB. + * @retval others: A pointer to struct hob_graphics_info. + */ +void *fsp_get_graphics_info(const void *hob_list, u32 *len); + +/** * This function overrides the default configurations of FSP. * * @config: A pointer to the FSP configuration data structure diff --git a/arch/x86/lib/fsp/fsp_support.c b/arch/x86/lib/fsp/fsp_support.c index ab8340c8715..e0c49be6357 100644 --- a/arch/x86/lib/fsp/fsp_support.c +++ b/arch/x86/lib/fsp/fsp_support.c @@ -425,3 +425,10 @@ void *fsp_get_bootloader_tmp_mem(const void *hob_list, u32 *len) return fsp_get_guid_hob_data(hob_list, len, (struct efi_guid *)&guid); } + +void *fsp_get_graphics_info(const void *hob_list, u32 *len) +{ + const struct efi_guid guid = FSP_GRAPHICS_INFO_HOB_GUID; + + return fsp_get_guid_hob_data(hob_list, len, (struct efi_guid *)&guid); +} |