ddrlibv2: Dynamic TIP mode configuration( Bump 0.18, 0.38)

	In training code replaced ifdefs separated different TIP machine triggering with dynamic flags

Change-Id: I6cd1f56ee0e187f74caf0e5856e73648d148f3f4
Signed-off-by: Igor Petrik <igorp@marvell.com>
Reviewed-on: http://vgitil04.il.marvell.com:8080/19039
Reviewed-on: http://vgitil04.il.marvell.com:8080/24118
Reviewed-by: Omri Itach <omrii@marvell.com>
Tested-by: Omri Itach <omrii@marvell.com>
diff --git a/tools/marvell/bin_hdr/src_ddr/ddr3libv2/h/Driver/ddr3/mvDdr3TrainingIp.h b/tools/marvell/bin_hdr/src_ddr/ddr3libv2/h/Driver/ddr3/mvDdr3TrainingIp.h
index f3d6152..0e1da5d 100755
--- a/tools/marvell/bin_hdr/src_ddr/ddr3libv2/h/Driver/ddr3/mvDdr3TrainingIp.h
+++ b/tools/marvell/bin_hdr/src_ddr/ddr3libv2/h/Driver/ddr3/mvDdr3TrainingIp.h
@@ -52,9 +52,9 @@
 #endif
 
 #ifdef CONFIG_DDR4
-#define DDR3_TIP_VERSION_STRING "DDR4 Training Sequence - Ver TIP-0.19."
+#define DDR3_TIP_VERSION_STRING "DDR4 Training Sequence - Ver TIP-0.18."
 #else
-#define DDR3_TIP_VERSION_STRING "DDR3 Training Sequence - Ver TIP-1.39."
+#define DDR3_TIP_VERSION_STRING "DDR3 Training Sequence - Ver TIP-1.38."
 #endif
 
 #define MAX_CS_NUM         (4)
diff --git a/tools/marvell/bin_hdr/src_ddr/ddr3libv2/h/Driver/ddr3/mvDdr3TrainingIpEngine.h b/tools/marvell/bin_hdr/src_ddr/ddr3libv2/h/Driver/ddr3/mvDdr3TrainingIpEngine.h
index 7663517..458323e 100644
--- a/tools/marvell/bin_hdr/src_ddr/ddr3libv2/h/Driver/ddr3/mvDdr3TrainingIpEngine.h
+++ b/tools/marvell/bin_hdr/src_ddr/ddr3libv2/h/Driver/ddr3/mvDdr3TrainingIpEngine.h
@@ -121,21 +121,6 @@
 );
 
 /******************************************************************************
-* Name:     ddr3TipLoadPatternToMemByCpu.
-* Desc:     Load expected Pattern to external memory
-* Args:
-* Notes:
-* Returns:  OK if success, other error code if fail.
-*/
-GT_STATUS    ddr3TipLoadPatternToMemByCpu
-(
-    GT_U32          devNum,
-    MV_HWS_PATTERN  pattern,
-    GT_U32          offset
-);
-
-
-/******************************************************************************
 * load pattern to memory using ODPG
 */
 GT_STATUS    ddr3TipLoadAllPatternToMem
diff --git a/tools/marvell/bin_hdr/src_ddr/ddr3libv2/h/Driver/ddr3/mvDdr3TrainingIpFlow.h b/tools/marvell/bin_hdr/src_ddr/ddr3libv2/h/Driver/ddr3/mvDdr3TrainingIpFlow.h
index d04b3d8..0bacc9e 100755
--- a/tools/marvell/bin_hdr/src_ddr/ddr3libv2/h/Driver/ddr3/mvDdr3TrainingIpFlow.h
+++ b/tools/marvell/bin_hdr/src_ddr/ddr3libv2/h/Driver/ddr3/mvDdr3TrainingIpFlow.h
@@ -136,14 +136,14 @@
 
 #if defined(CONFIG_ARMADA_38X) || defined (CONFIG_ALLEYCAT3) || defined (CONFIG_ARMADA_39X)
 #define ODPG_TRAINING_STATUS_REG          (0x18488)
+#else
+#define ODPG_TRAINING_STATUS_REG          (0x1030)
+#endif
 #define ODPG_TRAINING_TRIGGER_REG         (0x1030)
 #define ODPG_STATUS_DONE_REG         	  (0x16FC)
 #define ODPG_ENABLE_REG                   (0x186D4)
 #define ODPG_ENABLE_OFFS                  (0)
 #define ODPG_DISABLE_OFFS                 (8)
-#else
-#define ODPG_TRAINING_STATUS_REG          (0x1030)
-#endif
 
 #define ODPG_TRAINING_CONTROL_REG         (0x1034)
 #define ODPG_OBJ1_OPCODE_REG              (0x103C)
@@ -214,7 +214,8 @@
 #define ODPG_BIST_DONE                    (0x16FC)
 #endif
 #define ODPG_BIST_DONE_BIT_OFFS           (0)
-#define ODPG_BIST_DONE_BIT_VALUE          (0)
+#define ODPG_BIST_DONE_BIT_VALUE_REV2          (1)
+#define ODPG_BIST_DONE_BIT_VALUE_REV3          (0)
 
 #if defined(CONFIG_ARMADA_38X) || defined (CONFIG_ALLEYCAT3) || defined (CONFIG_ARMADA_39X)
 #define RESULT_CONTROL_BYTE_PUP_0_REG     (0x1830)
