123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- /** @file
- Copyright (c) 2017 - 2019, Intel Corporation. All rights reserved.<BR>
- SPDX-License-Identifier: BSD-2-Clause-Patent
- **/
- #include <PiPei.h>
- #include <SaPolicyCommon.h>
- #include <Library/DebugLib.h>
- #include <Library/BaseMemoryLib.h>
- #include <Library/IoLib.h>
- #include <Library/HobLib.h>
- #include <Library/PcdLib.h>
- #include <Library/PchCycleDecodingLib.h>
- #include <Library/PciLib.h>
- #include <Library/PcdLib.h>
- #include <Library/BaseMemoryLib.h>
- #include <Library/PeiSaPolicyLib.h>
- #include <Library/BoardInitLib.h>
- #include <PchAccess.h>
- #include <Library/GpioNativeLib.h>
- #include <Library/GpioLib.h>
- #include <GpioPinsSklLp.h>
- #include <GpioPinsSklH.h>
- #include <Library/GpioExpanderLib.h>
- #include <SioRegs.h>
- #include <Library/PchPcrLib.h>
- #include <Library/SiliconInitLib.h>
- #include "PeiKabylakeRvp3InitLib.h"
- #include <ConfigBlock.h>
- #include <ConfigBlock/MemoryConfig.h>
- #include <Library/EcLib.h>
- #include <EcCommands.h>
- #define BOARD_ID_MASK_8BIT 0xff
- /**
- Get board fab ID.
- @param[out] DataBuffer
- @retval EFI_SUCCESS Command success
- @retval EFI_DEVICE_ERROR Command error
- **/
- EFI_STATUS
- GetBoardFabId (
- OUT UINT8 *DataBuffer
- )
- {
- UINT8 DataSize;
- //
- // For 'EC_C_FAB_ID' command NumberOfSendData = 0, NumberOfReceiveData =2.
- //
- DataSize = 2;
- return (LpcEcInterface (EC_C_FAB_ID, &DataSize, DataBuffer));
- }
- /**
- Get RVP3 board ID.
- There are 2 different RVP3 boards having different ID.
- This function will return board ID to caller.
- @param[out] DataBuffer
- @retval EFI_SUCCESS Command success
- @retval EFI_DEVICE_ERROR Command error
- **/
- EFI_STATUS
- GetRvp3BoardId (
- UINT8 *BoardId
- )
- {
- EFI_STATUS Status;
- UINT16 EcBoardInfo;
- UINT8 DataBuffer[2];
- Status = GetBoardFabId (DataBuffer);
- if (Status == EFI_SUCCESS) {
- EcBoardInfo = DataBuffer[0];
- EcBoardInfo = (EcBoardInfo << 8) | DataBuffer[1];
- //
- // Get the following data:
- // [7:0] - BOARD_IDx
- // [8] - GEN_ID
- // [11:9] - REV_FAB_IDx
- // [12] - TP_SPD_PRSNT
- // [15:13] - BOM_IDx
- //
- *BoardId = (UINT8) (EcBoardInfo & BOARD_ID_MASK_8BIT);
- DEBUG ((DEBUG_INFO, "BoardId = %X\n", *BoardId));
- }
- return Status;
- }
- EFI_STATUS
- EFIAPI
- KabylakeRvp3BoardDetect (
- VOID
- )
- {
- UINT8 BoardId;
- if (LibPcdGetSku () != 0) {
- return EFI_SUCCESS;
- }
- DEBUG ((DEBUG_INFO, "KabylakeRvp3DetectionCallback\n"));
- if (GetRvp3BoardId (&BoardId) == EFI_SUCCESS) {
- if (BoardId == BoardIdKabyLakeYLpddr3Rvp3) {
- LibPcdSetSku (BoardIdKabyLakeYLpddr3Rvp3);
- ASSERT (LibPcdGetSku() == BoardIdKabyLakeYLpddr3Rvp3);
- } else if (BoardId == BoardIdSkylakeRvp3) {
- LibPcdSetSku (BoardIdSkylakeRvp3);
- ASSERT (LibPcdGetSku() == BoardIdSkylakeRvp3);
- }
- DEBUG ((DEBUG_INFO, "SKU_ID: 0x%x\n", LibPcdGetSku()));
- }
- return EFI_SUCCESS;
- }
|