[PATCH 2/3] efi_loader: GOP: Add 30bpp support

Mark Kettenis kettenis at openbsd.org
Thu Sep 16 15:01:16 CEST 2021


Provide correct framebuffer information for 30bpp modes.

Signed-off-by: Mark Kettenis <kettenis at openbsd.org>
---
 lib/efi_loader/efi_gop.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/lib/efi_loader/efi_gop.c b/lib/efi_loader/efi_gop.c
index 1206b2d7a2..42bf49b184 100644
--- a/lib/efi_loader/efi_gop.c
+++ b/lib/efi_loader/efi_gop.c
@@ -227,6 +227,7 @@ static efi_uintn_t gop_get_bpp(struct efi_gop *this)
 
 	switch (gopobj->bpix) {
 #ifdef CONFIG_DM_VIDEO
+	case VIDEO_BPP30:
 	case VIDEO_BPP32:
 #else
 	case LCD_COLOR32:
@@ -468,6 +469,7 @@ efi_status_t efi_gop_register(void)
 	switch (bpix) {
 #ifdef CONFIG_DM_VIDEO
 	case VIDEO_BPP16:
+	case VIDEO_BPP30:
 	case VIDEO_BPP32:
 #else
 	case LCD_COLOR32:
@@ -518,6 +520,14 @@ efi_status_t efi_gop_register(void)
 #endif
 	{
 		gopobj->info.pixel_format = EFI_GOT_BGRA8;
+#ifdef CONFIG_DM_VIDEO
+	} else if (bpix == VIDEO_BPP30) {
+		gopobj->info.pixel_format = EFI_GOT_BITMASK;
+		gopobj->info.pixel_bitmask[0] = 0x3ff00000; /* red */
+		gopobj->info.pixel_bitmask[1] = 0x000ffc00; /* green */
+		gopobj->info.pixel_bitmask[2] = 0x000003ff; /* blue */
+		gopobj->info.pixel_bitmask[3] = 0xc0000000; /* reserved */
+#endif
 	} else {
 		gopobj->info.pixel_format = EFI_GOT_BITMASK;
 		gopobj->info.pixel_bitmask[0] = 0xf800; /* red */
-- 
2.33.0



More information about the U-Boot mailing list