https://svn.code.sf.net/p/edk2/code/trunk/edk2/, which are for MinnowBoard MAX open source project. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: David Wei <david.wei@intel.com> Reviewed-by: Mike Wu <mike.wu@intel.com> Reviewed-by: Hot Tian <hot.tian@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16599 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			557 lines
		
	
	
		
			21 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			557 lines
		
	
	
		
			21 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/**
 | 
						|
**/
 | 
						|
/**
 | 
						|
 | 
						|
Copyright (c) 2013  - 2014, Intel Corporation. All rights reserved
 | 
						|
 | 
						|
  This program and the accompanying materials are licensed and made available under
 | 
						|
  the terms and conditions of the BSD License that accompanies this distribution.
 | 
						|
  The full text of the license may be found at
 | 
						|
  http://opensource.org/licenses/bsd-license.php.
 | 
						|
 | 
						|
  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
 | 
						|
  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 | 
						|
 | 
						|
 | 
						|
 | 
						|
  @file
 | 
						|
  PchPlatformPolicy.h
 | 
						|
 | 
						|
  @brief
 | 
						|
  PCH policy protocol produced by a platform driver specifying various
 | 
						|
  expected PCH settings. This protocol is consumed by the PCH drivers.
 | 
						|
 | 
						|
**/
 | 
						|
#ifndef _PCH_PLATFORM_POLICY_H_
 | 
						|
#define _PCH_PLATFORM_POLICY_H_
 | 
						|
 | 
						|
 | 
						|
//
 | 
						|
#include "PchRegs.h"
 | 
						|
#ifndef ECP_FLAG
 | 
						|
#include "Uefi.h"
 | 
						|
#endif
 | 
						|
 | 
						|
#define DXE_PCH_PLATFORM_POLICY_PROTOCOL_GUID \
 | 
						|
  { \
 | 
						|
    0x4b0165a9, 0x61d6, 0x4e23, 0xa0, 0xb5, 0x3e, 0xc7, 0x9c, 0x2e, 0x30, 0xd5 \
 | 
						|
  }
 | 
						|
extern EFI_GUID                                   gDxePchPlatformPolicyProtocolGuid;
 | 
						|
 | 
						|
///
 | 
						|
/// Forward reference for ANSI C compatibility
 | 
						|
///
 | 
						|
typedef struct _DXE_PCH_PLATFORM_POLICY_PROTOCOL  DXE_PCH_PLATFORM_POLICY_PROTOCOL;
 | 
						|
 | 
						|
///
 | 
						|
/// Protocol revision number
 | 
						|
/// Any backwards compatible changes to this protocol will result in an update in the revision number
 | 
						|
/// Major changes will require publication of a new protocol
 | 
						|
///
 | 
						|
/// Revision 1: Original version
 | 
						|
///
 | 
						|
#define DXE_PCH_PLATFORM_POLICY_PROTOCOL_REVISION_1 1
 | 
						|
#define DXE_PCH_PLATFORM_POLICY_PROTOCOL_REVISION_2 2
 | 
						|
#define DXE_PCH_PLATFORM_POLICY_PROTOCOL_REVISION_3 3
 | 
						|
#define DXE_PCH_PLATFORM_POLICY_PROTOCOL_REVISION_4 4
 | 
						|
#define DXE_PCH_PLATFORM_POLICY_PROTOCOL_REVISION_5 5
 | 
						|
#define DXE_PCH_PLATFORM_POLICY_PROTOCOL_REVISION_6 6
 | 
						|
#define DXE_PCH_PLATFORM_POLICY_PROTOCOL_REVISION_7 7
 | 
						|
#define DXE_PCH_PLATFORM_POLICY_PROTOCOL_REVISION_8 8
 | 
						|
#define DXE_PCH_PLATFORM_POLICY_PROTOCOL_REVISION_9 9
 | 
						|
#define DXE_PCH_PLATFORM_POLICY_PROTOCOL_REVISION_10 10
 | 
						|
#define DXE_PCH_PLATFORM_POLICY_PROTOCOL_REVISION_11 11
 | 
						|
#define DXE_PCH_PLATFORM_POLICY_PROTOCOL_REVISION_12 12
 | 
						|
 | 
						|
///
 | 
						|
/// Generic definitions for device enabling/disabling used by PCH code.
 | 
						|
///
 | 
						|
#define PCH_DEVICE_ENABLE   1
 | 
						|
#define PCH_DEVICE_DISABLE  0
 | 
						|
 | 
						|
///
 | 
						|
/// ---------------------------- Device Enabling ------------------------------
 | 
						|
