bc2: Add support to new RD MTL BC2 board
- Update board scructures for RD MTL BC2 board:
* Remove second OOB port
* Add EEPROM and CPLD TWSI devices
- Allow reading board ID and revision information from CPLD
- Add DDR3 topology for supporting the new board
- For correct support of this board a 24C64 EEPROM should
be installed into socket U7 and programmed with board ID=2
Change-Id: I25f4f5e019630f0785fe3636fc51959b8b5f5c85
Signed-off-by: kostap <kostap@marvell.com>
Reviewed-on: http://vgitil04.il.marvell.com:8080/19289
Reviewed-by: Omri Itach <omrii@marvell.com>
Tested-by: Omri Itach <omrii@marvell.com>
(cherry picked from commit 91eeeacc770dbd58af4ed00976b08417d78fd129)
Reviewed-on: http://vgitil04.il.marvell.com:8080/19717
Tested-by: Star_Automation <star@marvell.com>
diff --git a/board/mv_ebu/msys/msys_family/boardEnv/mvBoardEnvLib.c b/board/mv_ebu/msys/msys_family/boardEnv/mvBoardEnvLib.c
index b75e660..b231f58 100755
--- a/board/mv_ebu/msys/msys_family/boardEnv/mvBoardEnvLib.c
+++ b/board/mv_ebu/msys/msys_family/boardEnv/mvBoardEnvLib.c
@@ -799,30 +799,37 @@
MV_VOID mvBoardCpldConfigurationGet(char *str)
{
MV_U8 cpldTwsiDev, cpldConfig;
+ MV_U8 cpldBoardRevReg = CPLD_BOARD_REV_REG;
+ MV_U16 boardModel;
- /* CPLD board configuration print for AC3 */
- if (mvCtrlDevFamilyIdGet(0) != MV_ALLEYCAT3_DEV_ID)
- return;
+ /* Prevent the caller function from printing the same string twice if this function fails */
+ *str = 0;
+
cpldTwsiDev = mvBoardTwsiAddrGet(BOARD_DEV_TWSI_PLD, 0);
/* verify that CPLD device is available on current board, else return*/
if (cpldTwsiDev == 0xff || mvTwsiProbe(cpldTwsiDev, mvBoardTclkGet()) != MV_TRUE)
return;
+ boardModel = mvBoardModelGet();
+ if (boardModel == RD_MTL_BC2_PCB_ID)
+ cpldBoardRevReg = CPLD_RD_MTL_BC2_BOARD_REV_REG;
+
/* Read Board Revision */
- if (MV_ERROR == mvBoardTwsiRead(BOARD_DEV_TWSI_PLD, 0, CPLD_BOARD_REV_REG, &cpldConfig)) {
+ if (MV_ERROR == mvBoardTwsiRead(BOARD_DEV_TWSI_PLD, 0, cpldBoardRevReg, &cpldConfig)) {
mvOsPrintf("\n%s: Error: failed reading board Revision from CPLD.\n", __func__);
return;
}
sprintf(str, ", Rev %d" , cpldConfig & CPLD_BOARD_REV_MASK);
/* Read CPLD Revision */
- if (MV_ERROR == mvBoardTwsiRead(BOARD_DEV_TWSI_PLD, 0, CPLD_REV_REG, &cpldConfig)) {
- mvOsPrintf("\n%s: Error: failed reading CPLD Revision from CPLD.\n", __func__);
- return;
+ if (boardModel != RD_MTL_BC2_PCB_ID) {
+ if (MV_ERROR == mvBoardTwsiRead(BOARD_DEV_TWSI_PLD, 0, CPLD_REV_REG, &cpldConfig)) {
+ mvOsPrintf("\n%s: Error: failed reading CPLD Revision from CPLD.\n", __func__);
+ return;
+ }
+ sprintf(str, "%s, CPLD Rev %d", str, cpldConfig & CPLD_BOARD_REV_MASK);
}
-
- sprintf(str, "%s, CPLD Rev %d", str, cpldConfig & CPLD_BOARD_REV_MASK);
}
/* Board devices API managments */
diff --git a/board/mv_ebu/msys/msys_family/boardEnv/mvBoardEnvSpec.c b/board/mv_ebu/msys/msys_family/boardEnv/mvBoardEnvSpec.c
index 8b7d4ec..fdae6b1 100644
--- a/board/mv_ebu/msys/msys_family/boardEnv/mvBoardEnvSpec.c
+++ b/board/mv_ebu/msys/msys_family/boardEnv/mvBoardEnvSpec.c
@@ -485,10 +485,15 @@
/*NAND care support for small page chips*/
#define RD_MTL_BC2_BOARD_NAND_CONTROL 0x01c00543
+MV_BOARD_TWSI_INFO bc2_rd_mtlInfoBoardTwsiDev[] = {
+/* {{MV_BOARD_DEV_CLASS devClass, MV_U8 twsiDevAddr, MV_U8 twsiDevAddrType}} */
+ {BOARD_DEV_TWSI_PLD, 0x77, ADDR7_BIT}, /* Access to control PLD reg file */
+ {BOARD_DEV_TWSI_INIT_EPROM, 0x50, ADDR7_BIT}, /* Serial Ini EPROM */
+};
+
MV_BOARD_MAC_INFO bc2_rd_mtlInfoBoardMacInfo[] = {
/* {{MV_BOARD_MAC_SPEED boardMacSpeed, MV_32 boardEthSmiAddr , MV_32 boardEthSmiAddr0;}} */
{BOARD_MAC_SPEED_1000M, 0x0, 0x0 },
- {BOARD_MAC_SPEED_1000M, 0x1, 0x1 },
};
MV_BOARD_MODULE_TYPE_INFO bc2_rd_mtlInfoBoardModTypeInfo[] = {
@@ -515,24 +520,24 @@
};
MV_BOARD_INFO bc2_rd_mtlInfo = {
- .boardName = "RD-BC2-MTL-PoE-2QSFP-6SFP",
+ .boardName = "RD-MTL-BC2-48G-12XG2XLG",
.numBoardMppTypeValue = ARRSZ(bc2_rd_mtlInfoBoardModTypeInfo),
- .pBoardModTypeValue = bc2_rd_mtlInfoBoardModTypeInfo,
+ .pBoardModTypeValue = bc2_rd_mtlInfoBoardModTypeInfo,
.numBoardMppConfigValue = ARRSZ(bc2_rd_mtlInfoBoardMppConfigValue),
.pBoardMppConfigValue = bc2_rd_mtlInfoBoardMppConfigValue,
.intsGppMaskLow = 0,
.intsGppMaskMid = 0,
.intsGppMaskHigh = 0,
.numBoardDeviceIf = ARRSZ(bc2_rd_mtlInfoBoardDeCsInfo),
- .pDevCsInfo = bc2_rd_mtlInfoBoardDeCsInfo,
- .numBoardTwsiDev = 0,
- .pBoardTwsiDev = NULL,
+ .pDevCsInfo = bc2_rd_mtlInfoBoardDeCsInfo,
+ .numBoardTwsiDev = ARRSZ(bc2_rd_mtlInfoBoardTwsiDev),
+ .pBoardTwsiDev = bc2_rd_mtlInfoBoardTwsiDev,
.numBoardMacInfo = ARRSZ(bc2_rd_mtlInfoBoardMacInfo),
.pBoardMacInfo = bc2_rd_mtlInfoBoardMacInfo,
.numBoardGppInfo = 0,
.pBoardGppInfo = NULL,
.activeLedsNumber = 0,
- .pLedGppPin = NULL,
+ .pLedGppPin = NULL,
.ledsPolarity = 0,
/* GPP values */
@@ -551,8 +556,8 @@
.switchInfoNum = 0,
/* NAND init params */
- .nandFlashReadParams = RD_MTL_BC2_BOARD_NAND_READ_PARAMS,
- .nandFlashWriteParams = RD_MTL_BC2_BOARD_NAND_WRITE_PARAMS,
+ .nandFlashReadParams = RD_MTL_BC2_BOARD_NAND_READ_PARAMS,
+ .nandFlashWriteParams = RD_MTL_BC2_BOARD_NAND_WRITE_PARAMS,
.nandFlashControl = RD_MTL_BC2_BOARD_NAND_CONTROL
};
diff --git a/board/mv_ebu/msys/msys_family/boardEnv/mvBoardEnvSpec.h b/board/mv_ebu/msys/msys_family/boardEnv/mvBoardEnvSpec.h
index 7846724..5c3c218 100644
--- a/board/mv_ebu/msys/msys_family/boardEnv/mvBoardEnvSpec.h
+++ b/board/mv_ebu/msys/msys_family/boardEnv/mvBoardEnvSpec.h
@@ -106,6 +106,7 @@
#define INVALID_BOARD_ID 0xFFFF
#define BOARD_ID_INDEX_MASK 0x10 /* Mask used to return board index via board Id */
+#define RD_MTL_BC2_PCB_ID 0x70
#if defined CONFIG_ALLEYCAT3
#define MARVELL_BOARD_ID_BASE AC3_MARVELL_BOARD_ID_BASE
diff --git a/board/mv_ebu/msys/msys_family/ctrlEnv/mvCtrlEnvRegs.h b/board/mv_ebu/msys/msys_family/ctrlEnv/mvCtrlEnvRegs.h
index f1d2632..cbe536a 100644
--- a/board/mv_ebu/msys/msys_family/ctrlEnv/mvCtrlEnvRegs.h
+++ b/board/mv_ebu/msys/msys_family/ctrlEnv/mvCtrlEnvRegs.h
@@ -255,6 +255,7 @@
#define ICDR_UINIT_ID_MASK 0x0F
#define ICDR_UNIT_ID_4_DFX 0x0f
+#define CPLD_RD_MTL_BC2_BOARD_REV_REG 2
#define CPLD_BOARD_REV_REG 1
#define CPLD_BOARD_REV_MASK 0x7
#define CPLD_REV_REG 2
diff --git a/tools/marvell/bin_hdr/inc/ddr3_soc/msys/ddr3_msys_bc2_topology.h b/tools/marvell/bin_hdr/inc/ddr3_soc/msys/ddr3_msys_bc2_topology.h
index 135e162..049fe80 100644
--- a/tools/marvell/bin_hdr/inc/ddr3_soc/msys/ddr3_msys_bc2_topology.h
+++ b/tools/marvell/bin_hdr/inc/ddr3_soc/msys/ddr3_msys_bc2_topology.h
@@ -124,7 +124,18 @@
{{{0x1,0,0,0}, {0x1,0,0,0}, {0x2,0,0,0}, {0x2,0,0,0}, {0,0,0,0}, }, SPEED_BIN_DDR_2133N, BUS_WIDTH_16, MEM_4G, DDR_FREQ_667, 0 , 0 , MV_HWS_TEMP_HIGH} ,
} ,
INTERFACE_BUS_MASK_32BIT /* Buses mask */
- }
+ },
+ /* 3rd Marvell board */
+{
+ 0x10, /* active interfaces #1*/
+ /*cs_mask, mirror, dqs_swap, ck_swap X PUPs speed_bin memory_device_width mem_size frequency casL casWL temperature */
+ { {{{0x1,0,0,0}, {0x1,0,0,0}, {0x2,0,0,0}, {0x2,0,0,0}, {0,0,0,0}}, SPEED_BIN_DDR_2133N, BUS_WIDTH_16, MEM_4G, DDR_FREQ_667, 0 , 0 , MV_HWS_TEMP_HIGH} ,
+ {{{0x1,0,0,0}, {0x1,0,0,0}, {0x2,0,0,0}, {0x2,0,0,0}, {0,0,0,0}}, SPEED_BIN_DDR_2133N, BUS_WIDTH_16, MEM_4G, DDR_FREQ_667, 0 , 0 , MV_HWS_TEMP_HIGH} ,
+ {{{0x1,0,0,0}, {0x1,0,0,0}, {0x2,0,0,0}, {0x2,0,0,0}, {0,0,0,0}}, SPEED_BIN_DDR_2133N, BUS_WIDTH_16, MEM_4G, DDR_FREQ_667, 0 , 0 , MV_HWS_TEMP_HIGH} ,
+ {{{0x1,0,0,0}, {0x1,0,0,0}, {0x2,0,0,0}, {0x2,0,0,0}, {0,0,0,0}}, SPEED_BIN_DDR_2133N, BUS_WIDTH_16, MEM_4G, DDR_FREQ_667, 0 , 0 , MV_HWS_TEMP_HIGH} ,
+ {{{0x1,0,0,0}, {0x1,0,0,0}, {0x2,0,0,0}, {0x2,0,0,0}, {0,0,0,0}}, SPEED_BIN_DDR_2133N, BUS_WIDTH_16, MEM_4G, DDR_FREQ_667, 0 , 0 , MV_HWS_TEMP_HIGH}} ,
+ INTERFACE_BUS_MASK_32BIT /* Buses mask */
+ },
};
#endif /* CONFIG_CUSTOMER_BOARD_SUPPORT */