EFI_STATUS InternalCompareBlock ( IN EFI_PHYSICAL_ADDRESS BaseAddress, IN UINT8 *Buffer ) { EFI_STATUS Status; VOID *CompareBuffer; UINT32 NumBytes; INTN CompareResult; NumBytes = BLOCK_SIZE; CompareBuffer = AllocatePool (NumBytes); if (CompareBuffer == NULL) { Status = EFI_OUT_OF_RESOURCES; goto Done; } Status = SpiFlashRead ((UINTN) BaseAddress, &NumBytes, CompareBuffer); if (EFI_ERROR (Status)) { goto Done; } CompareResult = CompareMem (CompareBuffer, Buffer, BLOCK_SIZE); if (CompareResult != 0) { Status = EFI_VOLUME_CORRUPTED; } Done: if (CompareBuffer != NULL) { FreePool (CompareBuffer); } return Status; }
EFI_STATUS InternalReadBlock ( IN EFI_PHYSICAL_ADDRESS BaseAddress, OUT VOID *ReadBuffer ) { EFI_STATUS Status; UINT32 BlockSize; BlockSize = BLOCK_SIZE; Status = SpiFlashRead ((UINTN) BaseAddress, &BlockSize, ReadBuffer); return Status; }
INT32 BSP_NvInfoInit(VOID) { PNV_INFO pNvInfo = (PNV_INFO)&EeBuffer; #ifndef USE_NV_INFO // // 1: USE DEFAULT PARAM // NST_MOVE_MEM(pNvInfo->MaxTxPwr, DefaultTxPwrIdxTbl, sizeof(pNvInfo->MaxTxPwr)); #else // USE_NV_INFO // // 2: USE FLASH PARAM // { { #ifdef NULINK2_SOC BSP_QSpiInit(DEFAULT_QSPI_CLK); #else BSP_SpiInit(); #endif #ifdef NULINK2_SOC QSpiFlashRead(NV_INFO_START, (UINT8*)pNvInfo, sizeof(NV_INFO)); #else SpiFlashRead(NV_INFO_START, (UINT8*)pNvInfo, sizeof(NV_INFO)); #endif } } // CHECK PARAM CheckParam(pNvInfo); #endif // USE_NV_INFO return NST_STATUS_SUCCESS; }