///
 | 
						|
/// PCH Device enablings
 | 
						|
///
 | 
						|
typedef struct {
 | 
						|
  UINT8 Lan               : 1;    /// 0: Disable; 1: Enable
 | 
						|
  UINT8 Azalia            : 2;    /// 0: Disable; 1: Enable; 2: Auto
 | 
						|
  UINT8 Sata              : 1;    /// 0: Disable; 1: Enable
 | 
						|
  UINT8 Smbus             : 1;    /// 0: Disable; 1: Enable
 | 
						|
  UINT8 LpeEnabled        : 2;    /// 0: Disabled; 1: PCI Mode 2: ACPI Mode
 | 
						|
  UINT8 Reserved[1];              /// Reserved fields for future expansion w/o protocol change
 | 
						|
} PCH_DEVICE_ENABLING;
 | 
						|
 | 
						|
///
 | 
						|
/// ---------------------------- USB Config -----------------------------
 | 
						|
///
 | 
						|
///
 | 
						|
/// Overcurrent pins
 | 
						|
///
 | 
						|
typedef enum {
 | 
						|
  PchUsbOverCurrentPin0 = 0,
 | 
						|
  PchUsbOverCurrentPin1,
 | 
						|
  PchUsbOverCurrentPin2,
 | 
						|
  PchUsbOverCurrentPin3,
 | 
						|
  PchUsbOverCurrentPin4,
 | 
						|
  PchUsbOverCurrentPin5,
 | 
						|
  PchUsbOverCurrentPin6,
 | 
						|
  PchUsbOverCurrentPin7,
 | 
						|
  PchUsbOverCurrentPinSkip,
 | 
						|
  PchUsbOverCurrentPinMax
 | 
						|
} PCH_USB_OVERCURRENT_PIN;
 | 
						|
 | 
						|
typedef struct {
 | 
						|
  UINT8   Enable            : 1;    /// 0: Disable; 1: Enable. This would take effect while UsbPerPortCtl is enabled
 | 
						|
  UINT8   Panel             : 1;    /// 0: Back Panel Port; 1: Front Panel Port.
 | 
						|
  UINT8   Dock              : 1;    /// 0: Not docking port; 1: Docking Port.
 | 
						|
  UINT8   Rsvdbits          : 5;
 | 
						|
} PCH_USB_PORT_SETTINGS;
 | 
						|
 | 
						|
typedef struct {
 | 
						|
  UINT8 Enable              : 1;    /// 0: Disable; 1: Enable
 | 
						|
  UINT8 Rsvdbits            : 7;
 | 
						|
} PCH_USB20_CONTROLLER_SETTINGS;
 | 
						|
 | 
						|
typedef struct {
 | 
						|
  UINT8 Enable              : 2;    /// 0: 0: Disabled; 1: PCI Mode 2: ACPI Mode
 | 
						|
  UINT8 Rsvdbits            : 6;
 | 
						|
} PCH_USBOTG_CONTROLLER_SETTINGS;
 | 
						|
 | 
						|
#define PCH_XHCI_MODE_OFF         0
 | 
						|
#define PCH_XHCI_MODE_ON          1
 | 
						|
#define PCH_XHCI_MODE_AUTO        2
 | 
						|
#define PCH_XHCI_MODE_SMARTAUTO   3
 | 
						|
 | 
						|
#define PCH_EHCI_DEBUG_OFF        0
 | 
						|
#define PCH_EHCI_DEBUG_ON         1
 | 
						|
 | 
						|
#define PCH_USB_FRONT_PANEL       1
 | 
						|
#define PCH_USB_BACK_PANEL        0
 | 
						|
 | 
						|
typedef struct {
 | 
						|
  UINT8 Mode               : 2;    /// 0: Disable; 1: Enable, 2: Auto, 3: Smart Auto
 | 
						|
  UINT8 PreBootSupport     : 1;    /// 0: No xHCI driver available; 1: xHCI driver available
 | 
						|
  UINT8 XhciStreams        : 1;    /// 0: Disable; 1: Enable
 | 
						|
  UINT8 Rsvdbits           : 4;
 | 
						|
} PCH_USB30_CONTROLLER_SETTINGS;
 | 
						|
 | 
						|
