[coreboot-gerrit] Patch set updated for coreboot: 9bb0b72 AGESA: refactor

Kyösti Mälkki (kyosti.malkki@gmail.com) gerrit at coreboot.org
Mon May 5 09:02:25 CEST 2014


Kyösti Mälkki (kyosti.malkki at gmail.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/5632

-gerrit

commit 9bb0b72e3ebef7e2eff6d0bdda8ea8df343a4600
Author: Kyösti Mälkki <kyosti.malkki at gmail.com>
Date:   Thu May 1 15:35:34 2014 +0300

    AGESA: refactor
    
    Change-Id: Ic84e288fae0e257522fb63027c88224f471c8b28
    Signed-off-by: Kyösti Mälkki <kyosti.malkki at gmail.com>
---
 src/cpu/amd/agesa/heapmanager.c                    | 359 ++++++++++++++++++
 src/mainboard/amd/dinar/BiosCallOuts.c             | 132 +------
 src/mainboard/amd/dinar/BiosCallOuts.h             |   2 -
 src/mainboard/amd/inagua/BiosCallOuts.c            |  56 +--
 src/mainboard/amd/inagua/BiosCallOuts.h            |   2 -
 src/mainboard/amd/olivehill/BiosCallOuts.c         |  40 +-
 src/mainboard/amd/olivehill/BiosCallOuts.h         |   2 -
 src/mainboard/amd/parmer/BiosCallOuts.c            |  40 +-
 src/mainboard/amd/parmer/BiosCallOuts.h            |   2 -
 src/mainboard/amd/persimmon/BiosCallOuts.c         |  60 +--
 src/mainboard/amd/persimmon/BiosCallOuts.h         |   2 -
 src/mainboard/amd/south_station/BiosCallOuts.c     |  58 +--
 src/mainboard/amd/south_station/BiosCallOuts.h     |   2 -
 src/mainboard/amd/thatcher/BiosCallOuts.c          |  40 +-
 src/mainboard/amd/thatcher/BiosCallOuts.h          |   2 -
 src/mainboard/amd/torpedo/BiosCallOuts.c           | 116 +-----
 src/mainboard/amd/torpedo/BiosCallOuts.h           |   2 -
 src/mainboard/amd/union_station/BiosCallOuts.c     |  58 +--
 src/mainboard/amd/union_station/BiosCallOuts.h     |   2 -
 src/mainboard/asrock/e350m1/BiosCallOuts.c         |  60 +--
 src/mainboard/asrock/e350m1/BiosCallOuts.h         |   2 -
 src/mainboard/asrock/imb-a180/BiosCallOuts.c       |  41 +-
 src/mainboard/asrock/imb-a180/BiosCallOuts.h       |   2 -
 src/mainboard/asus/f2a85-m/BiosCallOuts.c          |  41 +-
 src/mainboard/asus/f2a85-m/BiosCallOuts.h          |   2 -
 src/mainboard/gizmosphere/gizmo/BiosCallOuts.c     | 125 +------
 src/mainboard/gizmosphere/gizmo/BiosCallOuts.h     |   2 -
 src/mainboard/hp/pavilion_m6_1035dx/BiosCallOuts.c |  40 +-
 src/mainboard/hp/pavilion_m6_1035dx/BiosCallOuts.h |   2 -
 src/mainboard/jetway/nf81-t56n-lf/BiosCallOuts.c   |  61 +--
 src/mainboard/jetway/nf81-t56n-lf/BiosCallOuts.h   |   2 -
 .../lippert/frontrunner-af/BiosCallOuts.c          |  69 +---
 .../lippert/frontrunner-af/BiosCallOuts.h          |   2 -
 src/mainboard/lippert/toucan-af/BiosCallOuts.c     |  70 +---
 src/mainboard/lippert/toucan-af/BiosCallOuts.h     |   2 -
 src/mainboard/supermicro/h8qgi/BiosCallOuts.c      | 122 +-----
 src/mainboard/supermicro/h8qgi/BiosCallOuts.h      |   2 -
 src/mainboard/supermicro/h8scm/BiosCallOuts.c      | 132 +------
 src/mainboard/supermicro/h8scm/BiosCallOuts.h      |   2 -
 src/mainboard/tyan/s8226/BiosCallOuts.c            | 122 +-----
 src/mainboard/tyan/s8226/BiosCallOuts.h            |   2 -
 src/northbridge/amd/agesa/def_callouts.c           | 142 +++++++
 .../amd/agesa/family12/fam12_callouts.c            | 352 -----------------
 .../amd/agesa/family12/fam12_callouts.h            |  29 --
 .../amd/agesa/family14/fam14_callouts.c            | 354 ------------------
 .../amd/agesa/family14/fam14_callouts.h            |  29 --
 .../amd/agesa/family15/fam15_callouts.c            | 352 -----------------
 .../amd/agesa/family15/fam15_callouts.h            |  28 --
 .../amd/agesa/family15tn/fam15tn_callouts.c        | 416 ---------------------
 .../amd/agesa/family15tn/fam15tn_callouts.h        |  24 --
 .../amd/agesa/family16kb/fam16kb_callouts.c        | 389 -------------------
 .../amd/agesa/family16kb/fam16kb_callouts.h        |  24 --
 52 files changed, 731 insertions(+), 3290 deletions(-)

diff --git a/src/cpu/amd/agesa/heapmanager.c b/src/cpu/amd/agesa/heapmanager.c
new file mode 100644
index 0000000..6ecec61
--- /dev/null
+++ b/src/cpu/amd/agesa/heapmanager.c
@@ -0,0 +1,359 @@
+
+#include "agesawrapper.h"
+#include "amdlib.h"
+#include "fam14_callouts.h"
+#include "heapManager.h"
+
+#include <cbmem.h>
+#include <arch/acpi.h>
+#include <string.h>
+
+BIOS_HEAP_MANAGER * GetHeapBase(void)
+{
+	BIOS_HEAP_MANAGER *BiosManagerPtr =
+		(BIOS_HEAP_MANAGER *) BIOS_HEAP_START_ADDRESS;
+
+#if CONFIG_HAVE_ACPI_RESUME
+	/* Both romstage and ramstage has this S3 detect. */
+	if (acpi_get_sleep_type() == 3)
+		heap = (UINT32) cbmem_find(CBMEM_ID_RESUME_SCRATCH) +
+		 (CONFIG_HIGH_SCRATCH_MEMORY_SIZE - BIOS_HEAP_SIZE);
+		  /* himem_heap_base + high_stack_size */
+#endif
+	return BiosManagerPtr;
+}
+
+void EmptyHeap(void)
+{
+	void *BiosManagerPtr = (void *) GetHeapBase(NULL);
+	memset(BiosManagerPtr, 0, BIOS_HEAP_SIZE);
+}
+
+#define AGESA_RUNTIME_SIZE 4096
+
+static AGESA_STATUS alloc_cbmem(AGESA_BUFFER_PARAMS *AllocParams) {
+	static unsigned int used = 0;
+	void *p = cbmem_find(CBMEM_ID_AGESA_RUNTIME);
+
+	if ((AGESA_RUNTIME_SIZE - used) < AllocParams->BufferLength) {
+		return AGESA_BOUNDS_CHK;
+	}
+
+	/* first time allocation */
+	if (!p) {
+		p = cbmem_add(CBMEM_ID_AGESA_RUNTIME, AGESA_RUNTIME_SIZE);
+		if (!p)
+			return AGESA_BOUNDS_CHK;
+	}
+
+	AllocParams->BufferPointer = p + used;
+	used += AllocParams->BufferLength;
+	return AGESA_SUCCESS;
+}
+
+AGESA_STATUS BiosAllocateBuffer (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
+{
+	UINT32              AvailableHeapSize;
+	UINT8               *BiosHeapBaseAddr;
+	UINT32              CurrNodeOffset;
+	UINT32              PrevNodeOffset;
+	UINT32              FreedNodeOffset;
+	UINT32              BestFitNodeOffset;
+	UINT32              BestFitPrevNodeOffset;
+	UINT32              NextFreeOffset;
+	BIOS_BUFFER_NODE   *CurrNodePtr;
+	BIOS_BUFFER_NODE   *FreedNodePtr;
+	BIOS_BUFFER_NODE   *BestFitNodePtr;
+	BIOS_BUFFER_NODE   *BestFitPrevNodePtr;
+	BIOS_BUFFER_NODE   *NextFreePtr;
+	BIOS_HEAP_MANAGER  *BiosHeapBasePtr;
+	AGESA_BUFFER_PARAMS *AllocParams;
+
+	AllocParams = ((AGESA_BUFFER_PARAMS *) ConfigPtr);
+	AllocParams->BufferPointer = NULL;
+
+#if CONFIG_NORTHBRIDGE_AMD_AGESA_FAMILY15TN
+	/* if the allocation is for runtime use simple CBMEM data */
+	if (Data == HEAP_CALLOUT_RUNTIME)
+		return alloc_cbmem(AllocParams);
+#endif
+
+	AvailableHeapSize = BIOS_HEAP_SIZE - sizeof (BIOS_HEAP_MANAGER);
+	BiosHeapBaseAddr = (UINT8 *) GetHeapBase(&(AllocParams->StdHeader));
+	BiosHeapBasePtr = (BIOS_HEAP_MANAGER *) BiosHeapBaseAddr;
+
+	if (BiosHeapBasePtr->StartOfAllocatedNodes == 0) {
+		/* First allocation */
+		CurrNodeOffset = sizeof (BIOS_HEAP_MANAGER);
+		CurrNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + CurrNodeOffset);
+		CurrNodePtr->BufferHandle = AllocParams->BufferHandle;
+		CurrNodePtr->BufferSize = AllocParams->BufferLength;
+		CurrNodePtr->NextNodeOffset = 0;
+		AllocParams->BufferPointer = (UINT8 *) CurrNodePtr + sizeof (BIOS_BUFFER_NODE);
+
+		/* Update the remaining free space */
+		FreedNodeOffset = CurrNodeOffset + CurrNodePtr->BufferSize + sizeof (BIOS_BUFFER_NODE);
+		FreedNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + FreedNodeOffset);
+		FreedNodePtr->BufferSize = AvailableHeapSize - sizeof (BIOS_BUFFER_NODE) - CurrNodePtr->BufferSize;
+		FreedNodePtr->NextNodeOffset = 0;
+
+		/* Update the offsets for Allocated and Freed nodes */
+		BiosHeapBasePtr->StartOfAllocatedNodes = CurrNodeOffset;
+		BiosHeapBasePtr->StartOfFreedNodes = FreedNodeOffset;
+	} else {
+		/* Find out whether BufferHandle has been allocated on the heap. */
+		/* If it has, return AGESA_BOUNDS_CHK */
+		CurrNodeOffset = BiosHeapBasePtr->StartOfAllocatedNodes;
+		CurrNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + CurrNodeOffset);
+
+		while (CurrNodeOffset != 0) {
+			CurrNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + CurrNodeOffset);
+			if (CurrNodePtr->BufferHandle == AllocParams->BufferHandle) {
+				return AGESA_BOUNDS_CHK;
+			}
+			CurrNodeOffset = CurrNodePtr->NextNodeOffset;
+			/* If BufferHandle has not been allocated on the heap, CurrNodePtr here points
+			   to the end of the allocated nodes list.
+			*/
+
+		}
+		/* Find the node that best fits the requested buffer size */
+		FreedNodeOffset = BiosHeapBasePtr->StartOfFreedNodes;
+		PrevNodeOffset = FreedNodeOffset;
+		BestFitNodeOffset = 0;
+		BestFitPrevNodeOffset = 0;
+		while (FreedNodeOffset != 0) {
+			FreedNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + FreedNodeOffset);
+			if (FreedNodePtr->BufferSize >= (AllocParams->BufferLength + sizeof (BIOS_BUFFER_NODE))) {
+				if (BestFitNodeOffset == 0) {
+					/* First node that fits the requested buffer size */
+					BestFitNodeOffset = FreedNodeOffset;
+					BestFitPrevNodeOffset = PrevNodeOffset;
+				} else {
+					/* Find out whether current node is a better fit than the previous nodes */
+					BestFitNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + BestFitNodeOffset);
+					if (BestFitNodePtr->BufferSize > FreedNodePtr->BufferSize) {
+						BestFitNodeOffset = FreedNodeOffset;
+						BestFitPrevNodeOffset = PrevNodeOffset;
+					}
+				}
+			}
+			PrevNodeOffset = FreedNodeOffset;
+			FreedNodeOffset = FreedNodePtr->NextNodeOffset;
+		} /* end of while loop */
+
+		if (BestFitNodeOffset == 0) {
+			/* If we could not find a node that fits the requested buffer */
+			/* size, return AGESA_BOUNDS_CHK */
+			return AGESA_BOUNDS_CHK;
+		} else {
+			BestFitNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + BestFitNodeOffset);
+			BestFitPrevNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + BestFitPrevNodeOffset);
+
+			/* If BestFitNode is larger than the requested buffer, fragment the node further */
+			if (BestFitNodePtr->BufferSize > (AllocParams->BufferLength + sizeof (BIOS_BUFFER_NODE))) {
+				NextFreeOffset = BestFitNodeOffset + AllocParams->BufferLength + sizeof (BIOS_BUFFER_NODE);
+
+				NextFreePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + NextFreeOffset);
+				NextFreePtr->BufferSize = BestFitNodePtr->BufferSize - (AllocParams->BufferLength + sizeof (BIOS_BUFFER_NODE));
+				NextFreePtr->NextNodeOffset = BestFitNodePtr->NextNodeOffset;
+			} else {
+				/* Otherwise, next free node is NextNodeOffset of BestFitNode */
+				NextFreeOffset = BestFitNodePtr->NextNodeOffset;
+			}
+
+			/* If BestFitNode is the first buffer in the list, then update
+			   StartOfFreedNodes to reflect the new free node
+			*/
+			if (BestFitNodeOffset == BiosHeapBasePtr->StartOfFreedNodes) {
+				BiosHeapBasePtr->StartOfFreedNodes = NextFreeOffset;
+			} else {
+				BestFitPrevNodePtr->NextNodeOffset = NextFreeOffset;
+			}
+
+			/* Add BestFitNode to the list of Allocated nodes */
+			CurrNodePtr->NextNodeOffset = BestFitNodeOffset;
+			BestFitNodePtr->BufferSize = AllocParams->BufferLength;
+			BestFitNodePtr->BufferHandle = AllocParams->BufferHandle;
+			BestFitNodePtr->NextNodeOffset = 0;
+
+			/* Remove BestFitNode from list of Freed nodes */
+			AllocParams->BufferPointer = (UINT8 *) BestFitNodePtr + sizeof (BIOS_BUFFER_NODE);
+		}
+	}
+
+	return AGESA_SUCCESS;
+}
+
+AGESA_STATUS BiosDeallocateBuffer (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
+{
+
+	UINT8               *BiosHeapBaseAddr;
+	UINT32              AllocNodeOffset;
+	UINT32              PrevNodeOffset;
+	UINT32              NextNodeOffset;
+	UINT32              FreedNodeOffset;
+	UINT32              EndNodeOffset;
+	BIOS_BUFFER_NODE   *AllocNodePtr;
+	BIOS_BUFFER_NODE   *PrevNodePtr;
+	BIOS_BUFFER_NODE   *FreedNodePtr;
+	BIOS_BUFFER_NODE   *NextNodePtr;
+	BIOS_HEAP_MANAGER  *BiosHeapBasePtr;
+	AGESA_BUFFER_PARAMS *AllocParams;
+
+	AllocParams = (AGESA_BUFFER_PARAMS *) ConfigPtr;
+
+	BiosHeapBaseAddr = (UINT8 *) GetHeapBase(&(AllocParams->StdHeader));
+	BiosHeapBasePtr = (BIOS_HEAP_MANAGER *) BiosHeapBaseAddr;
+
+	/* Find target node to deallocate in list of allocated nodes.
+	   Return AGESA_BOUNDS_CHK if the BufferHandle is not found
+	*/
+	AllocNodeOffset = BiosHeapBasePtr->StartOfAllocatedNodes;
+	AllocNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + AllocNodeOffset);
+	PrevNodeOffset = AllocNodeOffset;
+
+	while (AllocNodePtr->BufferHandle !=  AllocParams->BufferHandle) {
+		if (AllocNodePtr->NextNodeOffset == 0) {
+			return AGESA_BOUNDS_CHK;
+		}
+		PrevNodeOffset = AllocNodeOffset;
+		AllocNodeOffset = AllocNodePtr->NextNodeOffset;
+		AllocNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + AllocNodeOffset);
+	}
+
+	/* Remove target node from list of allocated nodes */
+	PrevNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + PrevNodeOffset);
+	PrevNodePtr->NextNodeOffset = AllocNodePtr->NextNodeOffset;
+
+	/* Zero out the buffer, and clear the BufferHandle */
+	LibAmdMemFill ((UINT8 *)AllocNodePtr + sizeof (BIOS_BUFFER_NODE), 0, AllocNodePtr->BufferSize, &(AllocParams->StdHeader));
+	AllocNodePtr->BufferHandle = 0;
+	AllocNodePtr->BufferSize += sizeof (BIOS_BUFFER_NODE);
+
+	/* Add deallocated node in order to the list of freed nodes */
+	FreedNodeOffset = BiosHeapBasePtr->StartOfFreedNodes;
+	FreedNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + FreedNodeOffset);
+
+	EndNodeOffset = AllocNodeOffset + AllocNodePtr->BufferSize;
+
+	if (AllocNodeOffset < FreedNodeOffset) {
+		/* Add to the start of the freed list */
+		if (EndNodeOffset == FreedNodeOffset) {
+			/* If the freed node is adjacent to the first node in the list, concatenate both nodes */
+			AllocNodePtr->BufferSize += FreedNodePtr->BufferSize;
+			AllocNodePtr->NextNodeOffset = FreedNodePtr->NextNodeOffset;
+
+			/* Clear the BufferSize and NextNodeOffset of the previous first node */
+			FreedNodePtr->BufferSize = 0;
+			FreedNodePtr->NextNodeOffset = 0;
+
+		} else {
+			/* Otherwise, add freed node to the start of the list
+			   Update NextNodeOffset and BufferSize to include the
+			   size of BIOS_BUFFER_NODE
+			*/
+			AllocNodePtr->NextNodeOffset = FreedNodeOffset;
+		}
+		/* Update StartOfFreedNodes to the new first node */
+		BiosHeapBasePtr->StartOfFreedNodes = AllocNodeOffset;
+	} else {
+		/* Traverse list of freed nodes to find where the deallocated node
+		   should be place
+		*/
+		NextNodeOffset = FreedNodeOffset;
+		NextNodePtr = FreedNodePtr;
+		while (AllocNodeOffset > NextNodeOffset) {
+			PrevNodeOffset = NextNodeOffset;
+			if (NextNodePtr->NextNodeOffset == 0) {
+				break;
+			}
+			NextNodeOffset = NextNodePtr->NextNodeOffset;
+			NextNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + NextNodeOffset);
+		}
+
+		/* If deallocated node is adjacent to the next node,
+		   concatenate both nodes
+		*/
+		if (NextNodeOffset == EndNodeOffset) {
+			NextNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + NextNodeOffset);
+			AllocNodePtr->BufferSize += NextNodePtr->BufferSize;
+			AllocNodePtr->NextNodeOffset = NextNodePtr->NextNodeOffset;
+
+			NextNodePtr->BufferSize = 0;
+			NextNodePtr->NextNodeOffset = 0;
+		} else {
+			/*AllocNodePtr->NextNodeOffset = FreedNodePtr->NextNodeOffset; */
+			AllocNodePtr->NextNodeOffset = NextNodeOffset;
+		}
+		/* If deallocated node is adjacent to the previous node,
+		   concatenate both nodes
+		*/
+		PrevNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + PrevNodeOffset);
+		EndNodeOffset = PrevNodeOffset + PrevNodePtr->BufferSize;
+		if (AllocNodeOffset == EndNodeOffset) {
+			PrevNodePtr->NextNodeOffset = AllocNodePtr->NextNodeOffset;
+			PrevNodePtr->BufferSize += AllocNodePtr->BufferSize;
+
+			AllocNodePtr->BufferSize = 0;
+			AllocNodePtr->NextNodeOffset = 0;
+		} else {
+			PrevNodePtr->NextNodeOffset = AllocNodeOffset;
+		}
+	}
+	return AGESA_SUCCESS;
+}
+
+AGESA_STATUS BiosLocateBuffer (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
+{
+	UINT32              AllocNodeOffset;
+	UINT8               *BiosHeapBaseAddr;
+	BIOS_BUFFER_NODE   *AllocNodePtr;
+	BIOS_HEAP_MANAGER  *BiosHeapBasePtr;
+	AGESA_BUFFER_PARAMS *AllocParams;
+
+	AllocParams = (AGESA_BUFFER_PARAMS *) ConfigPtr;
+
+	BiosHeapBaseAddr = (UINT8 *) GetHeapBase(&(AllocParams->StdHeader));
+	BiosHeapBasePtr = (BIOS_HEAP_MANAGER *) BiosHeapBaseAddr;
+
+	AllocNodeOffset = BiosHeapBasePtr->StartOfAllocatedNodes;
+	AllocNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + AllocNodeOffset);
+
+	while (AllocParams->BufferHandle != AllocNodePtr->BufferHandle) {
+		if (AllocNodePtr->NextNodeOffset == 0) {
+			AllocParams->BufferPointer = NULL;
+			AllocParams->BufferLength = 0;
+			return AGESA_BOUNDS_CHK;
+		} else {
+			AllocNodeOffset = AllocNodePtr->NextNodeOffset;
+			AllocNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + AllocNodeOffset);
+		}
+	}
+
+	AllocParams->BufferPointer = (UINT8 *) ((UINT8 *) AllocNodePtr + sizeof (BIOS_BUFFER_NODE));
+	AllocParams->BufferLength = AllocNodePtr->BufferSize;
+
+	return AGESA_SUCCESS;
+
+}
+
+
+
+typedef struct _BIOS_HEAP_MANAGER {
+  UINT32 StartOfAllocatedNodes;
+  UINT32 StartOfFreedNodes;
+} BIOS_HEAP_MANAGER;
+
+typedef struct _BIOS_BUFFER_NODE {
+  UINT32 BufferHandle;
+  UINT32 BufferSize;
+  UINT32 NextNodeOffset;
+} BIOS_BUFFER_NODE;
+
+/* REQUIRED CALLOUTS
+ * AGESA ADVANCED CALLOUTS - CPU
+ */
+AGESA_STATUS BiosAllocateBuffer (UINT32 Func, UINT32 Data, VOID *ConfigPtr);
+AGESA_STATUS BiosDeallocateBuffer (UINT32 Func, UINT32 Data, VOID *ConfigPtr);
+AGESA_STATUS BiosLocateBuffer (UINT32 Func, UINT32 Data, VOID *ConfigPtr);
diff --git a/src/mainboard/amd/dinar/BiosCallOuts.c b/src/mainboard/amd/dinar/BiosCallOuts.c
index c7b9409..6b5d22b 100644
--- a/src/mainboard/amd/dinar/BiosCallOuts.c
+++ b/src/mainboard/amd/dinar/BiosCallOuts.c
@@ -86,103 +86,25 @@ static void restore_socket(void)
 }
 #endif
 
-STATIC BIOS_CALLOUT_STRUCT BiosCallouts[] =
+const BIOS_CALLOUT_STRUCT BiosCallouts[] =
 {
-	{AGESA_ALLOCATE_BUFFER,			BiosAllocateBuffer },
-	{AGESA_DEALLOCATE_BUFFER,		BiosDeallocateBuffer },
-	{AGESA_DO_RESET,			BiosReset },
-	{AGESA_LOCATE_BUFFER,			BiosLocateBuffer},
-	{AGESA_READ_SPD,			BiosReadSpd },
-	{AGESA_READ_SPD_RECOVERY,		BiosDefaultRet },
-	{AGESA_RUNFUNC_ONAP,			BiosRunFuncOnAp },
-	{AGESA_GNB_PCIE_SLOT_RESET,		BiosGnbPcieSlotReset },
-	{AGESA_GET_IDS_INIT_DATA,		BiosGetIdsInitData },
+	{AGESA_ALLOCATE_BUFFER,			agesa_AllocateBuffer },
+	{AGESA_DEALLOCATE_BUFFER,		agesa_DeallocateBuffer },
+	{AGESA_LOCATE_BUFFER,			agesa_LocateBuffer},
+	{AGESA_DO_RESET,			agesa_Reset },
+	{AGESA_READ_SPD,			board_ReadSpd },
+	{AGESA_READ_SPD_RECOVERY,		agesa_NoopUnsupported },
+	{AGESA_RUNFUNC_ONAP,			agesa_RunFuncOnAp },
+	{AGESA_GNB_PCIE_SLOT_RESET,		agesa_NoopSuccess },
+	{AGESA_GET_IDS_INIT_DATA,		agesa_EmptyIdsInitData },
 	{AGESA_HOOKBEFORE_DRAM_INIT,		BiosHookBeforeDramInit },
-	{AGESA_HOOKBEFORE_DRAM_INIT_RECOVERY,	BiosHookBeforeDramInitRecovery },
-	{AGESA_HOOKBEFORE_DQS_TRAINING,		BiosHookBeforeDQSTraining },
-	{AGESA_HOOKBEFORE_EXIT_SELF_REF,	BiosHookBeforeExitSelfRefresh },
+	{AGESA_HOOKBEFORE_DRAM_INIT_RECOVERY,	agesa_NoopSuccess },
+	{AGESA_HOOKBEFORE_DQS_TRAINING,		agesa_NoopSuccess },
+	{AGESA_HOOKBEFORE_EXIT_SELF_REF,	agesa_NoopSuccess },
 };
 
-AGESA_STATUS GetBiosCallout (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	UINTN i;
-	AGESA_STATUS CalloutStatus;
-	UINTN CallOutCount = sizeof (BiosCallouts) / sizeof (BiosCallouts [0]);
-
-	for (i = 0; i < CallOutCount; i++)
-	{
-		if (BiosCallouts[i].CalloutName == Func)
-		{
-			break;
-		}
-	}
-
-	if(i >= CallOutCount)
-	{
-		return AGESA_UNSUPPORTED;
-	}
-
-	CalloutStatus = BiosCallouts[i].CalloutPtr (Func, Data, ConfigPtr);
-
-	return CalloutStatus;
-}
-
-
-CONST IDS_NV_ITEM IdsData[] =
-{
-	/*{
-	  AGESA_IDS_NV_MAIN_PLL_CON,
-	  0x1
-	  },
-	  {
-	  AGESA_IDS_NV_MAIN_PLL_FID_EN,
-	  0x1
-	  },
-	  {
-	  AGESA_IDS_NV_MAIN_PLL_FID,
-	  0x8
-	  },
-
-	  {
-	  AGESA_IDS_NV_CUSTOM_NB_PSTATE,
-	  },
-	  {
-	  AGESA_IDS_NV_CUSTOM_NB_P0_DIV_CTRL,
-	  },
-	  {
-	  AGESA_IDS_NV_CUSTOM_NB_P1_DIV_CTRL,
-	  },
-	  {
-	  AGESA_IDS_NV_FORCE_NB_PSTATE,
-	  },
-	  */
-	{
-		0xFFFF,
-			0xFFFF
-	}
-};
-
-#define   NUM_IDS_ENTRIES    (sizeof (IdsData) / sizeof (IDS_NV_ITEM))
-
-
-AGESA_STATUS BiosGetIdsInitData (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	UINTN   i;
-	IDS_NV_ITEM *IdsPtr;
-
-	IdsPtr = ((IDS_CALLOUT_STRUCT *) ConfigPtr)->IdsNvPtr;
-
-	if (Data == IDS_CALLOUT_INIT) {
-		for (i = 0; i < NUM_IDS_ENTRIES; i++) {
-			IdsPtr[i].IdsNvValue = IdsData[i].IdsNvValue;
-			IdsPtr[i].IdsNvId = IdsData[i].IdsNvId;
-		}
-	}
-	return AGESA_SUCCESS;
-}
-
 
