21#include <Library/BaseMemoryLib.h>
22#include <Library/DebugLib.h>
23#include <Library/MemoryAllocationLib.h>
26#include <Library/UefiBootServicesTableLib.h>
27#include <Library/UefiLib.h>
48 if (EFI_ERROR (Status)) {
72 if (EFI_ERROR (Status)) {
91 for (Count = 0; Count < 100; ++Count) {
94 if (!EFI_ERROR (Status)) {
142 return EFI_INVALID_PARAMETER;
145 for (Index = 0; Index < BufferSize; ++Index) {
147 if (EFI_ERROR (Status)) {
152 if (EFI_ERROR (Status)) {
158 if (EFI_ERROR (Status)) {
163 if (EFI_ERROR (Status)) {
167 if ((Temp ^ *
Buffer) != 0xFF) {
201 return EFI_INVALID_PARAMETER;
205 if (EFI_ERROR (Status)) {
209 for (Index = 0; Index < BufferSize; ++Index) {
211 TempBuffer[Address] = *
Buffer;
254 if (!EFI_ERROR (Status)) {
260 if (!EFI_ERROR (Status)) {
266 if (!EFI_ERROR (Status)) {
297 UINTN RtcBlacklistSize;
298 EFI_HANDLE NewHandle;
300 DEBUG ((DEBUG_VERBOSE,
"OCRTC: OcAppleRtcRamInstallProtocol\n"));
304 if (EFI_ERROR (Status)) {
305 DEBUG ((DEBUG_ERROR,
"OCRTC: Uninstall failed - %r\n", Status));
309 Status =
gBS->LocateProtocol (
315 if (!EFI_ERROR (Status)) {
322 "OCRTC: Wake log is 0x%02X 0x%02X % 3d 0x%02X\n",
329 Status = GetVariable2 (
332 (VOID **)&RtcBlacklist,
336 if (!EFI_ERROR (Status)) {
337 for (Index = 0; Index < RtcBlacklistSize; ++Index) {
339 DEBUG ((DEBUG_INFO,
"OCRTC: Blacklisted %02x address\n", RtcBlacklist[Index]));
342 FreePool (RtcBlacklist);
357 Status =
gBS->InstallMultipleProtocolInterfaces (
364 if (EFI_ERROR (Status)) {
UINT8 Checksum
All 32 bits added together have to equal 1.
#define APPLE_RTC_MAIN_CHECKSUM_BYTE1(Checksum)
#define APPLE_RTC_TOTAL_SIZE
#define APPLE_RTC_CORE_CHECKSUM_ADDR1
#define APPLE_RTC_BG_COLOR_ADDR
#define APPLE_RTC_RESERVED_LENGTH
#define APPLE_RTC_CORE_CHECKSUM_BYTE2(Checksum)
#define APPLE_RTC_CORE_CHECKSUM_ADDR2
#define APPLE_RTC_MAIN_CHECKSUM_ADDR2
#define APPLE_RTC_BG_COMPLEMENT_ADDR
#define APPLE_RTC_WL_EVENT_EXTRA_ADDR
#define APPLE_RTC_WL_EVENT_ADDR
#define APPLE_RTC_FIRMWARE_57_ADDR
#define APPLE_RTC_CORE_CHECKSUM_BYTE1(Checksum)
#define APPLE_RTC_TRACE_DATA_ADDR
#define APPLE_RTC_CORE_SIZE
#define APPLE_RTC_WL_MASK_ADDR
#define APPLE_RTC_MAIN_CHECKSUM_BYTE2(Checksum)
#define APPLE_RTC_CHECKSUM_START
#define APPLE_RTC_MAIN_CHECKSUM_ADDR1
#define APPLE_RTC_RESERVED_ADDR
STATIC EFI_STATUS SyncRtcRead(IN UINT8 Address, IN UINT8 *ValuePtr)
STATIC UINTN EFIAPI AppleRtcGetAvailableMemory(IN APPLE_RTC_RAM_PROTOCOL *This)
STATIC EFI_STATUS EFIAPI AppleRtcRamWriteData(IN APPLE_RTC_RAM_PROTOCOL *This, IN CONST UINT8 *Buffer, IN UINTN BufferSize, IN UINTN Address)
STATIC EFI_STATUS SyncRtcWrite(IN UINT8 Address, IN UINT8 Value)
STATIC EFI_LOCK mAppleRtcRamLock
STATIC EFI_STATUS EFIAPI AppleRtcRamReadData(IN APPLE_RTC_RAM_PROTOCOL *This, OUT UINT8 *Buffer, IN UINTN BufferSize, IN UINTN Address)
STATIC UINT8 mEmulatedRtcArea[APPLE_RTC_TOTAL_SIZE]
STATIC BOOLEAN mEmulatedRtcStatus[APPLE_RTC_TOTAL_SIZE]
STATIC APPLE_RTC_RAM_PROTOCOL mAppleRtcRamProtocol
STATIC EFI_STATUS SyncRtcWaitForReady(VOID)
APPLE_RTC_RAM_PROTOCOL * OcAppleRtcRamInstallProtocol(IN BOOLEAN Reinstall)
STATIC EFI_STATUS EFIAPI AppleRtcRamReset(IN APPLE_RTC_RAM_PROTOCOL *This)
EFI_GUID gAppleRtcRamProtocolGuid
EFI_STATUS OcUninstallAllProtocolInstances(EFI_GUID *Protocol)
UINT8 OcRtcRead(IN UINT8 Offset)
VOID OcRtcWrite(IN UINT8 Offset, IN UINT8 Value)
UINT16 OcRtcChecksumApple(IN CONST VOID *Data, IN UINTN Size)
#define RTC_UPDATE_IN_PROGRESS
#define RTC_ADDRESS_REGISTER_A
OC_TYPING_BUFFER_ENTRY Buffer[OC_TYPING_BUFFER_SIZE]
EFI_GUID gOcVendorVariableGuid
#define OC_RTC_BLACKLIST_VARIABLE_NAME
VOID *EFIAPI ZeroMem(OUT VOID *Buffer, IN UINTN Length)