typedef struct {
 | 
						|
  UINT8 UsbPerPortCtl       : 1;    /// 0: Disable; 1: Enable Per-port enable control
 | 
						|
  UINT8 Ehci1Usbr           : 1;    /// 0: Disable; 1: Enable EHCI 1 USBR
 | 
						|
  UINT8 RsvdBits            : 6;
 | 
						|
  PCH_USB_PORT_SETTINGS          PortSettings[PCH_USB_MAX_PHYSICAL_PORTS];
 | 
						|
  PCH_USB20_CONTROLLER_SETTINGS  Usb20Settings[PchEhciControllerMax];
 | 
						|
  PCH_USB30_CONTROLLER_SETTINGS  Usb30Settings;
 | 
						|
  PCH_USBOTG_CONTROLLER_SETTINGS UsbOtgSettings;
 | 
						|
  PCH_USB_OVERCURRENT_PIN        Usb20OverCurrentPins[PCH_USB_MAX_PHYSICAL_PORTS];
 | 
						|
  PCH_USB_OVERCURRENT_PIN        Usb30OverCurrentPins[PCH_XHCI_MAX_USB3_PORTS];
 | 
						|
  ///
 | 
						|
  /// The length of Usb Port to configure the USB transmitter,
 | 
						|
  /// Bits [16:4] represents length of Usb Port in inches using octal format and [3:0] is for the decimal Point.
 | 
						|
  ///
 | 
						|
  UINT16                        Usb20PortLength[PCH_EHCI_MAX_PORTS];
 | 
						|
  UINT16                        EhciDebug;
 | 
						|
  UINT16                        UsbXhciLpmSupport;
 | 
						|
 | 
						|
} PCH_USB_CONFIG;
 | 
						|
 | 
						|
///
 | 
						|
/// ---------------------------- PCI Express Config ----------------------
 | 
						|
///
 | 
						|
/// The values before AutoConfig match the setting of PCI Express Base Specification 1.1, please be careful for adding new feature
 | 
						|
///
 | 
						|
typedef enum {
 | 
						|
  PchPcieAspmDisabled,
 | 
						|
  PchPcieAspmL0s,
 | 
						|
  PchPcieAspmL1,
 | 
						|
  PchPcieAspmL0sL1,
 | 
						|
  PchPcieAspmAutoConfig,
 | 
						|
  PchPcieAspmMax
 | 
						|
} PCH_PCI_EXPRESS_ASPM_CONTROL;
 | 
						|
 | 
						|
///
 | 
						|
/// Refer to PCH EDS for the PCH implementation values corresponding
 | 
						|
/// to below PCI-E spec defined ranges
 | 
						|
///
 | 
						|
typedef enum {
 | 
						|
  PchPciECompletionTO_Default,
 | 
						|
  PchPciECompletionTO_50_100us,
 | 
						|
  PchPciECompletionTO_1_10ms,
 | 
						|
  PchPciECompletionTO_16_55ms,
 | 
						|
  PchPciECompletionTO_65_210ms,
 | 
						|
  PchPciECompletionTO_260_900ms,
 | 
						|
  PchPciECompletionTO_1_3P5s,
 | 
						|
  PchPciECompletionTO_4_13s,
 | 
						|
  PchPciECompletionTO_17_64s,
 | 
						|
  PchPciECompletionTO_Disabled
 | 
						|
} PCH_PCIE_COMPLETION_TIMEOUT;
 | 
						|
 | 
						|
typedef struct {
 | 
						|
  UINT8 Enable                          : 1;    /// Root Port enabling, 0: Disable; 1: Enable.
 | 
						|
  UINT8 Hide                            : 1;    /// Whether or not to hide the configuration space of this port
 | 
						|
  UINT8 SlotImplemented                 : 1;
 | 
						|
  UINT8 HotPlug                         : 1;
 | 
						|
  UINT8 PmSci                           : 1;
 | 
						|
  UINT8 ExtSync                         : 1;    /// Extended Synch
 | 
						|
  UINT8 Rsvdbits                        : 2;
 | 
						|
  ///
 | 
						|
  /// Error handlings
 | 
						|
  ///
 | 
						|
  UINT8 UnsupportedRequestReport        : 1;
 | 
						|
  UINT8 FatalErrorReport                : 1;
 | 
						|
  UINT8 NoFatalErrorReport              : 1;
 | 
						|
  UINT8 CorrectableErrorReport          : 1;
 | 
						|
  UINT8 PmeInterrupt                    : 1;
 | 
						|
  UINT8 SystemErrorOnFatalError         : 1;
 | 
						|
  UINT8 SystemErrorOnNonFatalError      : 1;
 | 
						|
  UINT8 SystemErrorOnCorrectableError   : 1;
 | 
						|
 | 
						|
  UINT8 AdvancedErrorReporting          : 1;
 | 
						|
  UINT8 TransmitterHalfSwing            : 1;
 | 
						|
  UINT8 Reserved                        : 6;    /// Reserved fields for future expansion w/o protocol change
 | 
						|
 | 
						|
  UINT8 FunctionNumber;                         /// The function number this root port is mapped to.
 | 
						|
  UINT8 PhysicalSlotNumber;
 | 
						|
  PCH_PCIE_COMPLETION_TIMEOUT   CompletionTimeout;
 | 
						|
  PCH_PCI_EXPRESS_ASPM_CONTROL  Aspm;
 | 
						|
} PCH_PCI_EXPRESS_ROOT_PORT_CONFIG;
 | 
						|
 | 
						|
