diff options
Diffstat (limited to 'Platforms/Hisilicon/HiKey960/HiKey960Dxe/HiKey960Dxe.c')
-rw-r--r-- | Platforms/Hisilicon/HiKey960/HiKey960Dxe/HiKey960Dxe.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/Platforms/Hisilicon/HiKey960/HiKey960Dxe/HiKey960Dxe.c b/Platforms/Hisilicon/HiKey960/HiKey960Dxe/HiKey960Dxe.c index 6ef1c3d..b4e0e1b 100644 --- a/Platforms/Hisilicon/HiKey960/HiKey960Dxe/HiKey960Dxe.c +++ b/Platforms/Hisilicon/HiKey960/HiKey960Dxe/HiKey960Dxe.c @@ -29,6 +29,7 @@ #include <Library/IoLib.h>
#include <Library/PcdLib.h>
#include <Library/PrintLib.h>
+#include <Library/SerialPortLib.h>
#include <Library/TimerLib.h>
#include <Library/UefiBootServicesTableLib.h>
#include <Library/UefiRuntimeServicesTableLib.h>
@@ -96,6 +97,12 @@ typedef struct { CHAR16 UnicodeSN[SERIAL_NUMBER_SIZE];
} RANDOM_SERIAL_NUMBER;
+enum {
+ BOOT_MODE_RECOVERY = 0,
+ BOOT_MODE_NORMAL,
+ BOOT_MODE_MASK = 1,
+};
+
STATIC UINTN mBoardId;
STATIC EMBEDDED_GPIO *mGpio;
@@ -348,6 +355,13 @@ OnEndOfDxe ( IN VOID *Context
)
{
+ UINT32 BootMode;
+
+ BootMode = MmioRead32 (SCTRL_BAK_DATA0) & BOOT_MODE_MASK;
+ if (BootMode == BOOT_MODE_RECOVERY) {
+ SerialPortWrite ((UINT8 *)"WARNING: CAN NOT BOOT KERNEL IN RECOVERY MODE!\r\n", 48);
+ SerialPortWrite ((UINT8 *)"Switch to normal boot mode, then reboot to boot kernel.\r\n", 57);
+ }
}
EFI_STATUS
|