);\r
SimpleTextOutput->Mode = &TerminalDevice->SimpleTextOutputMode;\r
\r
- TerminalDevice->SimpleTextOutputMode.MaxMode = 3;\r
+ TerminalDevice->SimpleTextOutputMode.MaxMode = TERMINAL_MAX_MODE;\r
//\r
// For terminal devices, cursor is always visible\r
//\r
#define MODE2_COLUMN_COUNT 100\r
#define MODE2_ROW_COUNT 31\r
\r
+//\r
+// MODE3 is defined by PcdConOutColumn & PcdConOutRow\r
+//\r
+\r
+#define TERMINAL_MAX_MODE 4\r
+\r
#define BACKSPACE 8\r
#define ESC 27\r
#define CSI 0x9B\r
//\r
Mode = This->Mode;\r
\r
- if (Mode->Mode > 2) {\r
+ if (Mode->Mode >= TERMINAL_MAX_MODE) {\r
return EFI_UNSUPPORTED;\r
}\r
\r
OUT UINTN *Rows\r
)\r
{\r
- if (This->Mode->MaxMode > 3) {\r
+ if (This->Mode->MaxMode > TERMINAL_MAX_MODE) {\r
return EFI_DEVICE_ERROR;\r
}\r
\r
*Columns = MODE2_COLUMN_COUNT;\r
*Rows = MODE2_ROW_COUNT;\r
return EFI_SUCCESS;\r
+ } else if (ModeNumber == 3) {\r
+ *Columns = (UINTN) PcdGet32 (PcdConOutColumn);\r
+ if (*Columns == 0) {\r
+ *Columns = MODE0_COLUMN_COUNT;\r
+ }\r
+ *Rows = (UINTN) PcdGet32 (PcdConOutRow);\r
+ if (*Rows == 0) {\r
+ *Rows = MODE0_ROW_COUNT;\r
+ }\r
+ return EFI_SUCCESS;\r
}\r
\r
return EFI_UNSUPPORTED;\r
//\r
TerminalDevice = TERMINAL_CON_OUT_DEV_FROM_THIS (This);\r
\r
- if (ModeNumber > 2) {\r
+ if (ModeNumber >= TERMINAL_MAX_MODE) {\r
return EFI_UNSUPPORTED;\r
}\r
\r
\r
[Packages]\r
MdePkg/MdePkg.dec\r
+ MdeModulePkg/MdeModulePkg.dec\r
\r
[LibraryClasses]\r
DevicePathLib\r
\r
[Pcd]\r
gEfiMdePkgTokenSpaceGuid.PcdDefaultTerminalType\r
+ gEfiMdeModulePkgTokenSpaceGuid.PcdConOutColumn\r
+ gEfiMdeModulePkgTokenSpaceGuid.PcdConOutRow\r
\r
# [Event]\r
# ##\r
# EVENT_TYPE_RELATIVE_TIMER ## PRODUCES\r
#\r
#\r
+\r