diff --git a/tools/marvell/bin_hdr/src_ddr/ddr3libv2/h/Driver/mvDdrTrainingIpDb.h b/tools/marvell/bin_hdr/src_ddr/ddr3libv2/h/Driver/mvDdrTrainingIpDb.h
index 71d24ca..3b78111 100755
--- a/tools/marvell/bin_hdr/src_ddr/ddr3libv2/h/Driver/mvDdrTrainingIpDb.h
+++ b/tools/marvell/bin_hdr/src_ddr/ddr3libv2/h/Driver/mvDdrTrainingIpDb.h
@@ -71,7 +71,6 @@
 typedef enum
 {
     MV_ATTR_TIP_REV,
-    MV_ATTR_TRAINING_CONTROLLER,
     MV_ATTR_PHY_EDGE,
     MV_ATTR_OCTET_PER_INTERFACE,
     MV_ATTR_PLL_BEFORE_INIT,
diff --git a/tools/marvell/bin_hdr/src_ddr/ddr3libv2/src/Driver/ddr3/mvHwsDdr3Training.c b/tools/marvell/bin_hdr/src_ddr/ddr3libv2/src/Driver/ddr3/mvHwsDdr3Training.c
index 592c691..0241646 100755
--- a/tools/marvell/bin_hdr/src_ddr/ddr3libv2/src/Driver/ddr3/mvHwsDdr3Training.c
+++ b/tools/marvell/bin_hdr/src_ddr/ddr3libv2/src/Driver/ddr3/mvHwsDdr3Training.c
@@ -111,11 +111,6 @@
 extern GT_U8	vrefCalibrationWA; /*1 means SSTL & POD gets the same Vref and a WA is needed*/
 #endif
 
-#if defined (CONFIG_ALLEYCAT3)
-GT_U32 mvHwsmemSize[] = { ADDR_SIZE_512Mb, ADDR_SIZE_1Gb, ADDR_SIZE_2Gb, ADDR_SIZE_4Gb ,ADDR_SIZE_8Gb };
-#define  MV_DEVICE_MAX_DRAM_ADDRESS_SIZE          ADDR_SIZE_2Gb
-#endif
-
 GT_U32 vrefInitialValue = 0x4;
 GT_U32 ckDelay = MV_PARAMS_UNDEFINED;
 
@@ -168,7 +163,7 @@
 extern GT_U16 rfcTable[];
 extern GT_U32 speedBinTableTRc[];
 extern GT_U32 speedBinTableTRcdTRp[];
-
+extern GT_U32 mvMemSize[];
 
 /************************** pre-declarations ******************************/
 static GT_STATUS    ddr3TipDDR3Ddr3TrainingMainFlow
@@ -733,9 +728,7 @@
     {
 #ifdef STATIC_ALGO_SUPPORT
         CHECK_STATUS(ddr3TipStaticInitController(devNum));
-#if defined(CONFIG_ARMADA_38X) || defined (CONFIG_ARMADA_39X)
 		CHECK_STATUS(ddr3TipStaticPhyInitController(devNum));
-#endif
 #endif/*STATIC_ALGO_SUPPORT*/
     }
     for(interfaceId = 0; interfaceId <= MAX_INTERFACE_NUM-1; interfaceId++)
@@ -3157,32 +3150,31 @@
 
 GT_STATUS mvHwsDdr3CsBaseAdrCalc(GT_U32 interfaceId, GT_U32 uiCs, GT_U32 *csBaseAddr)
 {
-
-	GT_U32 uiCsMemSize = 0;
+       GT_U32 uiCsMemSize = 0;
 
 #ifdef MV_DEVICE_MAX_DRAM_ADDRESS_SIZE
-	GT_U32 physicalMemSize;
-	GT_U32 maxMemSize = MV_DEVICE_MAX_DRAM_ADDRESS_SIZE;
+       GT_U32 physicalMemSize;
+       GT_U32 maxMemSize = MV_DEVICE_MAX_DRAM_ADDRESS_SIZE;
 #endif
 
-	if (mvHwsDdr3CalcMemCsSize(interfaceId,uiCs, &uiCsMemSize) != GT_OK)
-		return GT_FAIL;
+       if (mvHwsDdr3CalcMemCsSize(interfaceId,uiCs, &uiCsMemSize) != GT_OK)
+               return GT_FAIL;
 
 #ifdef MV_DEVICE_MAX_DRAM_ADDRESS_SIZE
-	/* if number of address pins doesn't allow to use max mem size that is defined in topology
-	 mem size is defined by MV_DEVICE_MAX_DRAM_ADDRESS_SIZE*/
-	physicalMemSize = mvHwsmemSize [topologyMap->interfaceParams[0].memorySize];
+       /* if number of address pins doesn't allow to use max mem size that is defined in topology
+        mem size is defined by MV_DEVICE_MAX_DRAM_ADDRESS_SIZE*/
+       physicalMemSize =  mvMemSize[topologyMap->interfaceParams[0].memorySize];
 
-	if (mvHwsDdr3GetDeviceWidth(uiCs) == 16)
-		maxMemSize = MV_DEVICE_MAX_DRAM_ADDRESS_SIZE * 2; /* 16bit mem device can be twice more - no need in less significant pin*/
+       if (mvHwsDdr3GetDeviceWidth(uiCs) == 16)
+               maxMemSize = MV_DEVICE_MAX_DRAM_ADDRESS_SIZE * 2; /* 16bit mem device can be twice more - no need in less significant pin*/
 
-	if (physicalMemSize > maxMemSize ){
-		uiCsMemSize = maxMemSize * (mvHwsDdr3GetBusWidth() / mvHwsDdr3GetDeviceWidth(interfaceId)) ;
-		DEBUG_TRAINING_IP(DEBUG_LEVEL_ERROR,  ("Updated Physical Mem size is from 0x%x to %x\n", physicalMemSize, MV_DEVICE_MAX_DRAM_ADDRESS_SIZE));
-	}
+       if (physicalMemSize > maxMemSize ){
+               uiCsMemSize = maxMemSize * (mvHwsDdr3GetBusWidth() / mvHwsDdr3GetDeviceWidth(interfaceId)) ;
+               DEBUG_TRAINING_IP(DEBUG_LEVEL_ERROR,  ("Updated Physical Mem size is from 0x%x to %x\n", physicalMemSize, MV_DEVICE_MAX_DRAM_ADDRESS_SIZE));
+       }
 #endif
-	/*calculate CS base addr  */
-	*csBaseAddr = ((uiCsMemSize) * uiCs) & 0xFFFF0000;
-	return GT_OK;
+       /*calculate CS base addr  */
+       *csBaseAddr = ((uiCsMemSize) * uiCs) & 0xFFFF0000;
+       return GT_OK;
 }
 
diff --git a/tools/marvell/bin_hdr/src_ddr/ddr3libv2/src/Driver/ddr3/mvHwsDdr3TrainingIpEngine.c b/tools/marvell/bin_hdr/src_ddr/ddr3libv2/src/Driver/ddr3/mvHwsDdr3TrainingIpEngine.c
index 119197b..ca8c251 100755
--- a/tools/marvell/bin_hdr/src_ddr/ddr3libv2/src/Driver/ddr3/mvHwsDdr3TrainingIpEngine.c
+++ b/tools/marvell/bin_hdr/src_ddr/ddr3libv2/src/Driver/ddr3/mvHwsDdr3TrainingIpEngine.c
@@ -291,7 +291,7 @@
 )
 {
     
-    GT_U32 maskDqNumOfRegs, maskPupNumOfRegs, indexCnt,pollCnt, regData, pupId;
+    GT_U32 maskDqNumOfRegs, maskPupNumOfRegs, indexCnt,pollCnt, regData, pupId, triggerRegAddr;
     GT_U32 txBurstSize;
     GT_U32 delayBetweenBurst;
     GT_U32 rdMode;
@@ -460,48 +460,47 @@
     }
 
     /*Start Training Trigger */
-#if defined(CONFIG_ARMADA_38X) || defined(CONFIG_ALLEYCAT3) || defined(CONFIG_ARMADA_39X)
-    CHECK_STATUS(mvHwsDdr3TipIFWrite(devNum, accessType, interfaceNum, ODPG_TRAINING_TRIGGER_REG, 1, 1));
-#else
-    CHECK_STATUS(mvHwsDdr3TipIFWrite(devNum, accessType, interfaceNum, ODPG_TRAINING_STATUS_REG, 1, 1));
-#endif
+	triggerRegAddr = (ddr3TipDevAttrGet(devNum, MV_ATTR_TIP_REV) >= MV_TIP_REV_3)?(ODPG_TRAINING_TRIGGER_REG):(ODPG_TRAINING_STATUS_REG);
+    CHECK_STATUS(mvHwsDdr3TipIFWrite(devNum, accessType, interfaceNum, triggerRegAddr, 1, 1));
+
     /*wait for all RFU tests to finish (or timeout)*/
 	/*WA for 16 bit mode, more investigation needed*/
     hwsOsExactDelayPtr((GT_U8)devNum, devNum, 1); /* 1 mSec */
 
