Merge "Update GFLT110 config to work on Rev2 boards." into prism_dev
diff --git a/board/mv_feroceon/mv_kw2/kw2_family/boardEnv/mvBoardEnvLib.c b/board/mv_feroceon/mv_kw2/kw2_family/boardEnv/mvBoardEnvLib.c
index 9bbf3ba..a1be610 100644
--- a/board/mv_feroceon/mv_kw2/kw2_family/boardEnv/mvBoardEnvLib.c
+++ b/board/mv_feroceon/mv_kw2/kw2_family/boardEnv/mvBoardEnvLib.c
@@ -129,11 +129,17 @@
 	MV_U32 boardId = mvBoardIdGet();
 	MV_U32 nandDev;
 	MV_32 width;
+	MV_BOARD_INFO *pBoardInfo;
 
 	if (!((boardId >= BOARD_ID_BASE) && (boardId < MV_MAX_BOARD_ID))) {
 		mvOsPrintf("mvBoardEnvInit:Board unknown.\n");
 		return;
 	}
+
+	pBoardInfo = mvBoardInfoGet();
+	if (pBoardInfo->pBoardInit)
+		pBoardInfo->pBoardInit(pBoardInfo);
+
 	nandDev = boardGetDevCSNum(0, BOARD_DEV_NAND_FLASH);
 	if (nandDev != 0xFFFFFFFF) {
 		/* Set NAND interface access parameters */
diff --git a/board/mv_feroceon/mv_kw2/kw2_family/boardEnv/mvBoardEnvLib.h b/board/mv_feroceon/mv_kw2/kw2_family/boardEnv/mvBoardEnvLib.h
index de661d8..0207a74 100644
--- a/board/mv_feroceon/mv_kw2/kw2_family/boardEnv/mvBoardEnvLib.h
+++ b/board/mv_feroceon/mv_kw2/kw2_family/boardEnv/mvBoardEnvLib.h
@@ -401,6 +401,7 @@
 
 typedef struct _boardInfo {
 	char boardName[MV_BOARD_NAME_LEN];
+	MV_VOID (*pBoardInit)(struct _boardInfo *);
 	MV_U8 numBoardMppTypeValue;
 	MV_BOARD_MPP_TYPE_INFO *pBoardMppTypeValue;
 	MV_U8 numBoardMppConfigValue;
diff --git a/board/mv_feroceon/mv_kw2/kw2_family/boardEnv/mvBoardEnvSpec.c b/board/mv_feroceon/mv_kw2/kw2_family/boardEnv/mvBoardEnvSpec.c
index 879b202..655b861 100644
--- a/board/mv_feroceon/mv_kw2/kw2_family/boardEnv/mvBoardEnvSpec.c
+++ b/board/mv_feroceon/mv_kw2/kw2_family/boardEnv/mvBoardEnvSpec.c
@@ -64,6 +64,7 @@
 #include "mvCommon.h"
 #include "mvBoardEnvLib.h"
 #include "mvBoardEnvSpec.h"
+#include "gpp/mvGpp.h"
 #include "twsi/mvTwsi.h"
 
 /***************************************************************************
@@ -1179,7 +1180,7 @@
 	}
 };
 
-MV_BOARD_GPP_INFO gflt200InfoBoardGppInfo[] = {
+MV_BOARD_GPP_INFO gflt200Evt1InfoBoardGppInfo[] = {
 	/* {{MV_BOARD_GPP_CLASS devClass, MV_U8 gppPinNum}} */
 	{BOARD_GPP_PON_XVR_TX, 17},
 	{BOARD_GPP_LED, 11, .name = "pon-red"},
@@ -1198,13 +1199,13 @@
 #endif
 };
 
-MV_BOARD_MPP_INFO gflt200InfoBoardMppConfigValue[] = {
+MV_BOARD_MPP_INFO gflt200Evt1InfoBoardMppConfigValue[] = {
 	{{
-	  GFLT200_MPP0_7,
-	  GFLT200_MPP8_15,
-	  GFLT200_MPP16_23,
-	  GFLT200_MPP24_31,
-	  GFLT200_MPP32_37
+	  GFLT200_EVT1_MPP0_7,
+	  GFLT200_EVT1_MPP8_15,
+	  GFLT200_EVT1_MPP16_23,
+	  GFLT200_EVT1_MPP24_31,
+	  GFLT200_EVT1_MPP32_37
 	  }
 	 }
 };
@@ -1222,12 +1223,39 @@
 	}
 };
 */