typedef struct {
 | 
						|
  /**
 | 
						|
    VendorId
 | 
						|
 | 
						|
      The vendor Id of Pci Express card ASPM setting override, 0xFFFF means any Vendor ID
 | 
						|
 | 
						|
    DeviceId
 | 
						|
 | 
						|
      The Device Id of Pci Express card ASPM setting override, 0xFFFF means any Device ID
 | 
						|
 | 
						|
    RevId
 | 
						|
 | 
						|
      The Rev Id of Pci Express card ASPM setting override, 0xFF means all steppings
 | 
						|
 | 
						|
    BaseClassCode
 | 
						|
 | 
						|
      The Base Class Code of Pci Express card ASPM setting override, 0xFF means all base class
 | 
						|
 | 
						|
    SubClassCode
 | 
						|
 | 
						|
      The Sub Class Code of Pci Express card ASPM setting override, 0xFF means all sub class
 | 
						|
 | 
						|
 | 
						|
    EndPointAspm
 | 
						|
 | 
						|
      The override ASPM setting from End point
 | 
						|
  **/
 | 
						|
  UINT16                        VendorId;
 | 
						|
  UINT16                        DeviceId;
 | 
						|
  UINT8                         RevId;
 | 
						|
  UINT8                         BaseClassCode;
 | 
						|
  UINT8                         SubClassCode;
 | 
						|
  PCH_PCI_EXPRESS_ASPM_CONTROL  EndPointAspm;
 | 
						|
} PCH_PCIE_DEVICE_ASPM_OVERRIDE;
 | 
						|
 | 
						|
typedef struct {
 | 
						|
  UINT16  VendorId; ///< PCI configuration space offset 0
 | 
						|
  UINT16  DeviceId; ///< PCI configuration space offset 2
 | 
						|
  UINT8   RevId;    ///< PCI configuration space offset 8; 0xFF means all steppings
 | 
						|
  /**
 | 
						|
    SnoopLatency bit definition
 | 
						|
    Note: All Reserved bits must be set to 0
 | 
						|
 | 
						|
    BIT[15]     - When set to 1b, indicates that the values in bits 9:0 are valid
 | 
						|
                  When clear values in bits 9:0 will be ignored
 | 
						|
    BITS[14:13] - Reserved
 | 
						|
    BITS[12:10] - Value in bits 9:0 will be multiplied with the scale in these bits
 | 
						|
                  000b - 1 ns
 | 
						|
                  001b - 32 ns
 | 
						|
                  010b - 1024 ns
 | 
						|
                  011b - 32,768 ns
 | 
						|
                  100b - 1,048,576 ns
 | 
						|
                  101b - 33,554,432 ns
 | 
						|
                  110b - Reserved
 | 
						|
                  111b - Reserved
 | 
						|
    BITS[9:0]   - Snoop Latency Value. The value in these bits will be multiplied with
 | 
						|
                  the scale in bits 12:10
 | 
						|
  **/
 | 
						|
  UINT16  SnoopLatency;
 | 
						|
  /**
 | 
						|
    NonSnoopLatency bit definition
 | 
						|
    Note: All Reserved bits must be set to 0
 | 
						|
 | 
						|
    BIT[15]     - When set to 1b, indicates that the values in bits 9:0 are valid
 | 
						|
                  When clear values in bits 9:0 will be ignored
 | 
						|
    BITS[14:13] - Reserved
 | 
						|
    BITS[12:10] - Value in bits 9:0 will be multiplied with the scale in these bits
 | 
						|
                  000b - 1 ns
 | 
						|
                  001b - 32 ns
 | 
						|
                  010b - 1024 ns
 | 
						|
                  011b - 32,768 ns
 | 
						|
                  100b - 1,048,576 ns
 | 
						|
                  101b - 33,554,432 ns
 | 
						|
                  110b - Reserved
 | 
						|
                  111b - Reserved
 | 
						|
    BITS[9:0]   - Non Snoop Latency Value. The value in these bits will be multiplied with
 | 
						|
                  the scale in bits 12:10
 | 
						|
  **/
 | 
						|
  UINT16  NonSnoopLatency;
 | 
						|
} PCH_PCIE_DEVICE_LTR_OVERRIDE;
 | 
						|
 | 
						|
