/***************************************************************************** * * Copyright (c) 2012 - 2015, Hefei LCFC Information Technology Co.Ltd. * And/or its affiliates. All rights reserved. * Hefei LCFC Information Technology Co.Ltd. PROPRIETARY/CONFIDENTIAL. * Use is subject to license terms. * *****************************************************************************/ //;------------------------------------------------------------------------------ /*++ Abstract: This driver is running at early pei History: Date Name Version Change Notes 2015.07.17 Antony Guo v1.00 first release Module Name: LfcPei.c --*/ //; //; Notice: //; #include #include #include #include #include #include #include #include #include #include #include #include #include //[-start-210909-QINGLIN0056-add]// #if defined(C770_SUPPORT) #include #include #include #include #endif //[-end-210909-QINGLIN0056-add]// EFI_STATUS EFIAPI LfcAfterMemInitCallback ( IN CONST EFI_PEI_SERVICES **PeiServices, IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor, IN VOID *Ppi ); static EFI_PEI_NOTIFY_DESCRIPTOR mNotifyDesc[] = { { EFI_PEI_PPI_DESCRIPTOR_NOTIFY_CALLBACK | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST, &gEfiPeiMemoryDiscoveredPpiGuid, LfcAfterMemInitCallback } }; EFI_STATUS EFIAPI LfcBootModeCallback ( IN CONST EFI_PEI_SERVICES **PeiServices, IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor, IN VOID *Ppi ); static EFI_PEI_NOTIFY_DESCRIPTOR lfcbootmodNotifyDesc[] = { (EFI_PEI_PPI_DESCRIPTOR_NOTIFY_CALLBACK | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST), &gEfiPeiMasterBootModePpiGuid, LfcBootModeCallback }; //[-start-210909-QINGLIN0056-add]// #if defined(C770_SUPPORT) EFI_STATUS EFIAPI LfcPeiEndOfPeiCallback ( IN EFI_PEI_SERVICES **PeiServices, IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDesc, IN VOID *Ppi ); static EFI_PEI_NOTIFY_DESCRIPTOR LfcPeiEndOfPeiNotifyDesc = { (EFI_PEI_PPI_DESCRIPTOR_NOTIFY_CALLBACK | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST), &gEfiEndOfPeiSignalPpiGuid, LfcPeiEndOfPeiCallback }; #endif //[-end-210909-QINGLIN0056-add]// EFI_STATUS EFIAPI LfcPeiEntryPoint ( IN EFI_PEI_FILE_HANDLE FileHandle, IN CONST EFI_PEI_SERVICES **PeiServices ) { /*++ Todo: Add project specific code in here. --*/ EFI_STATUS Status; //[-start-211222-JOYID00009-add]// #if defined(C970_SUPPORT) || defined(C770_SUPPORT) || defined(S77013_SUPPORT) || defined(S77014_SUPPORT) || defined(S77014IAH_SUPPORT) Status = LfcEcLibEnableWatchDogForMemoryTrainning(); ASSERT_EFI_ERROR (Status); #endif //[-end-211222-JOYID00009-add]// Status = OemSvcLfcPeiEarly (); ASSERT_EFI_ERROR (Status); Status = OemSvcLfcPeiEcConfig (); ASSERT_EFI_ERROR (Status); Status = PeiServicesNotifyPpi (mNotifyDesc); ASSERT_EFI_ERROR (Status); Status = PeiServicesNotifyPpi (lfcbootmodNotifyDesc); ASSERT_EFI_ERROR (Status); //[-start-210909-QINGLIN0056-add]// #if defined(C770_SUPPORT) Status = PeiServicesNotifyPpi (&LfcPeiEndOfPeiNotifyDesc); #endif //[-end-210909-QINGLIN0056-add]// return EFI_SUCCESS; } EFI_STATUS EFIAPI LfcAfterMemInitCallback ( IN CONST EFI_PEI_SERVICES **PeiServices, IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor, IN VOID *Ppi ) { EFI_STATUS Status; Status = OemSvcLfcPeiMemDiscovery (); return Status; } EFI_STATUS EFIAPI LfcBootModeCallback ( IN CONST EFI_PEI_SERVICES **PeiServices, IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor, IN VOID *Ppi ) { EFI_BOOT_MODE BootMode; EFI_STATUS Status; Status = PeiServicesGetBootMode (&BootMode); if ((Status == EFI_SUCCESS) && (BootMode != BOOT_ON_S3_RESUME)) { LfcEcLibEnableEcPower(); } return EFI_SUCCESS; } //[-start-210909-QINGLIN0056-add]// #if defined(C770_SUPPORT) EFI_STATUS EFIAPI LfcPeiEndOfPeiCallback ( IN EFI_PEI_SERVICES **PeiServices, IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDesc, IN VOID *Ppi ) { EFI_STATUS Status = EFI_SUCCESS; #if defined(BAYHUB_CARD_READER_SUPPORT) || defined(REALTEK_CARD_READER_SUPPORT) || defined(GENESYS_LOGIC_CARD_READER_SUPPORT) Status = OemSvcLfcCardReaderCfg (PeiServices); #endif return Status; } #endif //[-end-210909-QINGLIN0056-add]//