AMD_HTBLOCK Struct Reference

#include <h3finit.h>

Collaboration diagram for AMD_HTBLOCK:

Collaboration graph
[legend]

Data Fields

u8 ** topolist
u8 AutoBusStart
u8 AutoBusMax
u8 AutoBusIncrement
BOOL(* AMD_CB_IgnoreLink )(u8 Node, u8 Link)
 ----------------------------------------------------------------------------------------
BOOL(* AMD_CB_OverrideBusNumbers )(u8 Node, u8 Link, u8 *SecBus, u8 *SubBus)
 ----------------------------------------------------------------------------------------
BOOL(* AMD_CB_ManualBUIDSwapList )(u8 Node, u8 Link, u8 **List)
 ----------------------------------------------------------------------------------------
void(* AMD_CB_DeviceCapOverride )(u8 HostNode, u8 HostLink, u8 Depth, u8 Segment, u8 Bus, u8 Dev, u32 DevVenID, u8 Link, u8 *LinkWidthIn, u8 *LinkWidthOut, u16 *FreqCap)
 ----------------------------------------------------------------------------------------
void(* AMD_CB_Cpu2CpuPCBLimits )(u8 NodeA, u8 LinkA, u8 NodeB, u8 LinkB, u8 *ABLinkWidthLimit, u8 *BALinkWidthLimit, u16 *PCBFreqCap)
 ----------------------------------------------------------------------------------------
void(* AMD_CB_IOPCBLimits )(u8 HostNode, u8 HostLink, u8 Depth, u8 *DownstreamLinkWidthLimit, u8 *UpstreamLinkWidthLimit, u16 *PCBFreqCap)
 ----------------------------------------------------------------------------------------
BOOL(* AMD_CB_SkipRegang )(u8 NodeA, u8 LinkA, u8 NodeB, u8 LinkB)
 ----------------------------------------------------------------------------------------
BOOL(* AMD_CB_CustomizeTrafficDistribution )()
 ----------------------------------------------------------------------------------------
BOOL(* AMD_CB_CustomizeBuffers )(u8 node)
 ----------------------------------------------------------------------------------------
void(* AMD_CB_OverrideDevicePort )(u8 HostNode, u8 HostLink, u8 Depth, u8 Link, u8 *LinkWidthIn, u8 *LinkWidthOut, u8 *LinkFrequency)
 ----------------------------------------------------------------------------------------
void(* AMD_CB_OverrideCpuPort )(u8 Node, u8 Link, u8 *LinkWidthIn, u8 *LinkWidthOut, u8 *LinkFrequency)
 ----------------------------------------------------------------------------------------
void(* AMD_CB_EventNotify )(u8 evtClass, u16 event, const u8 *pEventData0)
 ----------------------------------------------------------------------------------------

Detailed Description

Definition at line 122 of file h3finit.h.


Field Documentation

Definition at line 123 of file h3finit.h.

Referenced by lookupComputeAndLoadRoutingTables().

Definition at line 124 of file h3finit.h.

Referenced by amdHtInitialize().

Definition at line 126 of file h3finit.h.

Referenced by processLink().

Definition at line 127 of file h3finit.h.

Referenced by processLink().

----------------------------------------------------------------------------------------

BOOL AMD_CB_IgnoreLink(u8 Node, u8 Link)

Description: This routine is called every time a coherent link is found and then every time a non-coherent link from a CPU is found. Any coherent or non-coherent link from a CPU can be ignored and not used for discovery or initialization. Useful for connection based systems. (Note: not called for IO device to IO Device links.)

Parameters:

Parameters:
[in] u8 node = The node on which this link is located
[in] u8 link = The link about to be initialized
[out] BOOL result = true to ignore this link and skip it false to initialize the link normally
---------------------------------------------------------------------------------------

Referenced by htDiscoveryFloodFill(), and ncInit().

BOOL(* AMD_HTBLOCK::AMD_CB_OverrideBusNumbers)(u8 Node, u8 Link, u8 *SecBus, u8 *SubBus)

----------------------------------------------------------------------------------------

BOOL AMD_CB_OverrideBusNumbers(u8 Node, u8 Link, u8 *SecBus, u8 *SubBus)

Description: This routine is called every time a non-coherent chain is processed. If a system can not use the auto Bus numbering feature for non-coherent chain bus assignments, this routine can provide explicit control. For each chain, provide the bus number range to use.

Parameters:

Parameters:
[in] u8 node = The node on which this chain is located
[in] u8 link = The link on the host for this chain
[out] u8 secBus = Secondary Bus number for this non-coherent chain
[out] u8* subBus = Subordinate Bus number
[out] BOOL result = true this routine is supplying the bus numbers false use auto Bus numbering
---------------------------------------------------------------------------------------

Referenced by processLink().

----------------------------------------------------------------------------------------

BOOL AMD_CB_ManualBUIDSwapList(u8 Node, u8 Link, u8 **List)

Description: This routine is called every time a non-coherent chain is processed. BUID assignment may be controlled explicitly on a non-coherent chain. Provide a swap list. The first part of the list controls the BUID assignment and the second part of the list provides the device to device linking. Device orientation can be detected automatically, or explicitly. See documentation for more details.