typedef struct {
 | 
						|
  ///
 | 
						|
  /// Temp Bus Number range available to be assigned to
 | 
						|
  /// each root port and its downstream devices for initialization
 | 
						|
  /// of these devices before PCI Bus enumeration
 | 
						|
  ///
 | 
						|
  UINT8                             TempRootPortBusNumMin;
 | 
						|
  UINT8                             TempRootPortBusNumMax;
 | 
						|
  PCH_PCI_EXPRESS_ROOT_PORT_CONFIG  RootPort[PCH_PCIE_MAX_ROOT_PORTS];
 | 
						|
  BOOLEAN                           RootPortClockGating;
 | 
						|
  UINT8                             NumOfDevAspmOverride;     /// Number of PCI Express card Aspm setting override
 | 
						|
  PCH_PCIE_DEVICE_ASPM_OVERRIDE     *DevAspmOverride;         /// The Pointer which is point to Pci Express card Aspm setting override
 | 
						|
  UINT8                             PcieDynamicGating;        /// Need PMC enable it first from PMC 0x3_12 MCU 318.
 | 
						|
} PCH_PCI_EXPRESS_CONFIG;
 | 
						|
 | 
						|
 | 
						|
///
 | 
						|
/// ---------------------------- SATA Config -----------------------------
 | 
						|
///
 | 
						|
typedef enum {
 | 
						|
  PchSataSpeedSupportGen1 = 1,
 | 
						|
  PchSataSpeedSupportGen2
 | 
						|
} PCH_SATA_SPEED_SUPPORT;
 | 
						|
 | 
						|
typedef struct {
 | 
						|
  UINT8 Enable          : 1;    /// 0: Disable; 1: Enable
 | 
						|
  UINT8 HotPlug         : 1;    /// 0: Disable; 1: Enable
 | 
						|
  UINT8 MechSw          : 1;    /// 0: Disable; 1: Enable
 | 
						|
  UINT8 External        : 1;    /// 0: Disable; 1: Enable
 | 
						|
  UINT8 SpinUp          : 1;    /// 0: Disable; 1: Enable the COMRESET initialization Sequence to the device
 | 
						|
  UINT8 Rsvdbits        : 3;    /// Reserved fields for future expansion w/o protocol change
 | 
						|
} PCH_SATA_PORT_SETTINGS;
 | 
						|
 | 
						|
typedef struct {
 | 
						|
  PCH_SATA_PORT_SETTINGS  PortSettings[PCH_AHCI_MAX_PORTS];
 | 
						|
  UINT8 RaidAlternateId : 1;    /// 0: Disable; 1: Enable
 | 
						|
  UINT8 Raid0           : 1;    /// 0: Disable; 1: Enable RAID0
 | 
						|
  UINT8 Raid1           : 1;    /// 0: Disable; 1: Enable RAID1
 | 
						|
  UINT8 Raid10          : 1;    /// 0: Disable; 1: Enable RAID10
 | 
						|
  UINT8 Raid5           : 1;    /// 0: Disable; 1: Enable RAID5
 | 
						|
  UINT8 Irrt            : 1;    /// 0: Disable; 1: Enable Intel Rapid Recovery Technology
 | 
						|
  UINT8 OromUiBanner    : 1;    /// 0: Disable; 1: Enable OROM UI and BANNER
 | 
						|
  UINT8 HddUnlock       : 1;    /// 0: Disable; 1: Indicates that the HDD password unlock in the OS is enabled
 | 
						|
 | 
						|
  UINT8 LedLocate       : 1;    /// 0: Disable; 1: Indicates that the LED/SGPIO hardware is attached and ping to locate feature is enabled on the OS
 | 
						|
  UINT8 IrrtOnly        : 1;    /// 0: Disable; 1: Allow only IRRT drives to span internal and external ports
 | 
						|
  UINT8 TestMode        : 1;    /// 0: Disable; 1: Allow entrance to the PCH SATA test modes
 | 
						|
  UINT8 SalpSupport     : 1;    /// 0: Disable; 1: Enable Aggressive Link Power Management
 | 
						|
  UINT8 LegacyMode      : 1;    /// 0: Native PCI mode; 1: Legacy mode, when SATA controller is operating in IDE mode
 | 
						|
  UINT8 SpeedSupport    : 4;    /// Indicates the maximum speed the SATA controller can support
 | 
						|
  /// 1h: 1.5 Gb/s (Gen 1); 2h: 3 Gb/s(Gen 2)
 | 
						|
 | 
						|
  UINT8 Rsvdbits        : 7;    // Reserved fields for future expansion w/o protocol change
 | 
						|
} PCH_SATA_CONFIG;
 | 
						|
