/** @file
CIO2 policy
Copyright (c) 2017, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#ifndef _CIO2_CONFIG_H_
#define _CIO2_CONFIG_H_
#define CIO2_CONFIG_REVISION 1
extern EFI_GUID gCio2ConfigGuid;
#pragma pack (push,1)
///
/// The PCH_SKYCAM_CIO2_CONFIG block describes SkyCam CIO2 device.
///
typedef struct {
CONFIG_BLOCK_HEADER Header; ///< Config Block Header
/**
NOTE: For SKL PCH, while CIO2 is enabled,
RC will configure CIO2 controller as ACPI mode when PCH stepping < C0, and configure to PCI mode for C0 onwards.
**/
UINT32 DeviceEnable : 2; ///< 0: Disabled, 1: Enabled
UINT32 SkyCamPortATermOvrEnable : 1; ///< 0: Disable, 1: Enable - Termination override on port A
UINT32 SkyCamPortBTermOvrEnable : 1; ///< 0: Disable, 1: Enable - Termination override on port B
UINT32 SkyCamPortCTermOvrEnable : 1; ///< 0: Disable, 1: Enable - Termination override on port C
UINT32 SkyCamPortDTermOvrEnable : 1; ///< 0: Disable, 1: Enable - Termination override on port D
UINT32 RsvdBits : 26;
//
// CIO2 FLS registers configuration.
//
UINT32 PortATrimEnable : 1; ///< 0: Disable, 1: Enable - Port A Clk Trim
UINT32 PortBTrimEnable : 1; ///< 0: Disable, 1: Enable - Port B Clk Trim
UINT32 PortCTrimEnable : 1; ///< 0: Disable, 1: Enable - Port C Clk Trim
UINT32 PortDTrimEnable : 1; ///< 0: Disable, 1: Enable - Port D Clk Trim
UINT32 PortACtleEnable : 1; ///< 0: Disable, 1: Enable - Port A Ctle
UINT32 PortBCtleEnable : 1; ///< 0: Disable, 1: Enable - Port B Ctle
UINT32 PortCDCtleEnable : 1; ///< 0: Disable, 1: Enable - Port C/D Ctle
UINT32 RsvdBits0 : 25;
UINT32 PortACtleCapValue : 4; /// Port A Ctle Cap Value. Default is 0xE
UINT32 PortBCtleCapValue : 4; /// Port B Ctle Cap Value. Default is 0xE
UINT32 PortCDCtleCapValue : 4; /// Port C/D Ctle Cap Value. Default is 0xE
UINT32 PortACtleResValue : 5; /// Port A Ctle Res Value. Default is 0xD
UINT32 PortBCtleResValue : 5; /// Port B Ctle Res Value. Default is 0xD
UINT32 PortCDCtleResValue : 5; /// Port C/D Ctle Res Value. Default is 0xD
UINT32 RsvdBits1 : 5;
UINT32 PortAClkTrimValue : 4; /// Port A Clk Trim Value. Default is 0xA
UINT32 PortBClkTrimValue : 4; /// Port B Clk Trim Value. Default is 0xA
UINT32 PortCClkTrimValue : 4; /// Port C Clk Trim Value. Default is 0x9
UINT32 PortDClkTrimValue : 4; /// Port D Clk Trim Value. Default is 0xA
UINT32 PortADataTrimValue : 16; /// Port A Data Trim Value. Default is 0xBBBB
UINT32 PortBDataTrimValue : 16; /// Port B Data Trim Value. Default is 0xBBBB
UINT32 PortCDDataTrimValue : 16; /// Port C/D Data Trim Value. Default is 0xCCCC
} PCH_CIO2_CONFIG;
#pragma pack (pop)
#endif // _CIO2_CONFIG_H_