Automatic non-coherent init assigns BUIDs starting at 1 and incrementing sequentially based on each device's unit count.

Parameters:

Parameters:
[in] u8 node = The node on which this chain is located
[in] u8 link = The link on the host for this chain
[out] u8** list = supply a pointer to a list
[out] BOOL result = true to use a manual list false to initialize the link automatically
---------------------------------------------------------------------------------------

Referenced by processLink().

void(* AMD_HTBLOCK::AMD_CB_DeviceCapOverride)(u8 HostNode, u8 HostLink, u8 Depth, u8 Segment, u8 Bus, u8 Dev, u32 DevVenID, u8 Link, u8 *LinkWidthIn, u8 *LinkWidthOut, u16 *FreqCap)

----------------------------------------------------------------------------------------

void AMD_CB_DeviceCapOverride(u8 HostNode, u8 HostLink, u8 Depth, u8 Segment, u8 Bus, u8 Dev, u32 DevVenID, u8 Link, u8 *LinkWidthIn, u8 *LinkWidthOut, u16 *FreqCap)

Description: This routine is called once for every link on every IO device. Update the width and frequency capability if needed for this device. This is used along with device capabilities, the limit call backs, and northbridge limits to compute the default settings. The components of the device's PCI config address are provided, so its settings can be consulted if need be. The input width and frequency are the reported device capabilities.

Parameters:

Parameters:
[in] u8 hostNode = The node on which this chain is located
[in] u8 hostLink = The link on the host for this chain
[in] u8 Depth = The depth in the I/O chain from the Host
[in] u8 Segment = The Device's PCI Bus Segment number
[in] u8 Bus = The Device's PCI Bus number
[in] u8 Dev = The Device's PCI device Number
[in] u32 DevVenID = The Device's PCI Vendor + Device ID (offset 0x00)
[in] u8 Link = The Device's link number (0 or 1)
[in,out] u8* LinkWidthIn = modify to change the Link Witdh In
[in,out] u8* LinkWidthOut = modify to change the Link Witdh Out
[in,out] u16* FreqCap = modify to change the link's frequency capability
---------------------------------------------------------------------------------------

Referenced by gatherLinkData().

void(* AMD_HTBLOCK::AMD_CB_Cpu2CpuPCBLimits)(u8 NodeA, u8 LinkA, u8 NodeB, u8 LinkB, u8 *ABLinkWidthLimit, u8 *BALinkWidthLimit, u16 *PCBFreqCap)

----------------------------------------------------------------------------------------

void AMD_CB_Cpu2CpuPCBLimits(u8 NodeA, u8 LinkA, u8 NodeB, u8 LinkB, u8 *ABLinkWidthLimit, u8 *BALinkWidthLimit, u16 *PCBFreqCap)

Description: For each coherent connection this routine is called once. Update the frequency and width if needed for this link (usually based on board restriction). This is used with CPU device capabilities and northbridge limits to compute the default settings. The input width and frequency are valid, but do not necessarily reflect the minimum setting that will be chosen.

Parameters:

Parameters:
[in] u8 nodeA = One node on which this link is located
[in] u8 linkA = The link on this node
[in] u8 nodeB = The other node on which this link is located
[in] u8 linkB = The link on that node
[in,out] u8* ABLinkWidthLimit = modify to change the Link Witdh In
[in,out] u8* BALinkWidthLimit = modify to change the Link Witdh Out
[in,out] u16* PCBFreqCap = modify to change the link's frequency capability
---------------------------------------------------------------------------------------

Referenced by selectOptimalWidthAndFrequency().

void(* AMD_HTBLOCK::AMD_CB_IOPCBLimits)(u8 HostNode, u8 HostLink, u8 Depth, u8 *DownstreamLinkWidthLimit, u8 *UpstreamLinkWidthLimit, u16 *PCBFreqCap)

----------------------------------------------------------------------------------------

void AMD_CB_IOPCBLimits(u8 HostNode, u8 HostLink, u8 Depth, u8 *DownstreamLinkWidthLimit, u8 *UpstreamLinkWidthLimit, u16 *PCBFreqCap)

Description: For each non-coherent connection this routine is called once. Update the frequency and width if needed for this link (usually based on board restriction). This is used with device capabilities, device overrides, and northbridge limits to compute the default settings. The input width and frequency are valid, but do not necessarily reflect the minimum setting that will be chosen.

Parameters:

Parameters:
[in] u8 hostNode = The node on which this link is located
[in] u8 hostLink = The link about to be initialized
[in] u8 Depth = The depth in the I/O chain from the Host
[in,out] u8* DownstreamLinkWidthLimit = modify to change the Link Witdh In
[in,out] u8* UpstreamLinkWidthLimit = modify to change the Link Witdh Out
[in,out] u16* PCBFreqCap = modify to change the link's frequency capability
---------------------------------------------------------------------------------------

Referenced by selectOptimalWidthAndFrequency().