-AGESA_STATUS BiosReadSpd (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
+AGESA_STATUS board_ReadSpd (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
 {
 	AGESA_STATUS Status;
 #ifdef __PRE_RAM__
@@ -191,7 +113,7 @@ AGESA_STATUS BiosReadSpd (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
 
 	select_socket(((AGESA_READ_SPD_PARAMS *)ConfigPtr)->SocketId);
 
-	Status = agesa_ReadSPD (Func, Data, ConfigPtr);
+	Status = fam15_ReadSPD (Func, Data, ConfigPtr);
 
 	restore_socket();
 #else
@@ -202,11 +124,6 @@ AGESA_STATUS BiosReadSpd (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
 }
 
 /*  Call the host environment interface to provide a user hook opportunity. */
-AGESA_STATUS BiosHookBeforeDQSTraining (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	return AGESA_SUCCESS;
-}
-/*  Call the host environment interface to provide a user hook opportunity. */
 AGESA_STATUS BiosHookBeforeDramInit (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
 {
 	AGESA_STATUS      Status;
@@ -233,22 +150,3 @@ AGESA_STATUS BiosHookBeforeDramInit (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
 	Status = AGESA_SUCCESS;
 	return Status;
 }
-
-/*  Call the host environment interface to provide a user hook opportunity. */
-AGESA_STATUS BiosHookBeforeDramInitRecovery (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	return AGESA_SUCCESS;
-}
-/*  Call the host environment interface to provide a user hook opportunity. */
-AGESA_STATUS BiosHookBeforeExitSelfRefresh (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	return AGESA_SUCCESS;
-}
-/* PCIE slot reset control */
-AGESA_STATUS BiosGnbPcieSlotReset (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	AGESA_STATUS Status;
-
-	Status = AGESA_SUCCESS;
-	return  Status;
-}
diff --git a/src/mainboard/amd/dinar/BiosCallOuts.h b/src/mainboard/amd/dinar/BiosCallOuts.h
index 179634d..6c4dde8 100644
--- a/src/mainboard/amd/dinar/BiosCallOuts.h
+++ b/src/mainboard/amd/dinar/BiosCallOuts.h
@@ -22,8 +22,6 @@
 
 #include <northbridge/amd/agesa/family15/fam15_callouts.h>
 
-/* CALLOUT Initialization */
-AGESA_STATUS GetBiosCallout(UINT32 Func, UINT32 Data, VOID *ConfigPtr);
 
 #define SB_GPIO_REG02   2
 #define SB_GPIO_REG09   9
diff --git a/src/mainboard/amd/inagua/BiosCallOuts.c b/src/mainboard/amd/inagua/BiosCallOuts.c
index cd80e5d..3eca2f2 100644
--- a/src/mainboard/amd/inagua/BiosCallOuts.c
+++ b/src/mainboard/amd/inagua/BiosCallOuts.c
@@ -24,45 +24,22 @@
 #include "SB800.h"
 #include <northbridge/amd/agesa/family14/dimmSpd.h>
 
-STATIC BIOS_CALLOUT_STRUCT BiosCallouts[] =
+const BIOS_CALLOUT_STRUCT BiosCallouts[] =
 {
-	{AGESA_ALLOCATE_BUFFER,			BiosAllocateBuffer },
-	{AGESA_DEALLOCATE_BUFFER,		BiosDeallocateBuffer },
-	{AGESA_DO_RESET,			BiosReset },
-	{AGESA_LOCATE_BUFFER,			BiosLocateBuffer },
-	{AGESA_READ_SPD,			BiosReadSpd },
-	{AGESA_READ_SPD_RECOVERY,		BiosDefaultRet },
-	{AGESA_RUNFUNC_ONAP,			BiosRunFuncOnAp },
+	{AGESA_ALLOCATE_BUFFER,			agesa_AllocateBuffer },
+	{AGESA_DEALLOCATE_BUFFER,		agesa_DeallocateBuffer },
+	{AGESA_LOCATE_BUFFER,			agesa_LocateBuffer },
+	{AGESA_DO_RESET,			agesa_Reset },
+	{AGESA_READ_SPD,			fam14_ReadSpd },
+	{AGESA_READ_SPD_RECOVERY,		agesa_NoopUnsupported },
+	{AGESA_RUNFUNC_ONAP,			agesa_RunFuncOnAp },
 	{AGESA_GNB_PCIE_SLOT_RESET,		BiosGnbPcieSlotReset },
 	{AGESA_HOOKBEFORE_DRAM_INIT,		BiosHookBeforeDramInit },
-	{AGESA_HOOKBEFORE_DRAM_INIT_RECOVERY,	BiosHookBeforeDramInitRecovery },
-	{AGESA_HOOKBEFORE_DQS_TRAINING,		BiosHookBeforeDQSTraining },
-	{AGESA_HOOKBEFORE_EXIT_SELF_REF,	BiosHookBeforeExitSelfRefresh },
+	{AGESA_HOOKBEFORE_DRAM_INIT_RECOVERY,	agesa_NoopSuccess },
+	{AGESA_HOOKBEFORE_DQS_TRAINING,		agesa_NoopSuccess },
+	{AGESA_HOOKBEFORE_EXIT_SELF_REF,	agesa_NoopSuccess },
 };
 
-AGESA_STATUS GetBiosCallout (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	UINTN i;
-	AGESA_STATUS CalloutStatus;
-	UINTN CallOutCount = sizeof (BiosCallouts) / sizeof (BiosCallouts [0]);
-
-	CalloutStatus = AGESA_UNSUPPORTED;
-
-	for (i = 0; i < CallOutCount; i++) {
-		if (BiosCallouts[i].CalloutName == Func) {
-			CalloutStatus = BiosCallouts[i].CalloutPtr (Func, Data, ConfigPtr);
-			return CalloutStatus;
-		}
-	}
-
-	return CalloutStatus;
-}
-
-/*  Call the host environment interface to provide a user hook opportunity. */
-AGESA_STATUS BiosHookBeforeDQSTraining (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	return AGESA_SUCCESS;
-}
 /*  Call the host environment interface to provide a user hook opportunity. */
 AGESA_STATUS BiosHookBeforeDramInit (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
 {
@@ -146,17 +123,6 @@ AGESA_STATUS BiosHookBeforeDramInit (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
 	return Status;
 }
 
-/*	Call the host environment interface to provide a user hook opportunity. */
-AGESA_STATUS BiosHookBeforeDramInitRecovery (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	return AGESA_SUCCESS;
-}
-
-/*  Call the host environment interface to provide a user hook opportunity. */
-AGESA_STATUS BiosHookBeforeExitSelfRefresh (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	return AGESA_SUCCESS;
-}
 /* PCIE slot reset control */
 AGESA_STATUS BiosGnbPcieSlotReset (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
 {
diff --git a/src/mainboard/amd/inagua/BiosCallOuts.h b/src/mainboard/amd/inagua/BiosCallOuts.h
index f3483e7..60ef7d7 100644
--- a/src/mainboard/amd/inagua/BiosCallOuts.h
+++ b/src/mainboard/amd/inagua/BiosCallOuts.h
@@ -22,8 +22,6 @@
 
 #include <northbridge/amd/agesa/family14/fam14_callouts.h>
 
-/* CALLOUT Initialization */
-AGESA_STATUS GetBiosCallout(UINT32 Func, UINT32 Data, VOID *ConfigPtr);
 
 #define SB_GPIO_REG02   2
 #define SB_GPIO_REG09   9
diff --git a/src/mainboard/amd/olivehill/BiosCallOuts.c b/src/mainboard/amd/olivehill/BiosCallOuts.c
index 40df194..102b2ff 100644
--- a/src/mainboard/amd/olivehill/BiosCallOuts.c
+++ b/src/mainboard/amd/olivehill/BiosCallOuts.c
@@ -29,42 +29,22 @@
 #include "imc.h"
 #endif
 
-STATIC CONST BIOS_CALLOUT_STRUCT BiosCallouts[] =
+const BIOS_CALLOUT_STRUCT BiosCallouts[] =
 {
-	{AGESA_ALLOCATE_BUFFER,          fam16kb_AllocateBuffer },
-	{AGESA_DEALLOCATE_BUFFER,        fam16kb_DeallocateBuffer },
-	{AGESA_DO_RESET,                 fam16kb_Reset },
-	{AGESA_LOCATE_BUFFER,            fam16kb_LocateBuffer },
+	{AGESA_ALLOCATE_BUFFER,          agesa_AllocateBuffer },
+	{AGESA_DEALLOCATE_BUFFER,        agesa_DeallocateBuffer },
+	{AGESA_LOCATE_BUFFER,            agesa_LocateBuffer },
+	{AGESA_DO_RESET,                 agesa_Reset },
 	{AGESA_READ_SPD,                 fam16kb_ReadSpd },
-	{AGESA_READ_SPD_RECOVERY,        fam16kb_DefaultRet },
-	{AGESA_RUNFUNC_ONAP,             fam16kb_RunFuncOnAp },
-	{AGESA_GET_IDS_INIT_DATA,        fam16kb_GetIdsInitData },
-	{AGESA_HOOKBEFORE_DQS_TRAINING,  fam16kb_HookBeforeDQSTraining },
-	{AGESA_HOOKBEFORE_EXIT_SELF_REF, fam16kb_HookBeforeExitSelfRefresh },
+	{AGESA_READ_SPD_RECOVERY,        agesa_NoopUnsupported },
+	{AGESA_RUNFUNC_ONAP,             agesa_RunFuncOnAp },
+	{AGESA_GET_IDS_INIT_DATA,        agesa_EmptyIdsInitData },
+	{AGESA_HOOKBEFORE_DQS_TRAINING,  agesa_NoopSuccess },
+	{AGESA_HOOKBEFORE_EXIT_SELF_REF, agesa_NoopSuccess },
 	{AGESA_FCH_OEM_CALLOUT,          Fch_Oem_config },
 	{AGESA_GNB_GFX_GET_VBIOS_IMAGE,  fam16kb_HookGfxGetVbiosImage }
 };
 
-AGESA_STATUS GetBiosCallout (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	UINTN i;
-	AGESA_STATUS CalloutStatus;
-	UINTN CallOutCount = sizeof (BiosCallouts) / sizeof (BiosCallouts [0]);
-
-	for (i = 0; i < CallOutCount; i++)
-	{
-		if (BiosCallouts[i].CalloutName == Func)
-			break;
-	}
-
-	if(i >= CallOutCount)
-		return AGESA_UNSUPPORTED;
-
-	CalloutStatus = BiosCallouts[i].CalloutPtr (Func, Data, ConfigPtr);
-
-	return CalloutStatus;
-}
-
 /**
  * AMD Olivehill Platform ALC272 Verb Table
  */
diff --git a/src/mainboard/amd/olivehill/BiosCallOuts.h b/src/mainboard/amd/olivehill/BiosCallOuts.h
index 4c7e100..3c75261 100644
--- a/src/mainboard/amd/olivehill/BiosCallOuts.h
+++ b/src/mainboard/amd/olivehill/BiosCallOuts.h
@@ -22,8 +22,6 @@
 
 #include <northbridge/amd/agesa/family16kb/fam16kb_callouts.h>
 
-/* CALLOUT Initialization */
-AGESA_STATUS GetBiosCallout(UINT32 Func, UINT32 Data, VOID *ConfigPtr);
 
 /* FCH OEM Config*/
 AGESA_STATUS Fch_Oem_config(UINT32 Func, UINT32 FchData, VOID *ConfigPtr);
diff --git a/src/mainboard/amd/parmer/BiosCallOuts.c b/src/mainboard/amd/parmer/BiosCallOuts.c
index 110c2c8..8ea7c2f 100644
--- a/src/mainboard/amd/parmer/BiosCallOuts.c
+++ b/src/mainboard/amd/parmer/BiosCallOuts.c
@@ -29,42 +29,22 @@
 #include "imc.h"
 #endif
 
-STATIC CONST BIOS_CALLOUT_STRUCT BiosCallouts[] =
+const BIOS_CALLOUT_STRUCT BiosCallouts[] =
 {
-	{AGESA_ALLOCATE_BUFFER,          fam15tn_AllocateBuffer },
-	{AGESA_DEALLOCATE_BUFFER,        fam15tn_DeallocateBuffer },
-	{AGESA_DO_RESET,                 fam15tn_Reset },
-	{AGESA_LOCATE_BUFFER,            fam15tn_LocateBuffer },
+	{AGESA_ALLOCATE_BUFFER,          agesa_AllocateBuffer },
+	{AGESA_DEALLOCATE_BUFFER,        agesa_DeallocateBuffer },
+	{AGESA_LOCATE_BUFFER,            agesa_LocateBuffer },
+	{AGESA_DO_RESET,                 agesa_Reset },
 	{AGESA_READ_SPD,                 fam15tn_ReadSpd },
-	{AGESA_READ_SPD_RECOVERY,        fam15tn_DefaultRet },
-	{AGESA_RUNFUNC_ONAP,             fam15tn_RunFuncOnAp },
-	{AGESA_GET_IDS_INIT_DATA,        fam15tn_GetIdsInitData },
-	{AGESA_HOOKBEFORE_DQS_TRAINING,  fam15tn_HookBeforeDQSTraining },
-	{AGESA_HOOKBEFORE_EXIT_SELF_REF, fam15tn_HookBeforeExitSelfRefresh },
+	{AGESA_READ_SPD_RECOVERY,        agesa_NoopUnsupported },
+	{AGESA_RUNFUNC_ONAP,             agesa_RunFuncOnAp },
+	{AGESA_GET_IDS_INIT_DATA,        agesa_EmptyIdsInitData },
+	{AGESA_HOOKBEFORE_DQS_TRAINING,  agesa_NoopSuccess },
+	{AGESA_HOOKBEFORE_EXIT_SELF_REF, agesa_NoopSuccess },
 	{AGESA_FCH_OEM_CALLOUT,          Fch_Oem_config },
 	{AGESA_GNB_GFX_GET_VBIOS_IMAGE,  fam15tn_HookGfxGetVbiosImage }
 };
 
-AGESA_STATUS GetBiosCallout (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	UINTN i;
-	AGESA_STATUS CalloutStatus;
-	UINTN CallOutCount = sizeof (BiosCallouts) / sizeof (BiosCallouts [0]);
-
-	for (i = 0; i < CallOutCount; i++)
-	{
-		if (BiosCallouts[i].CalloutName == Func)
-			break;
-	}
-
-	if(i >= CallOutCount)
-		return AGESA_UNSUPPORTED;
-
-	CalloutStatus = BiosCallouts[i].CalloutPtr (Func, Data, ConfigPtr);
-
-	return CalloutStatus;
-}
-
 /**
  * AMD Parmer Platform ALC272 Verb Table
  */
diff --git a/src/mainboard/amd/parmer/BiosCallOuts.h b/src/mainboard/amd/parmer/BiosCallOuts.h
index 9132fac..73e500c 100644
--- a/src/mainboard/amd/parmer/BiosCallOuts.h
+++ b/src/mainboard/amd/parmer/BiosCallOuts.h
@@ -22,8 +22,6 @@
 
 #include <northbridge/amd/agesa/family15tn/fam15tn_callouts.h>
 
-/* CALLOUT Initialization */
-AGESA_STATUS GetBiosCallout (UINT32 Func, UINT32 Data, VOID *ConfigPtr);
 
 /* FCH OEM Config*/
 AGESA_STATUS Fch_Oem_config(UINT32 Func, UINT32 FchData, VOID *ConfigPtr);
diff --git a/src/mainboard/amd/persimmon/BiosCallOuts.c b/src/mainboard/amd/persimmon/BiosCallOuts.c
index a771a6c..97d7c4d 100644
--- a/src/mainboard/amd/persimmon/BiosCallOuts.c
+++ b/src/mainboard/amd/persimmon/BiosCallOuts.c
@@ -24,49 +24,22 @@
 #include "SB800.h"
 #include <northbridge/amd/agesa/family14/dimmSpd.h>
 
-STATIC BIOS_CALLOUT_STRUCT BiosCallouts[] =
+const BIOS_CALLOUT_STRUCT BiosCallouts[] =
 {
-	{AGESA_ALLOCATE_BUFFER,			BiosAllocateBuffer },
-	{AGESA_DEALLOCATE_BUFFER,		BiosDeallocateBuffer },
-	{AGESA_DO_RESET,			BiosReset },
-	{AGESA_LOCATE_BUFFER,			BiosLocateBuffer },
-	{AGESA_READ_SPD,			BiosReadSpd },
-	{AGESA_READ_SPD_RECOVERY,		BiosDefaultRet },
-	{AGESA_RUNFUNC_ONAP,			BiosRunFuncOnAp },
+	{AGESA_ALLOCATE_BUFFER,			agesa_AllocateBuffer },
+	{AGESA_DEALLOCATE_BUFFER,		agesa_DeallocateBuffer },
+	{AGESA_LOCATE_BUFFER,			agesa_LocateBuffer },
+	{AGESA_DO_RESET,			agesa_Reset },
+	{AGESA_READ_SPD,			fam14_ReadSpd },
+	{AGESA_READ_SPD_RECOVERY,		agesa_NoopUnsupported },
+	{AGESA_RUNFUNC_ONAP,			agesa_RunFuncOnAp },
 	{AGESA_GNB_PCIE_SLOT_RESET,		BiosGnbPcieSlotReset },
 	{AGESA_HOOKBEFORE_DRAM_INIT,		BiosHookBeforeDramInit },
-	{AGESA_HOOKBEFORE_DRAM_INIT_RECOVERY,	BiosHookBeforeDramInitRecovery },
-	{AGESA_HOOKBEFORE_DQS_TRAINING,		BiosHookBeforeDQSTraining },
-	{AGESA_HOOKBEFORE_EXIT_SELF_REF,	BiosHookBeforeExitSelfRefresh },
+	{AGESA_HOOKBEFORE_DRAM_INIT_RECOVERY,	agesa_NoopSuccess },
+	{AGESA_HOOKBEFORE_DQS_TRAINING,		agesa_NoopSuccess },
+	{AGESA_HOOKBEFORE_EXIT_SELF_REF,	agesa_NoopSuccess },
 };
 
-AGESA_STATUS GetBiosCallout (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	UINTN i;
-	AGESA_STATUS CalloutStatus;
-	UINTN CallOutCount = sizeof (BiosCallouts) / sizeof (BiosCallouts [0]);
-
-	/*
-	 * printk(BIOS_SPEW,"%s function: %x\n", __func__, (u32) Func);
-	 */
-
-	CalloutStatus = AGESA_UNSUPPORTED;
-
-	for (i = 0; i < CallOutCount; i++) {
-		if (BiosCallouts[i].CalloutName == Func) {
-			CalloutStatus = BiosCallouts[i].CalloutPtr (Func, Data, ConfigPtr);
-			return CalloutStatus;
-		}
-	}
-
-	return CalloutStatus;
-}
-
-/*	Call the host environment interface to provide a user hook opportunity. */
-AGESA_STATUS BiosHookBeforeDQSTraining (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	return AGESA_SUCCESS;
-}
 /*	Call the host environment interface to provide a user hook opportunity. */
 AGESA_STATUS BiosHookBeforeDramInit (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
 {
@@ -76,17 +49,6 @@ AGESA_STATUS BiosHookBeforeDramInit (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
 	return AGESA_SUCCESS;
 }
 
-/*	Call the host environment interface to provide a user hook opportunity. */
-AGESA_STATUS BiosHookBeforeDramInitRecovery (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	return AGESA_SUCCESS;
-}
-
-/*	Call the host environment interface to provide a user hook opportunity. */
-AGESA_STATUS BiosHookBeforeExitSelfRefresh (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	return AGESA_SUCCESS;
-}
 /* PCIE slot reset control */
 AGESA_STATUS BiosGnbPcieSlotReset (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
 {
diff --git a/src/mainboard/amd/persimmon/BiosCallOuts.h b/src/mainboard/amd/persimmon/BiosCallOuts.h
index 92e8ce5..88005ed 100644
--- a/src/mainboard/amd/persimmon/BiosCallOuts.h
+++ b/src/mainboard/amd/persimmon/BiosCallOuts.h
@@ -22,7 +22,5 @@
 
 #include <northbridge/amd/agesa/family14/fam14_callouts.h>
 
-/* CALLOUT Initialization */
-AGESA_STATUS GetBiosCallout(UINT32 Func, UINT32 Data, VOID *ConfigPtr);
 
 #endif //_BIOS_CALLOUT_H_
diff --git a/src/mainboard/amd/south_station/BiosCallOuts.c b/src/mainboard/amd/south_station/BiosCallOuts.c
index 00a0f58..49233df 100644
--- a/src/mainboard/amd/south_station/BiosCallOuts.c
+++ b/src/mainboard/amd/south_station/BiosCallOuts.c
@@ -24,47 +24,22 @@
 #include "SB800.h"
 #include <northbridge/amd/agesa/family14/dimmSpd.h>
 
-STATIC BIOS_CALLOUT_STRUCT BiosCallouts[] =
+const BIOS_CALLOUT_STRUCT BiosCallouts[] =
 {
-	{AGESA_ALLOCATE_BUFFER,			BiosAllocateBuffer },
-	{AGESA_DEALLOCATE_BUFFER,		BiosDeallocateBuffer },
-	{AGESA_DO_RESET,			BiosReset },
-	{AGESA_LOCATE_BUFFER,			BiosLocateBuffer },
-	{AGESA_READ_SPD,			BiosReadSpd },
-	{AGESA_READ_SPD_RECOVERY,		BiosDefaultRet },
-	{AGESA_RUNFUNC_ONAP,			BiosRunFuncOnAp },
+	{AGESA_ALLOCATE_BUFFER,			agesa_AllocateBuffer },
+	{AGESA_DEALLOCATE_BUFFER,		agesa_DeallocateBuffer },
+	{AGESA_LOCATE_BUFFER,			agesa_LocateBuffer },
+	{AGESA_DO_RESET,			agesa_Reset },
+	{AGESA_READ_SPD,			fam14_ReadSpd },
+	{AGESA_READ_SPD_RECOVERY,		agesa_NoopUnsupported },
+	{AGESA_RUNFUNC_ONAP,			agesa_RunFuncOnAp },
 	{AGESA_GNB_PCIE_SLOT_RESET,		BiosGnbPcieSlotReset },
 	{AGESA_HOOKBEFORE_DRAM_INIT,		BiosHookBeforeDramInit },
-	{AGESA_HOOKBEFORE_DRAM_INIT_RECOVERY,	BiosHookBeforeDramInitRecovery },
-	{AGESA_HOOKBEFORE_DQS_TRAINING,		BiosHookBeforeDQSTraining },
-	{AGESA_HOOKBEFORE_EXIT_SELF_REF,	BiosHookBeforeExitSelfRefresh },
+	{AGESA_HOOKBEFORE_DRAM_INIT_RECOVERY,	agesa_NoopSuccess },
+	{AGESA_HOOKBEFORE_DQS_TRAINING,		agesa_NoopSuccess },
+	{AGESA_HOOKBEFORE_EXIT_SELF_REF,	agesa_NoopSuccess },
 };
 
-AGESA_STATUS GetBiosCallout (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-  UINTN i;
-  AGESA_STATUS CalloutStatus;
-  UINTN CallOutCount = sizeof (BiosCallouts) / sizeof (BiosCallouts [0]);
-
-  CalloutStatus = AGESA_UNSUPPORTED;
-
-  for (i = 0; i < CallOutCount; i++)
-  {
-    if (BiosCallouts[i].CalloutName == Func)
-    {
-      CalloutStatus = BiosCallouts[i].CalloutPtr (Func, Data, ConfigPtr);
-      return CalloutStatus;
-    }
-  }
-
-  return CalloutStatus;
-}
-
-/*  Call the host environment interface to provide a user hook opportunity. */
-AGESA_STATUS BiosHookBeforeDQSTraining (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-  return AGESA_SUCCESS;
-}
 /*  Call the host environment interface to provide a user hook opportunity. */
 AGESA_STATUS BiosHookBeforeDramInit (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
 {
@@ -148,17 +123,6 @@ AGESA_STATUS BiosHookBeforeDramInit (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
   return Status;
 }
 
-/*  Call the host environment interface to provide a user hook opportunity. */
-AGESA_STATUS BiosHookBeforeDramInitRecovery (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-  return AGESA_SUCCESS;
-}
-
-/*  Call the host environment interface to provide a user hook opportunity. */
-AGESA_STATUS BiosHookBeforeExitSelfRefresh (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-  return AGESA_SUCCESS;
-}
 /* PCIE slot reset control */
 AGESA_STATUS BiosGnbPcieSlotReset (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
 {
diff --git a/src/mainboard/amd/south_station/BiosCallOuts.h b/src/mainboard/amd/south_station/BiosCallOuts.h
index f3483e7..60ef7d7 100644
--- a/src/mainboard/amd/south_station/BiosCallOuts.h
+++ b/src/mainboard/amd/south_station/BiosCallOuts.h
@@ -22,8 +22,6 @@
 
 #include <northbridge/amd/agesa/family14/fam14_callouts.h>
 
-/* CALLOUT Initialization */
-AGESA_STATUS GetBiosCallout(UINT32 Func, UINT32 Data, VOID *ConfigPtr);
 
 #define SB_GPIO_REG02   2
 #define SB_GPIO_REG09   9
diff --git a/src/mainboard/amd/thatcher/BiosCallOuts.c b/src/mainboard/amd/thatcher/BiosCallOuts.c
index f51073e..bc24184 100644
--- a/src/mainboard/amd/thatcher/BiosCallOuts.c
+++ b/src/mainboard/amd/thatcher/BiosCallOuts.c
@@ -29,42 +29,22 @@
 #include "imc.h"
 #endif
 
-STATIC CONST BIOS_CALLOUT_STRUCT BiosCallouts[] =
+const BIOS_CALLOUT_STRUCT BiosCallouts[] =
 {
-	{AGESA_ALLOCATE_BUFFER,          fam15tn_AllocateBuffer },
-	{AGESA_DEALLOCATE_BUFFER,        fam15tn_DeallocateBuffer },
-	{AGESA_DO_RESET,                 fam15tn_Reset },
-	{AGESA_LOCATE_BUFFER,            fam15tn_LocateBuffer },
+	{AGESA_ALLOCATE_BUFFER,          agesa_AllocateBuffer },
+	{AGESA_DEALLOCATE_BUFFER,        agesa_DeallocateBuffer },
+	{AGESA_LOCATE_BUFFER,            agesa_LocateBuffer },
+	{AGESA_DO_RESET,                 agesa_Reset },
 	{AGESA_READ_SPD,                 fam15tn_ReadSpd },
-	{AGESA_READ_SPD_RECOVERY,        fam15tn_DefaultRet },
-	{AGESA_RUNFUNC_ONAP,             fam15tn_RunFuncOnAp },
-	{AGESA_GET_IDS_INIT_DATA,        fam15tn_GetIdsInitData },
-	{AGESA_HOOKBEFORE_DQS_TRAINING,  fam15tn_HookBeforeDQSTraining },
-	{AGESA_HOOKBEFORE_EXIT_SELF_REF, fam15tn_HookBeforeExitSelfRefresh },
+	{AGESA_READ_SPD_RECOVERY,        agesa_NoopUnsupported },
+	{AGESA_RUNFUNC_ONAP,             agesa_RunFuncOnAp },
+	{AGESA_GET_IDS_INIT_DATA,        agesa_EmptyIdsInitData },
+	{AGESA_HOOKBEFORE_DQS_TRAINING,  agesa_NoopSuccess },
+	{AGESA_HOOKBEFORE_EXIT_SELF_REF, agesa_NoopSuccess },
 	{AGESA_FCH_OEM_CALLOUT,          Fch_Oem_config },
 	{AGESA_GNB_GFX_GET_VBIOS_IMAGE,  fam15tn_HookGfxGetVbiosImage }
 };
 
-AGESA_STATUS GetBiosCallout (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	UINTN i;
-	AGESA_STATUS CalloutStatus;
-	UINTN CallOutCount = sizeof (BiosCallouts) / sizeof (BiosCallouts [0]);
-
-	for (i = 0; i < CallOutCount; i++)
-	{
-		if (BiosCallouts[i].CalloutName == Func)
-			break;
-	}
-
-	if(i >= CallOutCount)
-		return AGESA_UNSUPPORTED;
-
-	CalloutStatus = BiosCallouts[i].CalloutPtr (Func, Data, ConfigPtr);
-
-	return CalloutStatus;
-}
-
 /**
  * AMD Thatcher Platform ALC272 Verb Table
  */
diff --git a/src/mainboard/amd/thatcher/BiosCallOuts.h b/src/mainboard/amd/thatcher/BiosCallOuts.h
index 9132fac..73e500c 100644
--- a/src/mainboard/amd/thatcher/BiosCallOuts.h
+++ b/src/mainboard/amd/thatcher/BiosCallOuts.h
@@ -22,8 +22,6 @@
 
 #include <northbridge/amd/agesa/family15tn/fam15tn_callouts.h>
 
-/* CALLOUT Initialization */
-AGESA_STATUS GetBiosCallout (UINT32 Func, UINT32 Data, VOID *ConfigPtr);
 
 /* FCH OEM Config*/
 AGESA_STATUS Fch_Oem_config(UINT32 Func, UINT32 FchData, VOID *ConfigPtr);
diff --git a/src/mainboard/amd/torpedo/BiosCallOuts.c b/src/mainboard/amd/torpedo/BiosCallOuts.c
index a275dc8..79851e0 100644
--- a/src/mainboard/amd/torpedo/BiosCallOuts.c
+++ b/src/mainboard/amd/torpedo/BiosCallOuts.c
@@ -37,107 +37,25 @@
 #define SB_GPIO_REG27   27
 #endif
 
-STATIC BIOS_CALLOUT_STRUCT BiosCallouts[] =
+const BIOS_CALLOUT_STRUCT BiosCallouts[] =
 {
-	{AGESA_ALLOCATE_BUFFER,			BiosAllocateBuffer },
-	{AGESA_DEALLOCATE_BUFFER,		BiosDeallocateBuffer },
-	{AGESA_DO_RESET,			BiosReset },
-	{AGESA_LOCATE_BUFFER,			BiosLocateBuffer },
-	{AGESA_READ_SPD,			BiosReadSpd },
-	{AGESA_READ_SPD_RECOVERY,		BiosDefaultRet },
-	{AGESA_RUNFUNC_ONAP,			BiosRunFuncOnAp },
+	{AGESA_ALLOCATE_BUFFER,			agesa_AllocateBuffer },
+	{AGESA_DEALLOCATE_BUFFER,		agesa_DeallocateBuffer },
+	{AGESA_LOCATE_BUFFER,			agesa_LocateBuffer },
+	{AGESA_DO_RESET,			agesa_Reset },
+	{AGESA_READ_SPD,			fam12_ReadSpd },
+	{AGESA_READ_SPD_RECOVERY,		agesa_NoopUnsupported },
+	{AGESA_RUNFUNC_ONAP,			agesa_RunFuncOnAp },
 	{AGESA_GNB_PCIE_SLOT_RESET,		BiosGnbPcieSlotReset },
-	{AGESA_GET_IDS_INIT_DATA,		BiosGetIdsInitData },
+	{AGESA_GET_IDS_INIT_DATA,		agesa_EmptyIdsInitData },
 	{AGESA_HOOKBEFORE_DRAM_INIT,		BiosHookBeforeDramInit },
-	{AGESA_HOOKBEFORE_DRAM_INIT_RECOVERY,	BiosHookBeforeDramInitRecovery },
-	{AGESA_HOOKBEFORE_DQS_TRAINING,		BiosHookBeforeDQSTraining },
-	{AGESA_HOOKBEFORE_EXIT_SELF_REF,	BiosHookBeforeExitSelfRefresh },
+	{AGESA_HOOKBEFORE_DRAM_INIT_RECOVERY,	agesa_NoopSuccess },
+	{AGESA_HOOKBEFORE_DQS_TRAINING,		agesa_NoopSuccess },
+	{AGESA_HOOKBEFORE_EXIT_SELF_REF,	agesa_NoopSuccess },
 };
 
-AGESA_STATUS GetBiosCallout (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-  UINTN i;
-  AGESA_STATUS CalloutStatus;
-  UINTN CallOutCount = sizeof (BiosCallouts) / sizeof (BiosCallouts [0]);
-
-  for (i = 0; i < CallOutCount; i++)
-  {
-    if (BiosCallouts[i].CalloutName == Func)
-    {
-      break;
-    }
-  }
-
-  if(i >= CallOutCount)
-  {
-    return AGESA_UNSUPPORTED;
-  }
-
-  CalloutStatus = BiosCallouts[i].CalloutPtr (Func, Data, ConfigPtr);
-
-  return CalloutStatus;
-}
-
-
-CONST IDS_NV_ITEM IdsData[] =
-{
-  /*{
-    AGESA_IDS_NV_MAIN_PLL_CON,
-    0x1
-  },
-  {
-    AGESA_IDS_NV_MAIN_PLL_FID_EN,
-    0x1
-  },
-  {
-    AGESA_IDS_NV_MAIN_PLL_FID,
-    0x8
-  },
-
-  {
-    AGESA_IDS_NV_CUSTOM_NB_PSTATE,
-  },
-  {
-    AGESA_IDS_NV_CUSTOM_NB_P0_DIV_CTRL,
-  },
-  {
-    AGESA_IDS_NV_CUSTOM_NB_P1_DIV_CTRL,
-  },
-  {
-    AGESA_IDS_NV_FORCE_NB_PSTATE,
-  },
-*/
-  {
-    0xFFFF,
-    0xFFFF
-  }
-};
-
-#define   NUM_IDS_ENTRIES    (sizeof (IdsData) / sizeof (IDS_NV_ITEM))
-
-
-AGESA_STATUS BiosGetIdsInitData (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-  UINTN   i;
-  IDS_NV_ITEM *IdsPtr;
-
-  IdsPtr = ((IDS_CALLOUT_STRUCT *) ConfigPtr)->IdsNvPtr;
-
-  if (Data == IDS_CALLOUT_INIT) {
-    for (i = 0; i < NUM_IDS_ENTRIES; i++) {
-      IdsPtr[i].IdsNvValue = IdsData[i].IdsNvValue;
-      IdsPtr[i].IdsNvId = IdsData[i].IdsNvId;
-    }
-  }
-  return AGESA_SUCCESS;
-}
 
 /*  Call the host environment interface to provide a user hook opportunity. */
-AGESA_STATUS BiosHookBeforeDQSTraining (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-  return AGESA_SUCCESS;
-}
-/*  Call the host environment interface to provide a user hook opportunity. */
 AGESA_STATUS BiosHookBeforeDramInit (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
 {
   AGESA_STATUS      Status;
@@ -188,16 +106,6 @@ AGESA_STATUS BiosHookBeforeDramInit (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
   return Status;
 }
 
-/*  Call the host environment interface to provide a user hook opportunity. */
-AGESA_STATUS BiosHookBeforeDramInitRecovery (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-  return AGESA_SUCCESS;
-}
-/*  Call the host environment interface to provide a user hook opportunity. */
-AGESA_STATUS BiosHookBeforeExitSelfRefresh (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-  return AGESA_SUCCESS;
-}
 /* PCIE slot reset control */
 AGESA_STATUS BiosGnbPcieSlotReset (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
 {
diff --git a/src/mainboard/amd/torpedo/BiosCallOuts.h b/src/mainboard/amd/torpedo/BiosCallOuts.h
index 16b70b4..c97e0cf 100644
--- a/src/mainboard/amd/torpedo/BiosCallOuts.h
+++ b/src/mainboard/amd/torpedo/BiosCallOuts.h
@@ -22,8 +22,6 @@
 
 #include <northbridge/amd/agesa/family12/fam12_callouts.h>
 
-/* CALLOUT Initialization */
-AGESA_STATUS GetBiosCallout(UINT32 Func, UINT32 Data, VOID *ConfigPtr);
 
 // These registers are not defined in cimx/SB900/Hudson-2.h
 #define SB_GPIO_REG02   2
diff --git a/src/mainboard/amd/union_station/BiosCallOuts.c b/src/mainboard/amd/union_station/BiosCallOuts.c
index 00a0f58..49233df 100644
--- a/src/mainboard/amd/union_station/BiosCallOuts.c
+++ b/src/mainboard/amd/union_station/BiosCallOuts.c
@@ -24,47 +24,22 @@
 #include "SB800.h"
 #include <northbridge/amd/agesa/family14/dimmSpd.h>
 
-STATIC BIOS_CALLOUT_STRUCT BiosCallouts[] =
+const BIOS_CALLOUT_STRUCT BiosCallouts[] =
 {
-	{AGESA_ALLOCATE_BUFFER,			BiosAllocateBuffer },
-	{AGESA_DEALLOCATE_BUFFER,		BiosDeallocateBuffer },
-	{AGESA_DO_RESET,			BiosReset },
-	{AGESA_LOCATE_BUFFER,			BiosLocateBuffer },
-	{AGESA_READ_SPD,			BiosReadSpd },
-	{AGESA_READ_SPD_RECOVERY,		BiosDefaultRet },
-	{AGESA_RUNFUNC_ONAP,			BiosRunFuncOnAp },
+	{AGESA_ALLOCATE_BUFFER,			agesa_AllocateBuffer },
+	{AGESA_DEALLOCATE_BUFFER,		agesa_DeallocateBuffer },
+	{AGESA_LOCATE_BUFFER,			agesa_LocateBuffer },
+	{AGESA_DO_RESET,			agesa_Reset },
+	{AGESA_READ_SPD,			fam14_ReadSpd },
+	{AGESA_READ_SPD_RECOVERY,		agesa_NoopUnsupported },
+	{AGESA_RUNFUNC_ONAP,			agesa_RunFuncOnAp },
 	{AGESA_GNB_PCIE_SLOT_RESET,		BiosGnbPcieSlotReset },
 	{AGESA_HOOKBEFORE_DRAM_INIT,		BiosHookBeforeDramInit },
-	{AGESA_HOOKBEFORE_DRAM_INIT_RECOVERY,	BiosHookBeforeDramInitRecovery },
-	{AGESA_HOOKBEFORE_DQS_TRAINING,		BiosHookBeforeDQSTraining },
-	{AGESA_HOOKBEFORE_EXIT_SELF_REF,	BiosHookBeforeExitSelfRefresh },
+	{AGESA_HOOKBEFORE_DRAM_INIT_RECOVERY,	agesa_NoopSuccess },
+	{AGESA_HOOKBEFORE_DQS_TRAINING,		agesa_NoopSuccess },
+	{AGESA_HOOKBEFORE_EXIT_SELF_REF,	agesa_NoopSuccess },
 };
 
-AGESA_STATUS GetBiosCallout (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-  UINTN i;
-  AGESA_STATUS CalloutStatus;
-  UINTN CallOutCount = sizeof (BiosCallouts) / sizeof (BiosCallouts [0]);
-
-  CalloutStatus = AGESA_UNSUPPORTED;
-
-  for (i = 0; i < CallOutCount; i++)
-  {
-    if (BiosCallouts[i].CalloutName == Func)
-    {
-      CalloutStatus = BiosCallouts[i].CalloutPtr (Func, Data, ConfigPtr);
-      return CalloutStatus;
-    }
-  }
-
-  return CalloutStatus;
-}
-
-/*  Call the host environment interface to provide a user hook opportunity. */
-AGESA_STATUS BiosHookBeforeDQSTraining (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-  return AGESA_SUCCESS;
-}
 /*  Call the host environment interface to provide a user hook opportunity. */
 AGESA_STATUS BiosHookBeforeDramInit (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
 {
@@ -148,17 +123,6 @@ AGESA_STATUS BiosHookBeforeDramInit (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
   return Status;
 }
 
-/*  Call the host environment interface to provide a user hook opportunity. */
-AGESA_STATUS BiosHookBeforeDramInitRecovery (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-  return AGESA_SUCCESS;
-}
-
-/*  Call the host environment interface to provide a user hook opportunity. */
-AGESA_STATUS BiosHookBeforeExitSelfRefresh (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-  return AGESA_SUCCESS;
-}
 /* PCIE slot reset control */
 AGESA_STATUS BiosGnbPcieSlotReset (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
 {
diff --git a/src/mainboard/amd/union_station/BiosCallOuts.h b/src/mainboard/amd/union_station/BiosCallOuts.h
index f3483e7..60ef7d7 100644
--- a/src/mainboard/amd/union_station/BiosCallOuts.h
+++ b/src/mainboard/amd/union_station/BiosCallOuts.h
@@ -22,8 +22,6 @@
 
 #include <northbridge/amd/agesa/family14/fam14_callouts.h>
 
-/* CALLOUT Initialization */
-AGESA_STATUS GetBiosCallout(UINT32 Func, UINT32 Data, VOID *ConfigPtr);
 
 #define SB_GPIO_REG02   2
 #define SB_GPIO_REG09   9
diff --git a/src/mainboard/asrock/e350m1/BiosCallOuts.c b/src/mainboard/asrock/e350m1/BiosCallOuts.c
index e58aecd..7ae2191 100644
--- a/src/mainboard/asrock/e350m1/BiosCallOuts.c
+++ b/src/mainboard/asrock/e350m1/BiosCallOuts.c
@@ -24,51 +24,23 @@
 #include "SB800.h"
 #include <northbridge/amd/agesa/family14/dimmSpd.h>
 
-CONST BIOS_CALLOUT_STRUCT BiosCallouts[] =
+const BIOS_CALLOUT_STRUCT BiosCallouts[] =
 {
-	{AGESA_ALLOCATE_BUFFER,			BiosAllocateBuffer },
-	{AGESA_DEALLOCATE_BUFFER,		BiosDeallocateBuffer },
-	{AGESA_DO_RESET,			BiosReset },
-	{AGESA_LOCATE_BUFFER,			BiosLocateBuffer },
-	{AGESA_READ_SPD,			BiosReadSpd },
-	{AGESA_READ_SPD_RECOVERY,		BiosDefaultRet },
-	{AGESA_RUNFUNC_ONAP,			BiosRunFuncOnAp },
-	{AGESA_HOOKBEFORE_DQS_TRAINING,		BiosHookBeforeDQSTraining },
+	{AGESA_ALLOCATE_BUFFER,			agesa_AllocateBuffer },
+	{AGESA_DEALLOCATE_BUFFER,		agesa_DeallocateBuffer },
+	{AGESA_LOCATE_BUFFER,			agesa_LocateBuffer },
+	{AGESA_DO_RESET,			agesa_Reset },
+	{AGESA_READ_SPD,			fam14_ReadSpd },
+	{AGESA_READ_SPD_RECOVERY,		agesa_NoopUnsupported },
+	{AGESA_RUNFUNC_ONAP,			agesa_RunFuncOnAp },
+	{AGESA_HOOKBEFORE_DQS_TRAINING,		agesa_NoopSuccess },
 	{AGESA_HOOKBEFORE_DRAM_INIT,		BiosHookBeforeDramInit },
-	{AGESA_HOOKBEFORE_EXIT_SELF_REF,	BiosHookBeforeExitSelfRefresh },
-	{AGESA_GNB_PCIE_SLOT_RESET,		BiosGnbPcieSlotReset },
+	{AGESA_HOOKBEFORE_EXIT_SELF_REF,	agesa_NoopSuccess },
+	{AGESA_GNB_PCIE_SLOT_RESET,		agesa_NoopUnsupported },
 };
 
-AGESA_STATUS GetBiosCallout (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-  UINTN i;
-  AGESA_STATUS CalloutStatus;
-  UINTN CallOutCount = sizeof (BiosCallouts) / sizeof (BiosCallouts [0]);
-
-  for (i = 0; i < CallOutCount; i++)
-  {
-    if (BiosCallouts[i].CalloutName == Func)
-    {
-      break;
-    }
-  }
-
-  if(i >= CallOutCount)
-  {
-    return AGESA_UNSUPPORTED;
-  }
-
-  CalloutStatus = BiosCallouts[i].CalloutPtr (Func, Data, ConfigPtr);
-
-  return CalloutStatus;
-}
 
 /*  Call the host environment interface to provide a user hook opportunity. */
-AGESA_STATUS BiosHookBeforeDQSTraining (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-  return AGESA_SUCCESS;
-}
-/*  Call the host environment interface to provide a user hook opportunity. */
 AGESA_STATUS BiosHookBeforeDramInit (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
 {
   AGESA_STATUS      Status;
@@ -150,13 +122,3 @@ AGESA_STATUS BiosHookBeforeDramInit (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
   MemData->ParameterListPtr->EnableMemClr = FALSE;
   return Status;
 }
-/*  Call the host environment interface to provide a user hook opportunity. */
-AGESA_STATUS BiosHookBeforeExitSelfRefresh (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-  return AGESA_SUCCESS;
-}
-/* PCIE slot reset control */
-AGESA_STATUS BiosGnbPcieSlotReset (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-  return AGESA_UNSUPPORTED;
-}
diff --git a/src/mainboard/asrock/e350m1/BiosCallOuts.h b/src/mainboard/asrock/e350m1/BiosCallOuts.h
index 92e8ce5..88005ed 100644
--- a/src/mainboard/asrock/e350m1/BiosCallOuts.h
+++ b/src/mainboard/asrock/e350m1/BiosCallOuts.h
@@ -22,7 +22,5 @@
 
 #include <northbridge/amd/agesa/family14/fam14_callouts.h>
 
-/* CALLOUT Initialization */
-AGESA_STATUS GetBiosCallout(UINT32 Func, UINT32 Data, VOID *ConfigPtr);
 
 #endif //_BIOS_CALLOUT_H_
diff --git a/src/mainboard/asrock/imb-a180/BiosCallOuts.c b/src/mainboard/asrock/imb-a180/BiosCallOuts.c
index dc41579..917ad72 100644
--- a/src/mainboard/asrock/imb-a180/BiosCallOuts.c
+++ b/src/mainboard/asrock/imb-a180/BiosCallOuts.c
@@ -27,43 +27,22 @@
 #include "FchPlatform.h"
 #include "cbfs.h"
 
-STATIC CONST BIOS_CALLOUT_STRUCT BiosCallouts[] =
+const BIOS_CALLOUT_STRUCT BiosCallouts[] =
 {
-	{AGESA_ALLOCATE_BUFFER,          fam16kb_AllocateBuffer },
-	{AGESA_DEALLOCATE_BUFFER,        fam16kb_DeallocateBuffer },
-	{AGESA_DO_RESET,                 fam16kb_Reset },
-	{AGESA_LOCATE_BUFFER,            fam16kb_LocateBuffer },
+	{AGESA_ALLOCATE_BUFFER,          agesa_AllocateBuffer },
+	{AGESA_DEALLOCATE_BUFFER,        agesa_DeallocateBuffer },
+	{AGESA_LOCATE_BUFFER,            agesa_LocateBuffer },
+	{AGESA_DO_RESET,                 agesa_Reset },
 	{AGESA_READ_SPD,                 fam16kb_ReadSpd },
-	{AGESA_READ_SPD_RECOVERY,        fam16kb_DefaultRet },
-	{AGESA_RUNFUNC_ONAP,             fam16kb_RunFuncOnAp },
-	{AGESA_GET_IDS_INIT_DATA,        fam16kb_GetIdsInitData },
-	{AGESA_HOOKBEFORE_DQS_TRAINING,  fam16kb_HookBeforeDQSTraining },
-	{AGESA_HOOKBEFORE_EXIT_SELF_REF, fam16kb_HookBeforeExitSelfRefresh },
+	{AGESA_READ_SPD_RECOVERY,        agesa_NoopUnsupported },
+	{AGESA_RUNFUNC_ONAP,             agesa_RunFuncOnAp },
+	{AGESA_GET_IDS_INIT_DATA,        agesa_EmptyIdsInitData },
+	{AGESA_HOOKBEFORE_DQS_TRAINING,  agesa_NoopSuccess },
+	{AGESA_HOOKBEFORE_EXIT_SELF_REF, agesa_NoopSuccess },
 	{AGESA_FCH_OEM_CALLOUT,          Fch_Oem_config },
 	{AGESA_GNB_GFX_GET_VBIOS_IMAGE,  fam16kb_HookGfxGetVbiosImage }
 };
 
-AGESA_STATUS GetBiosCallout (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	UINTN i;
-	AGESA_STATUS CalloutStatus;
-	UINTN CallOutCount = sizeof (BiosCallouts) / sizeof (BiosCallouts [0]);
-
-	for (i = 0; i < CallOutCount; i++)
-	{
-		if (BiosCallouts[i].CalloutName == Func)
-			break;
-	}
-
-	if(i >= CallOutCount)
-		return AGESA_UNSUPPORTED;
-
-	CalloutStatus = BiosCallouts[i].CalloutPtr (Func, Data, ConfigPtr);
-
-	return CalloutStatus;
-}
-
-/**
  * CODEC Initialization Table for Azalia HD Audio using Realtek ALC662 chip
  */
 static const CODEC_ENTRY Alc662_VerbTbl[] =
diff --git a/src/mainboard/asrock/imb-a180/BiosCallOuts.h b/src/mainboard/asrock/imb-a180/BiosCallOuts.h
index 4c7e100..3c75261 100644
--- a/src/mainboard/asrock/imb-a180/BiosCallOuts.h
+++ b/src/mainboard/asrock/imb-a180/BiosCallOuts.h
@@ -22,8 +22,6 @@
 
 #include <northbridge/amd/agesa/family16kb/fam16kb_callouts.h>
 
-/* CALLOUT Initialization */
-AGESA_STATUS GetBiosCallout(UINT32 Func, UINT32 Data, VOID *ConfigPtr);
 
 /* FCH OEM Config*/
 AGESA_STATUS Fch_Oem_config(UINT32 Func, UINT32 FchData, VOID *ConfigPtr);
diff --git a/src/mainboard/asus/f2a85-m/BiosCallOuts.c b/src/mainboard/asus/f2a85-m/BiosCallOuts.c
index 89b002b..c595684 100644
--- a/src/mainboard/asus/f2a85-m/BiosCallOuts.c
+++ b/src/mainboard/asus/f2a85-m/BiosCallOuts.c
@@ -24,43 +24,22 @@
 #include <cbfs.h>
 #include <vendorcode/amd/agesa/f15tn/Proc/Fch/FchPlatform.h>
 
-STATIC CONST BIOS_CALLOUT_STRUCT BiosCallouts[] =
+const BIOS_CALLOUT_STRUCT BiosCallouts[] =
 {
-	{AGESA_ALLOCATE_BUFFER,          fam15tn_AllocateBuffer },
-	{AGESA_DEALLOCATE_BUFFER,        fam15tn_DeallocateBuffer },
-	{AGESA_DO_RESET,                 fam15tn_Reset },
-	{AGESA_LOCATE_BUFFER,            fam15tn_LocateBuffer },
+	{AGESA_ALLOCATE_BUFFER,          agesa_AllocateBuffer },
+	{AGESA_DEALLOCATE_BUFFER,        agesa_DeallocateBuffer },
+	{AGESA_LOCATE_BUFFER,            agesa_LocateBuffer },
+	{AGESA_DO_RESET,                 agesa_Reset },
 	{AGESA_READ_SPD,                 fam15tn_ReadSpd },
-	{AGESA_READ_SPD_RECOVERY,        fam15tn_DefaultRet },
-	{AGESA_RUNFUNC_ONAP,             fam15tn_RunFuncOnAp },
-	{AGESA_GET_IDS_INIT_DATA,        fam15tn_GetIdsInitData },
-	{AGESA_HOOKBEFORE_DQS_TRAINING,  fam15tn_HookBeforeDQSTraining },
-	{AGESA_HOOKBEFORE_EXIT_SELF_REF, fam15tn_HookBeforeExitSelfRefresh },
+	{AGESA_READ_SPD_RECOVERY,        agesa_NoopUnsupported },
+	{AGESA_RUNFUNC_ONAP,             agesa_RunFuncOnAp },
+	{AGESA_GET_IDS_INIT_DATA,        agesa_EmptyIdsInitData },
+	{AGESA_HOOKBEFORE_DQS_TRAINING,  agesa_NoopSuccess },
+	{AGESA_HOOKBEFORE_EXIT_SELF_REF, agesa_NoopSuccess },
 	{AGESA_FCH_OEM_CALLOUT,          Fch_Oem_config },
 	{AGESA_GNB_GFX_GET_VBIOS_IMAGE,  fam15tn_HookGfxGetVbiosImage }
 };
 
-AGESA_STATUS GetBiosCallout (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	UINTN i;
-	AGESA_STATUS CalloutStatus;
-	UINTN CallOutCount = sizeof (BiosCallouts) / sizeof (BiosCallouts [0]);
-
-	for (i = 0; i < CallOutCount; i++)
-	{
-		if (BiosCallouts[i].CalloutName == Func)
-			break;
-	}
-
-	if(i >= CallOutCount)
-		return AGESA_UNSUPPORTED;
-
-	CalloutStatus = BiosCallouts[i].CalloutPtr (Func, Data, ConfigPtr);
-
-	return CalloutStatus;
-}
-
-/**
  * ASUS F2A85-M board ALC887-VD Verb Table
  *
  * Copied from `/sys/class/sound/hwC1D0/init_pin_configs` when running
diff --git a/src/mainboard/asus/f2a85-m/BiosCallOuts.h b/src/mainboard/asus/f2a85-m/BiosCallOuts.h
index 9132fac..73e500c 100644
--- a/src/mainboard/asus/f2a85-m/BiosCallOuts.h
+++ b/src/mainboard/asus/f2a85-m/BiosCallOuts.h
@@ -22,8 +22,6 @@
 
 #include <northbridge/amd/agesa/family15tn/fam15tn_callouts.h>
 
-/* CALLOUT Initialization */
-AGESA_STATUS GetBiosCallout (UINT32 Func, UINT32 Data, VOID *ConfigPtr);
 
 /* FCH OEM Config*/
 AGESA_STATUS Fch_Oem_config(UINT32 Func, UINT32 FchData, VOID *ConfigPtr);
diff --git a/src/mainboard/gizmosphere/gizmo/BiosCallOuts.c b/src/mainboard/gizmosphere/gizmo/BiosCallOuts.c
index 8c0855e..5440368 100755
--- a/src/mainboard/gizmosphere/gizmo/BiosCallOuts.c
+++ b/src/mainboard/gizmosphere/gizmo/BiosCallOuts.c
@@ -2,7 +2,6 @@
  * This file is part of the coreboot project.
  *
  * Copyright (C) 2011 Advanced Micro Devices, Inc.
- * Copyright (C) 2013 Sage Electronic Engineering, LLC
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -23,108 +22,25 @@
 #include "BiosCallOuts.h"
 #include "heapManager.h"
 #include "SB800.h"
-#include <cbfs.h>
-#include <string.h>
-#include <device/dram/ddr3.h>
 
-#define SPD_SIZE    128
-#define SPD_CRC_HI  127
-#define SPD_CRC_LO  126
-
-STATIC BIOS_CALLOUT_STRUCT BiosCallouts[] =
+const BIOS_CALLOUT_STRUCT BiosCallouts[] =
 {
-	{AGESA_ALLOCATE_BUFFER,			BiosAllocateBuffer },
-	{AGESA_DEALLOCATE_BUFFER,		BiosDeallocateBuffer },
-	{AGESA_DO_RESET,			BiosReset },
-	{AGESA_LOCATE_BUFFER,			BiosLocateBuffer },
-	{AGESA_READ_SPD,			BiosReadSpd_from_cbfs },
-	{AGESA_READ_SPD_RECOVERY,		BiosDefaultRet },
-	{AGESA_RUNFUNC_ONAP,			BiosRunFuncOnAp },
-	{AGESA_GNB_PCIE_SLOT_RESET,		BiosGnbPcieSlotReset},
+	{AGESA_ALLOCATE_BUFFER,			agesa_AllocateBuffer },
+	{AGESA_DEALLOCATE_BUFFER,		agesa_DeallocateBuffer },
+	{AGESA_LOCATE_BUFFER,			agesa_LocateBuffer },
+	{AGESA_DO_RESET,			agesa_Reset },
+	{AGESA_READ_SPD,			agesa_ReadSpd_from_cbfs },
+	{AGESA_READ_SPD_RECOVERY,		agesa_NoopUnsupported },
+	{AGESA_RUNFUNC_ONAP,			agesa_RunFuncOnAp },
+	{AGESA_GNB_PCIE_SLOT_RESET,		agesa_NoopSuccess },
 	{AGESA_HOOKBEFORE_DRAM_INIT,		BiosHookBeforeDramInit },
-	{AGESA_HOOKBEFORE_DRAM_INIT_RECOVERY,	BiosHookBeforeDramInitRecovery },
-	{AGESA_HOOKBEFORE_DQS_TRAINING,		BiosHookBeforeDQSTraining},
-	{AGESA_HOOKBEFORE_EXIT_SELF_REF,	BiosHookBeforeExitSelfRefresh },
+	{AGESA_HOOKBEFORE_DRAM_INIT_RECOVERY,	agesa_NoopSuccess },
+	{AGESA_HOOKBEFORE_DQS_TRAINING,		agesa_NoopSuccess },
+	{AGESA_HOOKBEFORE_EXIT_SELF_REF,	agesa_NoopSuccess },
 };
 
-AGESA_STATUS GetBiosCallout (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	UINTN i;
-	AGESA_STATUS CalloutStatus;
-	UINTN CallOutCount = sizeof (BiosCallouts) / sizeof (BiosCallouts [0]);
-
-	/*
-	 * printk(BIOS_SPEW,"%s function: %x\n", __func__, (u32) Func);
-	 */
-
-	CalloutStatus = AGESA_UNSUPPORTED;
-
-	for (i = 0; i < CallOutCount; i++) {
-		if (BiosCallouts[i].CalloutName == Func) {
-			CalloutStatus = BiosCallouts[i].CalloutPtr (Func, Data, ConfigPtr);
-			return CalloutStatus;
-		}
-	}
-
-	return CalloutStatus;
-}
-
-AGESA_STATUS BiosReadSpd_from_cbfs(UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	AGESA_STATUS Status;
-#ifdef __PRE_RAM__
-	AGESA_READ_SPD_PARAMS *info = ConfigPtr;
-	if (info->MemChannelId > 0)
-		return AGESA_UNSUPPORTED;
-	if (info->SocketId != 0)
-		return AGESA_UNSUPPORTED;
-	if (info->DimmId != 0)
-		return AGESA_UNSUPPORTED;
-
-	char *spd_file;
-	size_t spd_file_len;
-
-	printk(BIOS_DEBUG, "read SPD\n");
-	spd_file = cbfs_get_file_content(CBFS_DEFAULT_MEDIA, "spd.bin", 0xab,
-					 &spd_file_len);
-	if (!spd_file)
-		die("file [spd.bin] not found in CBFS");
-	if (spd_file_len < SPD_SIZE)
-		die("Missing SPD data.");
-
-	memcpy((char*)info->Buffer, spd_file, SPD_SIZE);
-
-	u16 crc = spd_ddr3_calc_crc(info->Buffer, SPD_SIZE);
-
-	if (((info->Buffer[SPD_CRC_LO] == 0) && (info->Buffer[SPD_CRC_HI] == 0))
-	 || (info->Buffer[SPD_CRC_LO] != (crc & 0xff))
-	 || (info->Buffer[SPD_CRC_HI] != (crc >> 8))) {
-		printk(BIOS_WARNING, "SPD has a invalid or zero-valued CRC\n");
-		info->Buffer[SPD_CRC_LO] = crc & 0xff;
-		info->Buffer[SPD_CRC_HI] = crc >> 8;
-		u16 i;
-		printk(BIOS_WARNING, "\nDisplay the SPD");
-		for (i = 0; i < SPD_SIZE; i++) {
-			if((i % 16) == 0x00)
-				printk(BIOS_WARNING, "\n%02x:  ",i);
-			printk(BIOS_WARNING, "%02x ", info->Buffer[i]);
-		}
-		printk(BIOS_WARNING, "\n");
-	 }
-	Status = AGESA_SUCCESS;
-#else
-	Status = AGESA_UNSUPPORTED;
-#endif
-
-	return Status;
-}
 
 /*	Call the host environment interface to provide a user hook opportunity. */
-AGESA_STATUS BiosHookBeforeDQSTraining (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	return AGESA_SUCCESS;
-}
-/*	Call the host environment interface to provide a user hook opportunity. */
 AGESA_STATUS BiosHookBeforeDramInit (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
 {
 	// Unlike AMD/Inagua, this board is unable to vary the RAM voltage.
@@ -132,20 +48,3 @@ AGESA_STATUS BiosHookBeforeDramInit (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
 	((MEM_DATA_STRUCT*)ConfigPtr)->ParameterListPtr->DDR3Voltage = VOLT1_5;
 	return AGESA_SUCCESS;
 }
-
-/*	Call the host environment interface to provide a user hook opportunity. */
-AGESA_STATUS BiosHookBeforeDramInitRecovery (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	return AGESA_SUCCESS;
-}
-
-/*	Call the host environment interface to provide a user hook opportunity. */
-AGESA_STATUS BiosHookBeforeExitSelfRefresh (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	return AGESA_SUCCESS;
-}
-/* PCIE slot reset control */
-AGESA_STATUS BiosGnbPcieSlotReset (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	return AGESA_SUCCESS;
-}
diff --git a/src/mainboard/gizmosphere/gizmo/BiosCallOuts.h b/src/mainboard/gizmosphere/gizmo/BiosCallOuts.h
index 101a350..96d42c2 100755
--- a/src/mainboard/gizmosphere/gizmo/BiosCallOuts.h
+++ b/src/mainboard/gizmosphere/gizmo/BiosCallOuts.h
@@ -23,7 +23,5 @@
 
 #include <northbridge/amd/agesa/family14/fam14_callouts.h>
 
-/* CALLOUT Initialization */
-AGESA_STATUS GetBiosCallout(UINT32 Func, UINT32 Data, VOID *ConfigPtr);
 
 #endif //_BIOS_CALLOUT_H_
diff --git a/src/mainboard/hp/pavilion_m6_1035dx/BiosCallOuts.c b/src/mainboard/hp/pavilion_m6_1035dx/BiosCallOuts.c
index 34e688d..4dfb19d 100644
--- a/src/mainboard/hp/pavilion_m6_1035dx/BiosCallOuts.c
+++ b/src/mainboard/hp/pavilion_m6_1035dx/BiosCallOuts.c
@@ -25,42 +25,22 @@
 #include <southbridge/amd/agesa/hudson/imc.h>
 #include <vendorcode/amd/agesa/f15tn/Proc/Fch/FchPlatform.h>
 
-STATIC CONST BIOS_CALLOUT_STRUCT BiosCallouts[] =
+const BIOS_CALLOUT_STRUCT BiosCallouts[] =
 {
-	{AGESA_ALLOCATE_BUFFER,          fam15tn_AllocateBuffer },
-	{AGESA_DEALLOCATE_BUFFER,        fam15tn_DeallocateBuffer },
-	{AGESA_DO_RESET,                 fam15tn_Reset },
-	{AGESA_LOCATE_BUFFER,            fam15tn_LocateBuffer },
+	{AGESA_ALLOCATE_BUFFER,          agesa_AllocateBuffer },
+	{AGESA_DEALLOCATE_BUFFER,        agesa_DeallocateBuffer },
+	{AGESA_LOCATE_BUFFER,            agesa_LocateBuffer },
+	{AGESA_DO_RESET,                 agesa_Reset },
 	{AGESA_READ_SPD,                 fam15tn_ReadSpd },
-	{AGESA_READ_SPD_RECOVERY,        fam15tn_DefaultRet },
-	{AGESA_RUNFUNC_ONAP,             fam15tn_RunFuncOnAp },
-	{AGESA_GET_IDS_INIT_DATA,        fam15tn_GetIdsInitData },
-	{AGESA_HOOKBEFORE_DQS_TRAINING,  fam15tn_HookBeforeDQSTraining },
-	{AGESA_HOOKBEFORE_EXIT_SELF_REF, fam15tn_HookBeforeExitSelfRefresh },
+	{AGESA_READ_SPD_RECOVERY,        agesa_NoopUnsupported },
+	{AGESA_RUNFUNC_ONAP,             agesa_RunFuncOnAp },
+	{AGESA_GET_IDS_INIT_DATA,        agesa_EmptyIdsInitData },
+	{AGESA_HOOKBEFORE_DQS_TRAINING,  agesa_NoopSuccess },
+	{AGESA_HOOKBEFORE_EXIT_SELF_REF, agesa_NoopSuccess },
 	{AGESA_FCH_OEM_CALLOUT,          Fch_Oem_config },
 	{AGESA_GNB_GFX_GET_VBIOS_IMAGE,  fam15tn_HookGfxGetVbiosImage }
 };
 
-AGESA_STATUS GetBiosCallout (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	UINTN i;
-	AGESA_STATUS CalloutStatus;
-	UINTN CallOutCount = sizeof (BiosCallouts) / sizeof (BiosCallouts [0]);
-
-	for (i = 0; i < CallOutCount; i++)
-	{
-		if (BiosCallouts[i].CalloutName == Func)
-			break;
-	}
-
-	if(i >= CallOutCount)
-		return AGESA_UNSUPPORTED;
-
-	CalloutStatus = BiosCallouts[i].CalloutPtr (Func, Data, ConfigPtr);
-
-	return CalloutStatus;
-}
-
 /**
  * AMD Parmer Platform ALC272 Verb Table
  */
diff --git a/src/mainboard/hp/pavilion_m6_1035dx/BiosCallOuts.h b/src/mainboard/hp/pavilion_m6_1035dx/BiosCallOuts.h
index 9132fac..73e500c 100644
--- a/src/mainboard/hp/pavilion_m6_1035dx/BiosCallOuts.h
+++ b/src/mainboard/hp/pavilion_m6_1035dx/BiosCallOuts.h
@@ -22,8 +22,6 @@
 
 #include <northbridge/amd/agesa/family15tn/fam15tn_callouts.h>
 
-/* CALLOUT Initialization */
-AGESA_STATUS GetBiosCallout (UINT32 Func, UINT32 Data, VOID *ConfigPtr);
 
 /* FCH OEM Config*/
 AGESA_STATUS Fch_Oem_config(UINT32 Func, UINT32 FchData, VOID *ConfigPtr);
diff --git a/src/mainboard/jetway/nf81-t56n-lf/BiosCallOuts.c b/src/mainboard/jetway/nf81-t56n-lf/BiosCallOuts.c
index e0a35fd..ce4a32d 100644
--- a/src/mainboard/jetway/nf81-t56n-lf/BiosCallOuts.c
+++ b/src/mainboard/jetway/nf81-t56n-lf/BiosCallOuts.c
@@ -26,49 +26,22 @@
 #include <vendorcode/amd/cimx/sb800/SB800.h>
 #include <stdint.h>
 
-STATIC BIOS_CALLOUT_STRUCT BiosCallouts[] =
+const BIOS_CALLOUT_STRUCT BiosCallouts[] =
 {
-	{AGESA_ALLOCATE_BUFFER,			BiosAllocateBuffer },
-	{AGESA_DEALLOCATE_BUFFER,		BiosDeallocateBuffer },
-	{AGESA_DO_RESET,			BiosReset },
-	{AGESA_LOCATE_BUFFER,			BiosLocateBuffer },
-	{AGESA_READ_SPD,			BiosReadSpd },
-	{AGESA_READ_SPD_RECOVERY,		BiosDefaultRet },
-	{AGESA_RUNFUNC_ONAP,			BiosRunFuncOnAp },
+	{AGESA_ALLOCATE_BUFFER,			agesa_AllocateBuffer },
+	{AGESA_DEALLOCATE_BUFFER,		agesa_DeallocateBuffer },
+	{AGESA_LOCATE_BUFFER,			agesa_LocateBuffer },
+	{AGESA_DO_RESET,			agesa_Reset },
+	{AGESA_READ_SPD,			fam14_ReadSpd },
+	{AGESA_READ_SPD_RECOVERY,		agesa_NoopUnsupported },
+	{AGESA_RUNFUNC_ONAP,			agesa_RunFuncOnAp },
 	{AGESA_GNB_PCIE_SLOT_RESET,		BiosGnbPcieSlotReset },
 	{AGESA_HOOKBEFORE_DRAM_INIT,		BiosHookBeforeDramInit },
-	{AGESA_HOOKBEFORE_DRAM_INIT_RECOVERY,	BiosHookBeforeDramInitRecovery },
-	{AGESA_HOOKBEFORE_DQS_TRAINING,		BiosHookBeforeDQSTraining },
-	{AGESA_HOOKBEFORE_EXIT_SELF_REF,	BiosHookBeforeExitSelfRefresh },
+	{AGESA_HOOKBEFORE_DRAM_INIT_RECOVERY,	agesa_NoopSuccess },
+	{AGESA_HOOKBEFORE_DQS_TRAINING,		agesa_NoopSuccess },
+	{AGESA_HOOKBEFORE_EXIT_SELF_REF,	agesa_NoopSuccess },
 };
 
-AGESA_STATUS GetBiosCallout (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	size_t i;
-	AGESA_STATUS CalloutStatus;
-	size_t CallOutCount = sizeof (BiosCallouts) / sizeof (BiosCallouts [0]);
-
-	/*
-	 * printk(BIOS_SPEW,"%s function: %x\n", __func__, (u32) Func);
-	 */
-
-	CalloutStatus = AGESA_UNSUPPORTED;
-
-	for (i = 0; i < CallOutCount; i++) {
-		if (BiosCallouts[i].CalloutName == Func) {
-			CalloutStatus = BiosCallouts[i].CalloutPtr (Func, Data, ConfigPtr);
-			return CalloutStatus;
-		}
-	}
-
-	return CalloutStatus;
-}
-
-/* Call the host environment interface to provide a user hook opportunity. */
-AGESA_STATUS BiosHookBeforeDQSTraining (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	return AGESA_SUCCESS;
-}
 
 /* Call the host environment interface to provide a user hook opportunity. */
 AGESA_STATUS BiosHookBeforeDramInit (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
@@ -80,18 +53,6 @@ AGESA_STATUS BiosHookBeforeDramInit (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
 	return AGESA_SUCCESS;
 }
 
-/* Call the host environment interface to provide a user hook opportunity. */
-AGESA_STATUS BiosHookBeforeDramInitRecovery (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	return AGESA_SUCCESS;
-}
-
-/* Call the host environment interface to provide a user hook opportunity. */
-AGESA_STATUS BiosHookBeforeExitSelfRefresh (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	return AGESA_SUCCESS;
-}
-
 /* PCIE slot reset control */
 AGESA_STATUS BiosGnbPcieSlotReset (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
 {
diff --git a/src/mainboard/jetway/nf81-t56n-lf/BiosCallOuts.h b/src/mainboard/jetway/nf81-t56n-lf/BiosCallOuts.h
index 92e8ce5..88005ed 100644
--- a/src/mainboard/jetway/nf81-t56n-lf/BiosCallOuts.h
+++ b/src/mainboard/jetway/nf81-t56n-lf/BiosCallOuts.h
@@ -22,7 +22,5 @@
 
 #include <northbridge/amd/agesa/family14/fam14_callouts.h>
 
-/* CALLOUT Initialization */
-AGESA_STATUS GetBiosCallout(UINT32 Func, UINT32 Data, VOID *ConfigPtr);
 
 #endif //_BIOS_CALLOUT_H_
diff --git a/src/mainboard/lippert/frontrunner-af/BiosCallOuts.c b/src/mainboard/lippert/frontrunner-af/BiosCallOuts.c
index 052fc10..79a8dbc 100644
--- a/src/mainboard/lippert/frontrunner-af/BiosCallOuts.c
+++ b/src/mainboard/lippert/frontrunner-af/BiosCallOuts.c
@@ -23,49 +23,22 @@
 #include "heapManager.h"
 #include <northbridge/amd/agesa/family14/dimmSpd.h>
 
-STATIC BIOS_CALLOUT_STRUCT BiosCallouts[] =
+const BIOS_CALLOUT_STRUCT BiosCallouts[] =
 {
-	{AGESA_ALLOCATE_BUFFER,			BiosAllocateBuffer },
-	{AGESA_DEALLOCATE_BUFFER,		BiosDeallocateBuffer },
-	{AGESA_DO_RESET,			BiosReset },
-	{AGESA_LOCATE_BUFFER,			BiosLocateBuffer },
-	{AGESA_READ_SPD,			BiosReadSpd },
-	{AGESA_READ_SPD_RECOVERY,		BiosDefaultRet },
-	{AGESA_RUNFUNC_ONAP,			BiosRunFuncOnAp },
-	{AGESA_GNB_PCIE_SLOT_RESET,		BiosGnbPcieSlotReset },
+	{AGESA_ALLOCATE_BUFFER,			agesa_AllocateBuffer },
+	{AGESA_DEALLOCATE_BUFFER,		agesa_DeallocateBuffer },
+	{AGESA_LOCATE_BUFFER,			agesa_LocateBuffer },
+	{AGESA_DO_RESET,			agesa_Reset },
+	{AGESA_READ_SPD,			fam14_ReadSpd },
+	{AGESA_READ_SPD_RECOVERY,		agesa_NoopUnsupported },
+	{AGESA_RUNFUNC_ONAP,			agesa_RunFuncOnAp },
+	{AGESA_GNB_PCIE_SLOT_RESET,		agesa_NoopUnsupported },
 	{AGESA_HOOKBEFORE_DRAM_INIT,		BiosHookBeforeDramInit },
-	{AGESA_HOOKBEFORE_DRAM_INIT_RECOVERY,	BiosHookBeforeDramInitRecovery },
-	{AGESA_HOOKBEFORE_DQS_TRAINING,		BiosHookBeforeDQSTraining },
-	{AGESA_HOOKBEFORE_EXIT_SELF_REF,	BiosHookBeforeExitSelfRefresh },
+	{AGESA_HOOKBEFORE_DRAM_INIT_RECOVERY,	agesa_NoopSuccess },
+	{AGESA_HOOKBEFORE_DQS_TRAINING,		agesa_NoopSuccess },
+	{AGESA_HOOKBEFORE_EXIT_SELF_REF,	agesa_NoopSuccess },
 };
 
-AGESA_STATUS GetBiosCallout (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	UINTN i;
-	AGESA_STATUS CalloutStatus;
-	UINTN CallOutCount = sizeof (BiosCallouts) / sizeof (BiosCallouts [0]);
-
-	/*
-	 * printk(BIOS_SPEW,"%s function: %x\n", __func__, (u32) Func);
-	 */
-
-	CalloutStatus = AGESA_UNSUPPORTED;
-
-	for (i = 0; i < CallOutCount; i++) {
-		if (BiosCallouts[i].CalloutName == Func) {
-			CalloutStatus = BiosCallouts[i].CalloutPtr (Func, Data, ConfigPtr);
-			return CalloutStatus;
-		}
-	}
-
-	return CalloutStatus;
-}
-
-/*	Call the host environment interface to provide a user hook opportunity. */
-AGESA_STATUS BiosHookBeforeDQSTraining (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	return AGESA_SUCCESS;
-}
 /*	Call the host environment interface to provide a user hook opportunity. */
 AGESA_STATUS BiosHookBeforeDramInit (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
 {
@@ -90,21 +63,3 @@ AGESA_STATUS BiosHookBeforeDramInit (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
 
 	return AGESA_SUCCESS;
 }
-
-/*	Call the host environment interface to provide a user hook opportunity. */
-AGESA_STATUS BiosHookBeforeDramInitRecovery (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	return AGESA_SUCCESS;
-}
-
-/*	Call the host environment interface to provide a user hook opportunity. */
-AGESA_STATUS BiosHookBeforeExitSelfRefresh (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	return AGESA_SUCCESS;
-}
-/* PCIE slot reset control */
-AGESA_STATUS BiosGnbPcieSlotReset (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	// Dedicated reset not needed for the on-board Intel I210 GbE controller.
-	return AGESA_UNSUPPORTED;
-}
diff --git a/src/mainboard/lippert/frontrunner-af/BiosCallOuts.h b/src/mainboard/lippert/frontrunner-af/BiosCallOuts.h
index 97d8ead..95d55c4 100644
--- a/src/mainboard/lippert/frontrunner-af/BiosCallOuts.h
+++ b/src/mainboard/lippert/frontrunner-af/BiosCallOuts.h
@@ -23,8 +23,6 @@
 #include <northbridge/amd/agesa/family14/fam14_callouts.h>
 #include "SB800.h"
 
-/* CALLOUT Initialization */
-AGESA_STATUS GetBiosCallout(UINT32 Func, UINT32 Data, VOID *ConfigPtr);
 
 /* FCH GPIO access helpers */
 #define FCH_IOMUX(gpio_nr) (*(u8*)(ACPI_MMIO_BASE+IOMUX_BASE+(gpio_nr)))
diff --git a/src/mainboard/lippert/toucan-af/BiosCallOuts.c b/src/mainboard/lippert/toucan-af/BiosCallOuts.c
index 829b642..83995ef 100644
--- a/src/mainboard/lippert/toucan-af/BiosCallOuts.c
+++ b/src/mainboard/lippert/toucan-af/BiosCallOuts.c
@@ -23,49 +23,22 @@
 #include "heapManager.h"
 #include <northbridge/amd/agesa/family14/dimmSpd.h>
 
-STATIC BIOS_CALLOUT_STRUCT BiosCallouts[] =
+const BIOS_CALLOUT_STRUCT BiosCallouts[] =
 {
-	{AGESA_ALLOCATE_BUFFER,			BiosAllocateBuffer },
-	{AGESA_DEALLOCATE_BUFFER,		BiosDeallocateBuffer },
-	{AGESA_DO_RESET,			BiosReset },
-	{AGESA_LOCATE_BUFFER,			BiosLocateBuffer },
-	{AGESA_READ_SPD,			BiosReadSpd },
-	{AGESA_READ_SPD_RECOVERY,		BiosDefaultRet },
-	{AGESA_RUNFUNC_ONAP,			BiosRunFuncOnAp },
-	{AGESA_GNB_PCIE_SLOT_RESET,		BiosGnbPcieSlotReset },
+	{AGESA_ALLOCATE_BUFFER,			agesa_AllocateBuffer },
+	{AGESA_DEALLOCATE_BUFFER,		agesa_DeallocateBuffer },
+	{AGESA_LOCATE_BUFFER,			agesa_LocateBuffer },
+	{AGESA_DO_RESET,			agesa_Reset },
+	{AGESA_READ_SPD,			fam14_ReadSpd },
+	{AGESA_READ_SPD_RECOVERY,		agesa_NoopUnsupported },
+	{AGESA_RUNFUNC_ONAP,			agesa_RunFuncOnAp },
+	{AGESA_GNB_PCIE_SLOT_RESET,		agesa_NoopUnsupported },
 	{AGESA_HOOKBEFORE_DRAM_INIT,		BiosHookBeforeDramInit},
-	{AGESA_HOOKBEFORE_DRAM_INIT_RECOVERY,	BiosHookBeforeDramInitRecovery },
-	{AGESA_HOOKBEFORE_DQS_TRAINING,		BiosHookBeforeDQSTraining },
-	{AGESA_HOOKBEFORE_EXIT_SELF_REF,	BiosHookBeforeExitSelfRefresh },
+	{AGESA_HOOKBEFORE_DRAM_INIT_RECOVERY,	agesa_NoopSuccess },
+	{AGESA_HOOKBEFORE_DQS_TRAINING,		agesa_NoopSuccess },
+	{AGESA_HOOKBEFORE_EXIT_SELF_REF,	agesa_NoopSuccess },
 };
 
-AGESA_STATUS GetBiosCallout (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	UINTN i;
-	AGESA_STATUS CalloutStatus;
-	UINTN CallOutCount = sizeof (BiosCallouts) / sizeof (BiosCallouts [0]);
-
-	/*
-	 * printk(BIOS_SPEW,"%s function: %x\n", __func__, (u32) Func);
-	 */
-
-	CalloutStatus = AGESA_UNSUPPORTED;
-
-	for (i = 0; i < CallOutCount; i++) {
-		if (BiosCallouts[i].CalloutName == Func) {
-			CalloutStatus = BiosCallouts[i].CalloutPtr (Func, Data, ConfigPtr);
-			return CalloutStatus;
-		}
-	}
-
-	return CalloutStatus;
-}
-
-/*	Call the host environment interface to provide a user hook opportunity. */
-AGESA_STATUS BiosHookBeforeDQSTraining (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	return AGESA_SUCCESS;
-}
 /*	Call the host environment interface to provide a user hook opportunity. */
 AGESA_STATUS BiosHookBeforeDramInit (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
 {
@@ -90,22 +63,3 @@ AGESA_STATUS BiosHookBeforeDramInit (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
 
 	return AGESA_SUCCESS;
 }
-
-/*	Call the host environment interface to provide a user hook opportunity. */
-AGESA_STATUS BiosHookBeforeDramInitRecovery (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	return AGESA_SUCCESS;
-}
-
-/*	Call the host environment interface to provide a user hook opportunity. */
-AGESA_STATUS BiosHookBeforeExitSelfRefresh (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	return AGESA_SUCCESS;
-}
-/* PCIE slot reset control */
-AGESA_STATUS BiosGnbPcieSlotReset (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	// COM Express doesn't provide dedicated resets for individual lanes
-	// and it's not needed for the on-board Intel I210 GbE controller.
-	return AGESA_UNSUPPORTED;
-}
diff --git a/src/mainboard/lippert/toucan-af/BiosCallOuts.h b/src/mainboard/lippert/toucan-af/BiosCallOuts.h
index 15b5eee..e7dc16f 100644
--- a/src/mainboard/lippert/toucan-af/BiosCallOuts.h
+++ b/src/mainboard/lippert/toucan-af/BiosCallOuts.h
@@ -23,8 +23,6 @@
 #include <northbridge/amd/agesa/family14/fam14_callouts.h>
 #include "SB800.h"
 
-/* CALLOUT Initialization */
-AGESA_STATUS GetBiosCallout(UINT32 Func, UINT32 Data, VOID *ConfigPtr);
 
 /* FCH GPIO access helpers */
 #define FCH_IOMUX(gpio_nr) (*(u8*)(ACPI_MMIO_BASE+IOMUX_BASE+(gpio_nr)))
diff --git a/src/mainboard/supermicro/h8qgi/BiosCallOuts.c b/src/mainboard/supermicro/h8qgi/BiosCallOuts.c
index 85285bf..f536183 100644
--- a/src/mainboard/supermicro/h8qgi/BiosCallOuts.c
+++ b/src/mainboard/supermicro/h8qgi/BiosCallOuts.c
@@ -71,97 +71,22 @@ static void restore_socket(UINT8 original_value)
 }
 #endif
 
-STATIC BIOS_CALLOUT_STRUCT BiosCallouts[] =
+const BIOS_CALLOUT_STRUCT BiosCallouts[] =
 {
-	{AGESA_ALLOCATE_BUFFER,			BiosAllocateBuffer },
-	{AGESA_DEALLOCATE_BUFFER,		BiosDeallocateBuffer },
-	{AGESA_DO_RESET,			BiosReset },
-	{AGESA_LOCATE_BUFFER,			BiosLocateBuffer },
-	{AGESA_READ_SPD,			BiosReadSpd },
-	{AGESA_READ_SPD_RECOVERY,		BiosDefaultRet },
-	{AGESA_RUNFUNC_ONAP,			BiosRunFuncOnAp },
-	{AGESA_GET_IDS_INIT_DATA,		BiosGetIdsInitData },
-	{AGESA_HOOKBEFORE_DQS_TRAINING,		BiosHookBeforeDQSTraining },
-	{AGESA_HOOKBEFORE_DRAM_INIT,		BiosHookBeforeDramInit },
-	{AGESA_HOOKBEFORE_EXIT_SELF_REF,	BiosHookBeforeExitSelfRefresh },
+	{AGESA_ALLOCATE_BUFFER,			agesa_AllocateBuffer },
+	{AGESA_DEALLOCATE_BUFFER,		agesa_DeallocateBuffer },
+	{AGESA_LOCATE_BUFFER,			agesa_LocateBuffer },
+	{AGESA_DO_RESET,			agesa_Reset },
+	{AGESA_READ_SPD,			board_ReadSpd },
+	{AGESA_READ_SPD_RECOVERY,		agesa_NoopUnsupported },
+	{AGESA_RUNFUNC_ONAP,			agesa_RunFuncOnAp },
+	{AGESA_GET_IDS_INIT_DATA,		agesa_EmptyIdsInitData },
+	{AGESA_HOOKBEFORE_DQS_TRAINING,		agesa_NoopSuccess },
+	{AGESA_HOOKBEFORE_DRAM_INIT,		agesa_NoopSuccess },
+	{AGESA_HOOKBEFORE_EXIT_SELF_REF,	agesa_NoopSuccess },
 };
 
-AGESA_STATUS GetBiosCallout (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	UINTN i;
-	AGESA_STATUS CalloutStatus;
-	UINTN CallOutCount = sizeof (BiosCallouts) / sizeof (BiosCallouts [0]);
-
-	for (i = 0; i < CallOutCount; i++) {
-		if (BiosCallouts[i].CalloutName == Func) {
-			break;
-		}
-	}
-
-	if(i >= CallOutCount) {
-		return AGESA_UNSUPPORTED;
-	}
-
-	CalloutStatus = BiosCallouts[i].CalloutPtr (Func, Data, ConfigPtr);
-
-	return CalloutStatus;
-}
-
-
-CONST IDS_NV_ITEM IdsData[] =
-{
-	/*{
-	  AGESA_IDS_NV_MAIN_PLL_CON,
-	  0x1
-	  },
-	  {
-	  AGESA_IDS_NV_MAIN_PLL_FID_EN,
-	  0x1
-	  },
-	  {
-	  AGESA_IDS_NV_MAIN_PLL_FID,
-	  0x8
-	  },
-
-	  {
-	  AGESA_IDS_NV_CUSTOM_NB_PSTATE,
-	  },
-	  {
-	  AGESA_IDS_NV_CUSTOM_NB_P0_DIV_CTRL,
-	  },
-	  {
-	  AGESA_IDS_NV_CUSTOM_NB_P1_DIV_CTRL,
-	  },
-	  {
-	  AGESA_IDS_NV_FORCE_NB_PSTATE,
-	  },
-	 */
-	{
-		0xFFFF,
-		0xFFFF
-	}
-};
-
-#define   NUM_IDS_ENTRIES    (sizeof (IdsData) / sizeof (IDS_NV_ITEM))
-
-AGESA_STATUS BiosGetIdsInitData (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	UINTN   i;
-	IDS_NV_ITEM *IdsPtr;
-
-	IdsPtr = ((IDS_CALLOUT_STRUCT *) ConfigPtr)->IdsNvPtr;
-
-	if (Data == IDS_CALLOUT_INIT) {
-		for (i = 0; i < NUM_IDS_ENTRIES; i++) {
-			IdsPtr[i].IdsNvValue = IdsData[i].IdsNvValue;
-			IdsPtr[i].IdsNvId = IdsData[i].IdsNvId;
-		}
-	}
-	return AGESA_SUCCESS;
-}
-
-
-AGESA_STATUS BiosReadSpd (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
+AGESA_STATUS board_ReadSpd (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
 {
 	AGESA_STATUS Status;
 #ifdef __PRE_RAM__
@@ -172,7 +97,7 @@ AGESA_STATUS BiosReadSpd (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
 
 	original_value = select_socket(((AGESA_READ_SPD_PARAMS *)ConfigPtr)->SocketId);
 
-	Status = agesa_ReadSPD (Func, Data, ConfigPtr);
+	Status = fam15_ReadSPD (Func, Data, ConfigPtr);
 
 	restore_socket(original_value);
 #else
@@ -181,22 +106,3 @@ AGESA_STATUS BiosReadSpd (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
 
 	return Status;
 }
-
-/*  Call the host environment interface to provide a user hook opportunity. */
-AGESA_STATUS BiosHookBeforeDQSTraining (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	return AGESA_SUCCESS;
-}
-
-/*  Call the host environment interface to provide a user hook opportunity. */
-AGESA_STATUS BiosHookBeforeDramInit (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	return AGESA_SUCCESS;
-}
-
-/*  Call the host environment interface to provide a user hook opportunity. */
-AGESA_STATUS BiosHookBeforeExitSelfRefresh (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	return AGESA_SUCCESS;
-}
-
diff --git a/src/mainboard/supermicro/h8qgi/BiosCallOuts.h b/src/mainboard/supermicro/h8qgi/BiosCallOuts.h
index 0b4fb57..a1efdd2 100644
--- a/src/mainboard/supermicro/h8qgi/BiosCallOuts.h
+++ b/src/mainboard/supermicro/h8qgi/BiosCallOuts.h
@@ -22,8 +22,6 @@
 
 #include <northbridge/amd/agesa/family15/fam15_callouts.h>
 
-/* CALLOUT Initialization */
-AGESA_STATUS GetBiosCallout(UINT32 Func, UINT32 Data, VOID *ConfigPtr);
 
 #define SB_GPIO_REG02   2
 #define SB_GPIO_REG09   9
diff --git a/src/mainboard/supermicro/h8scm/BiosCallOuts.c b/src/mainboard/supermicro/h8scm/BiosCallOuts.c
index ef799f3..6250dfe 100644
--- a/src/mainboard/supermicro/h8scm/BiosCallOuts.c
+++ b/src/mainboard/supermicro/h8scm/BiosCallOuts.c
@@ -25,123 +25,17 @@
 #include "heapManager.h"
 #include <northbridge/amd/agesa/family15/dimmSpd.h>
 
-STATIC BIOS_CALLOUT_STRUCT BiosCallouts[] =
-{
-	{AGESA_ALLOCATE_BUFFER,			BiosAllocateBuffer },
-	{AGESA_DEALLOCATE_BUFFER,		BiosDeallocateBuffer },
-	{AGESA_DO_RESET,			BiosReset },
-	{AGESA_LOCATE_BUFFER,			BiosLocateBuffer },
-	{AGESA_READ_SPD,			BiosReadSpd },
-	{AGESA_READ_SPD_RECOVERY,		BiosDefaultRet },
-	{AGESA_RUNFUNC_ONAP,			BiosRunFuncOnAp },
-	{AGESA_GET_IDS_INIT_DATA,		BiosGetIdsInitData },
-	{AGESA_HOOKBEFORE_DQS_TRAINING,		BiosHookBeforeDQSTraining },
-	{AGESA_HOOKBEFORE_DRAM_INIT,		BiosHookBeforeDramInit },
-	{AGESA_HOOKBEFORE_EXIT_SELF_REF,	BiosHookBeforeExitSelfRefresh },
-};
-
-AGESA_STATUS GetBiosCallout (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	UINTN i;
-	AGESA_STATUS CalloutStatus;
-	UINTN CallOutCount = sizeof (BiosCallouts) / sizeof (BiosCallouts [0]);
-
-	for (i = 0; i < CallOutCount; i++) {
-		if (BiosCallouts[i].CalloutName == Func) {
-			break;
-		}
-	}
-
-	if(i >= CallOutCount) {
-		return AGESA_UNSUPPORTED;
-	}
-
-	CalloutStatus = BiosCallouts[i].CalloutPtr (Func, Data, ConfigPtr);
-
-	return CalloutStatus;
-}
-
-
-CONST IDS_NV_ITEM IdsData[] =
-{
-	/*{
-	  AGESA_IDS_NV_MAIN_PLL_CON,
-	  0x1
-	  },
-	  {
-	  AGESA_IDS_NV_MAIN_PLL_FID_EN,
-	  0x1
-	  },
-	  {
-	  AGESA_IDS_NV_MAIN_PLL_FID,
-	  0x8
-	  },
-
-	  {
-	  AGESA_IDS_NV_CUSTOM_NB_PSTATE,
-	  },
-	  {
-	  AGESA_IDS_NV_CUSTOM_NB_P0_DIV_CTRL,
-	  },
-	  {
-	  AGESA_IDS_NV_CUSTOM_NB_P1_DIV_CTRL,
-	  },
-	  {
-	  AGESA_IDS_NV_FORCE_NB_PSTATE,
-	  },
-	 */
-	{
-		0xFFFF,
-		0xFFFF
-	}
+const BIOS_CALLOUT_STRUCT BiosCallouts[] =
+{
+	{AGESA_ALLOCATE_BUFFER,			agesa_AllocateBuffer },
+	{AGESA_DEALLOCATE_BUFFER,		agesa_DeallocateBuffer },
+	{AGESA_LOCATE_BUFFER,			agesa_LocateBuffer },
+	{AGESA_DO_RESET,			agesa_Reset },
+	{AGESA_READ_SPD,			fam15_ReadSpd },
+	{AGESA_READ_SPD_RECOVERY,		agesa_NoopUnsupported },
+	{AGESA_RUNFUNC_ONAP,			agesa_RunFuncOnAp },
+	{AGESA_GET_IDS_INIT_DATA,		agesa_EmptyIdsInitData },
+	{AGESA_HOOKBEFORE_DQS_TRAINING,		agesa_NoopSuccess },
+	{AGESA_HOOKBEFORE_DRAM_INIT,		agesa_NoopSuccess },
+	{AGESA_HOOKBEFORE_EXIT_SELF_REF,	agesa_NoopSuccess },
 };
-
-#define   NUM_IDS_ENTRIES    (sizeof (IdsData) / sizeof (IDS_NV_ITEM))
-
-AGESA_STATUS BiosGetIdsInitData (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	UINTN   i;
-	IDS_NV_ITEM *IdsPtr;
-
-	IdsPtr = ((IDS_CALLOUT_STRUCT *) ConfigPtr)->IdsNvPtr;
-
-	if (Data == IDS_CALLOUT_INIT) {
-		for (i = 0; i < NUM_IDS_ENTRIES; i++) {
-			IdsPtr[i].IdsNvValue = IdsData[i].IdsNvValue;
-			IdsPtr[i].IdsNvId = IdsData[i].IdsNvId;
-		}
-	}
-	return AGESA_SUCCESS;
-}
-
-
-AGESA_STATUS BiosReadSpd (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	AGESA_STATUS Status;
-#ifdef __PRE_RAM__
-	Status = agesa_ReadSPD (Func, Data, ConfigPtr);
-#else
-	Status = AGESA_UNSUPPORTED;
-#endif
-
-	return Status;
-}
-
-/*  Call the host environment interface to provide a user hook opportunity. */
-AGESA_STATUS BiosHookBeforeDQSTraining (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	return AGESA_SUCCESS;
-}
-
-/*  Call the host environment interface to provide a user hook opportunity. */
-AGESA_STATUS BiosHookBeforeDramInit (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	return AGESA_SUCCESS;
-}
-
-/*  Call the host environment interface to provide a user hook opportunity. */
-AGESA_STATUS BiosHookBeforeExitSelfRefresh (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	return AGESA_SUCCESS;
-}
-
diff --git a/src/mainboard/supermicro/h8scm/BiosCallOuts.h b/src/mainboard/supermicro/h8scm/BiosCallOuts.h
index bbd9ba3..e2867a1 100644
--- a/src/mainboard/supermicro/h8scm/BiosCallOuts.h
+++ b/src/mainboard/supermicro/h8scm/BiosCallOuts.h
@@ -22,7 +22,5 @@
 
 #include <northbridge/amd/agesa/family15/fam15_callouts.h>
 
-/* CALLOUT Initialization */
-AGESA_STATUS GetBiosCallout(UINT32 Func, UINT32 Data, VOID *ConfigPtr);
 
 #endif //_BIOS_CALLOUT_H_
diff --git a/src/mainboard/tyan/s8226/BiosCallOuts.c b/src/mainboard/tyan/s8226/BiosCallOuts.c
index 58a13f2..146d8f3 100644
--- a/src/mainboard/tyan/s8226/BiosCallOuts.c
+++ b/src/mainboard/tyan/s8226/BiosCallOuts.c
@@ -79,97 +79,22 @@ static void restore_socket(UINT8 original_value)
 }
 #endif
 
-STATIC BIOS_CALLOUT_STRUCT BiosCallouts[] =
+const BIOS_CALLOUT_STRUCT BiosCallouts[] =
 {
-	{AGESA_ALLOCATE_BUFFER,			BiosAllocateBuffer },
-	{AGESA_DEALLOCATE_BUFFER,		BiosDeallocateBuffer },
-	{AGESA_DO_RESET,			BiosReset },
-	{AGESA_LOCATE_BUFFER,			BiosLocateBuffer },
-	{AGESA_READ_SPD,			BiosReadSpd },
-	{AGESA_READ_SPD_RECOVERY,		BiosDefaultRet },
-	{AGESA_RUNFUNC_ONAP,			BiosRunFuncOnAp },
-	{AGESA_GET_IDS_INIT_DATA,		BiosGetIdsInitData },
-	{AGESA_HOOKBEFORE_DQS_TRAINING,		BiosHookBeforeDQSTraining },
-	{AGESA_HOOKBEFORE_DRAM_INIT,		BiosHookBeforeDramInit },
-	{AGESA_HOOKBEFORE_EXIT_SELF_REF,	BiosHookBeforeExitSelfRefresh },
+	{AGESA_ALLOCATE_BUFFER,			agesa_AllocateBuffer },
+	{AGESA_DEALLOCATE_BUFFER,		agesa_DeallocateBuffer },
+	{AGESA_LOCATE_BUFFER,			agesa_LocateBuffer },
+	{AGESA_DO_RESET,			agesa_Reset },
+	{AGESA_READ_SPD,			board_ReadSpd },
+	{AGESA_READ_SPD_RECOVERY,		agesa_NoopUnsupported },
+	{AGESA_RUNFUNC_ONAP,			agesa_RunFuncOnAp },
+	{AGESA_GET_IDS_INIT_DATA,		agesa_EmptyIdsInitData },
+	{AGESA_HOOKBEFORE_DQS_TRAINING,		agesa_NoopSuccess },
+	{AGESA_HOOKBEFORE_DRAM_INIT,		agesa_NoopSuccess },
+	{AGESA_HOOKBEFORE_EXIT_SELF_REF,	agesa_NoopSuccess },
 };
 
-AGESA_STATUS GetBiosCallout (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	UINTN i;
-	AGESA_STATUS CalloutStatus;
-	UINTN CallOutCount = sizeof (BiosCallouts) / sizeof (BiosCallouts [0]);
-
-	for (i = 0; i < CallOutCount; i++) {
-		if (BiosCallouts[i].CalloutName == Func) {
-			break;
-		}
-	}
-
-	if(i >= CallOutCount) {
-		return AGESA_UNSUPPORTED;
-	}
-
-	CalloutStatus = BiosCallouts[i].CalloutPtr (Func, Data, ConfigPtr);
-
-	return CalloutStatus;
-}
-
-
-CONST IDS_NV_ITEM IdsData[] =
-{
-	/*{
-	  AGESA_IDS_NV_MAIN_PLL_CON,
-	  0x1
-	  },
-	  {
-	  AGESA_IDS_NV_MAIN_PLL_FID_EN,
-	  0x1
-	  },
-	  {
-	  AGESA_IDS_NV_MAIN_PLL_FID,
-	  0x8
-	  },
-
-	  {
-	  AGESA_IDS_NV_CUSTOM_NB_PSTATE,
-	  },
-	  {
-	  AGESA_IDS_NV_CUSTOM_NB_P0_DIV_CTRL,
-	  },
-	  {
-	  AGESA_IDS_NV_CUSTOM_NB_P1_DIV_CTRL,
-	  },
-	  {
-	  AGESA_IDS_NV_FORCE_NB_PSTATE,
-	  },
-	 */
-	{
-		0xFFFF,
-		0xFFFF
-	}
-};
-
-#define   NUM_IDS_ENTRIES    (sizeof (IdsData) / sizeof (IDS_NV_ITEM))
-
-AGESA_STATUS BiosGetIdsInitData (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	UINTN   i;
-	IDS_NV_ITEM *IdsPtr;
-
-	IdsPtr = ((IDS_CALLOUT_STRUCT *) ConfigPtr)->IdsNvPtr;
-
-	if (Data == IDS_CALLOUT_INIT) {
-		for (i = 0; i < NUM_IDS_ENTRIES; i++) {
-			IdsPtr[i].IdsNvValue = IdsData[i].IdsNvValue;
-			IdsPtr[i].IdsNvId = IdsData[i].IdsNvId;
-		}
-	}
-	return AGESA_SUCCESS;
-}
-
-
-AGESA_STATUS BiosReadSpd (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
+AGESA_STATUS board_ReadSpd (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
 {
 	AGESA_STATUS Status;
 #ifdef __PRE_RAM__
@@ -180,7 +105,7 @@ AGESA_STATUS BiosReadSpd (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
 
 	original_value = select_socket(((AGESA_READ_SPD_PARAMS *)ConfigPtr)->SocketId);
 
-	Status = agesa_ReadSPD (Func, Data, ConfigPtr);
+	Status = fam15_ReadSPD (Func, Data, ConfigPtr);
 
 	restore_socket(original_value);
 #else
@@ -189,22 +114,3 @@ AGESA_STATUS BiosReadSpd (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
 
 	return Status;
 }
-
-/*  Call the host environment interface to provide a user hook opportunity. */
-AGESA_STATUS BiosHookBeforeDQSTraining (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	return AGESA_SUCCESS;
-}
-
-/*  Call the host environment interface to provide a user hook opportunity. */
-AGESA_STATUS BiosHookBeforeDramInit (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	return AGESA_SUCCESS;
-}
-
-/*  Call the host environment interface to provide a user hook opportunity. */
-AGESA_STATUS BiosHookBeforeExitSelfRefresh (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	return AGESA_SUCCESS;
-}
-
diff --git a/src/mainboard/tyan/s8226/BiosCallOuts.h b/src/mainboard/tyan/s8226/BiosCallOuts.h
index 0b4fb57..a1efdd2 100644
--- a/src/mainboard/tyan/s8226/BiosCallOuts.h
+++ b/src/mainboard/tyan/s8226/BiosCallOuts.h
@@ -22,8 +22,6 @@
 
 #include <northbridge/amd/agesa/family15/fam15_callouts.h>
 
-/* CALLOUT Initialization */
-AGESA_STATUS GetBiosCallout(UINT32 Func, UINT32 Data, VOID *ConfigPtr);
 
 #define SB_GPIO_REG02   2
 #define SB_GPIO_REG09   9
diff --git a/src/northbridge/amd/agesa/def_callouts.c b/src/northbridge/amd/agesa/def_callouts.c
new file mode 100644
index 0000000..c86e3b1
--- /dev/null
+++ b/src/northbridge/amd/agesa/def_callouts.c
@@ -0,0 +1,142 @@
+/*
+ * This file is part of the coreboot project.
+ *
+ * Copyright (C) 2011 Advanced Micro Devices, Inc.
+ * Copyright (C) 2013 Sage Electronic Engineering, LLC
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include "agesawrapper.h"
+#include <device/dram/ddr3.h>
+#include <cbfs.h>
+#include <string.h>
+
+#define SPD_SIZE    128
+#define SPD_CRC_HI  127
+#define SPD_CRC_LO  126
+
+AGESA_STATUS agesa_NoopUnsupported (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
+{
+	return AGESA_UNSUPPORTED;
+}
+
+/* Call the host environment interface to provide a user hook opportunity. */
+AGESA_STATUS agesa_NoopSuccess (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
+{
+	return AGESA_SUCCESS;
+}
+
+AGESA_STATUS agesa_EmptyIdsInitData (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
+{
+	IDS_NV_ITEM *IdsPtr = ((IDS_CALLOUT_STRUCT *) ConfigPtr)->IdsNvPtr;
+	if (Data == IDS_CALLOUT_INIT)
+		IdsPtr[0].IdsNvValue = IdsPtr[0].IdsNvId = 0xffff;
+	return AGESA_SUCCESS;
+}
+
+
+AGESA_STATUS agesa_Reset (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
+{
+	AGESA_STATUS        Status;
+	UINT8                 Value;
+	UINTN               ResetType;
+	AMD_CONFIG_PARAMS   *StdHeader;
+
+	ResetType = Data;
+	StdHeader = ConfigPtr;
+
+	//
+	// Perform the RESET based upon the ResetType. In case of
+	// WARM_RESET_WHENVER and COLD_RESET_WHENEVER, the request will go to
+	// AmdResetManager. During the critical condition, where reset is required
+	// immediately, the reset will be invoked directly by writing 0x04 to port
+	// 0xCF9 (Reset Port).
+	//
+	switch (ResetType) {
+	case WARM_RESET_WHENEVER:
+	case COLD_RESET_WHENEVER:
+		break;
+
+	case WARM_RESET_IMMEDIATELY:
+	case COLD_RESET_IMMEDIATELY:
+		Value = 0x06;
+		LibAmdIoWrite (AccessWidth8, 0xCf9, &Value, StdHeader);
+		break;
+
+	default:
+		break;
+	}
+
+	Status = 0;
+	return Status;
+}
+
+AGESA_STATUS agesa_RunFuncOnAp (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
+{
+	AGESA_STATUS        Status;
+
+	Status = agesawrapper_amdlaterunaptask (Func, Data, ConfigPtr);
+	return Status;
+}
+
+AGESA_STATUS agesa_ReadSpd_from_cbfs(UINT32 Func, UINT32 Data, VOID *ConfigPtr)
+{
+	AGESA_STATUS Status;
+#ifdef __PRE_RAM__
+	AGESA_READ_SPD_PARAMS *info = ConfigPtr;
+	if (info->MemChannelId > 0)
+		return AGESA_UNSUPPORTED;
+	if (info->SocketId != 0)
+		return AGESA_UNSUPPORTED;
+	if (info->DimmId != 0)
+		return AGESA_UNSUPPORTED;
+
+	char *spd_file;
+	size_t spd_file_len;
+
+	printk(BIOS_DEBUG, "read SPD\n");
+	spd_file = cbfs_get_file_content(CBFS_DEFAULT_MEDIA, "spd.bin", 0xab,
+					 &spd_file_len);
+	if (!spd_file)
+		die("file [spd.bin] not found in CBFS");
+	if (spd_file_len < SPD_SIZE)
+		die("Missing SPD data.");
+
+	memcpy((char*)info->Buffer, spd_file, SPD_SIZE);
+
+	u16 crc = spd_ddr3_calc_crc(info->Buffer, SPD_SIZE);
+
+	if (((info->Buffer[SPD_CRC_LO] == 0) && (info->Buffer[SPD_CRC_HI] == 0))
+	 || (info->Buffer[SPD_CRC_LO] != (crc & 0xff))
+	 || (info->Buffer[SPD_CRC_HI] != (crc >> 8))) {
+		printk(BIOS_WARNING, "SPD has a invalid or zero-valued CRC\n");
+		info->Buffer[SPD_CRC_LO] = crc & 0xff;
+		info->Buffer[SPD_CRC_HI] = crc >> 8;
+		u16 i;
+		printk(BIOS_WARNING, "\nDisplay the SPD");
+		for (i = 0; i < SPD_SIZE; i++) {
+			if((i % 16) == 0x00)
+				printk(BIOS_WARNING, "\n%02x:  ",i);
+			printk(BIOS_WARNING, "%02x ", info->Buffer[i]);
+		}
+		printk(BIOS_WARNING, "\n");
+	 }
+	Status = AGESA_SUCCESS;
+#else
+	Status = AGESA_UNSUPPORTED;
+#endif
+
+	return Status;
+}
diff --git a/src/northbridge/amd/agesa/family12/fam12_callouts.c b/src/northbridge/amd/agesa/family12/fam12_callouts.c
index 1d55e95..16c611c 100644
--- a/src/northbridge/amd/agesa/family12/fam12_callouts.c
+++ b/src/northbridge/amd/agesa/family12/fam12_callouts.c
@@ -25,356 +25,9 @@
 #include "OptionsIds.h"
 #include "heapManager.h"
 #include "Hudson-2.h"
-#include <cbmem.h>
-#include <arch/acpi.h>
-#include <string.h>
 
-UINT32 GetHeapBase(AMD_CONFIG_PARAMS *StdHeader)
-{
-	UINT32 heap = BIOS_HEAP_START_ADDRESS;
-
-#if CONFIG_HAVE_ACPI_RESUME
-	/* Both romstage and ramstage has this S3 detect. */
-	if (acpi_get_sleep_type() == 3)
-		heap = (UINT32) cbmem_find(CBMEM_ID_RESUME_SCRATCH) +
-		 (CONFIG_HIGH_SCRATCH_MEMORY_SIZE - BIOS_HEAP_SIZE);
-		  /* himem_heap_base + high_stack_size */
-#endif
-
-	return heap;
-}
-
-void EmptyHeap(void)
-{
-	void *BiosManagerPtr = (void *) GetHeapBase(NULL);
-	memset(BiosManagerPtr, 0, BIOS_HEAP_SIZE);
-}
-
-AGESA_STATUS BiosAllocateBuffer (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	UINT32              AvailableHeapSize;
-	UINT8               *BiosHeapBaseAddr;
-	UINT32              CurrNodeOffset;
-	UINT32              PrevNodeOffset;
-	UINT32              FreedNodeOffset;
-	UINT32              BestFitNodeOffset;
-	UINT32              BestFitPrevNodeOffset;
-	UINT32              NextFreeOffset;
-	BIOS_BUFFER_NODE   *CurrNodePtr;
-	BIOS_BUFFER_NODE   *FreedNodePtr;
-	BIOS_BUFFER_NODE   *BestFitNodePtr;
-	BIOS_BUFFER_NODE   *BestFitPrevNodePtr;
-	BIOS_BUFFER_NODE   *NextFreePtr;
-	BIOS_HEAP_MANAGER  *BiosHeapBasePtr;
-	AGESA_BUFFER_PARAMS *AllocParams;
-
-	AllocParams = ((AGESA_BUFFER_PARAMS *) ConfigPtr);
-	AllocParams->BufferPointer = NULL;
-
-	AvailableHeapSize = BIOS_HEAP_SIZE - sizeof (BIOS_HEAP_MANAGER);
-	BiosHeapBaseAddr = (UINT8 *) GetHeapBase(&(AllocParams->StdHeader));
-	BiosHeapBasePtr = (BIOS_HEAP_MANAGER *) BiosHeapBaseAddr;
-
-	if (BiosHeapBasePtr->StartOfAllocatedNodes == 0) {
-		/* First allocation */
-		CurrNodeOffset = sizeof (BIOS_HEAP_MANAGER);
-		CurrNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + CurrNodeOffset);
-		CurrNodePtr->BufferHandle = AllocParams->BufferHandle;
-		CurrNodePtr->BufferSize = AllocParams->BufferLength;
-		CurrNodePtr->NextNodeOffset = 0;
-		AllocParams->BufferPointer = (UINT8 *) CurrNodePtr + sizeof (BIOS_BUFFER_NODE);
-
-		/* Update the remaining free space */
-		FreedNodeOffset = CurrNodeOffset + CurrNodePtr->BufferSize + sizeof (BIOS_BUFFER_NODE);
-		FreedNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + FreedNodeOffset);
-		FreedNodePtr->BufferSize = AvailableHeapSize - sizeof (BIOS_BUFFER_NODE) - CurrNodePtr->BufferSize;
-		FreedNodePtr->NextNodeOffset = 0;
-
-		/* Update the offsets for Allocated and Freed nodes */
-		BiosHeapBasePtr->StartOfAllocatedNodes = CurrNodeOffset;
-		BiosHeapBasePtr->StartOfFreedNodes = FreedNodeOffset;
-	} else {
-		/* Find out whether BufferHandle has been allocated on the heap. */
-		/* If it has, return AGESA_BOUNDS_CHK */
-		CurrNodeOffset = BiosHeapBasePtr->StartOfAllocatedNodes;
-		CurrNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + CurrNodeOffset);
-
-		while (CurrNodeOffset != 0) {
-			CurrNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + CurrNodeOffset);
-			if (CurrNodePtr->BufferHandle == AllocParams->BufferHandle) {
-				return AGESA_BOUNDS_CHK;
-			}
-			CurrNodeOffset = CurrNodePtr->NextNodeOffset;
-			/* If BufferHandle has not been allocated on the heap, CurrNodePtr here points
-			   to the end of the allocated nodes list.
-			*/
-
-		}
-		/* Find the node that best fits the requested buffer size */
-		FreedNodeOffset = BiosHeapBasePtr->StartOfFreedNodes;
-		PrevNodeOffset = FreedNodeOffset;
-		BestFitNodeOffset = 0;
-		BestFitPrevNodeOffset = 0;
-		while (FreedNodeOffset != 0) {
-			FreedNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + FreedNodeOffset);
-			if (FreedNodePtr->BufferSize >= (AllocParams->BufferLength + sizeof (BIOS_BUFFER_NODE))) {
-				if (BestFitNodeOffset == 0) {
-					/* First node that fits the requested buffer size */
-					BestFitNodeOffset = FreedNodeOffset;
-					BestFitPrevNodeOffset = PrevNodeOffset;
-				} else {
-					/* Find out whether current node is a better fit than the previous nodes */
-					BestFitNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + BestFitNodeOffset);
-					if (BestFitNodePtr->BufferSize > FreedNodePtr->BufferSize) {
-						BestFitNodeOffset = FreedNodeOffset;
-						BestFitPrevNodeOffset = PrevNodeOffset;
-					}
-				}
-			}
-			PrevNodeOffset = FreedNodeOffset;
-			FreedNodeOffset = FreedNodePtr->NextNodeOffset;
-		} /* end of while loop */
-
-
-		if (BestFitNodeOffset == 0) {
-			/* If we could not find a node that fits the requested buffer */
-			/* size, return AGESA_BOUNDS_CHK */
-			return AGESA_BOUNDS_CHK;
-		} else {
-			BestFitNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + BestFitNodeOffset);
-			BestFitPrevNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + BestFitPrevNodeOffset);
-
-			/* If BestFitNode is larger than the requested buffer, fragment the node further */
-			if (BestFitNodePtr->BufferSize > (AllocParams->BufferLength + sizeof (BIOS_BUFFER_NODE))) {
-				NextFreeOffset = BestFitNodeOffset + AllocParams->BufferLength + sizeof (BIOS_BUFFER_NODE);
-
-				NextFreePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + NextFreeOffset);
-				NextFreePtr->BufferSize = BestFitNodePtr->BufferSize - (AllocParams->BufferLength + sizeof (BIOS_BUFFER_NODE));
-				NextFreePtr->NextNodeOffset = BestFitNodePtr->NextNodeOffset;
-			} else {
-				/* Otherwise, next free node is NextNodeOffset of BestFitNode */
-				NextFreeOffset = BestFitNodePtr->NextNodeOffset;
-			}
-
-			/* If BestFitNode is the first buffer in the list, then update
-			   StartOfFreedNodes to reflect the new free node
-			*/
-			if (BestFitNodeOffset == BiosHeapBasePtr->StartOfFreedNodes) {
-				BiosHeapBasePtr->StartOfFreedNodes = NextFreeOffset;
-			} else {
-				BestFitPrevNodePtr->NextNodeOffset = NextFreeOffset;
-			}
-
-			/* Add BestFitNode to the list of Allocated nodes */
-			CurrNodePtr->NextNodeOffset = BestFitNodeOffset;
-			BestFitNodePtr->BufferSize = AllocParams->BufferLength;
-			BestFitNodePtr->BufferHandle = AllocParams->BufferHandle;
-			BestFitNodePtr->NextNodeOffset = 0;
-
-			/* Remove BestFitNode from list of Freed nodes */
-			AllocParams->BufferPointer = (UINT8 *) BestFitNodePtr + sizeof (BIOS_BUFFER_NODE);
-		}
-	}
-
-	return AGESA_SUCCESS;
-}
-
-AGESA_STATUS BiosDeallocateBuffer (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-
-	UINT8               *BiosHeapBaseAddr;
-	UINT32              AllocNodeOffset;
-	UINT32              PrevNodeOffset;
-	UINT32              NextNodeOffset;
-	UINT32              FreedNodeOffset;
-	UINT32              EndNodeOffset;
-	BIOS_BUFFER_NODE   *AllocNodePtr;
-	BIOS_BUFFER_NODE   *PrevNodePtr;
-	BIOS_BUFFER_NODE   *FreedNodePtr;
-	BIOS_BUFFER_NODE   *NextNodePtr;
-	BIOS_HEAP_MANAGER  *BiosHeapBasePtr;
-	AGESA_BUFFER_PARAMS *AllocParams;
-
-	AllocParams = (AGESA_BUFFER_PARAMS *) ConfigPtr;
-
-	BiosHeapBaseAddr = (UINT8 *) GetHeapBase(&(AllocParams->StdHeader));
-	BiosHeapBasePtr = (BIOS_HEAP_MANAGER *) BiosHeapBaseAddr;
-
-	/* Find target node to deallocate in list of allocated nodes.
-	   Return AGESA_BOUNDS_CHK if the BufferHandle is not found
-	*/
-	AllocNodeOffset = BiosHeapBasePtr->StartOfAllocatedNodes;
-	AllocNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + AllocNodeOffset);
-	PrevNodeOffset = AllocNodeOffset;
-
-	while (AllocNodePtr->BufferHandle !=  AllocParams->BufferHandle) {
-		if (AllocNodePtr->NextNodeOffset == 0) {
-			return AGESA_BOUNDS_CHK;
-		}
-		PrevNodeOffset = AllocNodeOffset;
-		AllocNodeOffset = AllocNodePtr->NextNodeOffset;
-		AllocNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + AllocNodeOffset);
-	}
-
-	/* Remove target node from list of allocated nodes */
-	PrevNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + PrevNodeOffset);
-	PrevNodePtr->NextNodeOffset = AllocNodePtr->NextNodeOffset;
-
-	/* Zero out the buffer, and clear the BufferHandle */
-	LibAmdMemFill ((UINT8 *)AllocNodePtr + sizeof (BIOS_BUFFER_NODE), 0, AllocNodePtr->BufferSize, &(AllocParams->StdHeader));
-	AllocNodePtr->BufferHandle = 0;
-	AllocNodePtr->BufferSize += sizeof (BIOS_BUFFER_NODE);
 
-	/* Add deallocated node in order to the list of freed nodes */
-	FreedNodeOffset = BiosHeapBasePtr->StartOfFreedNodes;
-	FreedNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + FreedNodeOffset);
 
-	EndNodeOffset = AllocNodeOffset + AllocNodePtr->BufferSize;
-
-	if (AllocNodeOffset < FreedNodeOffset) {
-		/* Add to the start of the freed list */
-		if (EndNodeOffset == FreedNodeOffset) {
-			/* If the freed node is adjacent to the first node in the list, concatenate both nodes */
-			AllocNodePtr->BufferSize += FreedNodePtr->BufferSize;
-			AllocNodePtr->NextNodeOffset = FreedNodePtr->NextNodeOffset;
-
-			/* Clear the BufferSize and NextNodeOffset of the previous first node */
-			FreedNodePtr->BufferSize = 0;
-			FreedNodePtr->NextNodeOffset = 0;
-
-		} else {
-			/* Otherwise, add freed node to the start of the list
-			   Update NextNodeOffset and BufferSize to include the
-			   size of BIOS_BUFFER_NODE
-			*/
-			AllocNodePtr->NextNodeOffset = FreedNodeOffset;
-		}
-		/* Update StartOfFreedNodes to the new first node */
-		BiosHeapBasePtr->StartOfFreedNodes = AllocNodeOffset;
-	} else {
-		/* Traverse list of freed nodes to find where the deallocated node
-		   should be place
-		*/
-		NextNodeOffset = FreedNodeOffset;
-		NextNodePtr = FreedNodePtr;
-		while (AllocNodeOffset > NextNodeOffset) {
-			PrevNodeOffset = NextNodeOffset;
-			if (NextNodePtr->NextNodeOffset == 0) {
-				break;
-			}
-			NextNodeOffset = NextNodePtr->NextNodeOffset;
-			NextNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + NextNodeOffset);
-		}
-
-		/* If deallocated node is adjacent to the next node,
-		   concatenate both nodes
-		*/
-		if (NextNodeOffset == EndNodeOffset) {
-			NextNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + NextNodeOffset);
-			AllocNodePtr->BufferSize += NextNodePtr->BufferSize;
-			AllocNodePtr->NextNodeOffset = NextNodePtr->NextNodeOffset;
-
-			NextNodePtr->BufferSize = 0;
-			NextNodePtr->NextNodeOffset = 0;
-		} else {
-			/*AllocNodePtr->NextNodeOffset = FreedNodePtr->NextNodeOffset; */
-			AllocNodePtr->NextNodeOffset = NextNodeOffset;
-		}
-		/* If deallocated node is adjacent to the previous node,
-		   concatenate both nodes
-		*/
-		PrevNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + PrevNodeOffset);
-		EndNodeOffset = PrevNodeOffset + PrevNodePtr->BufferSize;
-		if (AllocNodeOffset == EndNodeOffset) {
-			PrevNodePtr->NextNodeOffset = AllocNodePtr->NextNodeOffset;
-			PrevNodePtr->BufferSize += AllocNodePtr->BufferSize;
-
-			AllocNodePtr->BufferSize = 0;
-			AllocNodePtr->NextNodeOffset = 0;
-		} else {
-			PrevNodePtr->NextNodeOffset = AllocNodeOffset;
-		}
-	}
-	return AGESA_SUCCESS;
-}
-
-AGESA_STATUS BiosLocateBuffer (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	UINT32				AllocNodeOffset;
-	UINT8				*BiosHeapBaseAddr;
-	BIOS_BUFFER_NODE	*AllocNodePtr;
-	BIOS_HEAP_MANAGER	*BiosHeapBasePtr;
-	AGESA_BUFFER_PARAMS	*AllocParams;
-
-	AllocParams = (AGESA_BUFFER_PARAMS *) ConfigPtr;
-
-	BiosHeapBaseAddr = (UINT8 *) GetHeapBase(&(AllocParams->StdHeader));
-	BiosHeapBasePtr = (BIOS_HEAP_MANAGER *) BiosHeapBaseAddr;
-
-	AllocNodeOffset = BiosHeapBasePtr->StartOfAllocatedNodes;
-	AllocNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + AllocNodeOffset);
-
-	while (AllocParams->BufferHandle != AllocNodePtr->BufferHandle) {
-		if (AllocNodePtr->NextNodeOffset == 0) {
-			AllocParams->BufferPointer = NULL;
-			AllocParams->BufferLength = 0;
-			return AGESA_BOUNDS_CHK;
-		} else {
-			AllocNodeOffset = AllocNodePtr->NextNodeOffset;
-			AllocNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + AllocNodeOffset);
-		}
-	}
-
-	AllocParams->BufferPointer = (UINT8 *) ((UINT8 *) AllocNodePtr + sizeof (BIOS_BUFFER_NODE));
-	AllocParams->BufferLength = AllocNodePtr->BufferSize;
-
-	return AGESA_SUCCESS;
-
-}
-
-AGESA_STATUS BiosRunFuncOnAp (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	AGESA_STATUS		Status;
-
-	Status = agesawrapper_amdlaterunaptask (Data, ConfigPtr);
-	return Status;
-}
-
-AGESA_STATUS BiosReset (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	AGESA_STATUS		Status;
-	UINT8				 Value;
-	UINTN				 ResetType;
-	AMD_CONFIG_PARAMS	 *StdHeader;
-
-	ResetType = Data;
-	StdHeader = ConfigPtr;
-
-	//
-	// Perform the RESET based upon the ResetType. In case of
-	// WARM_RESET_WHENVER and COLD_RESET_WHENEVER, the request will go to
-	// AmdResetManager. During the critical condition, where reset is required
-	// immediately, the reset will be invoked directly by writing 0x04 to port
-	// 0xCF9 (Reset Port).
-	//
-	switch (ResetType) {
-	case WARM_RESET_WHENEVER:
-	case COLD_RESET_WHENEVER:
-		break;
-
-	case WARM_RESET_IMMEDIATELY:
-	case COLD_RESET_IMMEDIATELY:
-		Value = 0x06;
-		LibAmdIoWrite (AccessWidth8, 0xCf9, &Value, StdHeader);
-		break;
-
-	default:
-		break;
-	}
-
-	Status = 0;
-	return Status;
-}
 
 AGESA_STATUS BiosReadSpd (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
 {
@@ -383,8 +36,3 @@ AGESA_STATUS BiosReadSpd (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
 
 	return Status;
 }
-
-AGESA_STATUS BiosDefaultRet (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	return AGESA_UNSUPPORTED;
-}
diff --git a/src/northbridge/amd/agesa/family12/fam12_callouts.h b/src/northbridge/amd/agesa/family12/fam12_callouts.h
index 0572342..1b9dd36 100644
--- a/src/northbridge/amd/agesa/family12/fam12_callouts.h
+++ b/src/northbridge/amd/agesa/family12/fam12_callouts.h
@@ -27,44 +27,15 @@
 #define BIOS_HEAP_SIZE				0x20000
 #define BSP_STACK_BASE_ADDR			0x30000
 
-typedef struct _BIOS_HEAP_MANAGER {
-	UINT32 StartOfAllocatedNodes;
-	UINT32 StartOfFreedNodes;
-} BIOS_HEAP_MANAGER;
-
-typedef struct _BIOS_BUFFER_NODE {
-	UINT32 BufferHandle;
-	UINT32 BufferSize;
-	UINT32 NextNodeOffset;
-} BIOS_BUFFER_NODE;
-
-UINT32 GetHeapBase(AMD_CONFIG_PARAMS *StdHeader);
-void EmptyHeap(void);
-
 /* REQUIRED CALLOUTS
  * AGESA ADVANCED CALLOUTS - CPU
  */
-AGESA_STATUS BiosAllocateBuffer (UINT32 Func, UINT32 Data, VOID *ConfigPtr);
-AGESA_STATUS BiosDeallocateBuffer (UINT32 Func, UINT32 Data, VOID *ConfigPtr);
-AGESA_STATUS BiosLocateBuffer (UINT32 Func, UINT32 Data, VOID *ConfigPtr);
-AGESA_STATUS BiosRunFuncOnAp (UINT32 Func, UINT32 Data, VOID *ConfigPtr);
-AGESA_STATUS BiosReset (UINT32 Func, UINT32 Data, VOID *ConfigPtr);
-AGESA_STATUS BiosGetIdsInitData (UINT32 Func, UINT32 Data, VOID *ConfigPtr);
 
 /* AGESA ADVANCED CALLOUTS - MEMORY */
 AGESA_STATUS BiosReadSpd (UINT32 Func,UINT32	Data,VOID *ConfigPtr);
 
-/* BIOS DEFAULT RET */
-AGESA_STATUS BiosDefaultRet (UINT32 Func, UINT32 Data, VOID *ConfigPtr);
-
-/*	Call the host environment interface to provide a user hook opportunity. */
-AGESA_STATUS BiosHookBeforeDQSTraining (UINT32 Func, UINT32 Data, VOID *ConfigPtr);
 /*	Call the host environment interface to provide a user hook opportunity. */
 AGESA_STATUS BiosHookBeforeDramInit (UINT32 Func, UINT32 Data, VOID *ConfigPtr);
-/*	Call the host environment interface to provide a user hook opportunity. */
-AGESA_STATUS BiosHookBeforeDramInitRecovery (UINT32 Func, UINT32 Data, VOID *ConfigPtr);
-/*	Call the host environment interface to provide a user hook opportunity. */
-AGESA_STATUS BiosHookBeforeExitSelfRefresh (UINT32 Func, UINT32 Data, VOID *ConfigPtr);
 /* PCIE slot reset control */
 AGESA_STATUS BiosGnbPcieSlotReset (UINT32 Func, UINT32 Data, VOID *ConfigPtr);
 
diff --git a/src/northbridge/amd/agesa/family14/fam14_callouts.c b/src/northbridge/amd/agesa/family14/fam14_callouts.c
index 301f145..05d378d 100644
--- a/src/northbridge/amd/agesa/family14/fam14_callouts.c
+++ b/src/northbridge/amd/agesa/family14/fam14_callouts.c
@@ -23,358 +23,8 @@
 #include "heapManager.h"
 #include "SB800.h"
 #include "dimmSpd.h"
-#include <cbmem.h>
-#include <arch/acpi.h>
-#include <string.h>
 
-UINT32 GetHeapBase(AMD_CONFIG_PARAMS *StdHeader)
-{
-	UINT32 heap = BIOS_HEAP_START_ADDRESS;
-
-#if CONFIG_HAVE_ACPI_RESUME
-	/* Both romstage and ramstage has this S3 detect. */
-	if (acpi_get_sleep_type() == 3)
-		heap = (UINT32) cbmem_find(CBMEM_ID_RESUME_SCRATCH) +
-		 (CONFIG_HIGH_SCRATCH_MEMORY_SIZE - BIOS_HEAP_SIZE);
-		  /* himem_heap_base + high_stack_size */
-#endif
-
-	return heap;
-}
-
-void EmptyHeap(void)
-{
-	void *BiosManagerPtr = (void *) GetHeapBase(NULL);
-	memset(BiosManagerPtr, 0, BIOS_HEAP_SIZE);
-}
-
-AGESA_STATUS BiosAllocateBuffer (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	UINT32              AvailableHeapSize;
-	UINT8               *BiosHeapBaseAddr;
-	UINT32              CurrNodeOffset;
-	UINT32              PrevNodeOffset;
-	UINT32              FreedNodeOffset;
-	UINT32              BestFitNodeOffset;
-	UINT32              BestFitPrevNodeOffset;
-	UINT32              NextFreeOffset;
-	BIOS_BUFFER_NODE   *CurrNodePtr;
-	BIOS_BUFFER_NODE   *FreedNodePtr;
-	BIOS_BUFFER_NODE   *BestFitNodePtr;
-	BIOS_BUFFER_NODE   *BestFitPrevNodePtr;
-	BIOS_BUFFER_NODE   *NextFreePtr;
-	BIOS_HEAP_MANAGER  *BiosHeapBasePtr;
-	AGESA_BUFFER_PARAMS *AllocParams;
-
-	AllocParams = ((AGESA_BUFFER_PARAMS *) ConfigPtr);
-	AllocParams->BufferPointer = NULL;
-
-	AvailableHeapSize = BIOS_HEAP_SIZE - sizeof (BIOS_HEAP_MANAGER);
-	BiosHeapBaseAddr = (UINT8 *) GetHeapBase(&(AllocParams->StdHeader));
-	BiosHeapBasePtr = (BIOS_HEAP_MANAGER *) BiosHeapBaseAddr;
-
-	printk(BIOS_SPEW, "%s BiosHeapBaseAddr: %x\n", __func__, (u32) BiosHeapBaseAddr);
-
-	if (BiosHeapBasePtr->StartOfAllocatedNodes == 0) {
-		/* First allocation */
-		CurrNodeOffset = sizeof (BIOS_HEAP_MANAGER);
-		CurrNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + CurrNodeOffset);
-		CurrNodePtr->BufferHandle = AllocParams->BufferHandle;
-		CurrNodePtr->BufferSize = AllocParams->BufferLength;
-		CurrNodePtr->NextNodeOffset = 0;
-		AllocParams->BufferPointer = (UINT8 *) CurrNodePtr + sizeof (BIOS_BUFFER_NODE);
-
-		/* Update the remaining free space */
-		FreedNodeOffset = CurrNodeOffset + CurrNodePtr->BufferSize + sizeof (BIOS_BUFFER_NODE);
-		FreedNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + FreedNodeOffset);
-		FreedNodePtr->BufferSize = AvailableHeapSize - sizeof (BIOS_BUFFER_NODE) - CurrNodePtr->BufferSize;
-		FreedNodePtr->NextNodeOffset = 0;
-
-		/* Update the offsets for Allocated and Freed nodes */
-		BiosHeapBasePtr->StartOfAllocatedNodes = CurrNodeOffset;
-		BiosHeapBasePtr->StartOfFreedNodes = FreedNodeOffset;
-	} else {
-		/* Find out whether BufferHandle has been allocated on the heap. */
-		/* If it has, return AGESA_BOUNDS_CHK */
-		CurrNodeOffset = BiosHeapBasePtr->StartOfAllocatedNodes;
-		CurrNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + CurrNodeOffset);
-
-		while (CurrNodeOffset != 0) {
-			CurrNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + CurrNodeOffset);
-			if (CurrNodePtr->BufferHandle == AllocParams->BufferHandle) {
-				return AGESA_BOUNDS_CHK;
-			}
-			CurrNodeOffset = CurrNodePtr->NextNodeOffset;
-			/* If BufferHandle has not been allocated on the heap, CurrNodePtr here points
-			   to the end of the allocated nodes list.
-			*/
-
-		}
-		/* Find the node that best fits the requested buffer size */
-		FreedNodeOffset = BiosHeapBasePtr->StartOfFreedNodes;
-		PrevNodeOffset = FreedNodeOffset;
-		BestFitNodeOffset = 0;
-		BestFitPrevNodeOffset = 0;
-		while (FreedNodeOffset != 0) {
-			FreedNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + FreedNodeOffset);
-			if (FreedNodePtr->BufferSize >= (AllocParams->BufferLength + sizeof (BIOS_BUFFER_NODE))) {
-				if (BestFitNodeOffset == 0) {
-					/* First node that fits the requested buffer size */
-					BestFitNodeOffset = FreedNodeOffset;
-					BestFitPrevNodeOffset = PrevNodeOffset;
-				} else {
-					/* Find out whether current node is a better fit than the previous nodes */
-					BestFitNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + BestFitNodeOffset);
-					if (BestFitNodePtr->BufferSize > FreedNodePtr->BufferSize) {
-						BestFitNodeOffset = FreedNodeOffset;
-						BestFitPrevNodeOffset = PrevNodeOffset;
-					}
-				}
-			}
-			PrevNodeOffset = FreedNodeOffset;
-			FreedNodeOffset = FreedNodePtr->NextNodeOffset;
-		} /* end of while loop */
-
-
-		if (BestFitNodeOffset == 0) {
-			/* If we could not find a node that fits the requested buffer */
-			/* size, return AGESA_BOUNDS_CHK */
-			return AGESA_BOUNDS_CHK;
-		} else {
-			BestFitNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + BestFitNodeOffset);
-			BestFitPrevNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + BestFitPrevNodeOffset);
-
-			/* If BestFitNode is larger than the requested buffer, fragment the node further */
-			if (BestFitNodePtr->BufferSize > (AllocParams->BufferLength + sizeof (BIOS_BUFFER_NODE))) {
-				NextFreeOffset = BestFitNodeOffset + AllocParams->BufferLength + sizeof (BIOS_BUFFER_NODE);
-
-				NextFreePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + NextFreeOffset);
-				NextFreePtr->BufferSize = BestFitNodePtr->BufferSize - (AllocParams->BufferLength + sizeof (BIOS_BUFFER_NODE));
-				NextFreePtr->NextNodeOffset = BestFitNodePtr->NextNodeOffset;
-			} else {
-				/* Otherwise, next free node is NextNodeOffset of BestFitNode */
-				NextFreeOffset = BestFitNodePtr->NextNodeOffset;
-			}
-
-			/* If BestFitNode is the first buffer in the list, then update
-			   StartOfFreedNodes to reflect the new free node
-			*/
-			if (BestFitNodeOffset == BiosHeapBasePtr->StartOfFreedNodes) {
-				BiosHeapBasePtr->StartOfFreedNodes = NextFreeOffset;
-			} else {
-				BestFitPrevNodePtr->NextNodeOffset = NextFreeOffset;
-			}
-
-			/* Add BestFitNode to the list of Allocated nodes */
-			CurrNodePtr->NextNodeOffset = BestFitNodeOffset;
-			BestFitNodePtr->BufferSize = AllocParams->BufferLength;
-			BestFitNodePtr->BufferHandle = AllocParams->BufferHandle;
-			BestFitNodePtr->NextNodeOffset = 0;
-
-			/* Remove BestFitNode from list of Freed nodes */
-			AllocParams->BufferPointer = (UINT8 *) BestFitNodePtr + sizeof (BIOS_BUFFER_NODE);
-		}
-	}
-
-	return AGESA_SUCCESS;
-}
-
-AGESA_STATUS BiosDeallocateBuffer (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-
-	UINT8               *BiosHeapBaseAddr;
-	UINT32              AllocNodeOffset;
-	UINT32              PrevNodeOffset;
-	UINT32              NextNodeOffset;
-	UINT32              FreedNodeOffset;
-	UINT32              EndNodeOffset;
-	BIOS_BUFFER_NODE   *AllocNodePtr;
-	BIOS_BUFFER_NODE   *PrevNodePtr;
-	BIOS_BUFFER_NODE   *FreedNodePtr;
-	BIOS_BUFFER_NODE   *NextNodePtr;
-	BIOS_HEAP_MANAGER  *BiosHeapBasePtr;
-	AGESA_BUFFER_PARAMS *AllocParams;
-
-	AllocParams = (AGESA_BUFFER_PARAMS *) ConfigPtr;
-
-	BiosHeapBaseAddr = (UINT8 *) GetHeapBase(&(AllocParams->StdHeader));
-	BiosHeapBasePtr = (BIOS_HEAP_MANAGER *) BiosHeapBaseAddr;
-
-	/* Find target node to deallocate in list of allocated nodes.
-	   Return AGESA_BOUNDS_CHK if the BufferHandle is not found
-	*/
-	AllocNodeOffset = BiosHeapBasePtr->StartOfAllocatedNodes;
-	AllocNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + AllocNodeOffset);
-	PrevNodeOffset = AllocNodeOffset;
-
-	while (AllocNodePtr->BufferHandle !=  AllocParams->BufferHandle) {
-		if (AllocNodePtr->NextNodeOffset == 0) {
-			return AGESA_BOUNDS_CHK;
-		}
-		PrevNodeOffset = AllocNodeOffset;
-		AllocNodeOffset = AllocNodePtr->NextNodeOffset;
-		AllocNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + AllocNodeOffset);
-	}
-
-	/* Remove target node from list of allocated nodes */
-	PrevNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + PrevNodeOffset);
-	PrevNodePtr->NextNodeOffset = AllocNodePtr->NextNodeOffset;
 
-	/* Zero out the buffer, and clear the BufferHandle */
-	LibAmdMemFill ((UINT8 *)AllocNodePtr + sizeof (BIOS_BUFFER_NODE), 0, AllocNodePtr->BufferSize, &(AllocParams->StdHeader));
-	AllocNodePtr->BufferHandle = 0;
-	AllocNodePtr->BufferSize += sizeof (BIOS_BUFFER_NODE);
-
-	/* Add deallocated node in order to the list of freed nodes */
-	FreedNodeOffset = BiosHeapBasePtr->StartOfFreedNodes;
-	FreedNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + FreedNodeOffset);
-
-	EndNodeOffset = AllocNodeOffset + AllocNodePtr->BufferSize;
-
-	if (AllocNodeOffset < FreedNodeOffset) {
-		/* Add to the start of the freed list */
-		if (EndNodeOffset == FreedNodeOffset) {
-			/* If the freed node is adjacent to the first node in the list, concatenate both nodes */
-			AllocNodePtr->BufferSize += FreedNodePtr->BufferSize;
-			AllocNodePtr->NextNodeOffset = FreedNodePtr->NextNodeOffset;
-
-			/* Clear the BufferSize and NextNodeOffset of the previous first node */
-			FreedNodePtr->BufferSize = 0;
-			FreedNodePtr->NextNodeOffset = 0;
-
-		} else {
-			/* Otherwise, add freed node to the start of the list
-			   Update NextNodeOffset and BufferSize to include the
-			   size of BIOS_BUFFER_NODE
-			*/
-			AllocNodePtr->NextNodeOffset = FreedNodeOffset;
-		}
-		/* Update StartOfFreedNodes to the new first node */
-		BiosHeapBasePtr->StartOfFreedNodes = AllocNodeOffset;
-	} else {
-		/* Traverse list of freed nodes to find where the deallocated node
-		   should be place
-		*/
-		NextNodeOffset = FreedNodeOffset;
-		NextNodePtr = FreedNodePtr;
-		while (AllocNodeOffset > NextNodeOffset) {
-			PrevNodeOffset = NextNodeOffset;
-			if (NextNodePtr->NextNodeOffset == 0) {
-				break;
-			}
-			NextNodeOffset = NextNodePtr->NextNodeOffset;
-			NextNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + NextNodeOffset);
-		}
-
-		/* If deallocated node is adjacent to the next node,
-		   concatenate both nodes
-		*/
-		if (NextNodeOffset == EndNodeOffset) {
-			NextNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + NextNodeOffset);
-			AllocNodePtr->BufferSize += NextNodePtr->BufferSize;
-			AllocNodePtr->NextNodeOffset = NextNodePtr->NextNodeOffset;
-
-			NextNodePtr->BufferSize = 0;
-			NextNodePtr->NextNodeOffset = 0;
-		} else {
-			/*AllocNodePtr->NextNodeOffset = FreedNodePtr->NextNodeOffset; */
-			AllocNodePtr->NextNodeOffset = NextNodeOffset;
-		}
-		/* If deallocated node is adjacent to the previous node,
-		   concatenate both nodes
-		*/
-		PrevNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + PrevNodeOffset);
-		EndNodeOffset = PrevNodeOffset + PrevNodePtr->BufferSize;
-		if (AllocNodeOffset == EndNodeOffset) {
-			PrevNodePtr->NextNodeOffset = AllocNodePtr->NextNodeOffset;
-			PrevNodePtr->BufferSize += AllocNodePtr->BufferSize;
-
-			AllocNodePtr->BufferSize = 0;
-			AllocNodePtr->NextNodeOffset = 0;
-		} else {
-			PrevNodePtr->NextNodeOffset = AllocNodeOffset;
-		}
-	}
-	return AGESA_SUCCESS;
-}
-
-AGESA_STATUS BiosLocateBuffer (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	UINT32				AllocNodeOffset;
-	UINT8				*BiosHeapBaseAddr;
-	BIOS_BUFFER_NODE	*AllocNodePtr;
-	BIOS_HEAP_MANAGER	*BiosHeapBasePtr;
-	AGESA_BUFFER_PARAMS	*AllocParams;
-
-	AllocParams = (AGESA_BUFFER_PARAMS *) ConfigPtr;
-
-	BiosHeapBaseAddr = (UINT8 *) GetHeapBase(&(AllocParams->StdHeader));
-	BiosHeapBasePtr = (BIOS_HEAP_MANAGER *) BiosHeapBaseAddr;
-
-	AllocNodeOffset = BiosHeapBasePtr->StartOfAllocatedNodes;
-	AllocNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + AllocNodeOffset);
-
-	while (AllocParams->BufferHandle != AllocNodePtr->BufferHandle) {
-		if (AllocNodePtr->NextNodeOffset == 0) {
-			AllocParams->BufferPointer = NULL;
-			AllocParams->BufferLength = 0;
-			return AGESA_BOUNDS_CHK;
-		} else {
-			AllocNodeOffset = AllocNodePtr->NextNodeOffset;
-			AllocNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + AllocNodeOffset);
-		}
-	}
-
-	AllocParams->BufferPointer = (UINT8 *) ((UINT8 *) AllocNodePtr + sizeof (BIOS_BUFFER_NODE));
-	AllocParams->BufferLength = AllocNodePtr->BufferSize;
-
-	return AGESA_SUCCESS;
-
-}
-
-AGESA_STATUS BiosRunFuncOnAp (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	AGESA_STATUS		Status;
-
-	Status = agesawrapper_amdlaterunaptask (Func, Data, ConfigPtr);
-	return Status;
-}
-
-AGESA_STATUS BiosReset (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	AGESA_STATUS		Status;
-	UINT8				 Value;
-	UINTN				 ResetType;
-	AMD_CONFIG_PARAMS	 *StdHeader;
-
-	ResetType = Data;
-	StdHeader = ConfigPtr;
-
-	//
-	// Perform the RESET based upon the ResetType. In case of
-	// WARM_RESET_WHENVER and COLD_RESET_WHENEVER, the request will go to
-	// AmdResetManager. During the critical condition, where reset is required
-	// immediately, the reset will be invoked directly by writing 0x04 to port
-	// 0xCF9 (Reset Port).
-	//
-	switch (ResetType) {
-	case WARM_RESET_WHENEVER:
-	case COLD_RESET_WHENEVER:
-		break;
-
-	case WARM_RESET_IMMEDIATELY:
-	case COLD_RESET_IMMEDIATELY:
-		Value = 0x06;
-		LibAmdIoWrite (AccessWidth8, 0xCf9, &Value, StdHeader);
-		break;
-
-	default:
-		break;
-	}
-
-	Status = 0;
-	return Status;
-}
 
 AGESA_STATUS BiosReadSpd (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
 {
@@ -388,7 +38,3 @@ AGESA_STATUS BiosReadSpd (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
 	return Status;
 }
 
-AGESA_STATUS BiosDefaultRet (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	return AGESA_UNSUPPORTED;
-}
diff --git a/src/northbridge/amd/agesa/family14/fam14_callouts.h b/src/northbridge/amd/agesa/family14/fam14_callouts.h
index 1f23cef..2465797 100755
--- a/src/northbridge/amd/agesa/family14/fam14_callouts.h
+++ b/src/northbridge/amd/agesa/family14/fam14_callouts.h
@@ -28,45 +28,16 @@
 #define BIOS_HEAP_SIZE				0x20000
 #define BSP_STACK_BASE_ADDR			0x30000
 
-typedef struct _BIOS_HEAP_MANAGER {
-	UINT32 StartOfAllocatedNodes;
-	UINT32 StartOfFreedNodes;
-} BIOS_HEAP_MANAGER;
-
-typedef struct _BIOS_BUFFER_NODE {
-	UINT32 BufferHandle;
-	UINT32 BufferSize;
-	UINT32 NextNodeOffset;
-} BIOS_BUFFER_NODE;
-
-UINT32 GetHeapBase(AMD_CONFIG_PARAMS *StdHeader);
-void EmptyHeap(void);
-
 /* REQUIRED CALLOUTS
  * AGESA ADVANCED CALLOUTS - CPU
  */
-AGESA_STATUS BiosAllocateBuffer (UINT32 Func, UINT32 Data, VOID *ConfigPtr);
-AGESA_STATUS BiosDeallocateBuffer (UINT32 Func, UINT32 Data, VOID *ConfigPtr);
-AGESA_STATUS BiosLocateBuffer (UINT32 Func, UINT32 Data, VOID *ConfigPtr);
-AGESA_STATUS BiosRunFuncOnAp (UINT32 Func, UINT32 Data, VOID *ConfigPtr);
-AGESA_STATUS BiosReset (UINT32 Func, UINT32 Data, VOID *ConfigPtr);
-AGESA_STATUS BiosGetIdsInitData (UINT32 Func, UINT32 Data, VOID *ConfigPtr);
 
 /* AGESA ADVANCED CALLOUTS - MEMORY */
 AGESA_STATUS BiosReadSpd (UINT32 Func,UINT32	Data,VOID *ConfigPtr);
 AGESA_STATUS BiosReadSpd_from_cbfs(UINT32 Func, UINT32 Data, VOID *ConfigPtr);
 
-/* BIOS DEFAULT RET */
-AGESA_STATUS BiosDefaultRet (UINT32 Func, UINT32 Data, VOID *ConfigPtr);
-
-/*	Call the host environment interface to provide a user hook opportunity. */
-AGESA_STATUS BiosHookBeforeDQSTraining (UINT32 Func, UINT32 Data, VOID *ConfigPtr);
 /*	Call the host environment interface to provide a user hook opportunity. */
 AGESA_STATUS BiosHookBeforeDramInit (UINT32 Func, UINT32 Data, VOID *ConfigPtr);
-/*	Call the host environment interface to provide a user hook opportunity. */
-AGESA_STATUS BiosHookBeforeDramInitRecovery (UINT32 Func, UINT32 Data, VOID *ConfigPtr);
-/*	Call the host environment interface to provide a user hook opportunity. */
-AGESA_STATUS BiosHookBeforeExitSelfRefresh (UINT32 Func, UINT32 Data, VOID *ConfigPtr);
 /* PCIE slot reset control */
 AGESA_STATUS BiosGnbPcieSlotReset (UINT32 Func, UINT32 Data, VOID *ConfigPtr);
 
diff --git a/src/northbridge/amd/agesa/family15/fam15_callouts.c b/src/northbridge/amd/agesa/family15/fam15_callouts.c
index fe7c3ed..32707f4 100644
--- a/src/northbridge/amd/agesa/family15/fam15_callouts.c
+++ b/src/northbridge/amd/agesa/family15/fam15_callouts.c
@@ -25,358 +25,6 @@
 #include "heapManager.h"
 #include <northbridge/amd/agesa/family15/dimmSpd.h>
 #include <arch/io.h>
-#include <arch/acpi.h>
-#include <cbmem.h>
-#include <string.h>
 
-UINT32 GetHeapBase(AMD_CONFIG_PARAMS *StdHeader)
-{
-	UINT32 heap = BIOS_HEAP_START_ADDRESS;
 
-#if CONFIG_HAVE_ACPI_RESUME
-	/* Both romstage and ramstage has this S3 detect. */
-	if (acpi_get_sleep_type() == 3)
-		heap = (UINT32) cbmem_find(CBMEM_ID_RESUME_SCRATCH) +
-		 (CONFIG_HIGH_SCRATCH_MEMORY_SIZE - BIOS_HEAP_SIZE);
-		  /* himem_heap_base + high_stack_size */
-#endif
 
-	return heap;
-}
-
-void EmptyHeap(void)
-{
-	void *BiosManagerPtr = (void *) GetHeapBase(NULL);
-	memset(BiosManagerPtr, 0, BIOS_HEAP_SIZE);
-}
-
-AGESA_STATUS BiosAllocateBuffer (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	UINT32              AvailableHeapSize;
-	UINT8               *BiosHeapBaseAddr;
-	UINT32              CurrNodeOffset;
-	UINT32              PrevNodeOffset;
-	UINT32              FreedNodeOffset;
-	UINT32              BestFitNodeOffset;
-	UINT32              BestFitPrevNodeOffset;
-	UINT32              NextFreeOffset;
-	BIOS_BUFFER_NODE   *CurrNodePtr;
-	BIOS_BUFFER_NODE   *FreedNodePtr;
-	BIOS_BUFFER_NODE   *BestFitNodePtr;
-	BIOS_BUFFER_NODE   *BestFitPrevNodePtr;
-	BIOS_BUFFER_NODE   *NextFreePtr;
-	BIOS_HEAP_MANAGER  *BiosHeapBasePtr;
-	AGESA_BUFFER_PARAMS *AllocParams;
-
-	AllocParams = ((AGESA_BUFFER_PARAMS *) ConfigPtr);
-	AllocParams->BufferPointer = NULL;
-
-	AvailableHeapSize = BIOS_HEAP_SIZE - sizeof (BIOS_HEAP_MANAGER);
-	BiosHeapBaseAddr = (UINT8 *) GetHeapBase(&(AllocParams->StdHeader));
-	BiosHeapBasePtr = (BIOS_HEAP_MANAGER *) BiosHeapBaseAddr;
-
-	if (BiosHeapBasePtr->StartOfAllocatedNodes == 0) {
-		/* First allocation */
-		CurrNodeOffset = sizeof (BIOS_HEAP_MANAGER);
-		CurrNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + CurrNodeOffset);
-		CurrNodePtr->BufferHandle = AllocParams->BufferHandle;
-		CurrNodePtr->BufferSize = AllocParams->BufferLength;
-		CurrNodePtr->NextNodeOffset = 0;
-		AllocParams->BufferPointer = (UINT8 *) CurrNodePtr + sizeof (BIOS_BUFFER_NODE);
-
-		/* Update the remaining free space */
-		FreedNodeOffset = CurrNodeOffset + CurrNodePtr->BufferSize + sizeof (BIOS_BUFFER_NODE);
-		FreedNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + FreedNodeOffset);
-		FreedNodePtr->BufferSize = AvailableHeapSize - sizeof (BIOS_BUFFER_NODE) - CurrNodePtr->BufferSize;
-		FreedNodePtr->NextNodeOffset = 0;
-
-		/* Update the offsets for Allocated and Freed nodes */
-		BiosHeapBasePtr->StartOfAllocatedNodes = CurrNodeOffset;
-		BiosHeapBasePtr->StartOfFreedNodes = FreedNodeOffset;
-	} else {
-		/* Find out whether BufferHandle has been allocated on the heap. */
-		/* If it has, return AGESA_BOUNDS_CHK */
-		CurrNodeOffset = BiosHeapBasePtr->StartOfAllocatedNodes;
-		CurrNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + CurrNodeOffset);
-
-		while (CurrNodeOffset != 0) {
-			CurrNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + CurrNodeOffset);
-			if (CurrNodePtr->BufferHandle == AllocParams->BufferHandle) {
-				return AGESA_BOUNDS_CHK;
-			}
-			CurrNodeOffset = CurrNodePtr->NextNodeOffset;
-			/* If BufferHandle has not been allocated on the heap, CurrNodePtr here points
-			   to the end of the allocated nodes list.
-			 */
-
-		}
-		/* Find the node that best fits the requested buffer size */
-		FreedNodeOffset = BiosHeapBasePtr->StartOfFreedNodes;
-		PrevNodeOffset = FreedNodeOffset;
-		BestFitNodeOffset = 0;
-		BestFitPrevNodeOffset = 0;
-		while (FreedNodeOffset != 0) {
-			FreedNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + FreedNodeOffset);
-			if (FreedNodePtr->BufferSize >= (AllocParams->BufferLength + sizeof (BIOS_BUFFER_NODE))) {
-				if (BestFitNodeOffset == 0) {
-					/* First node that fits the requested buffer size */
-					BestFitNodeOffset = FreedNodeOffset;
-					BestFitPrevNodeOffset = PrevNodeOffset;
-				} else {
-					/* Find out whether current node is a better fit than the previous nodes */
-					BestFitNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + BestFitNodeOffset);
-					if (BestFitNodePtr->BufferSize > FreedNodePtr->BufferSize) {
-						BestFitNodeOffset = FreedNodeOffset;
-						BestFitPrevNodeOffset = PrevNodeOffset;
-					}
-				}
-			}
-			PrevNodeOffset = FreedNodeOffset;
-			FreedNodeOffset = FreedNodePtr->NextNodeOffset;
-		} /* end of while loop */
-
-
-		if (BestFitNodeOffset == 0) {
-			/* If we could not find a node that fits the requested buffer */
-			/* size, return AGESA_BOUNDS_CHK */
-			return AGESA_BOUNDS_CHK;
-		} else {
-			BestFitNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + BestFitNodeOffset);
-			BestFitPrevNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + BestFitPrevNodeOffset);
-
-			/* If BestFitNode is larger than the requested buffer, fragment the node further */
-			if (BestFitNodePtr->BufferSize > (AllocParams->BufferLength + sizeof (BIOS_BUFFER_NODE))) {
-				NextFreeOffset = BestFitNodeOffset + AllocParams->BufferLength + sizeof (BIOS_BUFFER_NODE);
-
-				NextFreePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + NextFreeOffset);
-				NextFreePtr->BufferSize = BestFitNodePtr->BufferSize - (AllocParams->BufferLength + sizeof (BIOS_BUFFER_NODE));
-				NextFreePtr->NextNodeOffset = BestFitNodePtr->NextNodeOffset;
-			} else {
-				/* Otherwise, next free node is NextNodeOffset of BestFitNode */
-				NextFreeOffset = BestFitNodePtr->NextNodeOffset;
-			}
-
-			/* If BestFitNode is the first buffer in the list, then update
-			   StartOfFreedNodes to reflect the new free node
-			 */
-			if (BestFitNodeOffset == BiosHeapBasePtr->StartOfFreedNodes) {
-				BiosHeapBasePtr->StartOfFreedNodes = NextFreeOffset;
-			} else {
-				BestFitPrevNodePtr->NextNodeOffset = NextFreeOffset;
-			}
-
-			/* Add BestFitNode to the list of Allocated nodes */
-			CurrNodePtr->NextNodeOffset = BestFitNodeOffset;
-			BestFitNodePtr->BufferSize = AllocParams->BufferLength;
-			BestFitNodePtr->BufferHandle = AllocParams->BufferHandle;
-			BestFitNodePtr->NextNodeOffset = 0;
-
-			/* Remove BestFitNode from list of Freed nodes */
-			AllocParams->BufferPointer = (UINT8 *) BestFitNodePtr + sizeof (BIOS_BUFFER_NODE);
-		}
-	}
-
-	return AGESA_SUCCESS;
-}
-
-AGESA_STATUS BiosDeallocateBuffer (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-
-	UINT8               *BiosHeapBaseAddr;
-	UINT32              AllocNodeOffset;
-	UINT32              PrevNodeOffset;
-	UINT32              NextNodeOffset;
-	UINT32              FreedNodeOffset;
-	UINT32              EndNodeOffset;
-	BIOS_BUFFER_NODE   *AllocNodePtr;
-	BIOS_BUFFER_NODE   *PrevNodePtr;
-	BIOS_BUFFER_NODE   *FreedNodePtr;
-	BIOS_BUFFER_NODE   *NextNodePtr;
-	BIOS_HEAP_MANAGER  *BiosHeapBasePtr;
-	AGESA_BUFFER_PARAMS *AllocParams;
-
-	AllocParams = (AGESA_BUFFER_PARAMS *) ConfigPtr;
-
-	BiosHeapBaseAddr = (UINT8 *) GetHeapBase(&(AllocParams->StdHeader));
-	BiosHeapBasePtr = (BIOS_HEAP_MANAGER *) BiosHeapBaseAddr;
-
-	/* Find target node to deallocate in list of allocated nodes.
-	   Return AGESA_BOUNDS_CHK if the BufferHandle is not found
-	 */
-	AllocNodeOffset = BiosHeapBasePtr->StartOfAllocatedNodes;
-	AllocNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + AllocNodeOffset);
-	PrevNodeOffset = AllocNodeOffset;
-
-	while (AllocNodePtr->BufferHandle !=  AllocParams->BufferHandle) {
-		if (AllocNodePtr->NextNodeOffset == 0) {
-			return AGESA_BOUNDS_CHK;
-		}
-		PrevNodeOffset = AllocNodeOffset;
-		AllocNodeOffset = AllocNodePtr->NextNodeOffset;
-		AllocNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + AllocNodeOffset);
-	}
-
-	/* Remove target node from list of allocated nodes */
-	PrevNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + PrevNodeOffset);
-	PrevNodePtr->NextNodeOffset = AllocNodePtr->NextNodeOffset;
-
-	/* Zero out the buffer, and clear the BufferHandle */
-	LibAmdMemFill ((UINT8 *)AllocNodePtr + sizeof (BIOS_BUFFER_NODE), 0, AllocNodePtr->BufferSize, &(AllocParams->StdHeader));
-	AllocNodePtr->BufferHandle = 0;
-	AllocNodePtr->BufferSize += sizeof (BIOS_BUFFER_NODE);
-
-	/* Add deallocated node in order to the list of freed nodes */
-	FreedNodeOffset = BiosHeapBasePtr->StartOfFreedNodes;
-	FreedNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + FreedNodeOffset);
-
-	EndNodeOffset = AllocNodeOffset + AllocNodePtr->BufferSize;
-
-	if (AllocNodeOffset < FreedNodeOffset) {
-		/* Add to the start of the freed list */
-		if (EndNodeOffset == FreedNodeOffset) {
-			/* If the freed node is adjacent to the first node in the list, concatenate both nodes */
-			AllocNodePtr->BufferSize += FreedNodePtr->BufferSize;
-			AllocNodePtr->NextNodeOffset = FreedNodePtr->NextNodeOffset;
-
-			/* Clear the BufferSize and NextNodeOffset of the previous first node */
-			FreedNodePtr->BufferSize = 0;
-			FreedNodePtr->NextNodeOffset = 0;
-
-		} else {
-			/* Otherwise, add freed node to the start of the list
-			   Update NextNodeOffset and BufferSize to include the
-			   size of BIOS_BUFFER_NODE
-			 */
-			AllocNodePtr->NextNodeOffset = FreedNodeOffset;
-		}
-		/* Update StartOfFreedNodes to the new first node */
-		BiosHeapBasePtr->StartOfFreedNodes = AllocNodeOffset;
-	} else {
-		/* Traverse list of freed nodes to find where the deallocated node
-		   should be place
-		 */
-		NextNodeOffset = FreedNodeOffset;
-		NextNodePtr = FreedNodePtr;
-		while (AllocNodeOffset > NextNodeOffset) {
-			PrevNodeOffset = NextNodeOffset;
-			if (NextNodePtr->NextNodeOffset == 0) {
-				break;
-			}
-			NextNodeOffset = NextNodePtr->NextNodeOffset;
-			NextNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + NextNodeOffset);
-		}
-
-		/* If deallocated node is adjacent to the next node,
-		   concatenate both nodes
-		 */
-		if (NextNodeOffset == EndNodeOffset) {
-			NextNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + NextNodeOffset);
-			AllocNodePtr->BufferSize += NextNodePtr->BufferSize;
-			AllocNodePtr->NextNodeOffset = NextNodePtr->NextNodeOffset;
-
-			NextNodePtr->BufferSize = 0;
-			NextNodePtr->NextNodeOffset = 0;
-		} else {
-			/*AllocNodePtr->NextNodeOffset = FreedNodePtr->NextNodeOffset; */
-			AllocNodePtr->NextNodeOffset = NextNodeOffset;
-		}
-		/* If deallocated node is adjacent to the previous node,
-		   concatenate both nodes
-		 */
-		PrevNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + PrevNodeOffset);
-		EndNodeOffset = PrevNodeOffset + PrevNodePtr->BufferSize;
-		if (AllocNodeOffset == EndNodeOffset) {
-			PrevNodePtr->NextNodeOffset = AllocNodePtr->NextNodeOffset;
-			PrevNodePtr->BufferSize += AllocNodePtr->BufferSize;
-
-			AllocNodePtr->BufferSize = 0;
-			AllocNodePtr->NextNodeOffset = 0;
-		} else {
-			PrevNodePtr->NextNodeOffset = AllocNodeOffset;
-		}
-	}
-	return AGESA_SUCCESS;
-}
-
-AGESA_STATUS BiosLocateBuffer (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	UINT32              AllocNodeOffset;
-	UINT8               *BiosHeapBaseAddr;
-	BIOS_BUFFER_NODE   *AllocNodePtr;
-	BIOS_HEAP_MANAGER  *BiosHeapBasePtr;
-	AGESA_BUFFER_PARAMS *AllocParams;
-
-	AllocParams = (AGESA_BUFFER_PARAMS *) ConfigPtr;
-
-	BiosHeapBaseAddr = (UINT8 *) GetHeapBase(&(AllocParams->StdHeader));
-	BiosHeapBasePtr = (BIOS_HEAP_MANAGER *) BiosHeapBaseAddr;
-
-	AllocNodeOffset = BiosHeapBasePtr->StartOfAllocatedNodes;
-	AllocNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + AllocNodeOffset);
-
-	while (AllocParams->BufferHandle != AllocNodePtr->BufferHandle) {
-		if (AllocNodePtr->NextNodeOffset == 0) {
-			AllocParams->BufferPointer = NULL;
-			AllocParams->BufferLength = 0;
-			return AGESA_BOUNDS_CHK;
-		} else {
-			AllocNodeOffset = AllocNodePtr->NextNodeOffset;
-			AllocNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + AllocNodeOffset);
-		}
-	}
-
-	AllocParams->BufferPointer = (UINT8 *) ((UINT8 *) AllocNodePtr + sizeof (BIOS_BUFFER_NODE));
-	AllocParams->BufferLength = AllocNodePtr->BufferSize;
-
-	return AGESA_SUCCESS;
-
-}
-
-AGESA_STATUS BiosRunFuncOnAp (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	AGESA_STATUS        Status;
-
-	Status = agesawrapper_amdlaterunaptask (Data, ConfigPtr);
-	return Status;
-}
-
-AGESA_STATUS BiosReset (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	AGESA_STATUS        Status;
-	UINT8                 Value;
-	UINTN               ResetType;
-	AMD_CONFIG_PARAMS   *StdHeader;
-
-	ResetType = Data;
-	StdHeader = ConfigPtr;
-
-	//
-	// Perform the RESET based upon the ResetType. In case of
-	// WARM_RESET_WHENVER and COLD_RESET_WHENEVER, the request will go to
-	// AmdResetManager. During the critical condition, where reset is required
-	// immediately, the reset will be invoked directly by writing 0x04 to port
-	// 0xCF9 (Reset Port).
-	//
-	switch (ResetType) {
-		case WARM_RESET_WHENEVER:
-		case COLD_RESET_WHENEVER:
-			break;
-
-		case WARM_RESET_IMMEDIATELY:
-		case COLD_RESET_IMMEDIATELY:
-			Value = 0x06;
-			LibAmdIoWrite (AccessWidth8, 0xCf9, &Value, StdHeader);
-			break;
-
-		default:
-			break;
-	}
-
-	Status = 0;
-	return Status;
-}
-
-AGESA_STATUS BiosDefaultRet (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	return AGESA_UNSUPPORTED;
-}
diff --git a/src/northbridge/amd/agesa/family15/fam15_callouts.h b/src/northbridge/amd/agesa/family15/fam15_callouts.h
index a43c650..2b29cae 100644
--- a/src/northbridge/amd/agesa/family15/fam15_callouts.h
+++ b/src/northbridge/amd/agesa/family15/fam15_callouts.h
@@ -28,45 +28,17 @@
 #define BIOS_HEAP_SIZE				0x20000
 #define BSP_STACK_BASE_ADDR			0x30000
 
