From 778d8ba5997a4fbf0e3b18a24111ac2f98378989 Mon Sep 17 00:00:00 2001 From: Guo Mang Date: Thu, 8 Jun 2017 15:13:09 +0800 Subject: Add Benson GPIO Code Add GPIO setting for Benson Glacier Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Guo Mang --- .../BensonGlacier/BoardInitPostMem/BoardInit.c | 122 +++++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitPostMem/BoardInit.c (limited to 'Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitPostMem/BoardInit.c') diff --git a/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitPostMem/BoardInit.c b/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitPostMem/BoardInit.c new file mode 100644 index 0000000000..e33ce5aefc --- /dev/null +++ b/Platform/BroxtonPlatformPkg/Board/BensonGlacier/BoardInitPostMem/BoardInit.c @@ -0,0 +1,122 @@ +/** @file + Board Init driver. + + Copyright (c) 2010 - 2017, Intel Corporation. All rights reserved.
+ + This program and the accompanying materials + are licensed and made available under the terms and conditions of the BSD License + which accompanies this distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php. + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +**/ + +#include +#include +#include +#include +#include +#include +#include +#include "BoardInit.h" +#include "BoardInitMiscs.h" + +EFI_STATUS +EFIAPI +BensonGlacierPostMemInitCallback ( + IN EFI_PEI_SERVICES **PeiServices, + IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor, + IN VOID *Ppi + ); + + +static EFI_PEI_NOTIFY_DESCRIPTOR mBensonGlacierPostMemNotifyList = { + (EFI_PEI_PPI_DESCRIPTOR_NOTIFY_CALLBACK | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST), + &gBoardPostMemInitStartGuid, + BensonGlacierPostMemInitCallback +}; + +static EFI_PEI_PPI_DESCRIPTOR mBensonGlacierPostMemDonePpi = { + (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST), + &gBoardPostMemInitDoneGuid, + NULL +}; + +EFI_STATUS +EFIAPI +BensonGlacierPostMemInitCallback ( + IN EFI_PEI_SERVICES **PeiServices, + IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor, + IN VOID *Ppi + ) +{ + EFI_STATUS Status; + VOID *Instance; + UINT8 BoardId; + UINT8 FabId; + + Status = PeiServicesLocatePpi ( + &gBoardPostMemInitDoneGuid, + 0, + NULL, + &Instance + ); + if (!EFI_ERROR (Status)) { + DEBUG ((EFI_D_INFO, "Benson Glacier Post Mem Init callback: Skip\n")); + return EFI_SUCCESS; + } + + BoardId = (UINT8) PcdGet8 (PcdBoardId); + FabId = (UINT8) PcdGet8 (PcdFabId); + DEBUG ((EFI_D_INFO, "PostMemInit: BoardId == 0x%X, FabId == 0x%X\n", BoardId, FabId)); + if (BoardId != (UINT8) BOARD_ID_BENSON) { + DEBUG ((EFI_D_INFO, "Benson Glacier Post Mem Init callback: Skip\n")); + return EFI_SUCCESS; + } + + DEBUG ((EFI_D_INFO, "Benson Glacier Post Mem Init callback\n")); + + // + // Set init function PCD + // + PcdSet64 (PcdBoardPostMemInitFunc, (UINT64) (UINTN) MultiPlatformInfoInit); + + // + // Add init steps here + // + // + // Install a flag signalling a board's post mem init is done + // + Status = PeiServicesInstallPpi (&mBensonGlacierPostMemDonePpi); + + return EFI_SUCCESS; +} + + +/** + This function performs Board initialization in Pre-Memory. + + @retval EFI_SUCCESS The PPI is installed and initialized. + @retval EFI ERRORS The PPI is not successfully installed. + @retval EFI_OUT_OF_RESOURCES No enough resoruces (such as out of memory). + +**/ +EFI_STATUS +EFIAPI +BensonGlacierInitConstructor ( + IN EFI_PEI_FILE_HANDLE FileHandle, + IN CONST EFI_PEI_SERVICES **PeiServices + ) +{ + EFI_STATUS Status; + + DEBUG ((EFI_D_INFO, "BensonGlacier Post Mem Init Constructor \n")); + + DEBUG ((EFI_D_INFO, "Notify on Post Mem Init Start PPI \n")); + Status = PeiServicesNotifyPpi (&mBensonGlacierPostMemNotifyList); + + return Status; +} + -- cgit v1.2.3