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