-typedef struct _BIOS_HEAP_MANAGER {
-	UINT32 StartOfAllocatedNodes;
-	UINT32 StartOfFreedNodes;
-} BIOS_HEAP_MANAGER;
-
-typedef struct _BIOS_BUFFER_NODE {
-	UINT32 BufferHandle;
-	UINT32 BufferSize;
-	UINT32 NextNodeOffset;
-} BIOS_BUFFER_NODE;
-
-UINT32 GetHeapBase(AMD_CONFIG_PARAMS *StdHeader);
-void EmptyHeap(void);
 
 /* REQUIRED CALLOUTS
  * AGESA ADVANCED CALLOUTS - CPU
  */
-AGESA_STATUS BiosAllocateBuffer (UINT32 Func, UINT32 Data, VOID *ConfigPtr);
-AGESA_STATUS BiosDeallocateBuffer (UINT32 Func, UINT32 Data, VOID *ConfigPtr);
-AGESA_STATUS BiosLocateBuffer (UINT32 Func, UINT32 Data, VOID *ConfigPtr);
-AGESA_STATUS BiosRunFuncOnAp (UINT32 Func, UINT32 Data, VOID *ConfigPtr);
-AGESA_STATUS BiosReset (UINT32 Func, UINT32 Data, VOID *ConfigPtr);
-AGESA_STATUS BiosGetIdsInitData (UINT32 Func, UINT32 Data, VOID *ConfigPtr);
 
 /* AGESA ADVANCED CALLOUTS - MEMORY */
 AGESA_STATUS BiosReadSpd (UINT32 Func,UINT32	Data,VOID *ConfigPtr);
 AGESA_STATUS BiosReadSpd_from_cbfs(UINT32 Func, UINT32 Data, VOID *ConfigPtr);
 
