Add a GFLT110 configuration.
Adds a config for GFLT110, which is just a clone
of the 88F6601 config.
Change-Id: I507ab3c4b51ddf405339c5d20089fe8abf59267e
diff --git a/Makefile b/Makefile
index 581ccb4..27e79d6 100644
--- a/Makefile
+++ b/Makefile
@@ -2694,6 +2694,7 @@
db88f6601bp_config \
rd88f6601mc_config \
gflt200_config \
+gflt110_config \
kw2_test:
@$(MAKE) -s mv_kw2 RULE=$@
mv_kw2: unconfig
@@ -2726,6 +2727,9 @@
elif [ "$(findstring gflt200,$(RULE))" ] ; then \
echo "#define MV88F6601" > $(obj)include/config.h ; \
echo " * Configured for MV88F6601"; \
+ elif [ "$(findstring gflt110,$(RULE))" ] ; then \
+ echo "#define MV88F6601" > $(obj)include/config.h ; \
+ echo " * Configured for MV88F6601"; \
else \
echo " * Error Marvell SoC not configured!"; \
fi;
@@ -2801,6 +2805,12 @@
echo "#define MV_BOOTROM" >> $(obj)include/config.h ; \
echo "MV_DDR_FREQ=256mb_400mhz" >> $(obj)include/config.mk ;\
echo " * Configured for GFLT200"; \
+ elif [ "$(findstring gflt110_config,$(RULE))" ] ; then\
+ echo "#define GFLT110" >> $(obj)include/config.h ; \
+ echo "#define MV_BOOTSIZE_512K" >> $(obj)include/config.h ; \
+ echo "#define MV_BOOTROM" >> $(obj)include/config.h ; \
+ echo "MV_DDR_FREQ=400rd_A-MC" >> $(obj)include/config.mk ;\
+ echo " * Configured for GFLT110"; \
else \
echo " * Error no board was configured"; \
fi;
@@ -2953,6 +2963,8 @@
@if [ "$(findstring gflt200_config,$(RULE))" ] ; then \
echo "#include <configs/gflt200.h>" >> $(obj)include/config.h ; \
+ elif [ "$(findstring gflt110_config,$(RULE))" ] ; then \
+ echo "#include <configs/gflt110.h>" >> $(obj)include/config.h ; \
else \
echo "#include <configs/mv_kw2.h>" >> $(obj)include/config.h ; \
fi ;
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 3efd045..be864ec 100644
--- a/board/mv_feroceon/mv_kw2/kw2_family/boardEnv/mvBoardEnvLib.c
+++ b/board/mv_feroceon/mv_kw2/kw2_family/boardEnv/mvBoardEnvLib.c
@@ -153,21 +153,21 @@
MV_REG_WRITE(GPP_DATA_OUT_REG(0), BOARD_INFO(boardId)->gppOutValLow);
MV_REG_WRITE(GPP_DATA_OUT_REG(1), BOARD_INFO(boardId)->gppOutValMid);
if ((boardId != DB_88F6601_BP_ID) && (boardId != RD_88F6601_MC_ID)
- && (boardId != GFLT200_ID))
+ && (boardId != GFLT200_ID) && (boardId != GFLT110_ID))
MV_REG_WRITE(GPP_DATA_OUT_REG(2), BOARD_INFO(boardId)->gppOutValHigh);
/* set GPP polarity */
mvGppPolaritySet(0, 0xFFFFFFFF, BOARD_INFO(boardId)->gppPolarityValLow);
mvGppPolaritySet(1, 0xFFFFFFFF, BOARD_INFO(boardId)->gppPolarityValMid);
if ((boardId != DB_88F6601_BP_ID) && (boardId != RD_88F6601_MC_ID)
- && (boardId != GFLT200_ID))
+ && (boardId != GFLT200_ID) && (boardId != GFLT110_ID))
mvGppPolaritySet(2, 0xFFFFFFFF, BOARD_INFO(boardId)->gppPolarityValHigh);
/* Set GPP Out Enable */
mvGppTypeSet(0, 0xFFFFFFFF, BOARD_INFO(boardId)->gppOutEnValLow);
mvGppTypeSet(1, 0xFFFFFFFF, BOARD_INFO(boardId)->gppOutEnValMid);
if ((boardId != DB_88F6601_BP_ID) && (boardId != RD_88F6601_MC_ID)
- && (boardId != GFLT200_ID))
+ && (boardId != GFLT200_ID) && (boardId != GFLT110_ID))
mvGppTypeSet(2, 0xFFFFFFFF, BOARD_INFO(boardId)->gppOutEnValHigh);
/* Nand CE */
@@ -351,8 +351,8 @@
return MV_FALSE;
}
- if ((RD_88F6601_MC_ID == mvBoardIdGet())
- || (GFLT200_ID == mvBoardIdGet()))
+ if ((RD_88F6601_MC_ID == mvBoardIdGet()) ||
+ (GFLT200_ID == mvBoardIdGet()) || (GFLT110_ID == mvBoardIdGet()))
return MV_FALSE;
if ((ethPortNum > 0) || (ethCompOpt & ESC_OPT_SGMII_2_SW_P1))
@@ -651,7 +651,7 @@
return MV_ERROR;
}
if ((RD_88F6601_MC_ID == boardId) || (DB_88F6601_BP_ID == boardId)
- || (GFLT200_ID == boardId))
+ || (GFLT200_ID == boardId) || (GFLT110_ID == boardId))
{
return 0;
}
@@ -1253,9 +1253,9 @@
tmpTClkRate = MV_REG_READ(MPP_SAMPLE_AT_RESET(0));
if ((RD_88F6601_MC_ID == boardId) || (DB_88F6601_BP_ID == boardId)
- || (GFLT200_ID == boardId)){
+ || (GFLT200_ID == boardId) || (GFLT110_ID == boardId)) {
tmpTClkRate &= MSAR_TCLCK_6601_MASK;
- if (tmpTClkRate )
+ if (tmpTClkRate )
return MV_BOARD_TCLK_200MHZ;
else
return MV_BOARD_TCLK_166MHZ;
@@ -1309,7 +1309,7 @@
clockSatr = MSAR_CPU_DDR_L2_CLCK_EXTRACT(sar0);
i = 0;
if ((RD_88F6601_MC_ID == boardId) || (DB_88F6601_BP_ID == boardId)
- || (GFLT200_ID == boardId)){
+ || (GFLT200_ID == boardId) || (GFLT110_ID == boardId)) {
while (cpuDdrTbl6601[i].satrValue != -1) {
if (cpuDdrTbl6601[i].satrValue == clockSatr) {
res = i;
@@ -1725,7 +1725,7 @@
BOARD_INFO(boardId)->pBoardMppTypeValue->ethSataComplexOpt = ethConfig;
if ((boardId != DB_88F6601_BP_ID) && (boardId != RD_88F6601_MC_ID)
- && (boardId != GFLT200_ID))
+ && (boardId != GFLT200_ID) && (boardId != GFLT110_ID))
{ /* KW2 only */
/* Update link speed for MAC0 / 1 */
/* If MAC 0 is connected to switch, then set to speed 1000Mbps */
@@ -2356,7 +2356,7 @@
return MV_FALSE;
}
if ((RD_88F6601_MC_ID == mvBoardIdGet())
- || (GFLT200_ID == mvBoardIdGet())) {
+ || (GFLT200_ID == mvBoardIdGet()) || (GFLT110_ID == mvBoardIdGet())) {
if (ethPortNum == 0)
return MV_TRUE;
return MV_FALSE;
@@ -2761,6 +2761,8 @@
tmpBoardId = DB_CUSTOMER_ID;
#elif defined(GFLT200)
tmpBoardId = GFLT200_ID;
+#elif defined(GFLT110)
+ tmpBoardId = GFLT110_ID;
#endif
gBoardId = tmpBoardId;
}
@@ -3572,4 +3574,3 @@
return BOARD_INFO(boardId)->moduleAutoDetect;
}
-
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 b2d2c8a..057de77 100644
--- a/board/mv_feroceon/mv_kw2/kw2_family/boardEnv/mvBoardEnvSpec.c
+++ b/board/mv_feroceon/mv_kw2/kw2_family/boardEnv/mvBoardEnvSpec.c
@@ -1288,6 +1288,135 @@
.moduleAutoDetect = MV_FALSE
};
+/***************************************************************************
+** GFLT110
+****************************************************************************/
+
+MV_BOARD_TWSI_INFO gflt110InfoBoardTwsiDev[] = {
+ /* {{MV_BOARD_DEV_CLASS devClass, MV_U8 twsiDevAddr, MV_U8 twsiDevAddrType}} */
+};
+
+MV_BOARD_MAC_INFO gflt110InfoBoardMacInfo[] = {
+ /* {{MV_BOARD_MAC_SPEED boardMacSpeed, MV_U8 boardEthSmiAddr}} */
+ {BOARD_MAC_SPEED_AUTO, 0x0},
+ {BOARD_MAC_SPEED_AUTO, 0x1},
+ {N_A,N_A}
+};
+
+MV_BOARD_MPP_TYPE_INFO gflt110InfoBoardMppTypeInfo[] = {
+ {
+ .boardMppTdm = MV_BOARD_AUTO,
+ .ethSataComplexOpt = ESC_OPT_GEPHY_MAC0,
+ .ethPortsMode = 0x0
+ }
+};
+
+MV_BOARD_GPP_INFO gflt110InfoBoardGppInfo[] = {
+ /* {{MV_BOARD_GPP_CLASS devClass, MV_U8 gppPinNum}} */
+ {BOARD_GPP_PON_XVR_TX, 17},
+};
+
+MV_DEV_CS_INFO gflt110InfoBoardDeCsInfo[] = {
+ /*{deviceCS, params, devType, devWidth} */
+#ifdef MV_SPI
+ {SPI_CS0, N_A, BOARD_DEV_SPI_FLASH, 8}, /* SPI DEV */
+#endif
+#if !defined(MV_SPI)
+ {N_A, N_A, N_A, N_A} /* No device */
+#endif
+};
+
+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
+ }
+ }
+};
+
+/*
+MV_BOARD_SPEC_INIT gflt110BoardSpecInit[] = {
+ {
+ .reg = PMU_POWER_IF_POLARITY_REG,
+ .mask = (BIT1),
+ .val = 0
+ },
+ {
+ .reg = TBL_TERM,
+ .val = TBL_TERM
+ }
+};
+*/
+MV_BOARD_INFO gflt110Info = {
+ .boardName = "GFLT110",
+ .numBoardMppTypeValue = MV_ARRAY_SIZE(gflt110InfoBoardMppTypeInfo),
+ .pBoardMppTypeValue = gflt110InfoBoardMppTypeInfo,
+ .numBoardMppConfigValue = MV_ARRAY_SIZE(gflt110InfoBoardMppConfigValue),
+ .pBoardMppConfigValue = gflt110InfoBoardMppConfigValue,
+ .intsGppMaskLow = 0,
+ .intsGppMaskMid = 0,
+ .intsGppMaskHigh = 0,
+ .numBoardDeviceIf = MV_ARRAY_SIZE(gflt110InfoBoardDeCsInfo),
+ .pDevCsInfo = gflt110InfoBoardDeCsInfo,
+ .numBoardTwsiDev = MV_ARRAY_SIZE(gflt110InfoBoardTwsiDev),
+ .pBoardTwsiDev = gflt110InfoBoardTwsiDev,
+ .numBoardMacInfo = MV_ARRAY_SIZE(gflt110InfoBoardMacInfo),
+ .pBoardMacInfo = gflt110InfoBoardMacInfo,
+ .numBoardGppInfo = MV_ARRAY_SIZE(gflt110InfoBoardGppInfo),
+ .pBoardGppInfo = gflt110InfoBoardGppInfo,
+ .activeLedsNumber = 0,
+ .pLedGppPin = NULL,
+ .ledsPolarity = 0,
+
+ /* GPP values */
+ .gppOutEnValLow = RD_88F6601_GPP_OUT_ENA_LOW,
+ .gppOutEnValMid = RD_88F6601_GPP_OUT_ENA_MID,
+ .gppOutEnValHigh = 0,
+ .gppOutValLow = RD_88F6601_GPP_OUT_VAL_LOW,
+ .gppOutValMid = RD_88F6601_GPP_OUT_VAL_MID,
+ .gppOutValHigh = 0,
+ .gppPolarityValLow = RD_88F6601_GPP_POL_LOW,
+ .gppPolarityValMid = RD_88F6601_GPP_POL_MID,
+ .gppPolarityValHigh = 0,
+
+ /* External Switch Configuration */
+ .pSwitchInfo = NULL,
+ .switchInfoNum = 0,
+
+ /* PON configuration. */
+ .ponConfigValue = BOARD_GPON_CONFIG,
+
+ /* TDM configuration */
+ /* We hold a different configuration array for each possible slic that
+ ** can be connected to board.
+ ** When modules are scanned, then we select the index of the relevant
+ ** slic's information array.
+ ** For RD and Customers boards we only need to initialize a single
+ ** entry of the arrays below, and set the boardTdmInfoIndex to 0.
+ */
+ .numBoardTdmInfo = {0},
+ .pBoardTdmInt2CsInfo = {NULL},
+ .boardTdmInfoIndex = -1,
+
+ .pBoardSpecInit = NULL, /* gflt110BoardSpecInit, */
+
+ .deepIdlePwrUpDelay = 2400, /* 12uS */
+
+ /* NAND init params */
+ .nandFlashParamsValid = MV_FALSE,
+ .nandFlashReadParams = 0,
+ .nandFlashWriteParams = 0,
+ .nandFlashControl = 0,
+ .pBoardTdmSpiInfo = NULL,
+
+ /* Enable modules auto-detection. */
+ .moduleAutoDetect = MV_FALSE
+};
+
+
MV_BOARD_INFO *boardInfoTbl[] = {
&db88f6535Info,
&rd88f6510Info,
@@ -1297,5 +1426,5 @@
&db88f6601Info,
&rd88f6601Info,
&gflt200Info,
+ &gflt110Info,
};
-
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 9032017..bf66ed3 100644
--- a/board/mv_feroceon/mv_kw2/kw2_family/boardEnv/mvBoardEnvSpec.h
+++ b/board/mv_feroceon/mv_kw2/kw2_family/boardEnv/mvBoardEnvSpec.h
@@ -109,7 +109,8 @@
#define RD_88F6601_MC_ID (BOARD_ID_BASE+0x6)
#define DB_CUSTOMER_ID (BOARD_ID_BASE+0x7)
#define GFLT200_ID DB_CUSTOMER_ID
-#define MV_MAX_BOARD_ID (DB_CUSTOMER_ID + 1)
+#define GFLT110_ID DB_CUSTOMER_ID + 1
+#define MV_MAX_BOARD_ID (DB_CUSTOMER_ID + 2)
/***************************************************************************
** RD-88F6510-SFU
diff --git a/board/mv_feroceon/mv_kw2/kw2_family/cpu/mvCpu.c b/board/mv_feroceon/mv_kw2/kw2_family/cpu/mvCpu.c
index dbb62fa..e30d91f 100644
--- a/board/mv_feroceon/mv_kw2/kw2_family/cpu/mvCpu.c
+++ b/board/mv_feroceon/mv_kw2/kw2_family/cpu/mvCpu.c
@@ -112,7 +112,7 @@
/* Search for a matching entry */
i = 0;
if ((RD_88F6601_MC_ID == boardId) || (DB_88F6601_BP_ID == boardId)
- || (GFLT200_ID == boardId)){
+ || (GFLT200_ID == boardId) || (GFLT110_ID == boardId)){
while (cpuDdrTbl6601[i].satrValue != -1) {
if (cpuDdrTbl6601[i].satrValue == clockSatr) {
res = i;
@@ -161,7 +161,7 @@
return 0;
else {
if ((RD_88F6601_MC_ID == boardId) || (DB_88F6601_BP_ID == boardId)
- || (GFLT200_ID == boardId))
+ || (GFLT200_ID == boardId) || (GFLT110_ID == boardId))
return cpuDdrTbl6601[idx].cpuClk;
else
return cpuDdrL2Tbl[idx].cpuClk;
@@ -195,7 +195,7 @@
return 0;
else {
if ((RD_88F6601_MC_ID == boardId) || (DB_88F6601_BP_ID == boardId)
- || (GFLT200_ID == boardId))
+ || (GFLT200_ID == boardId) || (GFLT110_ID == boardId))
return cpuDdrTbl6601[idx].l2Clk;
else
return cpuDdrL2Tbl[idx].l2Clk;
@@ -224,7 +224,8 @@
if ((RD_88F6510_SFU_ID == mvBoardId) ||
(RD_88F6601_MC_ID == mvBoardId) ||
(DB_88F6601_BP_ID == mvBoardId) ||
- (GFLT200_ID == mvBoardId))
+ (GFLT200_ID == mvBoardId) ||
+ (GFLT110_ID == mvBoardId))
return MV_FALSE;
/* Read S@R register value */
diff --git a/include/configs/gflt110.h b/include/configs/gflt110.h
new file mode 100644
index 0000000..7dff577
--- /dev/null
+++ b/include/configs/gflt110.h
@@ -0,0 +1,5 @@
+#ifndef __LT110_CONFIG_H
+#define __LT110_CONFIG_H
+// The first rev of lt110 matches the reference design.
+#include <configs/mv_kw2.h>
+#endif /* __LT110_CONFIG_H */