-#if defined(CONFIG_ARMADA_38X) || defined(CONFIG_ALLEYCAT3) || defined(CONFIG_ARMADA_39X)
-    /* Training "Done ?" */
-    for(indexCnt=0; indexCnt < MAX_INTERFACE_NUM;indexCnt++)
+    /* Training "Done ?"  for CPU contolled TIP*/
+    if(ddr3TipDevAttrGet(devNum, MV_ATTR_TIP_REV) >= MV_TIP_REV_3)
     {
-        if (IS_INTERFACE_ACTIVE(topologyMap->interfaceActiveMask, indexCnt) ==  0)
-        {
-            continue;   
-        }
-        if (interfaceMask & (1<<indexCnt))
-        {
-            /*need to check results for this Dunit */
-            for(pollCnt=0;pollCnt < maxPollingForDone;pollCnt++)
-            {
-                CHECK_STATUS(mvHwsDdr3TipIFRead(devNum, ACCESS_TYPE_UNICAST, indexCnt, ODPG_TRAINING_STATUS_REG, &regData, MASK_ALL_BITS));
-                 if ((regData & 0x2) != 0)
-                {
-                    /*done */
-                	trainStatus[indexCnt] = MV_HWS_TrainingIpStatus_SUCCESS;
-                    break; 
-                }  
-            }
-            if (pollCnt == maxPollingForDone)
-            {
-                trainStatus[indexCnt] = MV_HWS_TrainingIpStatus_TIMEOUT;
-            }
-        }
-		/*Be sure that ODPG done*/
-        CHECK_STATUS(isOdpgAccessDone(devNum, indexCnt));
-    }
+		for(indexCnt=0; indexCnt < MAX_INTERFACE_NUM;indexCnt++)
+		{
+		    if (IS_INTERFACE_ACTIVE(topologyMap->interfaceActiveMask, indexCnt) ==  0)
+		    {
+		        continue;
+		    }
+		    if (interfaceMask & (1<<indexCnt))
+		    {
+		        /*need to check results for this Dunit */
+		        for(pollCnt=0;pollCnt < maxPollingForDone;pollCnt++)
+		        {
+		            CHECK_STATUS(mvHwsDdr3TipIFRead(devNum, ACCESS_TYPE_UNICAST, indexCnt, ODPG_TRAINING_STATUS_REG, &regData, MASK_ALL_BITS));
+		             if ((regData & 0x2) != 0)
+		            {
+		                /*done */
+						trainStatus[indexCnt] = MV_HWS_TrainingIpStatus_SUCCESS;
+		                break;
+		            }
+		        }
+		        if (pollCnt == maxPollingForDone)
+		        {
+		            trainStatus[indexCnt] = MV_HWS_TrainingIpStatus_TIMEOUT;
+		        }
+		    }
+			/*Be sure that ODPG done*/
+		    CHECK_STATUS(isOdpgAccessDone(devNum, indexCnt));
+		}
 
-	/*Write ODPG done in Dunit*/
-    CHECK_STATUS(mvHwsDdr3TipIFWrite(devNum, ACCESS_TYPE_MULTICAST, PARAM_NOT_CARE, ODPG_STATUS_DONE_REG, 0, 0x1));
-#endif
+		/*Write ODPG done in Dunit*/
+		CHECK_STATUS(mvHwsDdr3TipIFWrite(devNum, ACCESS_TYPE_MULTICAST, PARAM_NOT_CARE, ODPG_STATUS_DONE_REG, 0, 0x1));
+	}
 
     /*wait for all Dunit tests to finish (or timeout)*/
     /* Training "Done ?" */
