Signed-off-by: Marc Jones <marc.jones@amd.com>
Acked-by: Peter Stuge <peter@stuge.se>
Acked-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@3425
2b7e53f0-3cfb-0310-b3e9-
8179ed1497e1
*/
/*----------------------------------------------------------------------------------------
*/
/*----------------------------------------------------------------------------------------
* graphHowManyNodes(u8 *graph)
*
* Description:
* graphHowManyNodes(u8 *graph)
*
* Description:
* @param[out] u8 results = the number of nodes in the graph
* ---------------------------------------------------------------------------------------
*/
* @param[out] u8 results = the number of nodes in the graph
* ---------------------------------------------------------------------------------------
*/
-int graphHowManyNodes(u8 *graph)
+u8 graphHowManyNodes(u8 *graph)
*/
u8 graphGetReq(u8 *graph, u8 nodeA, u8 nodeB)
{
*/
u8 graphGetReq(u8 *graph, u8 nodeA, u8 nodeB)
{
ASSERT(size <= MAX_NODES);
ASSERT((nodeA < size) && (nodeB < size));
return (graph[1+(nodeA*size+nodeB)*2+1] & 0x0F);
ASSERT(size <= MAX_NODES);
ASSERT((nodeA < size) && (nodeB < size));
return (graph[1+(nodeA*size+nodeB)*2+1] & 0x0F);
/*----------------------------------------------------------------------------------------
* u8
/*----------------------------------------------------------------------------------------
* u8
- * graphGetBc(unsigned char *graph, int nodeA, int nodeB)
+ * graphGetBc(u8 *graph, u8 nodeA, u8 nodeB)
*
* Description:
* Returns a bit vector of nodes that nodeA should forward a broadcast from
*
* Description:
* Returns a bit vector of nodes that nodeA should forward a broadcast from
* OU u8 results = the broadcast routes for nodeA from nodeB
* ---------------------------------------------------------------------------------------
*/
* OU u8 results = the broadcast routes for nodeA from nodeB
* ---------------------------------------------------------------------------------------
*/
-u8 graphGetBc(unsigned char *graph, int nodeA, int nodeB)
+u8 graphGetBc(u8 *graph, u8 nodeA, u8 nodeB)
ASSERT(size <= MAX_NODES);
ASSERT((nodeA < size) && (nodeB < size));
return graph[1+(nodeA*size+nodeB)*2];
ASSERT(size <= MAX_NODES);
ASSERT((nodeA < size) && (nodeB < size));
return graph[1+(nodeA*size+nodeB)*2];
/* Notify BIOS of event (while variables are still the same) */
if (pDat->HtBlock->AMD_CB_EventNotify)
{
/* Notify BIOS of event (while variables are still the same) */
if (pDat->HtBlock->AMD_CB_EventNotify)
{
- sHtEventCohFamilyFeud evt = {sizeof(sHtEventCohFamilyFeud),
- currentNode,
- currentLink,
- pDat->NodesDiscovered};
+ sHtEventCohFamilyFeud evt;
+ evt.eSize = sizeof(sHtEventCohFamilyFeud);
+ evt.node = currentNode;
+ evt.link = currentLink;
+ evt.totalNodes = pDat->NodesDiscovered;
pDat->HtBlock->AMD_CB_EventNotify(HT_EVENT_CLASS_ERROR,
HT_EVENT_COH_FAMILY_FEUD,
pDat->HtBlock->AMD_CB_EventNotify(HT_EVENT_CLASS_ERROR,
HT_EVENT_COH_FAMILY_FEUD,
/* Notify BIOS of event */
if (pDat->HtBlock->AMD_CB_EventNotify)
{
/* Notify BIOS of event */
if (pDat->HtBlock->AMD_CB_EventNotify)
{
- sHtEventCohMpCapMismatch evt = {sizeof(sHtEventCohMpCapMismatch),
- currentNode,
- currentLink,
- pDat->sysMpCap,
- pDat->NodesDiscovered};
+ sHtEventCohMpCapMismatch evt;
+ evt.eSize = sizeof(sHtEventCohMpCapMismatch);
+ evt.node = currentNode;
+ evt.link = currentLink;
+ evt.sysMpCap = pDat->sysMpCap;
+ evt.totalNodes = pDat->NodesDiscovered;
pDat->HtBlock->AMD_CB_EventNotify(HT_EVENT_CLASS_ERROR,
HT_EVENT_COH_MPCAP_MISMATCH,
pDat->HtBlock->AMD_CB_EventNotify(HT_EVENT_CLASS_ERROR,
HT_EVENT_COH_MPCAP_MISMATCH,
*/
if (pDat->HtBlock->AMD_CB_EventNotify)
{
*/
if (pDat->HtBlock->AMD_CB_EventNotify)
{
- sHtEventCohNodeDiscovered evt = {sizeof(sHtEventCohNodeDiscovered),
- currentNode,
- currentLink,
- token};
+ sHtEventCohNodeDiscovered evt;
+ evt.eSize = sizeof(sHtEventCohNodeDiscovered);
+ evt.node = currentNode;
+ evt.link = currentLink;
+ evt.newNode = token;
pDat->HtBlock->AMD_CB_EventNotify(HT_EVENT_CLASS_INFO,
HT_EVENT_COH_NODE_DISCOVERED,
pDat->HtBlock->AMD_CB_EventNotify(HT_EVENT_CLASS_INFO,
HT_EVENT_COH_NODE_DISCOVERED,
*/
if (pDat->HtBlock->AMD_CB_EventNotify)
{
*/
if (pDat->HtBlock->AMD_CB_EventNotify)
{
- sHtEventCohLinkExceed evt = {sizeof(sHtEventCohLinkExceed),
- currentNode,
- currentLink,
- token,
- pDat->NodesDiscovered,
- pDat->nb->maxLinks};
+ sHtEventCohLinkExceed evt;
+ evt.eSize = sizeof(sHtEventCohLinkExceed);
+ evt.node = currentNode;
+ evt.link = currentLink;
+ evt.targetNode = token;
+ evt.totalNodes = pDat->NodesDiscovered;
+ evt.maxLinks = pDat->nb->maxLinks;
pDat->HtBlock->AMD_CB_EventNotify(HT_EVENT_CLASS_ERROR,
HT_EVENT_COH_LINK_EXCEED,
pDat->HtBlock->AMD_CB_EventNotify(HT_EVENT_CLASS_ERROR,
HT_EVENT_COH_LINK_EXCEED,
*/
if (pDat->HtBlock->AMD_CB_EventNotify)
{
*/
if (pDat->HtBlock->AMD_CB_EventNotify)
{
- sHtEventCohNoTopology evt = {sizeof(sHtEventCohNoTopology),
- pDat->NodesDiscovered};
+ sHtEventCohNoTopology evt;
+ evt.eSize = sizeof(sHtEventCohNoTopology);
+ evt.totalNodes = pDat->NodesDiscovered;
pDat->HtBlock->AMD_CB_EventNotify(HT_EVENT_CLASS_ERROR,
HT_EVENT_COH_NO_TOPOLOGY,
pDat->HtBlock->AMD_CB_EventNotify(HT_EVENT_CLASS_ERROR,
HT_EVENT_COH_NO_TOPOLOGY,
*/
void coherentInit(sMainData *pDat)
{
*/
void coherentInit(sMainData *pDat)
{
#ifdef HT_BUILD_NC_ONLY
/* Replace discovery process with:
#ifdef HT_BUILD_NC_ONLY
/* Replace discovery process with:
*/
if (pDat->HtBlock->AMD_CB_EventNotify)
{
*/
if (pDat->HtBlock->AMD_CB_EventNotify)
{
- sHTEventNcohBusMaxExceed evt = {sizeof(sHTEventNcohBusMaxExceed), node, link, pDat->AutoBusCurrent};
+ sHTEventNcohBusMaxExceed evt;
+ evt.eSize = sizeof(sHTEventNcohBusMaxExceed);
+ evt.node = node;
+ evt.link = link;
+ evt.bus = pDat->AutoBusCurrent;
pDat->HtBlock->AMD_CB_EventNotify(HT_EVENT_CLASS_ERROR,HT_EVENT_NCOH_BUS_MAX_EXCEED,(u8 *)&evt);
}
pDat->HtBlock->AMD_CB_EventNotify(HT_EVENT_CLASS_ERROR,HT_EVENT_NCOH_BUS_MAX_EXCEED,(u8 *)&evt);
}
*/
if (pDat->HtBlock->AMD_CB_EventNotify)
{
*/
if (pDat->HtBlock->AMD_CB_EventNotify)
{
- sHtEventNcohCfgMapExceed evt = {sizeof(sHtEventNcohCfgMapExceed), node, link};
+ sHtEventNcohCfgMapExceed evt;
+ evt.eSize = sizeof(sHtEventNcohCfgMapExceed);
+ evt.node = node;
+ evt.link = link;
pDat->HtBlock->AMD_CB_EventNotify(HT_EVENT_CLASS_ERROR,
HT_EVENT_NCOH_CFG_MAP_EXCEED,
pDat->HtBlock->AMD_CB_EventNotify(HT_EVENT_CLASS_ERROR,
HT_EVENT_NCOH_CFG_MAP_EXCEED,
*/
if (pDat->HtBlock->AMD_CB_EventNotify)
{
*/
if (pDat->HtBlock->AMD_CB_EventNotify)
{
- sHtEventNcohLinkExceed evt = {sizeof(sHtEventNcohLinkExceed),
- node,
- link,
- depth,
- pDat->nb->maxLinks};
+ sHtEventNcohLinkExceed evt;
+ evt.eSize = sizeof(sHtEventNcohLinkExceed);
+ evt.node = node;
+ evt.link = link;
+ evt.depth = depth;
+ evt.maxLinks = pDat->nb->maxLinks;
pDat->HtBlock->AMD_CB_EventNotify(HT_EVENT_CLASS_ERROR,
HT_EVENT_NCOH_LINK_EXCEED,
pDat->HtBlock->AMD_CB_EventNotify(HT_EVENT_CLASS_ERROR,
HT_EVENT_NCOH_LINK_EXCEED,
/* An error handler for the case where we run out of BUID's on a chain */
if (pDat->HtBlock->AMD_CB_EventNotify)
{
/* An error handler for the case where we run out of BUID's on a chain */
if (pDat->HtBlock->AMD_CB_EventNotify)
{
- sHtEventNcohBuidExceed evt = {sizeof(sHtEventNcohBuidExceed),
- node, link, depth, (u8)currentBUID, (u8)unitIDcnt};
+ sHtEventNcohBuidExceed evt;
+ evt.eSize = sizeof(sHtEventNcohBuidExceed);
+ evt.node = node;
+ evt.link = link;
+ evt.depth = depth;
+ evt.currentBUID = (uint8)currentBUID;
+ evt.unitCount = (uint8)unitIDcnt;
pDat->HtBlock->AMD_CB_EventNotify(HT_EVENT_CLASS_ERROR,HT_EVENT_NCOH_BUID_EXCEED,(u8 *)&evt);
}
pDat->HtBlock->AMD_CB_EventNotify(HT_EVENT_CLASS_ERROR,HT_EVENT_NCOH_BUID_EXCEED,(u8 *)&evt);
}
/* An error handler for this critical error */
if (pDat->HtBlock->AMD_CB_EventNotify)
{
/* An error handler for this critical error */
if (pDat->HtBlock->AMD_CB_EventNotify)
{
- sHtEventNcohDeviceFailed evt = {sizeof(sHtEventNcohDeviceFailed),
- node, link, depth, (u8)currentBUID};
+ sHtEventNcohDeviceFailed evt;
+ evt.eSize = sizeof(sHtEventNcohDeviceFailed);
+ evt.node = node;
+ evt.link = link;
+ evt.depth = depth;
+ evt.attemptedBUID = (uint8)currentBUID;
pDat->HtBlock->AMD_CB_EventNotify(HT_EVENT_CLASS_ERROR,HT_EVENT_NCOH_DEVICE_FAILED,(u8 *)&evt);
}
pDat->HtBlock->AMD_CB_EventNotify(HT_EVENT_CLASS_ERROR,HT_EVENT_NCOH_DEVICE_FAILED,(u8 *)&evt);
}
if (pDat->HtBlock->AMD_CB_EventNotify)
{
/* Provide information on automatic device results */
if (pDat->HtBlock->AMD_CB_EventNotify)
{
/* Provide information on automatic device results */
- sHtEventNcohAutoDepth evt = {sizeof(sHtEventNcohAutoDepth), node, link, (depth - 1)};
+ sHtEventNcohAutoDepth evt;
+ evt.eSize = sizeof(sHtEventNcohAutoDepth);
+ evt.node = node;
+ evt.link = link;
+ evt.depth = (depth - 1);
pDat->HtBlock->AMD_CB_EventNotify(HT_EVENT_CLASS_INFO,HT_EVENT_NCOH_AUTO_DEPTH,(u8 *)&evt);
}
pDat->HtBlock->AMD_CB_EventNotify(HT_EVENT_CLASS_INFO,HT_EVENT_NCOH_AUTO_DEPTH,(u8 *)&evt);
}
if (pDat->HtBlock->AMD_CB_EventNotify)
{
/* Pass the node and link on which the generic synch flood event occurred. */
if (pDat->HtBlock->AMD_CB_EventNotify)
{
/* Pass the node and link on which the generic synch flood event occurred. */
- sHtEventHWHtCrc evt = {sizeof(sHtEventHWHtCrc), node, link, (u8)crc};
+ sHtEventHWHtCrc evt;
+ evt.eSize = sizeof(sHtEventHWHtCrc);
+ evt.node = node;
+ evt.link = link;
+ evt.laneMask = (uint8)crc;
pDat->HtBlock->AMD_CB_EventNotify(HT_EVENT_CLASS_HW_FAULT,
HT_EVENT_HW_HTCRC,
pDat->HtBlock->AMD_CB_EventNotify(HT_EVENT_CLASS_HW_FAULT,
HT_EVENT_HW_HTCRC,
if (pDat->HtBlock->AMD_CB_EventNotify)
{
/* Pass the node and link on which the generic synch flood event occurred. */
if (pDat->HtBlock->AMD_CB_EventNotify)
{
/* Pass the node and link on which the generic synch flood event occurred. */
- sHtEventHWSynchFlood evt = {sizeof(sHtEventHWSynchFlood), node, link};
+ sHtEventHWSynchFlood evt;
+ evt.eSize = sizeof(sHtEventHWSynchFlood);
+ evt.node = node;
+ evt.link = link;
pDat->HtBlock->AMD_CB_EventNotify(HT_EVENT_CLASS_HW_FAULT,
HT_EVENT_HW_SYNCHFLOOD,
pDat->HtBlock->AMD_CB_EventNotify(HT_EVENT_CLASS_HW_FAULT,
HT_EVENT_HW_SYNCHFLOOD,
return 2;
}
STOP_HERE; /* This is an error internal condition */
return 2;
}
STOP_HERE; /* This is an error internal condition */
-
- return 0xFF; // make the compiler happy.
}
/**----------------------------------------------------------------------------------------
}
/**----------------------------------------------------------------------------------------
return 4;
}
STOP_HERE; /* This is an internal error condition */
return 4;
}
STOP_HERE; /* This is an internal error condition */
-
- return 0xFF; // make the compiler happy.
}
/**----------------------------------------------------------------------------------------
}
/**----------------------------------------------------------------------------------------
{
if (pDat->HtBlock->AMD_CB_EventNotify)
{
{
if (pDat->HtBlock->AMD_CB_EventNotify)
{
- sHtEventOptRequiredCap evt ={sizeof(sHtEventOptRequiredCap),
- pDat->PortList[i].NodeID,
- pDat->PortList[i].HostLink,
- pDat->PortList[i].HostDepth};
+ sHtEventOptRequiredCap evt;
+ evt.eSize = sizeof(sHtEventOptRequiredCap);
+ evt.node = pDat->PortList[i].NodeID;
+ evt.link = pDat->PortList[i].HostLink;
+ evt.depth = pDat->PortList[i].HostDepth;
pDat->HtBlock->AMD_CB_EventNotify(HT_EVENT_CLASS_WARNING,
HT_EVENT_OPT_REQUIRED_CAP_RETRY,
pDat->HtBlock->AMD_CB_EventNotify(HT_EVENT_CLASS_WARNING,
HT_EVENT_OPT_REQUIRED_CAP_RETRY,
{
if (pDat->HtBlock->AMD_CB_EventNotify)
{
{
if (pDat->HtBlock->AMD_CB_EventNotify)
{
- sHtEventOptRequiredCap evt ={sizeof(sHtEventOptRequiredCap),
- pDat->PortList[i].NodeID,
- pDat->PortList[i].HostLink,
- pDat->PortList[i].HostDepth};
+ sHtEventOptRequiredCap evt;
+ evt.eSize = sizeof(sHtEventOptRequiredCap);
+ evt.node = pDat->PortList[i].NodeID;
+ evt.link = pDat->PortList[i].HostLink;
+ evt.depth = pDat->PortList[i].HostDepth;
pDat->HtBlock->AMD_CB_EventNotify(HT_EVENT_CLASS_WARNING,
HT_EVENT_OPT_REQUIRED_CAP_GEN3,
pDat->HtBlock->AMD_CB_EventNotify(HT_EVENT_CLASS_WARNING,
HT_EVENT_OPT_REQUIRED_CAP_GEN3,