///
 | 
						|
/// --------------------------- AZALIA Config ------------------------------
 | 
						|
///
 | 
						|
typedef struct {
 | 
						|
  UINT32  VendorDeviceId;
 | 
						|
  UINT16  SubSystemId;
 | 
						|
  UINT8   RevisionId;                       /// 0xFF applies to all steppings
 | 
						|
  UINT8   FrontPanelSupport;
 | 
						|
  UINT16  NumberOfRearJacks;
 | 
						|
  UINT16  NumberOfFrontJacks;
 | 
						|
} PCH_AZALIA_VERB_TABLE_HEADER;
 | 
						|
 | 
						|
typedef struct {
 | 
						|
  PCH_AZALIA_VERB_TABLE_HEADER  VerbTableHeader;
 | 
						|
  UINT32                        *VerbTableData;
 | 
						|
} PCH_AZALIA_VERB_TABLE;
 | 
						|
 | 
						|
typedef struct {
 | 
						|
  UINT8                 Pme       : 1;      /// 0: Disable; 1: Enable
 | 
						|
  UINT8                 DS        : 1;      /// 0: Docking is not supported; 1:Docking is supported
 | 
						|
  UINT8                 DA        : 1;      /// 0: Docking is not attached; 1:Docking is attached
 | 
						|
  UINT8                 HdmiCodec : 1;      /// 0: Disable; 1: Enable
 | 
						|
  UINT8                 AzaliaVCi : 1;      /// 0: Disable; 1: Enable
 | 
						|
  UINT8                 Rsvdbits  : 3;
 | 
						|
  UINT8                 AzaliaVerbTableNum; /// Number of verb tables provided by platform
 | 
						|
  PCH_AZALIA_VERB_TABLE *AzaliaVerbTable;   /// Pointer to the actual verb table(s)
 | 
						|
  UINT16                ResetWaitTimer;     /// The delay timer after Azalia reset, the value is number of microseconds
 | 
						|
} PCH_AZALIA_CONFIG;
 | 
						|
 | 
						|
///
 | 
						|
/// --------------------------- Smbus Config ------------------------------
 | 
						|
///
 | 
						|
typedef struct {
 | 
						|
  UINT8 NumRsvdSmbusAddresses;
 | 
						|
  UINT8 *RsvdSmbusAddressTable;
 | 
						|
} PCH_SMBUS_CONFIG;
 | 
						|
 | 
						|
///
 | 
						|
/// --------------------------- Miscellaneous PM Config ------------------------------
 | 
						|
///
 | 
						|
typedef struct {
 | 
						|
  UINT8 MeWakeSts           : 1;
 | 
						|
  UINT8 MeHrstColdSts       : 1;
 | 
						|
  UINT8 MeHrstWarmSts       : 1;
 | 
						|
  UINT8 MeHostPowerDn       : 1;
 | 
						|
  UINT8 WolOvrWkSts         : 1;
 | 
						|
  UINT8 Rsvdbits            : 3;
 | 
						|
} PCH_POWER_RESET_STATUS;
 | 
						|
 | 
						|
typedef struct {
 | 
						|
  UINT8  PmeB0S5Dis         : 1;
 | 
						|
  UINT8  WolEnableOverride  : 1;
 | 
						|
  UINT8  Rsvdbits           : 6;
 | 
						|
} PCH_WAKE_CONFIG;
 | 
						|
 | 
						|
typedef enum {
 | 
						|
  PchSlpS360us,
 | 
						|
  PchSlpS31ms,
 | 
						|
  PchSlpS350ms,
 | 
						|
  PchSlpS32s
 | 
						|
} PCH_SLP_S3_MIN_ASSERT;
 | 
						|
 | 
						|
typedef enum {
 | 
						|
  PchSlpS4PchTime,   /// The time defined in EDS Power Sequencing and Reset Signal Timings table
 | 
						|
  PchSlpS41s,
 | 
						|
  PchSlpS42s,
 | 
						|
  PchSlpS43s,
 | 
						|
  PchSlpS44s
 | 
						|
} PCH_SLP_S4_MIN_ASSERT;
 | 
						|
 | 
						|
