Merge remote-tracking branch 'gfiber-internal/prism_dev' into mergeprism2
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 ccb59e4..ef83280 100644
--- a/board/mv_feroceon/mv_kw2/kw2_family/boardEnv/mvBoardEnvSpec.c
+++ b/board/mv_feroceon/mv_kw2/kw2_family/boardEnv/mvBoardEnvSpec.c
@@ -1434,11 +1434,11 @@
 
 MV_BOARD_MPP_INFO gflt110InfoBoardMppConfigValue[] = {
 	{{
-	  RD_88F6601_MPP0_7,
-	  RD_88F6601_MPP8_15,
-	  RD_88F6601_MPP16_23,
-	  RD_88F6601_MPP24_31,
-	  RD_88F6601_MPP32_37
+	  GFLT110_MPP0_7,
+	  GFLT110_MPP8_15,
+	  GFLT110_MPP16_23,
+	  GFLT110_MPP24_31,
+	  GFLT110_MPP32_37
 	  }
 	 }
 };
@@ -1456,8 +1456,25 @@
 	}
 };
 */
+
+static MV_VOID gflt110BoardEgigaPhyInit(MV_BOARD_INFO *pBoardInfo)
+{
+	MV_U16 value = 0;
+
+	/* pass led control to internal phy */
+	MV_REG_WRITE(LED_MATRIX_CTRL_REG(0), 0x82);
+	/* link     = mpp 25 = C0_LED = phy led[0] */
+	/* activity = mpp 26 = C1_LED = phy led[1] */
+	mvEthPhyRegWrite(0, 22, 3);
+	mvEthPhyRegRead(0, 16, &value);
+	value = (value & ~0xff) | 0x37;
+	mvEthPhyRegWrite(0, 16, value);
+	mvEthPhyRegWrite(0, 22, 0);
+}
+
 MV_BOARD_INFO gflt110Info = {
 	.boardName = "GFLT110",
+	.pBoardEgigaPhyInit = gflt110BoardEgigaPhyInit,
 	.numBoardMppTypeValue = MV_ARRAY_SIZE(gflt110InfoBoardMppTypeInfo),
 	.pBoardMppTypeValue = gflt110InfoBoardMppTypeInfo,
 	.numBoardMppConfigValue = MV_ARRAY_SIZE(gflt110InfoBoardMppConfigValue),
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 8628031..a237696 100644
--- a/board/mv_feroceon/mv_kw2/kw2_family/boardEnv/mvBoardEnvSpec.h
+++ b/board/mv_feroceon/mv_kw2/kw2_family/boardEnv/mvBoardEnvSpec.h
@@ -538,7 +538,7 @@
 #define GFLT110_MPP0_7		0x22222220
 #define GFLT110_MPP8_15		0x00000002
 #define GFLT110_MPP16_23		0x00400000
-#define GFLT110_MPP24_31		0x00200650
+#define GFLT110_MPP24_31		0x00200550
 #define GFLT110_MPP32_37		0x00000000
 
 /* GPPs
diff --git a/board/mv_feroceon/mv_kw2/mv_main.c b/board/mv_feroceon/mv_kw2/mv_main.c
index 4557cc4..f2dd23b 100644
--- a/board/mv_feroceon/mv_kw2/mv_main.c
+++ b/board/mv_feroceon/mv_kw2/mv_main.c
@@ -378,6 +378,44 @@
 	return;
 }
 
+
+// Try to be compatible with both ginstall and prisminstall.
+// Prismintall sets a BOOT_SIDE sysvar, and ginstall sets
+// ACTIVATED_KERNEL_NAME, which is the same as the TV boxes.
+static void set_boot_variables() {
+	// Try to get the boot partition, either from BOOT_SIDE
+	// (set by prisminstall) or ACTIVATED_KERNEL_NAME (set by ginstall)
+	// First look for BOOT_SIDE.
+	char value[SYSVAR_VALUE];
+	if (sf_getvar("BOOT_SIDE", value, SYSVAR_VALUE) == 0) {
+		printf("BOOT_SIDE = %s ", value);
+		if (value[0] == '2' && value[1] == '\0') {
+			printf("Boot from MTD image2 ...\n");
+			setenv("bootcmd","sf read "LOAD_ADDR_STR" 0xF80000 0xE00000;"
+				   "setenv bootargs ${console} ${mtdparts} debug=1 ${mvNetConfig} ${mvPhoneConfig};"
+				   "bootm "LOAD_ADDR_STR";");
+			return;
+		}
+		if (value[0] == '1' && value[1] == '\0') {
+			printf("Boot from MTD image1 ...\n");
+			setenv("bootcmd","sf read "LOAD_ADDR_STR" 0x180000 0xE00000;"
+				   "setenv bootargs ${console} ${mtdparts} debug=1 ${mvNetConfig} ${mvPhoneConfig};"
+				   "bootm "LOAD_ADDR_STR";");
+			return;
+		}
+	}
+
+	// Now look for ACTIVATED_KERNEL_NAME.  Setenv that value and the bootscript
+	// will branch to the right boot location.
+	if (sf_getvar("ACTIVATED_KERNEL_NAME", value, SYSVAR_VALUE) == 0) {
+		setenv("ACTIVATED_KERNEL_NAME", value);
+	} else {
+		setenv("ACTIVATED_KERNEL_NAME", "kernel0");
+    }
+	return;
+}
+
+
 void misc_init_r_env(void){
 	char *env;
 	char tmp_buf[10];
@@ -742,22 +780,7 @@
 ip=${ipaddr}:${serverip}${bootargs_end};bootm "LOAD_ADDR_STR";");
 #endif
 
-	char value[SYSVAR_VALUE];
-	if (sf_getvar("BOOT_SIDE", value, SYSVAR_VALUE) == 0) {
-		printf("BOOT_SIDE = %s ", value);
-		if (value[0] == '2' && value[1] == '\0') {
-			printf("Boot from MTD image2 ...\n");
-			setenv("bootcmd","sf read "LOAD_ADDR_STR" 0xF80000 0xE00000;\
-setenv bootargs ${console} ${mtdparts} debug=1 ${mvNetConfig} ${mvPhoneConfig};\
-bootm "LOAD_ADDR_STR";");
-		}
-		else if (value[0] == '1' && value[1] == '\0') {
-			printf("Boot from MTD image1 ...\n");
-			setenv("bootcmd","sf read "LOAD_ADDR_STR" 0x180000 0xE00000;\
-setenv bootargs ${console} ${mtdparts} debug=1 ${mvNetConfig} ${mvPhoneConfig};\
-bootm "LOAD_ADDR_STR";");
-		}
-	}
+	set_boot_variables();
 #endif /* (CONFIG_BOOTDELAY >= 0) */
 
 	env = getenv("standalone");