/** @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_