typedef struct {
 | 
						|
  ///
 | 
						|
  /// Specify which Power/Reset bits need to be cleared by
 | 
						|
  /// the PCH Init Driver.
 | 
						|
  /// Usually platform drivers take care of these bits, but if
 | 
						|
  /// not, let PCH Init driver clear the bits.
 | 
						|
  ///
 | 
						|
  PCH_POWER_RESET_STATUS  PowerResetStatusClear;
 | 
						|
  ///
 | 
						|
  /// Specify Wake Policy
 | 
						|
  ///
 | 
						|
  PCH_WAKE_CONFIG         WakeConfig;
 | 
						|
  ///
 | 
						|
  /// SLP_XX Minimum Assertion Width Policy
 | 
						|
  ///
 | 
						|
  PCH_SLP_S3_MIN_ASSERT   PchSlpS3MinAssert;
 | 
						|
  PCH_SLP_S4_MIN_ASSERT   PchSlpS4MinAssert;
 | 
						|
  UINT8                   SlpStrchSusUp : 1;  /// Enable/Disable SLP_X Stretching After SUS Well Power Up
 | 
						|
  UINT8                   SlpLanLowDc   : 1;
 | 
						|
  UINT8                   Rsvdbits      : 6;
 | 
						|
} PCH_MISC_PM_CONFIG;
 | 
						|
 | 
						|
///
 | 
						|
/// --------------------------- Subsystem Vendor ID / Subsystem ID Config -----
 | 
						|
///
 | 
						|
typedef struct {
 | 
						|
  UINT16  SubSystemVendorId;
 | 
						|
  UINT16  SubSystemId;
 | 
						|
} PCH_DEFAULT_SVID_SID;
 | 
						|
 | 
						|
///
 | 
						|
/// --------------------------- Lock Down Config ------------------------------
 | 
						|
///
 | 
						|
typedef struct {
 | 
						|
  UINT8  GlobalSmi      : 1;
 | 
						|
  UINT8  BiosInterface  : 1;
 | 
						|
  UINT8  RtcLock        : 1;
 | 
						|
  UINT8  BiosLock       : 1;
 | 
						|
  UINT8  Rsvdbits       : 4;
 | 
						|
  UINT8  PchBiosLockSwSmiNumber;
 | 
						|
} PCH_LOCK_DOWN_CONFIG;
 | 
						|
//
 | 
						|
// --------------------------- Serial IRQ Config ------------------------------
 | 
						|
//
 | 
						|
typedef enum {
 | 
						|
  PchQuietMode,
 | 
						|
  PchContinuousMode
 | 
						|
} PCH_SIRQ_MODE;
 | 
						|
///
 | 
						|
/// Refer to SoC EDS for the details of Start Frame Pulse Width in Continuous and Quiet mode
 | 
						|
///
 | 
						|
 | 
						|
typedef struct {
 | 
						|
  BOOLEAN                 SirqEnable;       /// Determines if enable Serial IRQ
 | 
						|
  PCH_SIRQ_MODE           SirqMode;         /// Serial IRQ Mode Select
 | 
						|
} PCH_LPC_SIRQ_CONFIG;
 | 
						|
 | 
						|
///
 | 
						|
/// --------------------------- Power Optimizer Config ------------------------------
 | 
						|
///
 | 
						|
typedef struct {
 | 
						|
  UINT8  NumOfDevLtrOverride;                            /// Number of Pci Express card listed in LTR override table
 | 
						|
  PCH_PCIE_DEVICE_LTR_OVERRIDE *DevLtrOverride;          /// Pointer to Pci Express devices LTR override table
 | 
						|
} PCH_PWR_OPT_CONFIG;
 | 
						|
 | 
						|
///
 | 
						|
/// --------------------- Low Power Input Output Config ------------------------
 | 
						|
///
 | 
						|