-/* BIOS DEFAULT RET */
-AGESA_STATUS BiosDefaultRet (UINT32 Func, UINT32 Data, VOID *ConfigPtr);
-
-/*	Call the host environment interface to provide a user hook opportunity. */
-AGESA_STATUS BiosHookBeforeDQSTraining (UINT32 Func, UINT32 Data, VOID *ConfigPtr);
 /*	Call the host environment interface to provide a user hook opportunity. */
 AGESA_STATUS BiosHookBeforeDramInit (UINT32 Func, UINT32 Data, VOID *ConfigPtr);
-/*	Call the host environment interface to provide a user hook opportunity. */
-AGESA_STATUS BiosHookBeforeDramInitRecovery (UINT32 Func, UINT32 Data, VOID *ConfigPtr);
-/*	Call the host environment interface to provide a user hook opportunity. */
-AGESA_STATUS BiosHookBeforeExitSelfRefresh (UINT32 Func, UINT32 Data, VOID *ConfigPtr);
 /* PCIE slot reset control */
 AGESA_STATUS BiosGnbPcieSlotReset (UINT32 Func, UINT32 Data, VOID *ConfigPtr);
 
diff --git a/src/northbridge/amd/agesa/family15tn/fam15tn_callouts.c b/src/northbridge/amd/agesa/family15tn/fam15tn_callouts.c
index 5f14e82..6d8b2ae 100644
--- a/src/northbridge/amd/agesa/family15tn/fam15tn_callouts.c
+++ b/src/northbridge/amd/agesa/family15tn/fam15tn_callouts.c
@@ -26,424 +26,8 @@
 #include "cbfs.h"
 #include "dimmSpd.h"
 #include "fam15tn_callouts.h"
