if (pDCTstat->DIMMValidDCT[Channel] == 0) /* mct_BeforeTrainDQSRdWrPos_D */
continue;
-
pDCTstat->DqsRdWrPos_Saved = 0;
for ( DQSWrDelay = 0; DQSWrDelay < dqsWrDelay_end; DQSWrDelay++) {
pDCTstat->DQSDelay = DQSWrDelay;
*valid = 0;
- if (!pDCTstat->GangedMode) { /* FIXME: not used. */
+ if (!pDCTstat->GangedMode) {
reg_off = 0x100 * Channel;
}
/* get the local base addr of the chipselect */
- reg = 0x40 + (receiver << 2);
+ reg = 0x40 + (receiver << 2) + reg_off;
val = Get_NB32(dev, reg);
val &= ~0x0F;
{
u8 Dimms, DimmNum, MaxDimm, Speed;
u32 val;
+ u32 dct = 0;
+ u32 reg_off = 0;
DimmNum = MrsChipSel >> 20;
MaxDimm = mctGet_NVbits(NV_MAX_DIMMS);
Speed = pDCTstat->DIMMAutoSpeed;
- /* if (dct == 0) */
- Dimms = pDCTstat->MAdimms[0];
+
+ if (pDCTstat->CSPresent_DCT[0] > 0) {
+ dct = 0;
+ } else if (pDCTstat->CSPresent_DCT[1] > 0 ){
+ dct = 1;
+ }
+ reg_off = 0x100 * dct;
+ Dimms = pDCTstat->MAdimms[dct];
val = 0;
if (CtrlWordNum == 0)
static void mct_SendCtrlWrd(struct MCTStatStruc *pMCTstat,
struct DCTStatStruc *pDCTstat, u32 val)
{
+ u32 reg_off = 0;
u32 dev = pDCTstat->dev_dct;
- val |= Get_NB32(dev, 0x7C) & ~0xFFFFFF;
+ if (pDCTstat->CSPresent_DCT[0] > 0) {
+ reg_off = 0;
+ } else if (pDCTstat->CSPresent_DCT[1] > 0 ){
+ reg_off = 0x100;
+ }
+
+ val |= Get_NB32(dev, reg_off + 0x7C) & ~0xFFFFFF;
val |= 1 << SendControlWord;
- Set_NB32(dev, 0x7C, val);
+ Set_NB32(dev, reg_off + 0x7C, val);
do {
- val = Get_NB32(dev, 0x7C);
+ val = Get_NB32(dev, reg_off + 0x7C);
} while (val & (1 << SendControlWord));
}
u8 MrsChipSel;
u32 dev = pDCTstat->dev_dct;
u32 val, cw;
+ u32 reg_off = 0x100 * dct;
mct_Wait(1600);
for (MrsChipSel = 0; MrsChipSel < 8; MrsChipSel ++, MrsChipSel ++) {
if (pDCTstat->CSPresent & (1 << MrsChipSel)) {
- val = Get_NB32(dev, 0xA8);
+ val = Get_NB32(dev, reg_off + 0xA8);
val &= ~(0xF << 8);
switch (MrsChipSel) {
case 7:
val |= (3 << 6) << 8;
}
- Set_NB32(dev, 0xA8, val);
+ Set_NB32(dev, reg_off + 0xA8 , val);
for (cw=0; cw <=15; cw ++) {
mct_Wait(1600);
/*----------------------------------------------------------------------------
UPDATE AS NEEDED
----------------------------------------------------------------------------*/
+#ifndef MAX_NODES_SUPPORTED
#define MAX_NODES_SUPPORTED 8
+#endif
+
+#ifndef MAX_DIMMS_SUPPORTED
#define MAX_DIMMS_SUPPORTED 8
+#endif
+
+#ifndef MAX_CS_SUPPORTED
#define MAX_CS_SUPPORTED 8
+#endif
+
#define MCT_TRNG_KEEPOUT_START 0x00000C00
#define MCT_TRNG_KEEPOUT_END 0x00000CFF