/** @file PCH General policy Copyright (c) 2021, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef _PCH_GENERAL_CONFIG_H_ #define _PCH_GENERAL_CONFIG_H_ #define PCH_GENERAL_CONFIG_REVISION 1 #define PCH_GENERAL_PREMEM_CONFIG_REVISION 2 extern EFI_GUID gPchGeneralConfigGuid; extern EFI_GUID gPchGeneralPreMemConfigGuid; #pragma pack (push,1) enum PCH_RESERVED_PAGE_ROUTE { PchReservedPageToLpc, ///< Port 80h cycles are sent to LPC. PchReservedPageToPcie ///< Port 80h cycles are sent to PCIe. }; /** PCH General Configuration Revision 1: - Initial version. **/ typedef struct { CONFIG_BLOCK_HEADER Header; ///< Config Block Header /** This member describes whether or not the Compatibility Revision ID (CRID) feature of PCH should be enabled. 0: Disable; 1: Enable **/ UINT32 Crid : 1; /** Set to enable low latency of legacy IO. Some systems require lower IO latency irrespective of power. This is a tradeoff between power and IO latency. @note: Once this is enabled, DmiAspm, Pcie DmiAspm in SystemAgent and ITSS Clock Gating are forced to disabled. 0: Disable, 1: Enable **/ UINT32 LegacyIoLowLatency : 1; UINT32 RsvdBits0 : 30; ///< Reserved bits } PCH_GENERAL_CONFIG; /** PCH General Pre-Memory Configuration Revision 1: - Initial version. Revision 2: - Added GpioOverride. **/ typedef struct { CONFIG_BLOCK_HEADER Header; ///< Config Block Header /** Control where the Port 80h cycles are sent, 0: LPC; 1: PCI. **/ UINT32 Port80Route : 1; UINT32 IotgPllSscEn : 1; ///< Need to disable CPU Side SSC for A0 PO /** Gpio override Level -- 0: Disable; - 1: Override Level 1 - only skips GpioSetNativePadByFunction - 2: Override Level 2 - skips GpioSetNativePadByFunction and GpioSetPadMode Additional policy that allows GPIO configuration to be done by external means. If equal to 1 PCH will skip every Pad configuration. **/ UINT32 GpioOverride : 3; UINT32 RsvdBits0 : 27; ///< Reserved bits } PCH_GENERAL_PREMEM_CONFIG; #pragma pack (pop) #endif // _PCH_GENERAL_CONFIG_H_