-#include <cbmem.h>
-#include <arch/acpi.h>
-#include <string.h>
 
-#define AGESA_RUNTIME_SIZE 4096
 
-static AGESA_STATUS alloc_cbmem(AGESA_BUFFER_PARAMS *AllocParams) {
-	static unsigned int used = 0;
-	void *p = cbmem_find(CBMEM_ID_AGESA_RUNTIME);
-
-	if ((AGESA_RUNTIME_SIZE - used) < AllocParams->BufferLength) {
-		return AGESA_BOUNDS_CHK;
-	}
-
-	/* first time allocation */
-	if (!p) {
-		p = cbmem_add(CBMEM_ID_AGESA_RUNTIME, AGESA_RUNTIME_SIZE);
-		if (!p)
-			return AGESA_BOUNDS_CHK;
-	}
-
-	AllocParams->BufferPointer = p + used;
-	used += AllocParams->BufferLength;
-	return AGESA_SUCCESS;
-}
-
-UINT32 GetHeapBase(AMD_CONFIG_PARAMS *StdHeader)
-{
-	UINT32 heap = BIOS_HEAP_START_ADDRESS;
-
-#if CONFIG_HAVE_ACPI_RESUME
-	/* Both romstage and ramstage has this S3 detect. */
-	if (acpi_get_sleep_type() == 3)
-		heap = (UINT32) cbmem_find(CBMEM_ID_RESUME_SCRATCH) +
-		 (CONFIG_HIGH_SCRATCH_MEMORY_SIZE - BIOS_HEAP_SIZE);
-		  /* himem_heap_base + high_stack_size */
-#endif
-
-	return heap;
-}
-
-void EmptyHeap(void)
-{
-	void *BiosManagerPtr = (void *) GetHeapBase(NULL);
-	memset(BiosManagerPtr, 0, BIOS_HEAP_SIZE);
-}
-
-AGESA_STATUS fam15tn_AllocateBuffer (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	UINT32              AvailableHeapSize;
-	UINT8               *BiosHeapBaseAddr;
-	UINT32              CurrNodeOffset;
-	UINT32              PrevNodeOffset;
-	UINT32              FreedNodeOffset;
-	UINT32              BestFitNodeOffset;
-	UINT32              BestFitPrevNodeOffset;
-	UINT32              NextFreeOffset;
-	BIOS_BUFFER_NODE   *CurrNodePtr;
-	BIOS_BUFFER_NODE   *FreedNodePtr;
-	BIOS_BUFFER_NODE   *BestFitNodePtr;
-	BIOS_BUFFER_NODE   *BestFitPrevNodePtr;
-	BIOS_BUFFER_NODE   *NextFreePtr;
-	BIOS_HEAP_MANAGER  *BiosHeapBasePtr;
-	AGESA_BUFFER_PARAMS *AllocParams;
-
-	AllocParams = ((AGESA_BUFFER_PARAMS *) ConfigPtr);
-	AllocParams->BufferPointer = NULL;
-
-	/* if the allocation is for runtime use simple CBMEM data */
-	if (Data == HEAP_CALLOUT_RUNTIME)
-		return alloc_cbmem(AllocParams);
-
-	AvailableHeapSize = BIOS_HEAP_SIZE - sizeof (BIOS_HEAP_MANAGER);
-	BiosHeapBaseAddr = (UINT8 *) GetHeapBase(&(AllocParams->StdHeader));
-	BiosHeapBasePtr = (BIOS_HEAP_MANAGER *) BiosHeapBaseAddr;
-
-	if (BiosHeapBasePtr->StartOfAllocatedNodes == 0) {
-		/* First allocation */
-		CurrNodeOffset = sizeof (BIOS_HEAP_MANAGER);
-		CurrNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + CurrNodeOffset);
-		CurrNodePtr->BufferHandle = AllocParams->BufferHandle;
-		CurrNodePtr->BufferSize = AllocParams->BufferLength;
-		CurrNodePtr->NextNodeOffset = 0;
-		AllocParams->BufferPointer = (UINT8 *) CurrNodePtr + sizeof (BIOS_BUFFER_NODE);
-
-		/* Update the remaining free space */
-		FreedNodeOffset = CurrNodeOffset + CurrNodePtr->BufferSize + sizeof (BIOS_BUFFER_NODE);
-		FreedNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + FreedNodeOffset);
-		FreedNodePtr->BufferSize = AvailableHeapSize - sizeof (BIOS_BUFFER_NODE) - CurrNodePtr->BufferSize;
-		FreedNodePtr->NextNodeOffset = 0;
-
-		/* Update the offsets for Allocated and Freed nodes */
-		BiosHeapBasePtr->StartOfAllocatedNodes = CurrNodeOffset;
-		BiosHeapBasePtr->StartOfFreedNodes = FreedNodeOffset;
-	} else {
-		/* Find out whether BufferHandle has been allocated on the heap. */
-		/* If it has, return AGESA_BOUNDS_CHK */
-		CurrNodeOffset = BiosHeapBasePtr->StartOfAllocatedNodes;
-		CurrNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + CurrNodeOffset);
-
-		while (CurrNodeOffset != 0) {
-			CurrNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + CurrNodeOffset);
-			if (CurrNodePtr->BufferHandle == AllocParams->BufferHandle) {
-				return AGESA_BOUNDS_CHK;
-			}
-			CurrNodeOffset = CurrNodePtr->NextNodeOffset;
-			/* If BufferHandle has not been allocated on the heap, CurrNodePtr here points
-			   to the end of the allocated nodes list.
-			*/
-
-		}
-		/* Find the node that best fits the requested buffer size */
-		FreedNodeOffset = BiosHeapBasePtr->StartOfFreedNodes;
-		PrevNodeOffset = FreedNodeOffset;
-		BestFitNodeOffset = 0;
-		BestFitPrevNodeOffset = 0;
-		while (FreedNodeOffset != 0) {
-			FreedNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + FreedNodeOffset);
-			if (FreedNodePtr->BufferSize >= (AllocParams->BufferLength + sizeof (BIOS_BUFFER_NODE))) {
-				if (BestFitNodeOffset == 0) {
-					/* First node that fits the requested buffer size */
-					BestFitNodeOffset = FreedNodeOffset;
-					BestFitPrevNodeOffset = PrevNodeOffset;
-				} else {
-					/* Find out whether current node is a better fit than the previous nodes */
-					BestFitNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + BestFitNodeOffset);
-					if (BestFitNodePtr->BufferSize > FreedNodePtr->BufferSize) {
-						BestFitNodeOffset = FreedNodeOffset;
-						BestFitPrevNodeOffset = PrevNodeOffset;
-					}
-				}
-			}
-			PrevNodeOffset = FreedNodeOffset;
-			FreedNodeOffset = FreedNodePtr->NextNodeOffset;
-		} /* end of while loop */
-
-		if (BestFitNodeOffset == 0) {
-			/* If we could not find a node that fits the requested buffer */
-			/* size, return AGESA_BOUNDS_CHK */
-			return AGESA_BOUNDS_CHK;
-		} else {
-			BestFitNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + BestFitNodeOffset);
-			BestFitPrevNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + BestFitPrevNodeOffset);
-
-			/* If BestFitNode is larger than the requested buffer, fragment the node further */
-			if (BestFitNodePtr->BufferSize > (AllocParams->BufferLength + sizeof (BIOS_BUFFER_NODE))) {
-				NextFreeOffset = BestFitNodeOffset + AllocParams->BufferLength + sizeof (BIOS_BUFFER_NODE);
-
-				NextFreePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + NextFreeOffset);
-				NextFreePtr->BufferSize = BestFitNodePtr->BufferSize - (AllocParams->BufferLength + sizeof (BIOS_BUFFER_NODE));
-				NextFreePtr->NextNodeOffset = BestFitNodePtr->NextNodeOffset;
-			} else {
-				/* Otherwise, next free node is NextNodeOffset of BestFitNode */
-				NextFreeOffset = BestFitNodePtr->NextNodeOffset;
-			}
-
-			/* If BestFitNode is the first buffer in the list, then update
-			   StartOfFreedNodes to reflect the new free node
-			*/
-			if (BestFitNodeOffset == BiosHeapBasePtr->StartOfFreedNodes) {
-				BiosHeapBasePtr->StartOfFreedNodes = NextFreeOffset;
-			} else {
-				BestFitPrevNodePtr->NextNodeOffset = NextFreeOffset;
-			}
-
-			/* Add BestFitNode to the list of Allocated nodes */
-			CurrNodePtr->NextNodeOffset = BestFitNodeOffset;
-			BestFitNodePtr->BufferSize = AllocParams->BufferLength;
-			BestFitNodePtr->BufferHandle = AllocParams->BufferHandle;
-			BestFitNodePtr->NextNodeOffset = 0;
-
-			/* Remove BestFitNode from list of Freed nodes */
-			AllocParams->BufferPointer = (UINT8 *) BestFitNodePtr + sizeof (BIOS_BUFFER_NODE);
-		}
-	}
-
-	return AGESA_SUCCESS;
-}
-
-AGESA_STATUS fam15tn_DeallocateBuffer (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-
-	UINT8               *BiosHeapBaseAddr;
-	UINT32              AllocNodeOffset;
-	UINT32              PrevNodeOffset;
-	UINT32              NextNodeOffset;
-	UINT32              FreedNodeOffset;
-	UINT32              EndNodeOffset;
-	BIOS_BUFFER_NODE   *AllocNodePtr;
-	BIOS_BUFFER_NODE   *PrevNodePtr;
-	BIOS_BUFFER_NODE   *FreedNodePtr;
-	BIOS_BUFFER_NODE   *NextNodePtr;
-	BIOS_HEAP_MANAGER  *BiosHeapBasePtr;
-	AGESA_BUFFER_PARAMS *AllocParams;
-
-	AllocParams = (AGESA_BUFFER_PARAMS *) ConfigPtr;
-
-	BiosHeapBaseAddr = (UINT8 *) GetHeapBase(&(AllocParams->StdHeader));
-	BiosHeapBasePtr = (BIOS_HEAP_MANAGER *) BiosHeapBaseAddr;
-
-	/* Find target node to deallocate in list of allocated nodes.
-	   Return AGESA_BOUNDS_CHK if the BufferHandle is not found
-	*/
-	AllocNodeOffset = BiosHeapBasePtr->StartOfAllocatedNodes;
-	AllocNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + AllocNodeOffset);
-	PrevNodeOffset = AllocNodeOffset;
-
-	while (AllocNodePtr->BufferHandle !=  AllocParams->BufferHandle) {
-		if (AllocNodePtr->NextNodeOffset == 0) {
-			return AGESA_BOUNDS_CHK;
-		}
-		PrevNodeOffset = AllocNodeOffset;
-		AllocNodeOffset = AllocNodePtr->NextNodeOffset;
-		AllocNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + AllocNodeOffset);
-	}
-
-	/* Remove target node from list of allocated nodes */
-	PrevNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + PrevNodeOffset);
-	PrevNodePtr->NextNodeOffset = AllocNodePtr->NextNodeOffset;
-
-	/* Zero out the buffer, and clear the BufferHandle */
-	LibAmdMemFill ((UINT8 *)AllocNodePtr + sizeof (BIOS_BUFFER_NODE), 0, AllocNodePtr->BufferSize, &(AllocParams->StdHeader));
-	AllocNodePtr->BufferHandle = 0;
-	AllocNodePtr->BufferSize += sizeof (BIOS_BUFFER_NODE);
-
-	/* Add deallocated node in order to the list of freed nodes */
-	FreedNodeOffset = BiosHeapBasePtr->StartOfFreedNodes;
-	FreedNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + FreedNodeOffset);
-
-	EndNodeOffset = AllocNodeOffset + AllocNodePtr->BufferSize;
-
-	if (AllocNodeOffset < FreedNodeOffset) {
-		/* Add to the start of the freed list */
-		if (EndNodeOffset == FreedNodeOffset) {
-			/* If the freed node is adjacent to the first node in the list, concatenate both nodes */
-			AllocNodePtr->BufferSize += FreedNodePtr->BufferSize;
-			AllocNodePtr->NextNodeOffset = FreedNodePtr->NextNodeOffset;
-
-			/* Clear the BufferSize and NextNodeOffset of the previous first node */
-			FreedNodePtr->BufferSize = 0;
-			FreedNodePtr->NextNodeOffset = 0;
-
-		} else {
-			/* Otherwise, add freed node to the start of the list
-			   Update NextNodeOffset and BufferSize to include the
-			   size of BIOS_BUFFER_NODE
-			*/
-			AllocNodePtr->NextNodeOffset = FreedNodeOffset;
-		}
-		/* Update StartOfFreedNodes to the new first node */
-		BiosHeapBasePtr->StartOfFreedNodes = AllocNodeOffset;
-	} else {
-		/* Traverse list of freed nodes to find where the deallocated node
-		   should be place
-		*/
-		NextNodeOffset = FreedNodeOffset;
-		NextNodePtr = FreedNodePtr;
-		while (AllocNodeOffset > NextNodeOffset) {
-			PrevNodeOffset = NextNodeOffset;
-			if (NextNodePtr->NextNodeOffset == 0) {
-				break;
-			}
-			NextNodeOffset = NextNodePtr->NextNodeOffset;
-			NextNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + NextNodeOffset);
-		}
-
-		/* If deallocated node is adjacent to the next node,
-		   concatenate both nodes
-		*/
-		if (NextNodeOffset == EndNodeOffset) {
-			NextNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + NextNodeOffset);
-			AllocNodePtr->BufferSize += NextNodePtr->BufferSize;
-			AllocNodePtr->NextNodeOffset = NextNodePtr->NextNodeOffset;
-
-			NextNodePtr->BufferSize = 0;
-			NextNodePtr->NextNodeOffset = 0;
-		} else {
-			/*AllocNodePtr->NextNodeOffset = FreedNodePtr->NextNodeOffset; */
-			AllocNodePtr->NextNodeOffset = NextNodeOffset;
-		}
-		/* If deallocated node is adjacent to the previous node,
-		   concatenate both nodes
-		*/
-		PrevNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + PrevNodeOffset);
-		EndNodeOffset = PrevNodeOffset + PrevNodePtr->BufferSize;
-		if (AllocNodeOffset == EndNodeOffset) {
-			PrevNodePtr->NextNodeOffset = AllocNodePtr->NextNodeOffset;
-			PrevNodePtr->BufferSize += AllocNodePtr->BufferSize;
-
-			AllocNodePtr->BufferSize = 0;
-			AllocNodePtr->NextNodeOffset = 0;
-		} else {
-			PrevNodePtr->NextNodeOffset = AllocNodeOffset;
-		}
-	}
-	return AGESA_SUCCESS;
-}
-
-AGESA_STATUS fam15tn_LocateBuffer (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	UINT32              AllocNodeOffset;
-	UINT8               *BiosHeapBaseAddr;
-	BIOS_BUFFER_NODE   *AllocNodePtr;
-	BIOS_HEAP_MANAGER  *BiosHeapBasePtr;
-	AGESA_BUFFER_PARAMS *AllocParams;
-
-	AllocParams = (AGESA_BUFFER_PARAMS *) ConfigPtr;
-
-	BiosHeapBaseAddr = (UINT8 *) GetHeapBase(&(AllocParams->StdHeader));
-	BiosHeapBasePtr = (BIOS_HEAP_MANAGER *) BiosHeapBaseAddr;
-
-	AllocNodeOffset = BiosHeapBasePtr->StartOfAllocatedNodes;
-	AllocNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + AllocNodeOffset);
-
-	while (AllocParams->BufferHandle != AllocNodePtr->BufferHandle) {
-		if (AllocNodePtr->NextNodeOffset == 0) {
-			AllocParams->BufferPointer = NULL;
-			AllocParams->BufferLength = 0;
-			return AGESA_BOUNDS_CHK;
-		} else {
-			AllocNodeOffset = AllocNodePtr->NextNodeOffset;
-			AllocNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + AllocNodeOffset);
-		}
-	}
-
-	AllocParams->BufferPointer = (UINT8 *) ((UINT8 *) AllocNodePtr + sizeof (BIOS_BUFFER_NODE));
-	AllocParams->BufferLength = AllocNodePtr->BufferSize;
-
-	return AGESA_SUCCESS;
-
-}
-
-CONST IDS_NV_ITEM IdsData[] =
-{
-	{
-		0xFFFF,
-		0xFFFF
-	}
-};
-
-#define   NUM_IDS_ENTRIES    (sizeof (IdsData) / sizeof (IDS_NV_ITEM))
-
-AGESA_STATUS fam15tn_GetIdsInitData (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	UINTN   i;
-	IDS_NV_ITEM *IdsPtr;
-
-	IdsPtr = ((IDS_CALLOUT_STRUCT *) ConfigPtr)->IdsNvPtr;
-
-	if (Data == IDS_CALLOUT_INIT) {
-		for (i = 0; i < NUM_IDS_ENTRIES; i++) {
-			IdsPtr[i].IdsNvValue = IdsData[i].IdsNvValue;
-			IdsPtr[i].IdsNvId = IdsData[i].IdsNvId;
-		}
-	}
-	return AGESA_SUCCESS;
-}
-
-AGESA_STATUS fam15tn_Reset (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	AGESA_STATUS        Status;
-	UINT8                 Value;
-	UINTN               ResetType;
-	AMD_CONFIG_PARAMS   *StdHeader;
-
-	ResetType = Data;
-	StdHeader = ConfigPtr;
-
-	//
-	// Perform the RESET based upon the ResetType. In case of
-	// WARM_RESET_WHENVER and COLD_RESET_WHENEVER, the request will go to
-	// AmdResetManager. During the critical condition, where reset is required
-	// immediately, the reset will be invoked directly by writing 0x04 to port
-	// 0xCF9 (Reset Port).
-	//
-	switch (ResetType) {
-	case WARM_RESET_WHENEVER:
-	case COLD_RESET_WHENEVER:
-		break;
-
-	case WARM_RESET_IMMEDIATELY:
-	case COLD_RESET_IMMEDIATELY:
-		Value = 0x06;
-		LibAmdIoWrite (AccessWidth8, 0xCf9, &Value, StdHeader);
-		break;
-
-	default:
-		break;
-	}
-
-	Status = 0;
-	return Status;
-}
-
-AGESA_STATUS fam15tn_RunFuncOnAp (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	AGESA_STATUS        Status;
-
-	Status = agesawrapper_amdlaterunaptask (Func, Data, ConfigPtr);
-	return Status;
-}
-
-/*  Call the host environment interface to provide a user hook opportunity. */
-AGESA_STATUS fam15tn_HookBeforeDQSTraining (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	return AGESA_SUCCESS;
-}
-
-/*  Call the host environment interface to provide a user hook opportunity. */
-AGESA_STATUS fam15tn_HookBeforeExitSelfRefresh (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	return AGESA_SUCCESS;
-}
-
-AGESA_STATUS fam15tn_DefaultRet (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	return AGESA_UNSUPPORTED;
-}
 
 
 AGESA_STATUS fam15tn_HookGfxGetVbiosImage(UINT32 Func, UINT32 FchData, VOID *ConfigPrt)
