aboutsummaryrefslogtreecommitdiff
path: root/src/vendorcode/amd/agesa/f12/Proc/GNB/Common/GnbPcie.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/vendorcode/amd/agesa/f12/Proc/GNB/Common/GnbPcie.h')
-rw-r--r--src/vendorcode/amd/agesa/f12/Proc/GNB/Common/GnbPcie.h370
1 files changed, 0 insertions, 370 deletions
diff --git a/src/vendorcode/amd/agesa/f12/Proc/GNB/Common/GnbPcie.h b/src/vendorcode/amd/agesa/f12/Proc/GNB/Common/GnbPcie.h
deleted file mode 100644
index 4c83b53868..0000000000
--- a/src/vendorcode/amd/agesa/f12/Proc/GNB/Common/GnbPcie.h
+++ /dev/null
@@ -1,370 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * PCIe component definitions.
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: AGESA
- * @e sub-project: GNB
- * @e \$Revision: 38931 $ @e \$Date: 2010-10-01 15:50:05 -0700 (Fri, 01 Oct 2010) $
- *
- */
-/*
-*****************************************************************************
-*
-* Copyright (c) 2011, Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* ***************************************************************************
-
-*
-*/
-
-#ifndef _GNBPCIE_H_
-#define _GNBPCIE_H_
-
-#pragma pack (push, 1)
-
-#define MAX_NUMBER_OF_COMPLEXES 4
-
-#define DESCRIPTOR_TERMINATE_GNB 0x40000000ull
-#define DESCRIPTOR_TERMINATE_TOPOLOGY 0x20000000ull
-#define DESCRIPTOR_ALLOCATED 0x10000000ull
-#define DESCRIPTOR_VIRTUAL 0x08000000ull
-#define DESCRIPTOR_PLATFORM 0x04000000ull
-#define DESCRIPTOR_COMPLEX 0x02000000ull
-#define DESCRIPTOR_SILICON 0x01000000ull
-#define DESCRIPTOR_PCIE_WRAPPER 0x00800000ull
-#define DESCRIPTOR_DDI_WRAPPER 0x00400000ull
-#define DESCRIPTOR_PCIE_ENGINE 0x00200000ull
-#define DESCRIPTOR_DDI_ENGINE 0x00100000ull
-
-#define DESCRIPTOR_ALL_WRAPPERS (DESCRIPTOR_DDI_WRAPPER | DESCRIPTOR_PCIE_WRAPPER)
-#define DESCRIPTOR_ALL_ENGINES (DESCRIPTOR_DDI_ENGINE | DESCRIPTOR_PCIE_ENGINE)
-
-#define DESCRIPTOR_ALL_TYPES (DESCRIPTOR_ALL_WRAPPERS | DESCRIPTOR_ALL_ENGINES | DESCRIPTOR_SILICON | DESCRIPTOR_PLATFORM)
-
-#define UNUSED_LANE_ID 128
-//#define PCIE_LINK_RECEIVER_DETECTION_POOLING (60 * 1000)
-//#define PCIE_LINK_L0_POOLING (60 * 1000)
-//#define PCIE_LINK_GPIO_RESET_ASSERT_TIME (2 * 1000)
-//#define PCIE_LINK_RESET_TO_TRAINING_TIME (2 * 1000)
-
-// Get lowest PHY lane on engine
-#define PcieLibGetLoPhyLane(Engine) (Engine != NULL ? ((Engine->EngineData.StartLane > Engine->EngineData.EndLane) ? Engine->EngineData.EndLane : Engine->EngineData.StartLane) : 0xFF)
-// Get highest PHY lane on engine
-#define PcieLibGetHiPhyLane(Engine) (Engine != NULL ? ((Engine->EngineData.StartLane > Engine->EngineData.EndLane) ? Engine->EngineData.StartLane : Engine->EngineData.EndLane) : 0xFF)
-// Get number of lanes on wrapper
-#define PcieLibWrapperNumberOfLanes(Wrapper) (Wrapper != NULL ? ((UINT8)(Wrapper->EndPhyLane - Wrapper->StartPhyLane + 1)) : 0)
-// Check if virtual descriptor
-#define PcieLibIsVirtualDesciptor(Descriptor) (Descriptor != NULL ? ((Descriptor->Header.DescriptorFlags & DESCRIPTOR_VIRTUAL) != 0) : (1==0))
-// Check if it is allocated descriptor
-#define PcieLibIsEngineAllocated(Descriptor) (Descriptor != NULL ? ((Descriptor->Header.DescriptorFlags & DESCRIPTOR_ALLOCATED) != 0) : (1==0))
-// Check if it is last descriptor in list
-#define PcieLibIsLastDescriptor(Descriptor) (Descriptor != NULL ? ((Descriptor->Header.DescriptorFlags & DESCRIPTOR_TERMINATE_LIST) != 0) : (1==1))
-// Check if descriptor a PCIe engine
-#define PcieLibIsPcieEngine(Descriptor) (Descriptor != NULL ? ((Descriptor->Header.DescriptorFlags & DESCRIPTOR_PCIE_ENGINE) != 0) : (1==0))
-// Check if descriptor a DDI engine
-#define PcieLibIsDdiEngine(Descriptor) (Descriptor != NULL ? ((Descriptor->Header.DescriptorFlags & DESCRIPTOR_DDI_ENGINE) != 0) : (1==0))
-// Check if descriptor a DDI wrapper
-#define PcieLibIsDdiWrapper(Descriptor) (Descriptor != NULL ? ((Descriptor->Header.DescriptorFlags & DESCRIPTOR_DDI_WRAPPER) != 0) : (1==0))
-// Check if descriptor a PCIe wrapper
-#define PcieLibIsPcieWrapper(Descriptor) (Descriptor != NULL ? ((Descriptor->Header.DescriptorFlags & DESCRIPTOR_PCIE_WRAPPER) != 0) : (1==0))
-// Check if descriptor a PCIe wrapper
-#define PcieLibGetNextDescriptor(Descriptor) (Descriptor != NULL ? (((Descriptor->Header.DescriptorFlags & DESCRIPTOR_TERMINATE_LIST) != 0) ? NULL : ((++Descriptor) != NULL ? Descriptor : NULL)) : NULL)
-
-
-#define LANE_TYPE_PCIE_CORE_CONFIG 0x00000001
-#define LANE_TYPE_PCIE_CORE_ALLOC 0x00000002
-#define LANE_TYPE_PCIE_CORE_ACTIVE 0x00000004
-#define LANE_TYPE_PCIE_SB_CORE_CONFIG 0x00000008
-#define LANE_TYPE_PCIE_CORE_HOTPLUG 0x00000010
-#define LANE_TYPE_PCIE_CORE_ALLOC_ACTIVE 0x00000020
-#define LANE_TYPE_PCIE_PHY 0x00000100
-#define LANE_TYPE_PCIE_PHY_NATIVE 0x00000200
-#define LANE_TYPE_PCIE_PHY_NATIVE_ACTIVE 0x00000400
-#define LANE_TYPE_PCIE_PHY_NATIVE_HOTPLUG 0x00000800
-#define LANE_TYPE_PCIE_PHY_NATIVE_ALLOC_ACTIVE 0x00001000
-#define LANE_TYPE_DDI_PHY 0x00010000
-#define LANE_TYPE_DDI_PHY_NATIVE 0x00020000
-#define LANE_TYPE_DDI_PHY_NATIVE_ACTIVE 0x00040000
-#define LANE_TYPE_PHY_NATIVE_ALL 0x00100000
-#define LANE_TYPE_CORE_ALL LANE_TYPE_PHY_NATIVE_ALL
-#define LANE_TYPE_ALL LANE_TYPE_PHY_NATIVE_ALL
-
-#define LANE_TYPE_PCIE_LANES (LANE_TYPE_PCIE_CORE_ACTIVE | LANE_TYPE_PCIE_SB_CORE_CONFIG | \
- LANE_TYPE_PCIE_CORE_HOTPLUG | LANE_TYPE_PCIE_CORE_ALLOC | \
- LANE_TYPE_PCIE_PHY | LANE_TYPE_PCIE_PHY_NATIVE | \
- LANE_TYPE_PCIE_PHY_NATIVE_ACTIVE | LANE_TYPE_PCIE_PHY_NATIVE_HOTPLUG | \
- LANE_TYPE_PCIE_CORE_CONFIG | LANE_TYPE_PCIE_PHY_NATIVE_ALLOC_ACTIVE | \
- LANE_TYPE_PCIE_CORE_ALLOC_ACTIVE)
-
-#define LANE_TYPE_DDI_LANES (LANE_TYPE_DDI_PHY | LANE_TYPE_DDI_PHY_NATIVE | LANE_TYPE_DDI_PHY_NATIVE_ACTIVE)
-
-
-#define INIT_STATUS_PCIE_PORT_GEN2_RECOVERY 0x00000001ull
-#define INIT_STATUS_PCIE_PORT_BROKEN_LANE_RECOVERY 0x00000002ull
-#define INIT_STATUS_PCIE_PORT_TRAINING_FAIL 0x00000004ull
-#define INIT_STATUS_PCIE_TRAINING_SUCCESS 0x00000008ull
-#define INIT_STATUS_PCIE_EP_NOT_PRESENT 0x00000010ull
-#define INIT_STATUS_PCIE_PORT_IN_COMPLIANCE 0x00000020ull
-#define INIT_STATUS_DDI_ACTIVE 0x00000040ull
-#define INIT_STATUS_ALLOCATED 0x00000080ull
-
-#define PCIE_PORT_GEN_CAP_BOOT 0x00000001
-#define PCIE_PORT_GEN_CAP_MAX 0x00000002
-#define PCIE_GLOBAL_GEN_CAP_ALL_PORTS 0x00000010
-#define PCIE_GLOBAL_GEN_CAP_TRAINED_PORTS 0x00000011
-#define PCIE_GLOBAL_GEN_CAP_HOTPLUG_PORTS 0x00000012
-
-#define PCIE_POWERGATING_SKIP_CORE 0x00000001
-#define PCIE_POWERGATING_SKIP_PHY 0x00000002
-
-/// PCIe Link Training State
-typedef enum {
- PcieTrainingStandard, ///< Standard training algorithm. Training contained to AmdEarlyInit.
- ///< PCIe device accessible after AmdEarlyInit complete
- PcieTrainingDistributed, ///< Distribute training algorithm. Training distributed across AmdEarlyInit/AmdPostInit/AmdS3LateRestore
- ///< PCIe device accessible after AmdPostInit complete.
- ///< Algorithm potentially save up to 60ms in S3 resume time by skipping training empty slots.
-} PCIE_TRAINING_ALGORITHM;
-
-/// PCIe Link Training State
-typedef enum {
- LinkStateResetAssert, ///< Assert port GPIO reset
- LinkStateResetDuration, ///< Timeout for reset duration
- LinkStateResetExit, ///< Deassert port GPIO reset
- LinkTrainingResetTimeout, ///< Port GPIO reset timeout
- LinkStateReleaseTraining, ///< Release link training
- LinkStateDetectPresence, ///< Detect device presence
- LinkStateDetecting, ///< Detect link training.
- LinkStateBrokenLane, ///< Check and handle broken lane
- LinkStateGen2Fail, ///< Check and handle device that fail training if GEN2 capability advertised
- LinkStateL0, ///< Device trained to L0
- LinkStateVcoNegotiation, ///< Check VCO negotiation complete
- LinkStateRetrain, ///< Force retrain link.
- LinkStateTrainingFail, ///< Link training fail
- LinkStateTrainingSuccess, ///< Link training success
- LinkStateGfxWorkaround, ///< GFX workaround
- LinkStateCompliance, ///< Link in compliance mode
- LinkStateDeviceNotPresent, ///< Link is not connected
- LinkStateTrainingCompleted ///< Link training completed
-} PCIE_LINK_TRAINING_STATE;
-
-/// PCIe Port Visibility
-typedef enum {
- UnhidePorts, ///< Command to unhide port
- HidePorts, ///< Command to hide unused ports
-} PCIE_PORT_VISIBILITY;
-
-
-/// Table Register Entry
-typedef struct {
- UINT16 Reg; ///< Address
- UINT32 Mask; ///< Mask
- UINT32 Data; ///< Data
-} PCIE_PORT_REGISTER_ENTRY;
-
-/// Table Register Entry
-typedef struct {
- PCIE_PORT_REGISTER_ENTRY *Table; ///< Table
- UINT32 Length; ///< Length
-} PCIE_PORT_REGISTER_TABLE_HEADER;
-
-/// Table Register Entry
-typedef struct {
- UINT32 Reg; ///< Address
- UINT32 Mask; ///< Mask
- UINT32 Data; ///< Data
-} PCIE_HOST_REGISTER_ENTRY;
-
-/// Table Register Entry
-typedef struct {
- PCIE_HOST_REGISTER_ENTRY *Table; ///< Table
- UINT32 Length; ///< Length
-} PCIE_HOST_REGISTER_TABLE_HEADER;
-
-///Link ASPM info
-typedef struct {
- PCI_ADDR DownstreamPort; ///< PCI address of downstream port
- PCIE_ASPM_TYPE DownstreamAspm; ///< Downstream Device Aspm
- PCI_ADDR UpstreamPort; ///< PCI address of upstream port
- PCIE_ASPM_TYPE UpstreamAspm; ///< Upstream Device Capability
- PCIE_ASPM_TYPE RequestedAspm; ///< Requested ASPM
-} PCIe_LINK_ASPM;
-
-///PCIe ASPM Latency Information
-typedef struct {
- UINT8 MaxL0sExitLatency; ///< Max L0s exit latency in us
- UINT8 MaxL1ExitLatency; ///< Max L1 exit latency in us
-} PCIe_ASPM_LATENCY_INFO;
-
-/// PCI address association
-typedef struct {
- UINT8 NewDeviceAddress; ///< New PCI address (Device,Fucntion)
- UINT8 NativeDeviceAddress; ///< Native PCI address (Device,Fucntion)
-} PCI_ADDR_LIST;
-
-/// The return status for GFX Card Workaround.
-typedef enum {
- GFX_WORKAROUND_DEVICE_NOT_READY, ///< GFX Workaround device is not ready.
- GFX_WORKAROUND_RESET_DEVICE, ///< GFX Workaround device need reset.
- GFX_WORKAROUND_SUCCESS ///< The service completed normally.
-} GFX_WORKAROUND_STATUS;
-
-/// GFX workaround control
-typedef enum {
- GfxWorkaroundDisable, ///< GFX Workaround disabled
- GfxWorkaroundEnable ///< GFX Workaround enabled
-} GFX_WORKAROUND_CONTROL;
-
-/// PIF lane power state
-typedef enum {
- PifPowerStateL0, ///<
- PifPowerStateLS1, ///<
- PifPowerStateLS2, ///<
- PifPowerStateOff = 0x7, ///<
-} PCIE_PIF_POWER_STATE;
-
-/// PIF lane power control
-typedef enum {
- PowerDownPifs, ///<
- PowerUpPifs ///<
-} PCIE_PIF_POWER_CONTROL;
-
-///PLL rumup time
-typedef enum {
- NormalRampup, ///<
- LongRampup, ///<
-} PCIE_PLL_RAMPUP_TIME;
-
-/// PCIe port configuration info
-typedef struct {
- PCIe_PORT_DATA PortData; ///< Port data
- UINT8 StartCoreLane; ///< Start Core Lane
- UINT8 EndCoreLane; ///< End Core lane
- UINT8 NativeDevNumber :5; ///< Native PCI device number of the port
- UINT8 NativeFunNumber :3; ///< Native PCI function number of the port
- UINT8 CoreId :4; ///< PCIe core ID
- UINT8 PortId :4; ///< Port ID on wrapper
- PCI_ADDR Address; ///< PCI address of the port
- UINT8 State; ///< Training state
- UINT32 TimeStamp; ///< Time stamp used to during training process
- UINT8 GfxWrkRetryCount; ///< Number of retry for GFX workaround
-} PCIe_PORT_CONFIG;
-
-///Descriptor header
-typedef struct {
- UINT32 DescriptorFlags; ///< Descriptor flags
- UINT16 Parent; ///< Offset of parent descriptor
- UINT16 Peer; ///< Offset of the peer descriptor
- UINT16 Child; ///< Offset of the list of child descriptors
-} PCIe_DESCRIPTOR_HEADER;
-
-/// DDI (Digital Display Interface) configuration info
-typedef struct {
- PCIe_DDI_DATA DdiData; ///< DDI Data
- UINT8 DisplayPriorityIndex; ///< Display priority index
- UINT8 ConnectorId; ///< Connector id determined by enumeration
- UINT8 DisplayDeviceId; ///< Display device id determined by enumeration
-} PCIe_DDI_CONFIG;
-
-
-/// Engine configuration data
-typedef struct {
- PCIe_DESCRIPTOR_HEADER Header; ///< Descripto header
- PCIe_ENGINE_DATA EngineData; ///< Engine Data
- UINT32 InitStatus; ///< Initialization Status
- UINT8 Scratch; ///< Scratch pad
- union {
- PCIe_PORT_CONFIG Port; ///< PCIe port configuration data
- PCIe_DDI_CONFIG Ddi; ///< DDI configuration data
- } Type;
-} PCIe_ENGINE_CONFIG;
-
-/// Wrapper configuration data
-typedef struct {
- PCIe_DESCRIPTOR_HEADER Header; ///< Descrptor Header
- UINT8 WrapId; ///< Wrapper ID
- UINT8 NumberOfPIFs; ///< Number of PIFs on wrapper
- UINT8 StartPhyLane; ///< Start PHY Lane
- UINT8 EndPhyLane; ///< End PHY Lane
- UINT8 StartPcieCoreId:4; ///< Start PCIe Core ID
- UINT8 EndPcieCoreId:4; ///< End PCIe Core ID
- UINT8 NumberOfLanes; ///< Number of lanes
- struct {
- UINT8 PowerOffUnusedLanes:1; ///< Power Off unused lanes
- UINT8 PowerOffUnusedPlls:1; ///< Power Off unused Plls
- UINT8 ClkGating:1; ///< TXCLK gating
- UINT8 LclkGating:1; ///< LCLK gating
- UINT8 TxclkGatingPllPowerDown:1; ///< TXCLK clock gating PLL power down
- UINT8 PllOffInL1:1; ///< PLL off in L1
- } Features;
-} PCIe_WRAPPER_CONFIG;
-
-
-/// Silicon configuration data
-typedef struct {
- PCIe_DESCRIPTOR_HEADER Header; ///< Descrptor Header
- UINT8 SiliconId; ///< Gnb silicon(module) ID
- PCI_ADDR Address; ///< PCI address of GNB host bridge
-} PCIe_SILICON_CONFIG;
-
-/// Complex configuration data
-typedef struct {
- PCIe_DESCRIPTOR_HEADER Header; ///< Descrptor Header
- UINT8 SocketId; ///< Processor socket ID
-} PCIe_COMPLEX_CONFIG;
-
-/// PCIe platform configuration info
-typedef struct {
- PCIe_DESCRIPTOR_HEADER Header; ///< Descrptor Header
- PVOID StdHeader; ///< Standard configuration header
- UINT32 LinkReceiverDetectionPooling; ///< Receiver pooling detection time in us.
- UINT32 LinkL0Pooling; ///< Pooling for link to get to L0 in us
- UINT32 LinkGpioResetAssertionTime; ///< Gpio reset assertion time in us
- UINT32 LinkResetToTrainingTime; ///< Time duration between deassert GPIO reset and release training in us ///
- UINT8 GfxCardWorkaround; ///< GFX Card Workaround
- UINT8 PsppPolicy; ///< PSPP policy
- UINT8 TrainingExitState; ///< State at which training should exit (see PCIE_LINK_TRAINING_STATE)
- UINT8 TrainingAlgorithm; ///< Training algorithm (see PCIE_TRAINING_ALGORITHM)
- PCIe_COMPLEX_CONFIG ComplexList[MAX_NUMBER_OF_COMPLEXES]; ///< Complex
-} PCIe_PLATFORM_CONFIG;
-
-/// PCIe Engine Description
-typedef struct {
- UINT32 Flags; /**< Descriptor flags
- * @li @b Bit31 - last descriptor on wrapper
- * @li @b Bit30 - Descriptor allocated for PCIe port or DDI
- */
- PCIe_ENGINE_DATA EngineData; ///< Engine Data
-} PCIe_ENGINE_DESCRIPTOR;
-
-
-#pragma pack (pop)
-
-#endif