Since C99 flexible array members are allowed at the end of structures.
We require C11.

Use struct efi_gop_mode_info in the definition of struct efi_entry_gopmode
to avoid code duplication and unnecessary conversions.

Signed-off-by: Heinrich Schuchardt <[email protected]>
---
 include/efi.h     | 36 +++++++++++++++++++++++-------------
 include/efi_api.h |  9 ---------
 2 files changed, 23 insertions(+), 22 deletions(-)

diff --git a/include/efi.h b/include/efi.h
index f9bbb175c3a..66725b876f9 100644
--- a/include/efi.h
+++ b/include/efi.h
@@ -385,6 +385,28 @@ struct efi_entry_memmap {
        struct efi_mem_desc desc[];
 };
 
+/**
+ * struct efi_gop_mode_info - graphics output mode information
+ */
+struct efi_gop_mode_info {
+       /** @version:   version of the data structure (use zero) */
+       u32 version;
+       /** @width:     horizontal screen size */
+       u32 width;
+       /** @height:    vertical screen size */
+       u32 height;
+       /** @pixel_format:   enum that specifies the storage format of pixels */
+       u32 pixel_format;
+       /**
+        * @pixel_bitmask:   bitmasks used with PixelPixelBitMask
+        *
+        * The values which bits are used for red, green, blue, and alpha.
+        */
+       u32 pixel_bitmask[4];
+       /** @pixels_per_scanline:       pixels per video memory line */
+       u32 pixels_per_scanline;
+};
+
 /**
  * struct efi_entry_gopmode - a GOP mode table passed to U-Boot
  *
@@ -404,19 +426,7 @@ struct efi_entry_gopmode {
         */
        u64 fb_size;
        u64 info_size;
-       /*
-        * We cannot directly use 'struct efi_gop_mode_info info[]' here as
-        * it causes compiler to complain: array type has incomplete element
-        * type 'struct efi_gop_mode_info'.
-        */
-       struct /* efi_gop_mode_info */ {
-               u32 version;
-               u32 width;
-               u32 height;
-               u32 pixel_format;
-               u32 pixel_bitmask[4];
-               u32 pixels_per_scanline;
-       } info[];
+       struct efi_gop_mode_info info[];
 };
 
 /**
diff --git a/include/efi_api.h b/include/efi_api.h
index 77a05f752e5..d4fdd50c49e 100644
--- a/include/efi_api.h
+++ b/include/efi_api.h
@@ -1490,15 +1490,6 @@ struct efi_hii_config_access_protocol {
 #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;
-- 
2.51.0

Reply via email to