diff --git a/src/northbridge/amd/agesa/family15tn/fam15tn_callouts.h b/src/northbridge/amd/agesa/family15tn/fam15tn_callouts.h
index 0070e6f..49fd411 100644
--- a/src/northbridge/amd/agesa/family15tn/fam15tn_callouts.h
+++ b/src/northbridge/amd/agesa/family15tn/fam15tn_callouts.h
@@ -27,30 +27,6 @@
 #define BIOS_HEAP_SIZE				0x30000
 #define BSP_STACK_BASE_ADDR			0x30000
 
-
-typedef struct _BIOS_HEAP_MANAGER {
-  UINT32 StartOfAllocatedNodes;
-  UINT32 StartOfFreedNodes;
-} BIOS_HEAP_MANAGER;
-
-typedef struct _BIOS_BUFFER_NODE {
-  UINT32 BufferHandle;
-  UINT32 BufferSize;
-  UINT32 NextNodeOffset;
-} BIOS_BUFFER_NODE;
-
-UINT32 GetHeapBase(AMD_CONFIG_PARAMS *StdHeader);
-void EmptyHeap(void);
-
-AGESA_STATUS fam15tn_AllocateBuffer (UINT32 Func, UINT32 Data, VOID *ConfigPtr);
-AGESA_STATUS fam15tn_DeallocateBuffer (UINT32 Func, UINT32 Data, VOID *ConfigPtr);
-AGESA_STATUS fam15tn_LocateBuffer (UINT32 Func, UINT32 Data, VOID *ConfigPtr);
-AGESA_STATUS fam15tn_GetIdsInitData (UINT32 Func, UINT32 Data, VOID *ConfigPtr);
-AGESA_STATUS fam15tn_Reset (UINT32 Func, UINT32 Data, VOID *ConfigPtr);
-AGESA_STATUS fam15tn_RunFuncOnAp (UINT32 Func, UINT32 Data, VOID *ConfigPtr);
-AGESA_STATUS fam15tn_HookBeforeDQSTraining (UINT32 Func, UINT32 Data, VOID *ConfigPtr);
-AGESA_STATUS fam15tn_HookBeforeExitSelfRefresh (UINT32 Func, UINT32 Data, VOID *ConfigPtr);
-AGESA_STATUS fam15tn_DefaultRet (UINT32 Func, UINT32 Data, VOID *ConfigPtr);
 AGESA_STATUS fam15tn_HookGfxGetVbiosImage(UINT32 Func, UINT32 FchData, VOID *ConfigPrt);
 AGESA_STATUS fam15tn_ReadSpd (UINT32 Func, UINT32 Data, VOID *ConfigPtr);
 