typedef struct {
 | 
						|
  UINT8                   LpssPciModeEnabled    : 1;    /// Determines if LPSS PCI Mode enabled
 | 
						|
  UINT8                   Dma0Enabled           : 1;     /// Determines if LPSS DMA1 enabled
 | 
						|
  UINT8                   Dma1Enabled           : 1;     /// Determines if LPSS DMA2 enabled
 | 
						|
  UINT8                   I2C0Enabled           : 1;     /// Determines if LPSS I2C #1 enabled
 | 
						|
  UINT8                   I2C1Enabled           : 1;     /// Determines if LPSS I2C #2 enabled
 | 
						|
  UINT8                   I2C2Enabled           : 1;     /// Determines if LPSS I2C #3 enabled
 | 
						|
  UINT8                   I2C3Enabled           : 1;     /// Determines if LPSS I2C #4 enabled
 | 
						|
  UINT8                   I2C4Enabled           : 1;     /// Determines if LPSS I2C #5 enabled
 | 
						|
  UINT8                   I2C5Enabled           : 1;     /// Determines if LPSS I2C #6 enabled
 | 
						|
  UINT8                   I2C6Enabled           : 1;     /// Determines if LPSS I2C #7 enabled
 | 
						|
  UINT8                   Pwm0Enabled           : 1;     /// Determines if LPSS PWM #1 enabled
 | 
						|
  UINT8                   Pwm1Enabled           : 1;     /// Determines if LPSS PWM #2 enabled
 | 
						|
  UINT8                   Hsuart0Enabled        : 1;     /// Determines if LPSS HSUART #1 enabled
 | 
						|
  UINT8                   Hsuart1Enabled        : 1;     /// Determines if LPSS HSUART #2 enabled
 | 
						|
  UINT8                   SpiEnabled            : 1;     /// Determines if LPSS SPI enabled
 | 
						|
  UINT8                   Rsvdbits              : 2;
 | 
						|
} PCH_LPSS_CONFIG;
 | 
						|
 | 
						|
///
 | 
						|
/// ----------------------------- SCC Config --------------------------------
 | 
						|
///
 | 
						|
typedef struct {
 | 
						|
  UINT8                   eMMCEnabled           : 1;      /// Determines if SCC eMMC enabled
 | 
						|
  UINT8                   SdioEnabled           : 1;      /// Determines if SCC SDIO enabled
 | 
						|
  UINT8                   SdcardEnabled         : 1;      /// Determines if SCC SD Card enabled
 | 
						|
  UINT8                   HsiEnabled            : 1;      /// Determines if SCC HSI enabled
 | 
						|
  UINT8                   eMMC45Enabled         : 1;      /// Determines if SCC eMMC 4.5 enabled
 | 
						|
  UINT8                   eMMC45DDR50Enabled    : 1;  /// Determines if DDR50 enabled for eMMC 4.5
 | 
						|
  UINT8                   eMMC45HS200Enabled    : 1;  /// Determines if HS200nabled for eMMC 4.5
 | 
						|
  UINT8                   Rsvdbits              : 1;
 | 
						|
  UINT8                   SdCardSDR25Enabled    : 1;    /// Determines if SDR25 for SD Card
 | 
						|
  UINT8                   SdCardDDR50Enabled    : 1;    /// Determines if DDR50 for SD Card
 | 
						|
  UINT8                   Rsvdbits1             : 6;
 | 
						|
  UINT8                   eMMC45RetuneTimerValue;  /// Determines retune timer value.
 | 
						|
} PCH_SCC_CONFIG;
 | 
						|
 | 
						|
///
 | 
						|
/// ------------ General PCH Platform Policy protocol definition ------------
 | 
						|
///
 | 
						|
struct _DXE_PCH_PLATFORM_POLICY_PROTOCOL {
 | 
						|
  UINT8                   Revision;
 | 
						|
  UINT8                   BusNumber;  /// PCI Bus Number of the PCH device
 | 
						|
  PCH_DEVICE_ENABLING     *DeviceEnabling;
 | 
						|
  PCH_USB_CONFIG          *UsbConfig;
 | 
						|
  PCH_PCI_EXPRESS_CONFIG  *PciExpressConfig;
 | 
						|
 | 
						|
  PCH_SATA_CONFIG         *SataConfig;
 | 
						|
  PCH_AZALIA_CONFIG       *AzaliaConfig;
 | 
						|
  PCH_SMBUS_CONFIG        *SmbusConfig;
 | 
						|
  PCH_MISC_PM_CONFIG      *MiscPmConfig;
 | 
						|
  PCH_DEFAULT_SVID_SID    *DefaultSvidSid;
 | 
						|
  PCH_LOCK_DOWN_CONFIG    *LockDownConfig;
 | 
						|
  PCH_LPC_SIRQ_CONFIG     *SerialIrqConfig;
 | 
						|
  PCH_PWR_OPT_CONFIG      *PwrOptConfig;
 | 
						|
  PCH_LPSS_CONFIG         *LpssConfig;
 | 
						|
  PCH_SCC_CONFIG          *SccConfig;
 | 
						|
  UINT8                   IdleReserve;
 | 
						|
  UINT8                   EhciPllCfgEnable;
 | 
						|
  UINT8                   AcpiHWRed; //Hardware Reduced Mode
 | 
						|
};
 | 
						|
 | 
						|
#endif
 |