/** @file Copyright (c) 2017 - 2018, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #include #include #include #include #include /** This board service detects the board type. @retval EFI_SUCCESS The board was detected successfully. @retval EFI_NOT_FOUND The board could not be detected. **/ EFI_STATUS EFIAPI BoardDetect ( VOID ) { BOARD_DETECT_FUNC *BoardDetectFunc; UINTN Index; EFI_STATUS Status; for (Index = 0; ; Index++) { Status = PeiServicesLocatePpi( &gBoardDetectGuid, Index, NULL, (VOID **)&BoardDetectFunc ); if (EFI_ERROR(Status)) { break; } if (BoardDetectFunc->BoardDetect != NULL) { BoardDetectFunc->BoardDetect (); } } return EFI_SUCCESS; } /** This board service initializes board-specific debug devices. @retval EFI_SUCCESS Board-specific debug initialization was successful. @retval EFI_NOT_READY The board has not been detected yet. **/ EFI_STATUS EFIAPI BoardDebugInit ( VOID ) { BOARD_PRE_MEM_INIT_FUNC *BoardPreMemInit; EFI_STATUS Status; Status = PeiServicesLocatePpi( &gBoardPreMemInitGuid, 0, NULL, (VOID **)&BoardPreMemInit ); if (!EFI_ERROR(Status)) { if (BoardPreMemInit->BoardDebugInit != NULL) { return BoardPreMemInit->BoardDebugInit (); } } return EFI_SUCCESS; } /** This board service detects the boot mode. @retval EFI_BOOT_MODE The boot mode. @retval EFI_NOT_READY The board has not been detected yet. **/ EFI_BOOT_MODE EFIAPI BoardBootModeDetect ( VOID ) { BOARD_PRE_MEM_INIT_FUNC *BoardPreMemInit; EFI_STATUS Status; Status = PeiServicesLocatePpi( &gBoardPreMemInitGuid, 0, NULL, (VOID **)&BoardPreMemInit ); if (!EFI_ERROR(Status)) { if (BoardPreMemInit->BoardBootModeDetect != NULL) { return BoardPreMemInit->BoardBootModeDetect (); } } return BOOT_WITH_FULL_CONFIGURATION; } /** A hook for board-specific initialization prior to memory initialization. @retval EFI_SUCCESS The board initialization was successful. @retval EFI_NOT_READY The board has not been detected yet. **/ EFI_STATUS EFIAPI BoardInitBeforeMemoryInit ( VOID ) { BOARD_PRE_MEM_INIT_FUNC *BoardPreMemInit; EFI_STATUS Status; Status = PeiServicesLocatePpi( &gBoardPreMemInitGuid, 0, NULL, (VOID **)&BoardPreMemInit ); if (!EFI_ERROR(Status)) { if (BoardPreMemInit->BoardInitBeforeMemoryInit != NULL) { return BoardPreMemInit->BoardInitBeforeMemoryInit (); } } return EFI_SUCCESS; } /** A hook for board-specific initialization after memory initialization. @retval EFI_SUCCESS The board initialization was successful. @retval EFI_NOT_READY The board has not been detected yet. **/ EFI_STATUS EFIAPI BoardInitAfterMemoryInit ( VOID ) { BOARD_PRE_MEM_INIT_FUNC *BoardPreMemInit; EFI_STATUS Status; Status = PeiServicesLocatePpi( &gBoardPreMemInitGuid, 0, NULL, (VOID **)&BoardPreMemInit ); if (!EFI_ERROR(Status)) { if (BoardPreMemInit->BoardInitAfterMemoryInit != NULL) { return BoardPreMemInit->BoardInitAfterMemoryInit (); } } return EFI_SUCCESS; } /** A hook for board-specific initialization prior to disabling temporary RAM. @retval EFI_SUCCESS The board initialization was successful. @retval EFI_NOT_READY The board has not been detected yet. **/ EFI_STATUS EFIAPI BoardInitBeforeTempRamExit ( VOID ) { BOARD_PRE_MEM_INIT_FUNC *BoardPreMemInit; EFI_STATUS Status; Status = PeiServicesLocatePpi( &gBoardPreMemInitGuid, 0, NULL, (VOID **)&BoardPreMemInit ); if (!EFI_ERROR(Status)) { if (BoardPreMemInit->BoardInitBeforeTempRamExit != NULL) { return BoardPreMemInit->BoardInitBeforeTempRamExit (); } } return EFI_SUCCESS; } /** A hook for board-specific initialization after disabling temporary RAM. @retval EFI_SUCCESS The board initialization was successful. @retval EFI_NOT_READY The board has not been detected yet. **/ EFI_STATUS EFIAPI BoardInitAfterTempRamExit ( VOID ) { BOARD_PRE_MEM_INIT_FUNC *BoardPreMemInit; EFI_STATUS Status; Status = PeiServicesLocatePpi( &gBoardPreMemInitGuid, 0, NULL, (VOID **)&BoardPreMemInit ); if (!EFI_ERROR(Status)) { if (BoardPreMemInit->BoardInitAfterTempRamExit != NULL) { return BoardPreMemInit->BoardInitAfterTempRamExit (); } } return EFI_SUCCESS; } /** A hook for board-specific initialization prior to silicon initialization. @retval EFI_SUCCESS The board initialization was successful. @retval EFI_NOT_READY The board has not been detected yet. **/ EFI_STATUS EFIAPI BoardInitBeforeSiliconInit ( VOID ) { BOARD_POST_MEM_INIT_FUNC *BoardPostMemInit; EFI_STATUS Status; Status = PeiServicesLocatePpi( &gBoardPostMemInitGuid, 0, NULL, (VOID **)&BoardPostMemInit ); if (!EFI_ERROR(Status)) { if (BoardPostMemInit->BoardInitBeforeSiliconInit != NULL) { return BoardPostMemInit->BoardInitBeforeSiliconInit (); } } return EFI_SUCCESS; } /** A hook for board-specific initialization after silicon initialization. @retval EFI_SUCCESS The board initialization was successful. @retval EFI_NOT_READY The board has not been detected yet. **/ EFI_STATUS EFIAPI BoardInitAfterSiliconInit ( VOID ) { BOARD_POST_MEM_INIT_FUNC *BoardPostMemInit; EFI_STATUS Status; Status = PeiServicesLocatePpi( &gBoardPostMemInitGuid, 0, NULL, (VOID **)&BoardPostMemInit ); if (!EFI_ERROR(Status)) { if (BoardPostMemInit->BoardInitAfterSiliconInit != NULL) { return BoardPostMemInit->BoardInitAfterSiliconInit (); } } return EFI_SUCCESS; }