diff --git a/src/northbridge/amd/agesa/family16kb/fam16kb_callouts.c b/src/northbridge/amd/agesa/family16kb/fam16kb_callouts.c
index 7dada18..b5d19a4 100644
--- a/src/northbridge/amd/agesa/family16kb/fam16kb_callouts.c
+++ b/src/northbridge/amd/agesa/family16kb/fam16kb_callouts.c
@@ -26,398 +26,9 @@
 #include "cbfs.h"
 #include "dimmSpd.h"
 #include "fam16kb_callouts.h"
-#include <cbmem.h>
-#include <arch/acpi.h>
-#include <string.h>
 
-UINT32 GetHeapBase(AMD_CONFIG_PARAMS *StdHeader)
-{
-	UINT32 heap = BIOS_HEAP_START_ADDRESS;
-
-#if CONFIG_HAVE_ACPI_RESUME
-	/* Both romstage and ramstage has this S3 detect. */
-	if (acpi_get_sleep_type() == 3)
-		heap = (UINT32) cbmem_find(CBMEM_ID_RESUME_SCRATCH) +
-		 (CONFIG_HIGH_SCRATCH_MEMORY_SIZE - BIOS_HEAP_SIZE);
-		  /* himem_heap_base + high_stack_size */
-#endif
-
-	return heap;
-}
-
-void EmptyHeap(void)
-{
-	void *BiosManagerPtr = (void *) GetHeapBase(NULL);
-	memset(BiosManagerPtr, 0, BIOS_HEAP_SIZE);
-}
-
-AGESA_STATUS fam16kb_AllocateBuffer (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	UINT32              AvailableHeapSize;
-	UINT8               *BiosHeapBaseAddr;
-	UINT32              CurrNodeOffset;
-	UINT32              PrevNodeOffset;
-	UINT32              FreedNodeOffset;
-	UINT32              BestFitNodeOffset;
-	UINT32              BestFitPrevNodeOffset;
-	UINT32              NextFreeOffset;
-	BIOS_BUFFER_NODE   *CurrNodePtr;
-	BIOS_BUFFER_NODE   *FreedNodePtr;
-	BIOS_BUFFER_NODE   *BestFitNodePtr;
-	BIOS_BUFFER_NODE   *BestFitPrevNodePtr;
-	BIOS_BUFFER_NODE   *NextFreePtr;
-	BIOS_HEAP_MANAGER  *BiosHeapBasePtr;
-	AGESA_BUFFER_PARAMS *AllocParams;
-
-	AllocParams = ((AGESA_BUFFER_PARAMS *) ConfigPtr);
-	AllocParams->BufferPointer = NULL;
-
-	AvailableHeapSize = BIOS_HEAP_SIZE - sizeof (BIOS_HEAP_MANAGER);
-	BiosHeapBaseAddr = (UINT8 *) GetHeapBase(&(AllocParams->StdHeader));
-	BiosHeapBasePtr = (BIOS_HEAP_MANAGER *) BiosHeapBaseAddr;
-
-	if (BiosHeapBasePtr->StartOfAllocatedNodes == 0) {
-		/* First allocation */
-		CurrNodeOffset = sizeof (BIOS_HEAP_MANAGER);
-		CurrNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + CurrNodeOffset);
-		CurrNodePtr->BufferHandle = AllocParams->BufferHandle;
-		CurrNodePtr->BufferSize = AllocParams->BufferLength;
-		CurrNodePtr->NextNodeOffset = 0;
-		AllocParams->BufferPointer = (UINT8 *) CurrNodePtr + sizeof (BIOS_BUFFER_NODE);
-
-		/* Update the remaining free space */
-		FreedNodeOffset = CurrNodeOffset + CurrNodePtr->BufferSize + sizeof (BIOS_BUFFER_NODE);
-		FreedNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + FreedNodeOffset);
-		FreedNodePtr->BufferSize = AvailableHeapSize - sizeof (BIOS_BUFFER_NODE) - CurrNodePtr->BufferSize;
-		FreedNodePtr->NextNodeOffset = 0;
-
-		/* Update the offsets for Allocated and Freed nodes */
-		BiosHeapBasePtr->StartOfAllocatedNodes = CurrNodeOffset;
-		BiosHeapBasePtr->StartOfFreedNodes = FreedNodeOffset;
-	} else {
-		/* Find out whether BufferHandle has been allocated on the heap. */
-		/* If it has, return AGESA_BOUNDS_CHK */
-		CurrNodeOffset = BiosHeapBasePtr->StartOfAllocatedNodes;
-		CurrNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + CurrNodeOffset);
-
-		while (CurrNodeOffset != 0) {
-			CurrNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + CurrNodeOffset);
-			if (CurrNodePtr->BufferHandle == AllocParams->BufferHandle) {
-				return AGESA_BOUNDS_CHK;
-			}
-			CurrNodeOffset = CurrNodePtr->NextNodeOffset;
-			/* If BufferHandle has not been allocated on the heap, CurrNodePtr here points
-			   to the end of the allocated nodes list.
-			*/
-
-		}
-		/* Find the node that best fits the requested buffer size */
-		FreedNodeOffset = BiosHeapBasePtr->StartOfFreedNodes;
-		PrevNodeOffset = FreedNodeOffset;
-		BestFitNodeOffset = 0;
-		BestFitPrevNodeOffset = 0;
-		while (FreedNodeOffset != 0) {
-			FreedNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + FreedNodeOffset);
-			if (FreedNodePtr->BufferSize >= (AllocParams->BufferLength + sizeof (BIOS_BUFFER_NODE))) {
-				if (BestFitNodeOffset == 0) {
-					/* First node that fits the requested buffer size */
-					BestFitNodeOffset = FreedNodeOffset;
-					BestFitPrevNodeOffset = PrevNodeOffset;
-				} else {
-					/* Find out whether current node is a better fit than the previous nodes */
-					BestFitNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + BestFitNodeOffset);
-					if (BestFitNodePtr->BufferSize > FreedNodePtr->BufferSize) {
-						BestFitNodeOffset = FreedNodeOffset;
-						BestFitPrevNodeOffset = PrevNodeOffset;
-					}
-				}
-			}
-			PrevNodeOffset = FreedNodeOffset;
-			FreedNodeOffset = FreedNodePtr->NextNodeOffset;
-		} /* end of while loop */
-
-		if (BestFitNodeOffset == 0) {
-			/* If we could not find a node that fits the requested buffer */
-			/* size, return AGESA_BOUNDS_CHK */
-			return AGESA_BOUNDS_CHK;
-		} else {
-			BestFitNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + BestFitNodeOffset);
-			BestFitPrevNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + BestFitPrevNodeOffset);
-
-			/* If BestFitNode is larger than the requested buffer, fragment the node further */
-			if (BestFitNodePtr->BufferSize > (AllocParams->BufferLength + sizeof (BIOS_BUFFER_NODE))) {
-				NextFreeOffset = BestFitNodeOffset + AllocParams->BufferLength + sizeof (BIOS_BUFFER_NODE);
-
-				NextFreePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + NextFreeOffset);
-				NextFreePtr->BufferSize = BestFitNodePtr->BufferSize - (AllocParams->BufferLength + sizeof (BIOS_BUFFER_NODE));
-				NextFreePtr->NextNodeOffset = BestFitNodePtr->NextNodeOffset;
-			} else {
-				/* Otherwise, next free node is NextNodeOffset of BestFitNode */
-				NextFreeOffset = BestFitNodePtr->NextNodeOffset;
-			}
-
-			/* If BestFitNode is the first buffer in the list, then update
-			   StartOfFreedNodes to reflect the new free node
-			*/
-			if (BestFitNodeOffset == BiosHeapBasePtr->StartOfFreedNodes) {
-				BiosHeapBasePtr->StartOfFreedNodes = NextFreeOffset;
-			} else {
-				BestFitPrevNodePtr->NextNodeOffset = NextFreeOffset;
-			}
-
-			/* Add BestFitNode to the list of Allocated nodes */
-			CurrNodePtr->NextNodeOffset = BestFitNodeOffset;
-			BestFitNodePtr->BufferSize = AllocParams->BufferLength;
-			BestFitNodePtr->BufferHandle = AllocParams->BufferHandle;
-			BestFitNodePtr->NextNodeOffset = 0;
 
