\r
@retval EFI_SUCCESS Display mode set successfuly.\r
@retval !(EFI_SUCCESS) Other errors.\r
-\r
**/\r
EFI_STATUS\r
LcdSetMode (\r
UINT32 LcdControl;\r
LCD_BPP LcdBpp;\r
\r
+ EFI_GRAPHICS_OUTPUT_MODE_INFORMATION ModeInfo;\r
+\r
// Set the video mode timings and other relevant information\r
Status = LcdPlatformGetTimings (\r
ModeNumber,\r
return Status;\r
}\r
\r
+ // Get the pixel format information\r
+ Status = LcdPlatformQueryMode (ModeNumber, &ModeInfo);\r
+ if (EFI_ERROR (Status)) {\r
+ ASSERT_EFI_ERROR (Status);\r
+ return Status;\r
+ }\r
+\r
// Disable the CLCD_LcdEn bit\r
MmioAnd32 (PL111_REG_LCD_CONTROL, ~PL111_CTRL_LCD_EN);\r
\r
\r
// PL111_REG_LCD_CONTROL\r
LcdControl = PL111_CTRL_LCD_EN | PL111_CTRL_LCD_BPP (LcdBpp) |\r
- PL111_CTRL_LCD_TFT | PL111_CTRL_LCD_PWR | PL111_CTRL_BGR;\r
+ PL111_CTRL_LCD_TFT | PL111_CTRL_LCD_PWR;\r
+ if (ModeInfo.PixelFormat == PixelBlueGreenRedReserved8BitPerColor) {\r
+ LcdControl |= PL111_CTRL_BGR;\r
+ }\r
MmioWrite32 (PL111_REG_LCD_CONTROL, LcdControl);\r
\r
return EFI_SUCCESS;\r