/** @file Header file for PCH Initialization Driver. Copyright (c) 2019 Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef _PCH_INIT_DXE_H_ #define _PCH_INIT_DXE_H_ #include #include #include #include // // Data definitions // extern EFI_HANDLE mImageHandle; // // Pch NVS area definition // extern PCH_NVS_AREA_PROTOCOL mPchNvsAreaProtocol; extern PCH_CONFIG_HOB *mPchConfigHob; extern SI_CONFIG_HOB_DATA *mSiConfigHobData; // // Function Prototype // // // Local function prototypes // /** Initialize the PCH device according to the PCH Policy HOB and install PCH info instance. **/ VOID InitializePchDevice ( VOID ); /** Common PchInit Module Entry Point **/ VOID PchInitEntryPointCommon ( VOID ); /** Common PCH initialization on PCI enumeration complete. **/ VOID PchOnPciEnumCompleteCommon ( VOID ); /** Configures Serial IO Controllers **/ EFI_STATUS ConfigureSerialIoAtBoot ( VOID ); /** Creates device handles for SerialIo devices in ACPI mode **/ VOID CreateSerialIoHandles ( VOID ); /** Mark memory used by SerialIo devices in ACPI mode as allocated @retval EFI_SUCCESS The function completed successfully **/ EFI_STATUS AllocateSerialIoMemory ( VOID ); /** Puts all SerialIo controllers (except UARTs in debug mode) in D3. Clears MemoryEnable for all PCI-mode controllers on S3 resume **/ VOID ConfigureSerialIoAtS3Resume ( VOID ); /** Update ASL definitions for SerialIo devices. @retval EFI_SUCCESS The function completed successfully **/ EFI_STATUS UpdateSerialIoAcpiData ( VOID ); /** Initialize PCIE SRC clocks in ICC subsystem @param[in] GbePortNumber Number of PCIE rootport assigned to GbE adapter **/ VOID ConfigurePchPcieClocks ( IN UINTN GbePortNumber ); /** Initialize Intel High Definition Audio ACPI Tables @retval EFI_SUCCESS The function completed successfully @retval EFI_LOAD_ERROR ACPI table cannot be installed @retval EFI_UNSUPPORTED ACPI table not set because DSP is disabled **/ EFI_STATUS PchHdAudioAcpiInit ( VOID ); /** Configure eMMC in HS400 Mode @param[in] This A pointer to PCH_EMMC_TUNING_PROTOCOL structure @param[in] Revision Revision parameter used to verify the layout of EMMC_INFO and TUNINGDATA. @param[in] EmmcInfo A pointer to EMMC_INFO structure @param[out] EmmcTuningData A pointer to EMMC_TUNING_DATA structure @retval EFI_SUCCESS The function completed successfully @retval EFI_NOT_FOUND The item was not found @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources. @retval EFI_INVALID_PARAMETER A parameter was incorrect. @retval EFI_DEVICE_ERROR Hardware Error @retval EFI_NO_MEDIA No media @retval EFI_MEDIA_CHANGED Media Change @retval EFI_BAD_BUFFER_SIZE Buffer size is bad @retval EFI_CRC_ERROR Command or Data CRC Error **/ EFI_STATUS EFIAPI ConfigureEmmcHs400Mode ( IN PCH_EMMC_TUNING_PROTOCOL *This, IN UINT8 Revision, IN EMMC_INFO *EmmcInfo, OUT EMMC_TUNING_DATA *EmmcTuningData ); /** Get eMMC PCI cfg space address @return UINT64 PCI base address **/ UINT64 ScsGetEmmcBaseAddress ( VOID ); /** Perform the remaining configuration on PCH SATA to perform device detection, then set the SATA SPD and PxE corresponding, and set the Register Lock on PCH SATA @retval None **/ VOID ConfigurePchSataOnEndOfDxe ( VOID ); /** Update ASL data for CNVI Device. @retval EFI_SUCCESS The function completed successfully **/ EFI_STATUS UpdateCnviAcpiData ( VOID ); /** Initialize Pch acpi @param[in] ImageHandle Handle for the image of this driver @retval EFI_SUCCESS The function completed successfully @retval EFI_OUT_OF_RESOURCES Do not have enough resources to initialize the driver **/ EFI_STATUS PchAcpiInit ( IN EFI_HANDLE ImageHandle ); /** Update ASL object before Boot @retval EFI_STATUS @retval EFI_NOT_READY The Acpi protocols are not ready. **/ EFI_STATUS PchUpdateNvsArea ( VOID ); /** Initialize PCH Nvs Area opeartion region. **/ VOID PatchPchNvsAreaAddress ( VOID ); #endif // _PCH_INIT_DXE_H_