-			/* Remove BestFitNode from list of Freed nodes */
-			AllocParams->BufferPointer = (UINT8 *) BestFitNodePtr + sizeof (BIOS_BUFFER_NODE);
-		}
-	}
-
-	return AGESA_SUCCESS;
-}
-
-AGESA_STATUS fam16kb_DeallocateBuffer (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-
-	UINT8               *BiosHeapBaseAddr;
-	UINT32              AllocNodeOffset;
-	UINT32              PrevNodeOffset;
-	UINT32              NextNodeOffset;
-	UINT32              FreedNodeOffset;
-	UINT32              EndNodeOffset;
-	BIOS_BUFFER_NODE   *AllocNodePtr;
-	BIOS_BUFFER_NODE   *PrevNodePtr;
-	BIOS_BUFFER_NODE   *FreedNodePtr;
-	BIOS_BUFFER_NODE   *NextNodePtr;
-	BIOS_HEAP_MANAGER  *BiosHeapBasePtr;
-	AGESA_BUFFER_PARAMS *AllocParams;
-
-	AllocParams = (AGESA_BUFFER_PARAMS *) ConfigPtr;
-
-	BiosHeapBaseAddr = (UINT8 *) GetHeapBase(&(AllocParams->StdHeader));
-	BiosHeapBasePtr = (BIOS_HEAP_MANAGER *) BiosHeapBaseAddr;
-
-	/* Find target node to deallocate in list of allocated nodes.
-	   Return AGESA_BOUNDS_CHK if the BufferHandle is not found
-	*/
-	AllocNodeOffset = BiosHeapBasePtr->StartOfAllocatedNodes;
-	AllocNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + AllocNodeOffset);
-	PrevNodeOffset = AllocNodeOffset;
-
-	while (AllocNodePtr->BufferHandle !=  AllocParams->BufferHandle) {
-		if (AllocNodePtr->NextNodeOffset == 0) {
-			return AGESA_BOUNDS_CHK;
-		}
-		PrevNodeOffset = AllocNodeOffset;
-		AllocNodeOffset = AllocNodePtr->NextNodeOffset;
-		AllocNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + AllocNodeOffset);
-	}
-
-	/* Remove target node from list of allocated nodes */
-	PrevNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + PrevNodeOffset);
-	PrevNodePtr->NextNodeOffset = AllocNodePtr->NextNodeOffset;
-
-	/* Zero out the buffer, and clear the BufferHandle */
-	LibAmdMemFill ((UINT8 *)AllocNodePtr + sizeof (BIOS_BUFFER_NODE), 0, AllocNodePtr->BufferSize, &(AllocParams->StdHeader));
-	AllocNodePtr->BufferHandle = 0;
-	AllocNodePtr->BufferSize += sizeof (BIOS_BUFFER_NODE);
-
-	/* Add deallocated node in order to the list of freed nodes */
-	FreedNodeOffset = BiosHeapBasePtr->StartOfFreedNodes;
-	FreedNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + FreedNodeOffset);
-
-	EndNodeOffset = AllocNodeOffset + AllocNodePtr->BufferSize;
-
-	if (AllocNodeOffset < FreedNodeOffset) {
-		/* Add to the start of the freed list */
-		if (EndNodeOffset == FreedNodeOffset) {
-			/* If the freed node is adjacent to the first node in the list, concatenate both nodes */
-			AllocNodePtr->BufferSize += FreedNodePtr->BufferSize;
-			AllocNodePtr->NextNodeOffset = FreedNodePtr->NextNodeOffset;
-
-			/* Clear the BufferSize and NextNodeOffset of the previous first node */
-			FreedNodePtr->BufferSize = 0;
-			FreedNodePtr->NextNodeOffset = 0;
-
-		} else {
-			/* Otherwise, add freed node to the start of the list
-			   Update NextNodeOffset and BufferSize to include the
-			   size of BIOS_BUFFER_NODE
-			*/
-			AllocNodePtr->NextNodeOffset = FreedNodeOffset;
-		}
-		/* Update StartOfFreedNodes to the new first node */
-		BiosHeapBasePtr->StartOfFreedNodes = AllocNodeOffset;
-	} else {
-		/* Traverse list of freed nodes to find where the deallocated node
-		   should be place
-		*/
-		NextNodeOffset = FreedNodeOffset;
-		NextNodePtr = FreedNodePtr;
-		while (AllocNodeOffset > NextNodeOffset) {
-			PrevNodeOffset = NextNodeOffset;
-			if (NextNodePtr->NextNodeOffset == 0) {
-				break;
-			}
-			NextNodeOffset = NextNodePtr->NextNodeOffset;
-			NextNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + NextNodeOffset);
-		}
-
-		/* If deallocated node is adjacent to the next node,
-		   concatenate both nodes
-		*/
-		if (NextNodeOffset == EndNodeOffset) {
-			NextNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + NextNodeOffset);
-			AllocNodePtr->BufferSize += NextNodePtr->BufferSize;
-			AllocNodePtr->NextNodeOffset = NextNodePtr->NextNodeOffset;
-
-			NextNodePtr->BufferSize = 0;
-			NextNodePtr->NextNodeOffset = 0;
-		} else {
-			/*AllocNodePtr->NextNodeOffset = FreedNodePtr->NextNodeOffset; */
-			AllocNodePtr->NextNodeOffset = NextNodeOffset;
-		}
-		/* If deallocated node is adjacent to the previous node,
-		   concatenate both nodes
-		*/
-		PrevNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + PrevNodeOffset);
-		EndNodeOffset = PrevNodeOffset + PrevNodePtr->BufferSize;
-		if (AllocNodeOffset == EndNodeOffset) {
-			PrevNodePtr->NextNodeOffset = AllocNodePtr->NextNodeOffset;
-			PrevNodePtr->BufferSize += AllocNodePtr->BufferSize;
-
-			AllocNodePtr->BufferSize = 0;
-			AllocNodePtr->NextNodeOffset = 0;
-		} else {
-			PrevNodePtr->NextNodeOffset = AllocNodeOffset;
-		}
-	}
-	return AGESA_SUCCESS;
-}
 
-AGESA_STATUS fam16kb_LocateBuffer (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	UINT32              AllocNodeOffset;
-	UINT8               *BiosHeapBaseAddr;
-	BIOS_BUFFER_NODE   *AllocNodePtr;
-	BIOS_HEAP_MANAGER  *BiosHeapBasePtr;
-	AGESA_BUFFER_PARAMS *AllocParams;
-
-	AllocParams = (AGESA_BUFFER_PARAMS *) ConfigPtr;
-
-	BiosHeapBaseAddr = (UINT8 *) GetHeapBase(&(AllocParams->StdHeader));
-	BiosHeapBasePtr = (BIOS_HEAP_MANAGER *) BiosHeapBaseAddr;
-
-	AllocNodeOffset = BiosHeapBasePtr->StartOfAllocatedNodes;
-	AllocNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + AllocNodeOffset);
-
-	while (AllocParams->BufferHandle != AllocNodePtr->BufferHandle) {
-		if (AllocNodePtr->NextNodeOffset == 0) {
-			AllocParams->BufferPointer = NULL;
-			AllocParams->BufferLength = 0;
-			return AGESA_BOUNDS_CHK;
-		} else {
-			AllocNodeOffset = AllocNodePtr->NextNodeOffset;
-			AllocNodePtr = (BIOS_BUFFER_NODE *) (BiosHeapBaseAddr + AllocNodeOffset);
-		}
-	}
-
-	AllocParams->BufferPointer = (UINT8 *) ((UINT8 *) AllocNodePtr + sizeof (BIOS_BUFFER_NODE));
-	AllocParams->BufferLength = AllocNodePtr->BufferSize;
-
-	return AGESA_SUCCESS;
-
-}
-
-CONST IDS_NV_ITEM IdsData[] =
-{
-	{
-		0xFFFF,
-		0xFFFF
-	}
-};
-
-#define   NUM_IDS_ENTRIES    (sizeof (IdsData) / sizeof (IDS_NV_ITEM))
-
-AGESA_STATUS fam16kb_GetIdsInitData (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	UINTN   i;
-	IDS_NV_ITEM *IdsPtr;
-
-	IdsPtr = ((IDS_CALLOUT_STRUCT *) ConfigPtr)->IdsNvPtr;
-
-	if (Data == IDS_CALLOUT_INIT) {
-		for (i = 0; i < NUM_IDS_ENTRIES; i++) {
-			IdsPtr[i].IdsNvValue = IdsData[i].IdsNvValue;
-			IdsPtr[i].IdsNvId = IdsData[i].IdsNvId;
-		}
-	}
-	return AGESA_SUCCESS;
-}
-
-AGESA_STATUS fam16kb_Reset (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	AGESA_STATUS        Status;
-	UINT8                 Value;
-	UINTN               ResetType;
-	AMD_CONFIG_PARAMS   *StdHeader;
-
-	ResetType = Data;
-	StdHeader = ConfigPtr;
-
-	//
-	// Perform the RESET based upon the ResetType. In case of
-	// WARM_RESET_WHENVER and COLD_RESET_WHENEVER, the request will go to
-	// AmdResetManager. During the critical condition, where reset is required
-	// immediately, the reset will be invoked directly by writing 0x04 to port
-	// 0xCF9 (Reset Port).
-	//
-	switch (ResetType) {
-	case WARM_RESET_WHENEVER:
-	case COLD_RESET_WHENEVER:
-		break;
-
-	case WARM_RESET_IMMEDIATELY:
-	case COLD_RESET_IMMEDIATELY:
-		Value = 0x06;
-		LibAmdIoWrite (AccessWidth8, 0xCf9, &Value, StdHeader);
-		break;
-
-	default:
-		break;
-	}
-
-	Status = 0;
-	return Status;
-}
-
-AGESA_STATUS fam16kb_RunFuncOnAp (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	AGESA_STATUS        Status;
-
-	Status = agesawrapper_amdlaterunaptask (Func, Data, ConfigPtr);
-	return Status;
-}
-
-/*  Call the host environment interface to provide a user hook opportunity. */
-AGESA_STATUS fam16kb_HookBeforeDQSTraining (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	return AGESA_SUCCESS;
-}
-
-/*  Call the host environment interface to provide a user hook opportunity. */
-AGESA_STATUS fam16kb_HookBeforeExitSelfRefresh (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	return AGESA_SUCCESS;
-}
-
-AGESA_STATUS fam16kb_DefaultRet (UINT32 Func, UINT32 Data, VOID *ConfigPtr)
-{
-	return AGESA_UNSUPPORTED;
-}
 
 
 AGESA_STATUS fam16kb_HookGfxGetVbiosImage(UINT32 Func, UINT32 FchData, VOID *ConfigPrt)
diff --git a/src/northbridge/amd/agesa/family16kb/fam16kb_callouts.h b/src/northbridge/amd/agesa/family16kb/fam16kb_callouts.h
index 57dd554..6eff8e9 100644
--- a/src/northbridge/amd/agesa/family16kb/fam16kb_callouts.h
+++ b/src/northbridge/amd/agesa/family16kb/fam16kb_callouts.h
@@ -27,30 +27,6 @@
 #define BIOS_HEAP_SIZE				0x30000
 #define BSP_STACK_BASE_ADDR			0x30000
 
-
-typedef struct _BIOS_HEAP_MANAGER {
-  UINT32 StartOfAllocatedNodes;
-  UINT32 StartOfFreedNodes;
-} BIOS_HEAP_MANAGER;
-
-typedef struct _BIOS_BUFFER_NODE {
-  UINT32 BufferHandle;
-  UINT32 BufferSize;
-  UINT32 NextNodeOffset;
-} BIOS_BUFFER_NODE;
-
-UINT32 GetHeapBase(AMD_CONFIG_PARAMS *StdHeader);
-void EmptyHeap(void);
-
-AGESA_STATUS fam16kb_AllocateBuffer (UINT32 Func, UINT32 Data, VOID *ConfigPtr);
-AGESA_STATUS fam16kb_DeallocateBuffer (UINT32 Func, UINT32 Data, VOID *ConfigPtr);
-AGESA_STATUS fam16kb_LocateBuffer (UINT32 Func, UINT32 Data, VOID *ConfigPtr);
-AGESA_STATUS fam16kb_GetIdsInitData (UINT32 Func, UINT32 Data, VOID *ConfigPtr);
-AGESA_STATUS fam16kb_Reset (UINT32 Func, UINT32 Data, VOID *ConfigPtr);
-AGESA_STATUS fam16kb_RunFuncOnAp (UINT32 Func, UINT32 Data, VOID *ConfigPtr);
-AGESA_STATUS fam16kb_HookBeforeDQSTraining (UINT32 Func, UINT32 Data, VOID *ConfigPtr);
-AGESA_STATUS fam16kb_HookBeforeExitSelfRefresh (UINT32 Func, UINT32 Data, VOID *ConfigPtr);
-AGESA_STATUS fam16kb_DefaultRet (UINT32 Func, UINT32 Data, VOID *ConfigPtr);
 AGESA_STATUS fam16kb_HookGfxGetVbiosImage(UINT32 Func, UINT32 FchData, VOID *ConfigPrt);
 AGESA_STATUS fam16kb_ReadSpd (UINT32 Func, UINT32 Data, VOID *ConfigPtr);
 



More information about the coreboot-gerrit mailing list