@@ -510,18 +509,14 @@
     {
         if (IS_INTERFACE_ACTIVE(topologyMap->interfaceActiveMask, indexCnt) ==  0)
         {
-            continue;   
+            continue;
         }
         if (interfaceMask & (1<<indexCnt))
         {
             /*need to check results for this Dunit */
             for(pollCnt=0;pollCnt < maxPollingForDone;pollCnt++)
             {
-#if defined(CONFIG_ARMADA_38X) || defined(CONFIG_ALLEYCAT3) || defined(CONFIG_ARMADA_39X)
-                CHECK_STATUS(mvHwsDdr3TipIFRead(devNum, ACCESS_TYPE_UNICAST, indexCnt, ODPG_TRAINING_TRIGGER_REG, readData, MASK_ALL_BITS));
-#else
-                CHECK_STATUS(mvHwsDdr3TipIFRead(devNum, ACCESS_TYPE_UNICAST, indexCnt, ODPG_TRAINING_STATUS_REG, readData, MASK_ALL_BITS));
-#endif
+                CHECK_STATUS(mvHwsDdr3TipIFRead(devNum, ACCESS_TYPE_UNICAST, indexCnt, triggerRegAddr, readData, MASK_ALL_BITS));
                 regData = readData[indexCnt];
                  if ((regData & 0x2) != 0)
                 {
@@ -532,10 +527,10 @@
                     }
                     else
                     {
-                        trainStatus[indexCnt] = MV_HWS_TrainingIpStatus_FAIL;
+						trainStatus[indexCnt] = MV_HWS_TrainingIpStatus_FAIL;
                     }
-                    break; 
-                }  
+                    break;
+                }
             }
             if (pollCnt == maxPollingForDone)
             {
@@ -853,18 +848,16 @@
     GT_U32 interfaceId
 )
 {
-    GT_U32 pollCnt = 0, dataValue;
+    GT_U32 pollCnt = 0, dataValue, expectedVal;
     GT_U32 readData[MAX_INTERFACE_NUM];
 
     for (pollCnt = 0; pollCnt < MAX_POLLING_ITERATIONS ; pollCnt++)
     {
         CHECK_STATUS(mvHwsDdr3TipIFRead(devNum,ACCESS_TYPE_UNICAST, interfaceId, ODPG_BIST_DONE, readData, MASK_ALL_BITS));
  		dataValue = readData[interfaceId];
-#if defined(CONFIG_ARMADA_38X) || defined(CONFIG_ALLEYCAT3) || defined(CONFIG_ARMADA_39X)
-        if (((dataValue >> ODPG_BIST_DONE_BIT_OFFS )& 0x1) == ODPG_BIST_DONE_BIT_VALUE)
-#else
-        if ((dataValue & 0x1) == 0x1)
-#endif
+
+		expectedVal =  (ddr3TipDevAttrGet(devNum, MV_ATTR_TIP_REV) < MV_TIP_REV_3)?(ODPG_BIST_DONE_BIT_VALUE_REV2):(ODPG_BIST_DONE_BIT_VALUE_REV3);
+        if (((dataValue >> ODPG_BIST_DONE_BIT_OFFS )& 0x1) == expectedVal)
         {
             dataValue = dataValue & 0xfffffffe;
             CHECK_STATUS(mvHwsDdr3TipIFWrite(devNum, ACCESS_TYPE_UNICAST, interfaceId, ODPG_BIST_DONE, dataValue, MASK_ALL_BITS));
@@ -905,18 +898,20 @@
     /* load pattern to ODPG */
     ddr3TipLoadPatternToOdpg(devNum, ACCESS_TYPE_MULTICAST, PARAM_NOT_CARE, pattern, patternTable[pattern].startAddr);
 
-#if defined(CONFIG_ARMADA_38X) || defined(CONFIG_ALLEYCAT3) || defined(CONFIG_ARMADA_39X)
-    for(interfaceId = 0; interfaceId < MAX_INTERFACE_NUM ; interfaceId++)
-    {
-		if (IS_INTERFACE_ACTIVE(topologyMap->interfaceActiveMask, interfaceId) ==  0)
-             continue;
-		CHECK_STATUS(mvHwsDdr3TipIFWrite(devNum, ACCESS_TYPE_UNICAST, interfaceId, 0x1498, 0x3 , 0xf));
-    }
+	if(ddr3TipDevAttrGet(devNum, MV_ATTR_TIP_REV) >= MV_TIP_REV_3)
+	{
+		for(interfaceId = 0; interfaceId < MAX_INTERFACE_NUM ; interfaceId++)
+		{
+			if (IS_INTERFACE_ACTIVE(topologyMap->interfaceActiveMask, interfaceId) ==  0)
+		         continue;
+			CHECK_STATUS(mvHwsDdr3TipIFWrite(devNum, ACCESS_TYPE_UNICAST, interfaceId, SDRAM_ODT_CONTROL_HIGH_REG, 0x3 , 0xf));
+		}
 
-	CHECK_STATUS(mvHwsDdr3TipIFWrite(devNum, ACCESS_TYPE_MULTICAST, PARAM_NOT_CARE, ODPG_ENABLE_REG, 0x1 << ODPG_ENABLE_OFFS,  (0x1 << ODPG_ENABLE_OFFS)));
-#else
+		CHECK_STATUS(mvHwsDdr3TipIFWrite(devNum, ACCESS_TYPE_MULTICAST, PARAM_NOT_CARE, ODPG_ENABLE_REG, 0x1 << ODPG_ENABLE_OFFS,  (0x1 << ODPG_ENABLE_OFFS)));
+	}
+	else {
     CHECK_STATUS(mvHwsDdr3TipIFWrite(devNum, ACCESS_TYPE_MULTICAST, PARAM_NOT_CARE, ODPG_DATA_CONTROL_REG, (GT_U32)(0x1 << 31),  (GT_U32)(0x1 << 31)));
-#endif
+	}
 
     hwsOsExactDelayPtr((GT_U8)devNum, devNum, 1); /* 1 mSec */
 
@@ -931,10 +926,10 @@
     /* return to default */
     CHECK_STATUS(mvHwsDdr3TipIFWrite(devNum, ACCESS_TYPE_MULTICAST, PARAM_NOT_CARE, ODPG_DATA_CONTROL_REG, 0, MASK_ALL_BITS));
 
-#if defined(CONFIG_ARMADA_38X) || defined(CONFIG_ALLEYCAT3) || defined(CONFIG_ARMADA_39X)
-	/*disable odt0 for CS0 training - need to adjust for multy CS*/
-    CHECK_STATUS(mvHwsDdr3TipIFWrite(devNum, ACCESS_TYPE_MULTICAST,PARAM_NOT_CARE , 0x1498, 0x0 , 0xf));
-#endif
+	if(ddr3TipDevAttrGet(devNum, MV_ATTR_TIP_REV) >= MV_TIP_REV_3){
+		/*disable odt0 for CS0 training - need to adjust for multy CS*/
+		CHECK_STATUS(mvHwsDdr3TipIFWrite(devNum, ACCESS_TYPE_MULTICAST,PARAM_NOT_CARE , 0x1498, 0x0 , 0xf));
+	}
 
     /* temporary added */
     hwsOsExactDelayPtr((GT_U8)devNum, devNum, 1);
@@ -942,26 +937,6 @@
 }
 
 /*****************************************************************************
-Load specific pattern to memory using CPU
-******************************************************************************/
-GT_STATUS    ddr3TipLoadPatternToMemByCpu
-(
-    GT_U32          devNum,
-    MV_HWS_PATTERN  pattern,
-    GT_U32          offset
-)
-{
-	/* avoid warnings */
-	devNum = devNum;
-	pattern = pattern;
-	offset = offset;
-
-    /* eranba - TBD */
-    return GT_OK;
-}
-
-
-/*****************************************************************************
 Training search routine
 ******************************************************************************/
 GT_STATUS    ddr3TipIpTrainingWrapperInt
diff --git a/tools/marvell/bin_hdr/src_ddr/ddr3libv2/src/Driver/ddr3/mvHwsDdr3TrainingLeveling.c b/tools/marvell/bin_hdr/src_ddr/ddr3libv2/src/Driver/ddr3/mvHwsDdr3TrainingLeveling.c
index d2af762..0bc14f3 100755
--- a/tools/marvell/bin_hdr/src_ddr/ddr3libv2/src/Driver/ddr3/mvHwsDdr3TrainingLeveling.c
+++ b/tools/marvell/bin_hdr/src_ddr/ddr3libv2/src/Driver/ddr3/mvHwsDdr3TrainingLeveling.c
@@ -235,38 +235,36 @@
     CHECK_STATUS(mvHwsDdr3TipIFWrite(devNum, ACCESS_TYPE_MULTICAST, PARAM_NOT_CARE, TRAINING_REG, (1 << 24) | (1 << 20), (1 << 24) | (1 << 20)));
     CHECK_STATUS(mvHwsDdr3TipIFWrite(devNum, ACCESS_TYPE_MULTICAST, PARAM_NOT_CARE, TRAINING_REG, (GT_U32)(1 << 31), (GT_U32)(1 << 31)));
     /********* trigger training *******************/
-#if defined(CONFIG_ARMADA_38X) || defined(CONFIG_ALLEYCAT3)  || defined(CONFIG_ARMADA_39X) /* Trigger, poll on status and disable ODPG */
-/*    CHECK_STATUS(mvHwsDdr3TipIFWrite(devNum, ACCESS_TYPE_MULTICAST, PARAM_NOT_CARE, ODPG_TRAINING_TRIGGER_REG, 0x1, 0x1)); */
-    CHECK_STATUS(mvHwsDdr3TipIFWrite(devNum, ACCESS_TYPE_MULTICAST, PARAM_NOT_CARE, ODPG_TRAINING_TRIGGER_REG, 0x1, 0x1));
-    CHECK_STATUS(mvHwsDdr3TipIFWrite(devNum, ACCESS_TYPE_MULTICAST, PARAM_NOT_CARE, ODPG_TRAINING_STATUS_REG, 0x1, 0x1));
+	if(ddr3TipDevAttrGet(devNum, MV_ATTR_TIP_REV) >= MV_TIP_REV_3){
+		CHECK_STATUS(mvHwsDdr3TipIFWrite(devNum, ACCESS_TYPE_MULTICAST, PARAM_NOT_CARE, ODPG_TRAINING_TRIGGER_REG, 0x1, 0x1));
 
-	  /*check for training done + results pass*/
-	  if (ddr3TipIfPolling(devNum, ACCESS_TYPE_MULTICAST, PARAM_NOT_CARE, 0x2, 0x2, ODPG_TRAINING_STATUS_REG, MAX_POLLING_ITERATIONS) != GT_OK)
-		  {
-			  DEBUG_LEVELING(DEBUG_LEVEL_ERROR, ("Training Done Failed\n"));
-			  return GT_FAIL;
-		  }
-    for(interfaceId = 0; interfaceId <= MAX_INTERFACE_NUM-1; interfaceId++)
-    {
-        VALIDATE_IF_ACTIVE(topologyMap->interfaceActiveMask, interfaceId)
-	  CHECK_STATUS(mvHwsDdr3TipIFRead(  devNum, ACCESS_TYPE_UNICAST, interfaceId, ODPG_TRAINING_TRIGGER_REG,  dataRead, 0x4));
-	data = dataRead[interfaceId];
-	if(data != 0x0) {
-	  DEBUG_LEVELING(DEBUG_LEVEL_ERROR, ("Training Result Failed\n"));
-	  }
-    }
-	  /*disable ODPG - Back to functional mode*/
-	  CHECK_STATUS(mvHwsDdr3TipIFWrite(devNum, ACCESS_TYPE_MULTICAST, PARAM_NOT_CARE, ODPG_ENABLE_REG, 0x1 << ODPG_DISABLE_OFFS,  (0x1 << ODPG_DISABLE_OFFS)));
-	  if (ddr3TipIfPolling(devNum, ACCESS_TYPE_MULTICAST, PARAM_NOT_CARE, 0x0, 0x1, ODPG_ENABLE_REG, MAX_POLLING_ITERATIONS) != GT_OK)
+		  /*check for training done + results pass*/
+		  if (ddr3TipIfPolling(devNum, ACCESS_TYPE_MULTICAST, PARAM_NOT_CARE, 0x2, 0x2, ODPG_TRAINING_STATUS_REG, MAX_POLLING_ITERATIONS) != GT_OK)
 			  {
-				  DEBUG_LEVELING(DEBUG_LEVEL_ERROR, ("ODPG disable failed "));
+				  DEBUG_LEVELING(DEBUG_LEVEL_ERROR, ("Training Done Failed\n"));
 				  return GT_FAIL;
 			  }
-	  CHECK_STATUS(mvHwsDdr3TipIFWrite(devNum, ACCESS_TYPE_MULTICAST, PARAM_NOT_CARE, ODPG_DATA_CONTROL_REG, 0, MASK_ALL_BITS));
-#else /* Just trigger and go check for results */
-    CHECK_STATUS(mvHwsDdr3TipIFWrite(devNum, ACCESS_TYPE_MULTICAST, PARAM_NOT_CARE, ODPG_TRAINING_STATUS_REG, 0x1, 0x1));
-#endif
-
+		for(interfaceId = 0; interfaceId <= MAX_INTERFACE_NUM-1; interfaceId++)
+		{
+		    VALIDATE_IF_ACTIVE(topologyMap->interfaceActiveMask, interfaceId)
+		  CHECK_STATUS(mvHwsDdr3TipIFRead(  devNum, ACCESS_TYPE_UNICAST, interfaceId, ODPG_TRAINING_TRIGGER_REG,  dataRead, 0x4));
+		data = dataRead[interfaceId];
+		if(data != 0x0) {
+		  DEBUG_LEVELING(DEBUG_LEVEL_ERROR, ("Training Result Failed\n"));
+		  }
+		}
+		  /*disable ODPG - Back to functional mode*/
+		  CHECK_STATUS(mvHwsDdr3TipIFWrite(devNum, ACCESS_TYPE_MULTICAST, PARAM_NOT_CARE, ODPG_ENABLE_REG, 0x1 << ODPG_DISABLE_OFFS,  (0x1 << ODPG_DISABLE_OFFS)));
+		  if (ddr3TipIfPolling(devNum, ACCESS_TYPE_MULTICAST, PARAM_NOT_CARE, 0x0, 0x1, ODPG_ENABLE_REG, MAX_POLLING_ITERATIONS) != GT_OK)
+				  {
+					  DEBUG_LEVELING(DEBUG_LEVEL_ERROR, ("ODPG disable failed "));
+					  return GT_FAIL;
+				  }
+		  CHECK_STATUS(mvHwsDdr3TipIFWrite(devNum, ACCESS_TYPE_MULTICAST, PARAM_NOT_CARE, ODPG_DATA_CONTROL_REG, 0, MASK_ALL_BITS));
+	}
+	else {
+		CHECK_STATUS(mvHwsDdr3TipIFWrite(devNum, ACCESS_TYPE_MULTICAST, PARAM_NOT_CARE, ODPG_TRAINING_STATUS_REG, 0x1, 0x1));
+	}
 		/************ double loop on bus, pup *********/
 		for(interfaceId = 0; interfaceId <= MAX_INTERFACE_NUM-1; interfaceId++)
 		{
@@ -532,37 +530,36 @@
 		CHECK_STATUS(mvHwsDdr3TipIFWrite(devNum, ACCESS_TYPE_MULTICAST, PARAM_NOT_CARE, TRAINING_REG, (1 << 24) | (1 << 20), (1 << 24) | (1 << 20)));
 		CHECK_STATUS(mvHwsDdr3TipIFWrite(devNum, ACCESS_TYPE_MULTICAST, PARAM_NOT_CARE, TRAINING_REG, (GT_U32)(1 << 31), (GT_U32)(1 << 31)));
 		/********* trigger training *******************/
-#if defined(CONFIG_ARMADA_38X) || defined(CONFIG_ARMADA_39X) || defined(CONFIG_ALLEYCAT3) /* Trigger, poll on status and disable ODPG */
-/*    CHECK_STATUS(mvHwsDdr3TipIFWrite(devNum, ACCESS_TYPE_MULTICAST, PARAM_NOT_CARE, ODPG_TRAINING_TRIGGER_REG, 0x1, 0x1)); */
-	    CHECK_STATUS(mvHwsDdr3TipIFWrite(devNum, ACCESS_TYPE_MULTICAST, PARAM_NOT_CARE, ODPG_TRAINING_TRIGGER_REG, 0x1, 0x1));
-		CHECK_STATUS(mvHwsDdr3TipIFWrite(devNum, ACCESS_TYPE_MULTICAST, PARAM_NOT_CARE, ODPG_TRAINING_STATUS_REG, 0x1, 0x1));
+		if(ddr3TipDevAttrGet(devNum, MV_ATTR_TIP_REV) >= MV_TIP_REV_3){
+			CHECK_STATUS(mvHwsDdr3TipIFWrite(devNum, ACCESS_TYPE_MULTICAST, PARAM_NOT_CARE, ODPG_TRAINING_TRIGGER_REG, 0x1, 0x1));
 
-		/*check for training done + results pass*/
-		if (ddr3TipIfPolling(devNum, ACCESS_TYPE_MULTICAST, PARAM_NOT_CARE, 0x2, 0x2, ODPG_TRAINING_STATUS_REG, MAX_POLLING_ITERATIONS) != GT_OK)
+			/*check for training done + results pass*/
+			if (ddr3TipIfPolling(devNum, ACCESS_TYPE_MULTICAST, PARAM_NOT_CARE, 0x2, 0x2, ODPG_TRAINING_STATUS_REG, MAX_POLLING_ITERATIONS) != GT_OK)
+			{
+				 DEBUG_LEVELING(DEBUG_LEVEL_ERROR, ("Training Done Failed\n"));
+				 return GT_FAIL;
+			}
+		for(interfaceId = 0; interfaceId <= MAX_INTERFACE_NUM-1; interfaceId++)
 		{
-			 DEBUG_LEVELING(DEBUG_LEVEL_ERROR, ("Training Done Failed\n"));
-			 return GT_FAIL;
+		    VALIDATE_IF_ACTIVE(topologyMap->interfaceActiveMask, interfaceId)
+			CHECK_STATUS(mvHwsDdr3TipIFRead(devNum, ACCESS_TYPE_UNICAST, interfaceId, ODPG_TRAINING_TRIGGER_REG,  dataRead, 0x4));
+			data = dataRead[interfaceId];
+			if(data != 0x0) {
+				DEBUG_LEVELING(DEBUG_LEVEL_ERROR, ("Training Result Failed\n"));
+			}
 		}
-    for(interfaceId = 0; interfaceId <= MAX_INTERFACE_NUM-1; interfaceId++)
-    {
-        VALIDATE_IF_ACTIVE(topologyMap->interfaceActiveMask, interfaceId)
-		CHECK_STATUS(mvHwsDdr3TipIFRead(devNum, ACCESS_TYPE_UNICAST, interfaceId, ODPG_TRAINING_TRIGGER_REG,  dataRead, 0x4));
-		data = dataRead[interfaceId];
-		if(data != 0x0) {
-			DEBUG_LEVELING(DEBUG_LEVEL_ERROR, ("Training Result Failed\n"));
+			/*disable ODPG - Back to functional mode*/
+			CHECK_STATUS(mvHwsDdr3TipIFWrite(devNum, ACCESS_TYPE_MULTICAST, PARAM_NOT_CARE, ODPG_ENABLE_REG, 0x1 << ODPG_DISABLE_OFFS,  (0x1 << ODPG_DISABLE_OFFS)));
+			if (ddr3TipIfPolling(devNum, ACCESS_TYPE_MULTICAST, PARAM_NOT_CARE, 0x0, 0x1, ODPG_ENABLE_REG, MAX_POLLING_ITERATIONS) != GT_OK)
+			{
+				DEBUG_LEVELING(DEBUG_LEVEL_ERROR, ("ODPG disable failed "));
+				return GT_FAIL;
+			}
+			CHECK_STATUS(mvHwsDdr3TipIFWrite(devNum, ACCESS_TYPE_MULTICAST, PARAM_NOT_CARE, ODPG_DATA_CONTROL_REG, 0, MASK_ALL_BITS));
 		}
-	}
-		/*disable ODPG - Back to functional mode*/
-		CHECK_STATUS(mvHwsDdr3TipIFWrite(devNum, ACCESS_TYPE_MULTICAST, PARAM_NOT_CARE, ODPG_ENABLE_REG, 0x1 << ODPG_DISABLE_OFFS,  (0x1 << ODPG_DISABLE_OFFS)));
-		if (ddr3TipIfPolling(devNum, ACCESS_TYPE_MULTICAST, PARAM_NOT_CARE, 0x0, 0x1, ODPG_ENABLE_REG, MAX_POLLING_ITERATIONS) != GT_OK)
-		{
-			DEBUG_LEVELING(DEBUG_LEVEL_ERROR, ("ODPG disable failed "));
-			return GT_FAIL;
+		else {
+			CHECK_STATUS(mvHwsDdr3TipIFWrite(devNum, ACCESS_TYPE_MULTICAST, PARAM_NOT_CARE, ODPG_TRAINING_STATUS_REG, 0x1, 0x1));
 		}
-		CHECK_STATUS(mvHwsDdr3TipIFWrite(devNum, ACCESS_TYPE_MULTICAST, PARAM_NOT_CARE, ODPG_DATA_CONTROL_REG, 0, MASK_ALL_BITS));
-#else /* Just trigger and go check for results */
-		CHECK_STATUS(mvHwsDdr3TipIFWrite(devNum, ACCESS_TYPE_MULTICAST, PARAM_NOT_CARE, ODPG_TRAINING_STATUS_REG, 0x1, 0x1));
-#endif
 
 		/************ double loop on bus, pup *********/
 		for(interfaceId = 0; interfaceId <= MAX_INTERFACE_NUM-1; interfaceId++)
@@ -732,7 +729,7 @@
 ******************************************************************************/
 GT_STATUS    ddr3TipDynamicWriteLeveling(GT_U32    devNum)
 {
-    GT_U32   regData = 0, iter, interfaceId, busCnt;
+    GT_U32   regData = 0, iter, interfaceId, busCnt, triggerRegAddr;
 	GT_U32   csEnableRegVal[MAX_INTERFACE_NUM] = {0};
     GT_U32   csMask[MAX_INTERFACE_NUM];
     GT_U32   readDataSampleDelayVals[MAX_INTERFACE_NUM] = {0};
@@ -759,10 +756,11 @@
         /* save current cs reg val */
         CHECK_STATUS(mvHwsDdr3TipIFRead(devNum, ACCESS_TYPE_UNICAST, interfaceId, CS_ENABLE_REG, csEnableRegVal, MASK_ALL_BITS));
 
-#if !defined(CONFIG_ARMADA_38X) && !defined(CONFIG_ALLEYCAT3)  && !defined(CONFIG_ARMADA_39X)
-        /* enable multi cs */
-        CHECK_STATUS(mvHwsDdr3TipIFWrite(devNum, ACCESS_TYPE_UNICAST, interfaceId, CS_ENABLE_REG, 0, (1 << 3)));
-#endif
+		if(ddr3TipDevAttrGet(devNum, MV_ATTR_TIP_REV) < MV_TIP_REV_3)
+		{
+		    /* enable multi cs */
+		    CHECK_STATUS(mvHwsDdr3TipIFWrite(devNum, ACCESS_TYPE_UNICAST, interfaceId, CS_ENABLE_REG, 0, (1 << 3)));
+		}
     }
 
 	/************************************************************************/
@@ -800,16 +798,17 @@
 			ddr3TipCalcCsMask(devNum, interfaceId, effective_cs, &csMask[interfaceId]);
 		}
 
-	#if defined(CONFIG_ARMADA_38X) || defined(CONFIG_ALLEYCAT3) || defined(CONFIG_ARMADA_39X)
-		/*Enable Output buffer to relevant CS - Q on , WL on*/
-		CHECK_STATUS(ddr3TipWriteMRSCmd(devNum, csMask, MRS1_CMD, 0x80, 0x1080));
+		if(ddr3TipDevAttrGet(devNum, MV_ATTR_TIP_REV) >= MV_TIP_REV_3)
+		{
+			/*Enable Output buffer to relevant CS - Q on , WL on*/
+			CHECK_STATUS(ddr3TipWriteMRSCmd(devNum, csMask, MRS1_CMD, 0x80, 0x1080));
 
-		/*enable odt for relevant CS*/
-		CHECK_STATUS(mvHwsDdr3TipIFWrite(devNum, ACCESS_TYPE_MULTICAST, PARAM_NOT_CARE, 0x1498, (0x3<<(effective_cs*2)) , 0xf));
-
-	#else
-		CHECK_STATUS(ddr3TipWriteMRSCmd(devNum, csMask, MRS1_CMD, 0xC0, 0x12C4));
-	#endif
+			/*enable odt for relevant CS*/
+			CHECK_STATUS(mvHwsDdr3TipIFWrite(devNum, ACCESS_TYPE_MULTICAST, PARAM_NOT_CARE, 0x1498, (0x3<<(effective_cs*2)) , 0xf));
+		}
+		else {
+			CHECK_STATUS(ddr3TipWriteMRSCmd(devNum, csMask, MRS1_CMD, 0xC0, 0x12C4)); /*FIXME should be same as _CPU case*/
+		}
 
 		/************************************************************************/
 		/*     Phase 2: Set training IP to write leveling mode                  */
@@ -819,14 +818,12 @@
 		/************************************************************************/
 		/*     Phase 3: Trigger training                                        */
 		/************************************************************************/
-	#if defined(CONFIG_ARMADA_38X) || defined(CONFIG_ALLEYCAT3) || defined(CONFIG_ARMADA_39X)
-		CHECK_STATUS(mvHwsDdr3TipIFWrite(devNum, ACCESS_TYPE_MULTICAST, PARAM_NOT_CARE, ODPG_TRAINING_TRIGGER_REG, 0x1, 0x1));
-	#else
-		CHECK_STATUS(mvHwsDdr3TipIFWrite(devNum, ACCESS_TYPE_MULTICAST, PARAM_NOT_CARE, ODPG_TRAINING_STATUS_REG, 0x1, 0x1));
-	#endif
+		triggerRegAddr = (ddr3TipDevAttrGet(devNum, MV_ATTR_TIP_REV) < MV_TIP_REV_3)?(ODPG_TRAINING_STATUS_REG):(ODPG_TRAINING_TRIGGER_REG);
+		CHECK_STATUS(mvHwsDdr3TipIFWrite(devNum, ACCESS_TYPE_MULTICAST, PARAM_NOT_CARE, triggerRegAddr, 0x1, 0x1));
 
 
-	#if defined(CONFIG_ARMADA_38X) || defined(CONFIG_ALLEYCAT3) || defined(CONFIG_ARMADA_39X)
+	if(ddr3TipDevAttrGet(devNum, MV_ATTR_TIP_REV) >= MV_TIP_REV_3)
+	{
 	   for(interfaceId = 0; interfaceId < MAX_INTERFACE_NUM; interfaceId++)
 		{
 			VALIDATE_IF_ACTIVE(topologyMap->interfaceActiveMask, interfaceId)
@@ -836,7 +833,6 @@
 			{
 				DEBUG_LEVELING(DEBUG_LEVEL_ERROR, ("WL: DDR3 poll (4) failed (Data: 0x%x)\n", regData));
 			}
-	#if !defined(CONFIG_ARMADA_38X) /*Disabled. JIRA #1498*/
 			else
 			{
 				CHECK_STATUS(mvHwsDdr3TipIFRead(devNum, ACCESS_TYPE_UNICAST, interfaceId, ODPG_TRAINING_TRIGGER_REG, &regData, (1 << 2)));
@@ -845,10 +841,8 @@
 					DEBUG_LEVELING(DEBUG_LEVEL_ERROR, ("WL: WL failed IF %d regData=0x%x\n",interfaceId,regData));
 				}
 			}
-	#endif
 		}
-	#endif
-
+	}
 		for(interfaceId = 0; interfaceId <= MAX_INTERFACE_NUM-1; interfaceId++)
 		{
 			VALIDATE_IF_ACTIVE(topologyMap->interfaceActiveMask, interfaceId)
@@ -859,14 +853,12 @@
 			}
 			else
 			{
-	#if !defined(CONFIG_ARMADA_38X) /*Disabled. JIRA #1498*/
 				CHECK_STATUS(mvHwsDdr3TipIFRead(devNum, ACCESS_TYPE_UNICAST, interfaceId, ODPG_TRAINING_STATUS_REG, dataRead, (1 << 2)));
 				regData = dataRead[interfaceId];
 				if (regData != 0)
 				{
 					DEBUG_LEVELING(DEBUG_LEVEL_ERROR, ("WL: WL failed IF %d regData=0x%x\n",interfaceId,regData));
 				}
-	#endif
 
 				/* check for training completion per bus */
 				for (busCnt=0; busCnt<octetsPerInterfaceNum; busCnt++)
@@ -921,11 +913,13 @@
 		CHECK_STATUS(mvHwsDdr3TipIFWrite(devNum, ACCESS_TYPE_MULTICAST, PARAM_NOT_CARE,  WR_LEVELING_DQS_PATTERN_REG, 0x0, 0x1));
 
 		/* Update MRS 1 (WL off) */
-	#if defined(CONFIG_ARMADA_38X) || defined(CONFIG_ALLEYCAT3) || defined(CONFIG_ARMADA_39X)
-		CHECK_STATUS(ddr3TipWriteMRSCmd(devNum, csMask0, MRS1_CMD , 0x1000, 0x1080));  // nklein 24.10.13
-	#else
-		CHECK_STATUS(ddr3TipWriteMRSCmd(devNum, csMask0, MRS1_CMD, 0x1000, 0x12C4));
-	#endif
+		if(ddr3TipDevAttrGet(devNum, MV_ATTR_TIP_REV) >= MV_TIP_REV_3)
+		{
+			CHECK_STATUS(ddr3TipWriteMRSCmd(devNum, csMask0, MRS1_CMD , 0x1000, 0x1080));
+		}
+		else {
+			CHECK_STATUS(ddr3TipWriteMRSCmd(devNum, csMask0, MRS1_CMD, 0x1000, 0x12C4)); /*FIXME should be same as _CPU case*/
+		}
 
 		/* Update MRS 1 (return to functional mode - Q on , WL off) */
 		CHECK_STATUS(ddr3TipWriteMRSCmd(devNum, csMask0, MRS1_CMD, 0x0, 0x1080));
@@ -989,10 +983,10 @@
         CHECK_STATUS(mvHwsDdr3TipIFWrite(devNum, ACCESS_TYPE_UNICAST, interfaceId, CS_ENABLE_REG, csEnableRegVal[interfaceId], MASK_ALL_BITS));
     }
 
-#if defined(CONFIG_ARMADA_38X) || defined(CONFIG_ALLEYCAT3) || defined(CONFIG_ARMADA_39X)
-	/*disable modt0 for CS0 training - need to adjust for multy CS*/
-    CHECK_STATUS(mvHwsDdr3TipIFWrite(devNum, ACCESS_TYPE_MULTICAST, PARAM_NOT_CARE, 0x1498, 0x0 , 0xf));
-#endif
+	if(ddr3TipDevAttrGet(devNum, MV_ATTR_TIP_REV) >= MV_TIP_REV_3){
+		/*disable modt0 for CS0 training - need to adjust for multy CS*/
+		CHECK_STATUS(mvHwsDdr3TipIFWrite(devNum, ACCESS_TYPE_MULTICAST, PARAM_NOT_CARE, 0x1498, 0x0 , 0xf));
+	}
     for(interfaceId = 0; interfaceId <= MAX_INTERFACE_NUM-1; interfaceId++)
     {
         VALIDATE_IF_ACTIVE(topologyMap->interfaceActiveMask, interfaceId)
diff --git a/tools/marvell/bin_hdr/src_ddr/ddr3libv2/src/Driver/ddr3/mvHwsDdr3TrainingStatic.c b/tools/marvell/bin_hdr/src_ddr/ddr3libv2/src/Driver/ddr3/mvHwsDdr3TrainingStatic.c
index 1346c54..dcfbbb9 100755
--- a/tools/marvell/bin_hdr/src_ddr/ddr3libv2/src/Driver/ddr3/mvHwsDdr3TrainingStatic.c
+++ b/tools/marvell/bin_hdr/src_ddr/ddr3libv2/src/Driver/ddr3/mvHwsDdr3TrainingStatic.c
@@ -368,7 +368,7 @@
    GT_U32 indexCnt = 0;
 
    DEBUG_TRAINING_STATIC_IP(DEBUG_LEVEL_TRACE, ("ddr3TipStaticInitController\n")); 
-//   for(indexCnt = 0; indexCnt < staticInitControllerConfigLen[devNum]; indexCnt++)
+
 	while(staticInitControllerConfig[devNum][indexCnt].regAddr != 0)
    {
        	CHECK_STATUS(mvHwsDdr3TipIFWrite(devNum,ACCESS_TYPE_MULTICAST, PARAM_NOT_CARE, 
@@ -388,28 +388,12 @@
     GT_U32    devNum
 )
 {
-	//DEBUG_TRAINING_STATIC_IP(DEBUG_LEVEL_TRACE, ("CLK to CTRL skew\n"));
-    //CHECK_STATUS(mvHwsDdr3TipBUSWrite(  devNum, ACCESS_TYPE_MULTICAST, PARAM_NOT_CARE, ACCESS_TYPE_UNICAST, 0x2, DDR_PHY_CONTROL, 0x90, 0x20da));
-
-	//DEBUG_TRAINING_STATIC_IP(DEBUG_LEVEL_TRACE, ("CTRL Ref Delay\n")); /* motib does not efect*/
-    //CHECK_STATUS(mvHwsDdr3TipBUSWrite(  devNum, ACCESS_TYPE_MULTICAST, PARAM_NOT_CARE, ACCESS_TYPE_MULTICAST, PARAM_NOT_CARE, DDR_PHY_CONTROL, 0x1, 0xf));
-     
-	DEBUG_TRAINING_STATIC_IP(DEBUG_LEVEL_TRACE, ("Phy Init Controller 2\n")); 
     CHECK_STATUS(mvHwsDdr3TipBUSWrite(  devNum, ACCESS_TYPE_MULTICAST, PARAM_NOT_CARE, ACCESS_TYPE_MULTICAST, PARAM_NOT_CARE, DDR_PHY_DATA, 0xA4, 0x3dfe));
-	
-	DEBUG_TRAINING_STATIC_IP(DEBUG_LEVEL_TRACE, ("Phy Init Controller 3\n"));
     CHECK_STATUS(mvHwsDdr3TipBUSWrite(  devNum, ACCESS_TYPE_MULTICAST, PARAM_NOT_CARE, ACCESS_TYPE_MULTICAST, PARAM_NOT_CARE, DDR_PHY_DATA, 0xA6, 0xCB2));
-	 
-	DEBUG_TRAINING_STATIC_IP(DEBUG_LEVEL_TRACE, ("Phy Init Controller 4\n"));
     CHECK_STATUS(mvHwsDdr3TipBUSWrite(  devNum, ACCESS_TYPE_MULTICAST, PARAM_NOT_CARE, ACCESS_TYPE_MULTICAST, PARAM_NOT_CARE, DDR_PHY_DATA, 0xA9, 0));
-    
-	DEBUG_TRAINING_STATIC_IP(DEBUG_LEVEL_TRACE, ("Static Receiver Calibration\n"));
 	CHECK_STATUS(mvHwsDdr3TipBUSWrite(  devNum, ACCESS_TYPE_MULTICAST, PARAM_NOT_CARE, ACCESS_TYPE_MULTICAST, PARAM_NOT_CARE, DDR_PHY_DATA, 0xD0, 0x1F));
-	 
-	DEBUG_TRAINING_STATIC_IP(DEBUG_LEVEL_TRACE, ("Static V-REF Calibration\n"));
     CHECK_STATUS(mvHwsDdr3TipBUSWrite(  devNum, ACCESS_TYPE_MULTICAST, PARAM_NOT_CARE, ACCESS_TYPE_MULTICAST, PARAM_NOT_CARE, DDR_PHY_DATA, 0xA8, 0x434));
      
-
     return GT_OK;
 }
 
diff --git a/tools/marvell/bin_hdr/src_ddr/ddr3libv2/src/Silicon/mvHwsDdr3Ac3.c b/tools/marvell/bin_hdr/src_ddr/ddr3libv2/src/Silicon/mvHwsDdr3Ac3.c
index 6eb24b8..467ea1d 100755
--- a/tools/marvell/bin_hdr/src_ddr/ddr3libv2/src/Silicon/mvHwsDdr3Ac3.c
+++ b/tools/marvell/bin_hdr/src_ddr/ddr3libv2/src/Silicon/mvHwsDdr3Ac3.c
@@ -423,7 +423,7 @@
 
 	/*Set device attributes*/
 	ddr3TipDevAttrInit(devNum);
-	ddr3TipDevAttrSet(devNum, MV_ATTR_TRAINING_CONTROLLER, MV_DDR_TRAINING_CONTROLLER_CPU);
+	ddr3TipDevAttrSet(devNum, MV_ATTR_TIP_REV, MV_TIP_REV_3);
 	ddr3TipDevAttrSet(devNum, MV_ATTR_PHY_EDGE, MV_DDR_PHY_EDGE_NEGATIVE);
 	ddr3TipDevAttrSet(devNum, MV_ATTR_OCTET_PER_INTERFACE, numOfBusPerInterface);
 	ddr3TipDevAttrSet(devNum, MV_ATTR_INTERLEAVE_WA, GT_FALSE);
diff --git a/tools/marvell/bin_hdr/src_ddr/ddr3libv2/src/Silicon/mvHwsDdr3Bc2.c b/tools/marvell/bin_hdr/src_ddr/ddr3libv2/src/Silicon/mvHwsDdr3Bc2.c
index c45f640..2687275 100755
--- a/tools/marvell/bin_hdr/src_ddr/ddr3libv2/src/Silicon/mvHwsDdr3Bc2.c
+++ b/tools/marvell/bin_hdr/src_ddr/ddr3libv2/src/Silicon/mvHwsDdr3Bc2.c
@@ -780,7 +780,7 @@
 
 	/*Set device attributes*/
 	ddr3TipDevAttrInit(devNum);
-	ddr3TipDevAttrSet(devNum, MV_ATTR_TRAINING_CONTROLLER, MV_DDR_TRAINING_CONTROLLER_TIP);
+	ddr3TipDevAttrSet(devNum, MV_ATTR_TIP_REV, MV_TIP_REV_2);
 	ddr3TipDevAttrSet(devNum, MV_ATTR_PHY_EDGE, MV_DDR_PHY_EDGE_NEGATIVE);
 	ddr3TipDevAttrSet(devNum, MV_ATTR_OCTET_PER_INTERFACE, BC2_NUMBER_OF_PUP);
 	ddr3TipDevAttrSet(devNum, MV_ATTR_INTERLEAVE_WA, GT_FALSE);
diff --git a/tools/marvell/bin_hdr/src_ddr/ddr3libv2/src/Silicon/mvHwsDdr3NP5.c b/tools/marvell/bin_hdr/src_ddr/ddr3libv2/src/Silicon/mvHwsDdr3NP5.c
index b8de52f..81ab0a3 100644
--- a/tools/marvell/bin_hdr/src_ddr/ddr3libv2/src/Silicon/mvHwsDdr3NP5.c
+++ b/tools/marvell/bin_hdr/src_ddr/ddr3libv2/src/Silicon/mvHwsDdr3NP5.c
@@ -920,7 +920,7 @@
 
 	/*Set device attributes*/
 	ddr3TipDevAttrInit(devNum);
-	ddr3TipDevAttrSet(devNum, MV_ATTR_TRAINING_CONTROLLER, MV_DDR_TRAINING_CONTROLLER_TIP);
+	ddr3TipDevAttrSet(devNum, MV_ATTR_TIP_REV, MV_TIP_REV_1);
 	ddr3TipDevAttrSet(devNum, MV_ATTR_PHY_EDGE, MV_DDR_PHY_EDGE_NEGATIVE);
 	ddr3TipDevAttrSet(devNum, MV_ATTR_OCTET_PER_INTERFACE, numOfBusPerInterface);
 	ddr3TipDevAttrSet(devNum, MV_ATTR_INTERLEAVE_WA, GT_FALSE);
diff --git a/tools/marvell/bin_hdr/src_ddr/ddr3libv2/src/Silicon/mvHwsDdr3a38x.c b/tools/marvell/bin_hdr/src_ddr/ddr3libv2/src/Silicon/mvHwsDdr3a38x.c
index 28dac14..ca0263e 100644
--- a/tools/marvell/bin_hdr/src_ddr/ddr3libv2/src/Silicon/mvHwsDdr3a38x.c
+++ b/tools/marvell/bin_hdr/src_ddr/ddr3libv2/src/Silicon/mvHwsDdr3a38x.c
@@ -289,16 +289,6 @@
 	61
 };
 
-#ifdef CONFIG_ARMADA_38X_Z1_OBSOLETE
-GT_U32 DQbitMap2Phypin[] =
-{
-    1, 0,  2, 3,  6, 7, 8,  9, 	//0
-    0, 1, 10, 3,  6, 7, 8,  9,	//1
-    8, 1,  2, 0, 10, 9, 6,  7,	//2
-    0, 1,  2, 3,  7, 8, 6, 10,	//3
-    0, 1,  2, 3,  6, 7, 8,  9,	//4
-};
-#else
 GT_U32 DQbitMap2Phypin[] =
 {
 	1, 0, 2, 6, 9, 8, 3, 7,	//0
@@ -307,7 +297,6 @@
 	1, 0, 6, 2, 8, 3, 7, 9,	//3
 	0, 1, 2, 9, 7, 8, 3, 6,	//4
 };
-#endif
 
 /**********************************************************************************/
 
@@ -554,7 +543,7 @@
 
 	/*Set device attributes*/
 	ddr3TipDevAttrInit(devNum);
-	ddr3TipDevAttrSet(devNum, MV_ATTR_TRAINING_CONTROLLER, MV_DDR_TRAINING_CONTROLLER_CPU);
+	ddr3TipDevAttrSet(devNum, MV_ATTR_TIP_REV, MV_TIP_REV_4);
 	ddr3TipDevAttrSet(devNum, MV_ATTR_PHY_EDGE, MV_DDR_PHY_EDGE_POSITIVE);
 	ddr3TipDevAttrSet(devNum, MV_ATTR_OCTET_PER_INTERFACE, numOfBusPerInterface);
 #ifdef CONFIG_ARMADA_39X