BOOL(* AMD_HTBLOCK::AMD_CB_SkipRegang)(u8 NodeA, u8 LinkA, u8 NodeB, u8 LinkB)

----------------------------------------------------------------------------------------

BOOL AMD_CB_SkipRegang(u8 NodeA, u8 LinkA, u8 NodeB, u8 LinkB)

Description: This routine is called whenever two sublinks are both connected to the same CPUs. Normally, unganged subsinks between the same two CPUs are reganged. Return true from this routine to leave the links unganged.

Parameters:

Parameters:
[in] u8 nodeA = One node on which this link is located
[in] u8 linkA = The link on this node
[in] u8 nodeB = The other node on which this link is located
[in] u8 linkB = The link on that node
[out] BOOL result = true to leave link unganged false to regang link automatically
---------------------------------------------------------------------------------------

Referenced by regangLinks().

----------------------------------------------------------------------------------------

BOOL AMD_CB_CustomizeTrafficDistribution()

Description: Near the end of HT initialization, this routine is called once. If this routine will handle traffic distribution in a proprietary way, after detecting which links to distribute traffic on and configuring the system, return true. Return false to let the HT code detect and do traffic distribution This routine can also be used to simply turn this feature off, or to pre-process the system before normal traffic distribution.

Parameters:

Parameters:
[out] BOOL result = true skip traffic distribution false do normal traffic distribution
---------------------------------------------------------------------------------------

Referenced by tuning().

----------------------------------------------------------------------------------------

BOOL AMD_CB_CustomizeBuffers(u8 Node)

Description: Near the end of HT initialization, this routine is called once per CPU node. Implement proprietary buffer tuning and return true, or return false for normal tuning. This routine can also be used to simply turn this feature off, or to pre-process the system before normal tuning.

Parameters:

Parameters:
[in] u8 node = buffer allocation may apply to this node
[out] BOOL result = true skip buffer allocation on this node false tune buffers normally
---------------------------------------------------------------------------------------

Referenced by tuning().

void(* AMD_HTBLOCK::AMD_CB_OverrideDevicePort)(u8 HostNode, u8 HostLink, u8 Depth, u8 Link, u8 *LinkWidthIn, u8 *LinkWidthOut, u8 *LinkFrequency)

----------------------------------------------------------------------------------------

void AMD_CB_OverrideDevicePort(u8 HostNode, u8 HostLink, u8 Depth, u8 *LinkWidthIn, u8 *LinkWidthOut, u16 *LinkFrequency)

Description: Called once for each active link on each IO device. Provides an opportunity to directly control the frequency and width, intended for test and debug. The input frequency and width will be used if not overridden.

Parameters:

Parameters:
[in] u8 hostNode = The node on which this link is located
[in] u8 hostLink = The link about to be initialized
[in] u8 Depth = The depth in the I/O chain from the Host
[in] u8 Link = the link on the device (0 or 1)
[in,out] u8* LinkWidthIn = modify to change the Link Witdh In
[in,out] u8* LinkWidthOut = modify to change the Link Witdh Out
[in,out] u16* LinkFrequency = modify to change the link's frequency capability
---------------------------------------------------------------------------------------

Referenced by setLinkData().

void(* AMD_HTBLOCK::AMD_CB_OverrideCpuPort)(u8 Node, u8 Link, u8 *LinkWidthIn, u8 *LinkWidthOut, u8 *LinkFrequency)

----------------------------------------------------------------------------------------

void AMD_CB_OverrideCpuPort(u8 Node, u8 Link, u8 *LinkWidthIn, u8 *LinkWidthOut, u16 *LinkFrequency)

Description: Called once for each active link on each CPU. Provides an opportunity to directly control the frequency and width, intended for test and debug. The input frequency and width will be used if not overridden.

Parameters:

Parameters:
[in] u8 node = One node on which this link is located
[in] u8 link = The link on this node
[in,out] u8* LinkWidthIn = modify to change the Link Witdh In
[in,out] u8* LinkWidthOut = modify to change the Link Witdh Out
[in,out] u16* LinkFrequency = modify to change the link's frequency capability
---------------------------------------------------------------------------------------

Referenced by setLinkData().

void(* AMD_HTBLOCK::AMD_CB_EventNotify)(u8 evtClass, u16 event, const u8 *pEventData0)

----------------------------------------------------------------------------------------

void AMD_CB_EventNotify(u8 evtClass, u16 event, const u8 *pEventData0)

Description: Errors, events, faults, warnings, and useful information are provided by calling this routine as often as necessary, once for each notification. See elsewhere in this file for class, event, and event data definitions. See the documentation for more details.

Parameters:

Parameters:
[in] u8 evtClass = What level event is this
[in] u16 event = A unique ID of this event
[in] u8* pEventData0 = useful data associated with the event.
---------------------------------------------------------------------------------------

Referenced by htDiscoveryFloodFill(), lookupComputeAndLoadRoutingTables(), processLink(), readTrueLinkFailStatus(), and setLinkData().


The documentation for this struct was generated from the following file:

Generated on Wed Jan 7 15:19:01 2009 for coreboot by  doxygen 1.5.5