+
+#define GFLT200_GPP_BOARD_VER_MASK	((1 << 18) | (1 << 15) | (1 << 13))
+#define GFLT200_EVT1_BOARD_VER		(0)
+
+static MV_VOID gflt200BoardInit(MV_BOARD_INFO *pBoardInfo)
+{
+	mvGppTypeSet(0, GFLT200_GPP_BOARD_VER_MASK, GFLT200_GPP_BOARD_VER_MASK);
+
+	switch (mvGppValueGet(0, GFLT200_GPP_BOARD_VER_MASK)) {
+	case GFLT200_EVT1_BOARD_VER:
+	default: /* latest */
+		pBoardInfo->numBoardMppConfigValue
+			= MV_ARRAY_SIZE(gflt200Evt1InfoBoardMppConfigValue);
+		pBoardInfo->pBoardMppConfigValue
+			= gflt200Evt1InfoBoardMppConfigValue;
+		pBoardInfo->numBoardGppInfo
+			= MV_ARRAY_SIZE(gflt200Evt1InfoBoardGppInfo);
+		pBoardInfo->pBoardGppInfo = gflt200Evt1InfoBoardGppInfo;
+		pBoardInfo->gppOutEnValLow = GFLT200_EVT1_GPP_OUT_ENA_LOW;
+		pBoardInfo->gppOutEnValMid = GFLT200_EVT1_GPP_OUT_ENA_MID;
+		pBoardInfo->gppOutValLow = GFLT200_EVT1_GPP_OUT_VAL_LOW;
+		pBoardInfo->gppOutValMid = GFLT200_EVT1_GPP_OUT_VAL_MID;
+		pBoardInfo->gppPolarityValLow = GFLT200_EVT1_GPP_POL_LOW;
+		pBoardInfo->gppPolarityValMid = GFLT200_EVT1_GPP_POL_MID;
+		break;
+	}
+}
+
 MV_BOARD_INFO gflt200Info = {
 	.boardName = "GFLT200",
+	.pBoardInit = gflt200BoardInit,
 	.numBoardMppTypeValue = MV_ARRAY_SIZE(gflt200InfoBoardMppTypeInfo),
 	.pBoardMppTypeValue = gflt200InfoBoardMppTypeInfo,
-	.numBoardMppConfigValue = MV_ARRAY_SIZE(gflt200InfoBoardMppConfigValue),
-	.pBoardMppConfigValue = gflt200InfoBoardMppConfigValue,
 	.intsGppMaskLow = 0,
 	.intsGppMaskMid = 0,
 	.intsGppMaskHigh = 0,
@@ -1237,21 +1265,13 @@
 	.pBoardTwsiDev = gflt200InfoBoardTwsiDev,
 	.numBoardMacInfo = MV_ARRAY_SIZE(gflt200InfoBoardMacInfo),
 	.pBoardMacInfo = gflt200InfoBoardMacInfo,
-	.numBoardGppInfo = MV_ARRAY_SIZE(gflt200InfoBoardGppInfo),
-	.pBoardGppInfo = gflt200InfoBoardGppInfo,
 	.activeLedsNumber = 0,
 	.pLedGppPin = NULL,
 	.ledsPolarity = 0,
 
 	/* GPP values */
-	.gppOutEnValLow = GFLT200_GPP_OUT_ENA_LOW,
-	.gppOutEnValMid = GFLT200_GPP_OUT_ENA_MID,
 	.gppOutEnValHigh = 0,
-	.gppOutValLow = GFLT200_GPP_OUT_VAL_LOW,
-	.gppOutValMid = GFLT200_GPP_OUT_VAL_MID,
 	.gppOutValHigh = 0,
-	.gppPolarityValLow = GFLT200_GPP_POL_LOW,
-	.gppPolarityValMid = GFLT200_GPP_POL_MID,
 	.gppPolarityValHigh = 0,
 
 	/* External Switch Configuration */
diff --git a/board/mv_feroceon/mv_kw2/kw2_family/boardEnv/mvBoardEnvSpec.h b/board/mv_feroceon/mv_kw2/kw2_family/boardEnv/mvBoardEnvSpec.h
index c229cf3..50ffbd1 100644
--- a/board/mv_feroceon/mv_kw2/kw2_family/boardEnv/mvBoardEnvSpec.h
+++ b/board/mv_feroceon/mv_kw2/kw2_family/boardEnv/mvBoardEnvSpec.h
@@ -466,11 +466,11 @@
 /***************************************************************************
 ** GFLT200
 ****************************************************************************/
-#define GFLT200_MPP0_7			0x22222220
-#define GFLT200_MPP8_15			0x00000002
-#define GFLT200_MPP16_23		0x00000000
-#define GFLT200_MPP24_31		0x40200000
-#define GFLT200_MPP32_37		0x00000004
+#define GFLT200_EVT1_MPP0_7		0x22222220
+#define GFLT200_EVT1_MPP8_15		0x00000002
+#define GFLT200_EVT1_MPP16_23		0x00000000
+#define GFLT200_EVT1_MPP24_31		0x40200000
+#define GFLT200_EVT1_MPP32_37		0x00000004
 
 /* GPPs
  1 SPI_MOSI (out)
@@ -502,14 +502,14 @@
 37 PON_PWR_EN_L (out)
 */
 
-#define GFLT200_GPP_OUT_ENA_LOW		(BIT13 | BIT15 | BIT18 | BIT29)
-#define GFLT200_GPP_OUT_ENA_MID		(BIT4)
+#define GFLT200_EVT1_GPP_OUT_ENA_LOW	(BIT13 | BIT15 | BIT18 | BIT29)
+#define GFLT200_EVT1_GPP_OUT_ENA_MID	(BIT4)
 
-#define GFLT200_GPP_OUT_VAL_LOW		(BIT9 | BIT10 | BIT21 | BIT26 | BIT27 | BIT28)
-#define GFLT200_GPP_OUT_VAL_MID		0x0
+#define GFLT200_EVT1_GPP_OUT_VAL_LOW	(BIT9 | BIT10 | BIT21 | BIT26 | BIT27 | BIT28)
+#define GFLT200_EVT1_GPP_OUT_VAL_MID	0x0
 
-#define GFLT200_GPP_POL_LOW		0x0
-#define GFLT200_GPP_POL_MID		0x0
+#define GFLT200_EVT1_GPP_POL_LOW	0x0
+#define GFLT200_EVT1_GPP_POL_MID	0x0
 
 
 /***************************************************************************