30 IN EFI_HANDLE ImageHandle,
31 IN EFI_SYSTEM_TABLE *SystemTable
42 gBS->SetWatchdogTimer (0, 0, 0, NULL);
51 if (!EFI_ERROR (Status) && (Argc >= 2)) {
52 if ((
OcStriCmp (Argv[1], L
"dump") == 0) && (Argc == 2)) {
53 for (Index = 0; Index <
ARRAY_SIZE (Rtc); ++Index) {
57 for (Index = 0; Index <
ARRAY_SIZE (Rtc); Index += 16) {
59 L
"%02Xh: %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X\n",
83 if ((
OcStriCmp (Argv[1], L
"read") == 0) && (Argc == 3)) {
84 Status = StrHexToUintnS (Argv[2], NULL, &Addr);
85 if (EFI_ERROR (Status) || (Addr > 0xFF)) {
86 Print (L
"Invalid addr %LX - %r\n", (UINT64)Addr, Status);
90 Print (L
"Rtc[0x%Xh] = 0x%02X\n", (UINT32)Addr,
OcRtcRead ((UINT8)Addr));
94 if ((
OcStriCmp (Argv[1], L
"write") == 0) && (Argc == 4)) {
95 Status = StrHexToUintnS (Argv[2], NULL, &Addr);
96 if (EFI_ERROR (Status) || (Addr > 0xFF)) {
97 Print (L
"Invalid addr %LX - %r\n", (UINT64)Addr, Status);
101 Status = StrHexToUintnS (Argv[3], NULL, &Value);
102 if (EFI_ERROR (Status) || (Value > 0xFF)) {
103 Print (L
"Invalid value %LX - %r\n", (UINT64)Value, Status);
108 L
"Rtc[0x%X] = 0x%02X -> 0x%02X\n",
118 Print (L
"Usage: RtcRw <dump|read|write> <addr> <value>\n");