/** @file
PCH General policy
Copyright (c) 2019 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 3
#define PCH_GENERAL_PREMEM_CONFIG_REVISION 1
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 postmem general config block.
Revision 1:
- Initial version.
Revision 2:
- Remove SubSystemVendorId and SubSystemId.
Revision 3:
- Add LegacyIoLowLatency support.
**/
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 premem general config block.
Revision 1:
- Initial version.
**/
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 RsvdBits0 : 31; ///< Reserved bits
} PCH_GENERAL_PREMEM_CONFIG;
#pragma pack (pop)
#endif // _PCH_GENERAL_CONFIG_H_