|
@@ -18,14 +18,14 @@
|
|
|
|
|
|
static const uint8_t vref_codes[64] = {
|
|
|
/* lowest to highest */
|
|
|
- 0x3F, 0x3E, 0x3D, 0x3C, 0x3B, 0x3A, 0x39, 0x38,
|
|
|
+ 0x3f, 0x3e, 0x3d, 0x3c, 0x3b, 0x3a, 0x39, 0x38,
|
|
|
0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x30,
|
|
|
- 0x2F, 0x2E, 0x2D, 0x2C, 0x2B, 0x2A, 0x29, 0x28,
|
|
|
+ 0x2f, 0x2e, 0x2d, 0x2c, 0x2b, 0x2a, 0x29, 0x28,
|
|
|
0x27, 0x26, 0x25, 0x24, 0x23, 0x22, 0x21, 0x20,
|
|
|
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
|
|
|
- 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
|
|
|
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
|
|
|
0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
|
|
|
- 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F
|
|
|
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f
|
|
|
};
|
|
|
|
|
|
void mrc_write_mask(u32 unit, u32 addr, u32 data, u32 mask)
|
|
@@ -80,7 +80,7 @@ void select_mem_mgr(void)
|
|
|
ENTERFN();
|
|
|
|
|
|
dco = msg_port_read(MEM_CTLR, DCO);
|
|
|
- dco &= ~BIT28;
|
|
|
+ dco &= ~DCO_PMICTL;
|
|
|
msg_port_write(MEM_CTLR, DCO, dco);
|
|
|
|
|
|
LEAVEFN();
|
|
@@ -94,7 +94,7 @@ void select_hte(void)
|
|
|
ENTERFN();
|
|
|
|
|
|
dco = msg_port_read(MEM_CTLR, DCO);
|
|
|
- dco |= BIT28;
|
|
|
+ dco |= DCO_PMICTL;
|
|
|
msg_port_write(MEM_CTLR, DCO, dco);
|
|
|
|
|
|
LEAVEFN();
|
|
@@ -151,26 +151,25 @@ void set_rcvn(uint8_t channel, uint8_t rank,
|
|
|
* BL0 -> B01PTRCTL0[11:08] (0x0-0xF)
|
|
|
* BL1 -> B01PTRCTL0[23:20] (0x0-0xF)
|
|
|
*/
|
|
|
- reg = B01PTRCTL0 + ((byte_lane >> 1) * DDRIODQ_BL_OFFSET) +
|
|
|
- (channel * DDRIODQ_CH_OFFSET);
|
|
|
- msk = (byte_lane & BIT0) ? (BIT23 | BIT22 | BIT21 | BIT20) :
|
|
|
- (BIT11 | BIT10 | BIT9 | BIT8);
|
|
|
- temp = (byte_lane & BIT0) ? ((pi_count / HALF_CLK) << 20) :
|
|
|
- ((pi_count / HALF_CLK) << 8);
|
|
|
+ reg = B01PTRCTL0 + (byte_lane >> 1) * DDRIODQ_BL_OFFSET +
|
|
|
+ channel * DDRIODQ_CH_OFFSET;
|
|
|
+ msk = (byte_lane & 1) ? 0xf00000 : 0xf00;
|
|
|
+ temp = (byte_lane & 1) ? (pi_count / HALF_CLK) << 20 :
|
|
|
+ (pi_count / HALF_CLK) << 8;
|
|
|
mrc_alt_write_mask(DDRPHY, reg, temp, msk);
|
|
|
|
|
|
/* Adjust PI_COUNT */
|
|
|
- pi_count -= ((pi_count / HALF_CLK) & 0xF) * HALF_CLK;
|
|
|
+ pi_count -= ((pi_count / HALF_CLK) & 0xf) * HALF_CLK;
|
|
|
|
|
|
/*
|
|
|
* PI (1/64 MCLK, 1 PIs)
|
|
|
* BL0 -> B0DLLPICODER0[29:24] (0x00-0x3F)
|
|
|
* BL1 -> B1DLLPICODER0[29:24] (0x00-0x3F)
|
|
|
*/
|
|
|
- reg = (byte_lane & BIT0) ? B1DLLPICODER0 : B0DLLPICODER0;
|
|
|
- reg += (((byte_lane >> 1) * DDRIODQ_BL_OFFSET) +
|
|
|
- (channel * DDRIODQ_CH_OFFSET));
|
|
|
- msk = (BIT29 | BIT28 | BIT27 | BIT26 | BIT25 | BIT24);
|
|
|
+ reg = (byte_lane & 1) ? B1DLLPICODER0 : B0DLLPICODER0;
|
|
|
+ reg += ((byte_lane >> 1) * DDRIODQ_BL_OFFSET +
|
|
|
+ channel * DDRIODQ_CH_OFFSET);
|
|
|
+ msk = 0x3f000000;
|
|
|
temp = pi_count << 24;
|
|
|
mrc_alt_write_mask(DDRPHY, reg, temp, msk);
|
|
|
|
|
@@ -179,25 +178,25 @@ void set_rcvn(uint8_t channel, uint8_t rank,
|
|
|
* BL0/1 -> B01DBCTL1[08/11] (+1 select)
|
|
|
* BL0/1 -> B01DBCTL1[02/05] (enable)
|
|
|
*/
|
|
|
- reg = B01DBCTL1 + ((byte_lane >> 1) * DDRIODQ_BL_OFFSET) +
|
|
|
- (channel * DDRIODQ_CH_OFFSET);
|
|
|
+ reg = B01DBCTL1 + (byte_lane >> 1) * DDRIODQ_BL_OFFSET +
|
|
|
+ channel * DDRIODQ_CH_OFFSET;
|
|
|
msk = 0x00;
|
|
|
temp = 0x00;
|
|
|
|
|
|
/* enable */
|
|
|
- msk |= (byte_lane & BIT0) ? BIT5 : BIT2;
|
|
|
+ msk |= (byte_lane & 1) ? (1 << 5) : (1 << 2);
|
|
|
if ((pi_count < EARLY_DB) || (pi_count > LATE_DB))
|
|
|
temp |= msk;
|
|
|
|
|
|
/* select */
|
|
|
- msk |= (byte_lane & BIT0) ? BIT11 : BIT8;
|
|
|
+ msk |= (byte_lane & 1) ? (1 << 11) : (1 << 8);
|
|
|
if (pi_count < EARLY_DB)
|
|
|
temp |= msk;
|
|
|
|
|
|
mrc_alt_write_mask(DDRPHY, reg, temp, msk);
|
|
|
|
|
|
/* error check */
|
|
|
- if (pi_count > 0x3F) {
|
|
|
+ if (pi_count > 0x3f) {
|
|
|
training_message(channel, rank, byte_lane);
|
|
|
mrc_post_code(0xee, 0xe0);
|
|
|
}
|
|
@@ -224,11 +223,11 @@ uint32_t get_rcvn(uint8_t channel, uint8_t rank, uint8_t byte_lane)
|
|
|
* BL0 -> B01PTRCTL0[11:08] (0x0-0xF)
|
|
|
* BL1 -> B01PTRCTL0[23:20] (0x0-0xF)
|
|
|
*/
|
|
|
- reg = B01PTRCTL0 + ((byte_lane >> 1) * DDRIODQ_BL_OFFSET) +
|
|
|
- (channel * DDRIODQ_CH_OFFSET);
|
|
|
+ reg = B01PTRCTL0 + (byte_lane >> 1) * DDRIODQ_BL_OFFSET +
|
|
|
+ channel * DDRIODQ_CH_OFFSET;
|
|
|
temp = msg_port_alt_read(DDRPHY, reg);
|
|
|
- temp >>= (byte_lane & BIT0) ? 20 : 8;
|
|
|
- temp &= 0xF;
|
|
|
+ temp >>= (byte_lane & 1) ? 20 : 8;
|
|
|
+ temp &= 0xf;
|
|
|
|
|
|
/* Adjust PI_COUNT */
|
|
|
pi_count = temp * HALF_CLK;
|
|
@@ -238,12 +237,12 @@ uint32_t get_rcvn(uint8_t channel, uint8_t rank, uint8_t byte_lane)
|
|
|
* BL0 -> B0DLLPICODER0[29:24] (0x00-0x3F)
|
|
|
* BL1 -> B1DLLPICODER0[29:24] (0x00-0x3F)
|
|
|
*/
|
|
|
- reg = (byte_lane & BIT0) ? B1DLLPICODER0 : B0DLLPICODER0;
|
|
|
- reg += (((byte_lane >> 1) * DDRIODQ_BL_OFFSET) +
|
|
|
- (channel * DDRIODQ_CH_OFFSET));
|
|
|
+ reg = (byte_lane & 1) ? B1DLLPICODER0 : B0DLLPICODER0;
|
|
|
+ reg += ((byte_lane >> 1) * DDRIODQ_BL_OFFSET +
|
|
|
+ channel * DDRIODQ_CH_OFFSET);
|
|
|
temp = msg_port_alt_read(DDRPHY, reg);
|
|
|
temp >>= 24;
|
|
|
- temp &= 0x3F;
|
|
|
+ temp &= 0x3f;
|
|
|
|
|
|
/* Adjust PI_COUNT */
|
|
|
pi_count += temp;
|
|
@@ -275,10 +274,10 @@ void set_rdqs(uint8_t channel, uint8_t rank,
|
|
|
* BL0 -> B0RXDQSPICODE[06:00] (0x00-0x47)
|
|
|
* BL1 -> B1RXDQSPICODE[06:00] (0x00-0x47)
|
|
|
*/
|
|
|
- reg = (byte_lane & BIT0) ? B1RXDQSPICODE : B0RXDQSPICODE;
|
|
|
- reg += (((byte_lane >> 1) * DDRIODQ_BL_OFFSET) +
|
|
|
- (channel * DDRIODQ_CH_OFFSET));
|
|
|
- msk = (BIT6 | BIT5 | BIT4 | BIT3 | BIT2 | BIT1 | BIT0);
|
|
|
+ reg = (byte_lane & 1) ? B1RXDQSPICODE : B0RXDQSPICODE;
|
|
|
+ reg += ((byte_lane >> 1) * DDRIODQ_BL_OFFSET +
|
|
|
+ channel * DDRIODQ_CH_OFFSET);
|
|
|
+ msk = 0x7f;
|
|
|
temp = pi_count << 0;
|
|
|
mrc_alt_write_mask(DDRPHY, reg, temp, msk);
|
|
|
|
|
@@ -310,13 +309,13 @@ uint32_t get_rdqs(uint8_t channel, uint8_t rank, uint8_t byte_lane)
|
|
|
* BL0 -> B0RXDQSPICODE[06:00] (0x00-0x47)
|
|
|
* BL1 -> B1RXDQSPICODE[06:00] (0x00-0x47)
|
|
|
*/
|
|
|
- reg = (byte_lane & BIT0) ? B1RXDQSPICODE : B0RXDQSPICODE;
|
|
|
- reg += (((byte_lane >> 1) * DDRIODQ_BL_OFFSET) +
|
|
|
- (channel * DDRIODQ_CH_OFFSET));
|
|
|
+ reg = (byte_lane & 1) ? B1RXDQSPICODE : B0RXDQSPICODE;
|
|
|
+ reg += ((byte_lane >> 1) * DDRIODQ_BL_OFFSET +
|
|
|
+ channel * DDRIODQ_CH_OFFSET);
|
|
|
temp = msg_port_alt_read(DDRPHY, reg);
|
|
|
|
|
|
/* Adjust PI_COUNT */
|
|
|
- pi_count = temp & 0x7F;
|
|
|
+ pi_count = temp & 0x7f;
|
|
|
|
|
|
LEAVEFN();
|
|
|
|
|
@@ -346,26 +345,25 @@ void set_wdqs(uint8_t channel, uint8_t rank,
|
|
|
* BL0 -> B01PTRCTL0[07:04] (0x0-0xF)
|
|
|
* BL1 -> B01PTRCTL0[19:16] (0x0-0xF)
|
|
|
*/
|
|
|
- reg = B01PTRCTL0 + ((byte_lane >> 1) * DDRIODQ_BL_OFFSET) +
|
|
|
- (channel * DDRIODQ_CH_OFFSET);
|
|
|
- msk = (byte_lane & BIT0) ? (BIT19 | BIT18 | BIT17 | BIT16) :
|
|
|
- (BIT7 | BIT6 | BIT5 | BIT4);
|
|
|
+ reg = B01PTRCTL0 + (byte_lane >> 1) * DDRIODQ_BL_OFFSET +
|
|
|
+ channel * DDRIODQ_CH_OFFSET;
|
|
|
+ msk = (byte_lane & 1) ? 0xf0000 : 0xf0;
|
|
|
temp = pi_count / HALF_CLK;
|
|
|
- temp <<= (byte_lane & BIT0) ? 16 : 4;
|
|
|
+ temp <<= (byte_lane & 1) ? 16 : 4;
|
|
|
mrc_alt_write_mask(DDRPHY, reg, temp, msk);
|
|
|
|
|
|
/* Adjust PI_COUNT */
|
|
|
- pi_count -= ((pi_count / HALF_CLK) & 0xF) * HALF_CLK;
|
|
|
+ pi_count -= ((pi_count / HALF_CLK) & 0xf) * HALF_CLK;
|
|
|
|
|
|
/*
|
|
|
* PI (1/64 MCLK, 1 PIs)
|
|
|
* BL0 -> B0DLLPICODER0[21:16] (0x00-0x3F)
|
|
|
* BL1 -> B1DLLPICODER0[21:16] (0x00-0x3F)
|
|
|
*/
|
|
|
- reg = (byte_lane & BIT0) ? B1DLLPICODER0 : B0DLLPICODER0;
|
|
|
- reg += (((byte_lane >> 1) * DDRIODQ_BL_OFFSET) +
|
|
|
- (channel * DDRIODQ_CH_OFFSET));
|
|
|
- msk = (BIT21 | BIT20 | BIT19 | BIT18 | BIT17 | BIT16);
|
|
|
+ reg = (byte_lane & 1) ? B1DLLPICODER0 : B0DLLPICODER0;
|
|
|
+ reg += ((byte_lane >> 1) * DDRIODQ_BL_OFFSET +
|
|
|
+ channel * DDRIODQ_CH_OFFSET);
|
|
|
+ msk = 0x3f0000;
|
|
|
temp = pi_count << 16;
|
|
|
mrc_alt_write_mask(DDRPHY, reg, temp, msk);
|
|
|
|
|
@@ -374,25 +372,25 @@ void set_wdqs(uint8_t channel, uint8_t rank,
|
|
|
* BL0/1 -> B01DBCTL1[07/10] (+1 select)
|
|
|
* BL0/1 -> B01DBCTL1[01/04] (enable)
|
|
|
*/
|
|
|
- reg = B01DBCTL1 + ((byte_lane >> 1) * DDRIODQ_BL_OFFSET) +
|
|
|
- (channel * DDRIODQ_CH_OFFSET);
|
|
|
+ reg = B01DBCTL1 + (byte_lane >> 1) * DDRIODQ_BL_OFFSET +
|
|
|
+ channel * DDRIODQ_CH_OFFSET;
|
|
|
msk = 0x00;
|
|
|
temp = 0x00;
|
|
|
|
|
|
/* enable */
|
|
|
- msk |= (byte_lane & BIT0) ? BIT4 : BIT1;
|
|
|
+ msk |= (byte_lane & 1) ? (1 << 4) : (1 << 1);
|
|
|
if ((pi_count < EARLY_DB) || (pi_count > LATE_DB))
|
|
|
temp |= msk;
|
|
|
|
|
|
/* select */
|
|
|
- msk |= (byte_lane & BIT0) ? BIT10 : BIT7;
|
|
|
+ msk |= (byte_lane & 1) ? (1 << 10) : (1 << 7);
|
|
|
if (pi_count < EARLY_DB)
|
|
|
temp |= msk;
|
|
|
|
|
|
mrc_alt_write_mask(DDRPHY, reg, temp, msk);
|
|
|
|
|
|
/* error check */
|
|
|
- if (pi_count > 0x3F) {
|
|
|
+ if (pi_count > 0x3f) {
|
|
|
training_message(channel, rank, byte_lane);
|
|
|
mrc_post_code(0xee, 0xe2);
|
|
|
}
|
|
@@ -419,11 +417,11 @@ uint32_t get_wdqs(uint8_t channel, uint8_t rank, uint8_t byte_lane)
|
|
|
* BL0 -> B01PTRCTL0[07:04] (0x0-0xF)
|
|
|
* BL1 -> B01PTRCTL0[19:16] (0x0-0xF)
|
|
|
*/
|
|
|
- reg = B01PTRCTL0 + ((byte_lane >> 1) * DDRIODQ_BL_OFFSET) +
|
|
|
- (channel * DDRIODQ_CH_OFFSET);
|
|
|
+ reg = B01PTRCTL0 + (byte_lane >> 1) * DDRIODQ_BL_OFFSET +
|
|
|
+ channel * DDRIODQ_CH_OFFSET;
|
|
|
temp = msg_port_alt_read(DDRPHY, reg);
|
|
|
- temp >>= (byte_lane & BIT0) ? 16 : 4;
|
|
|
- temp &= 0xF;
|
|
|
+ temp >>= (byte_lane & 1) ? 16 : 4;
|
|
|
+ temp &= 0xf;
|
|
|
|
|
|
/* Adjust PI_COUNT */
|
|
|
pi_count = (temp * HALF_CLK);
|
|
@@ -433,12 +431,12 @@ uint32_t get_wdqs(uint8_t channel, uint8_t rank, uint8_t byte_lane)
|
|
|
* BL0 -> B0DLLPICODER0[21:16] (0x00-0x3F)
|
|
|
* BL1 -> B1DLLPICODER0[21:16] (0x00-0x3F)
|
|
|
*/
|
|
|
- reg = (byte_lane & BIT0) ? B1DLLPICODER0 : B0DLLPICODER0;
|
|
|
- reg += (((byte_lane >> 1) * DDRIODQ_BL_OFFSET) +
|
|
|
- (channel * DDRIODQ_CH_OFFSET));
|
|
|
+ reg = (byte_lane & 1) ? B1DLLPICODER0 : B0DLLPICODER0;
|
|
|
+ reg += ((byte_lane >> 1) * DDRIODQ_BL_OFFSET +
|
|
|
+ channel * DDRIODQ_CH_OFFSET);
|
|
|
temp = msg_port_alt_read(DDRPHY, reg);
|
|
|
temp >>= 16;
|
|
|
- temp &= 0x3F;
|
|
|
+ temp &= 0x3f;
|
|
|
|
|
|
/* Adjust PI_COUNT */
|
|
|
pi_count += temp;
|
|
@@ -471,26 +469,25 @@ void set_wdq(uint8_t channel, uint8_t rank,
|
|
|
* BL0 -> B01PTRCTL0[03:00] (0x0-0xF)
|
|
|
* BL1 -> B01PTRCTL0[15:12] (0x0-0xF)
|
|
|
*/
|
|
|
- reg = B01PTRCTL0 + ((byte_lane >> 1) * DDRIODQ_BL_OFFSET) +
|
|
|
- (channel * DDRIODQ_CH_OFFSET);
|
|
|
- msk = (byte_lane & BIT0) ? (BIT15 | BIT14 | BIT13 | BIT12) :
|
|
|
- (BIT3 | BIT2 | BIT1 | BIT0);
|
|
|
+ reg = B01PTRCTL0 + (byte_lane >> 1) * DDRIODQ_BL_OFFSET +
|
|
|
+ channel * DDRIODQ_CH_OFFSET;
|
|
|
+ msk = (byte_lane & 1) ? 0xf000 : 0xf;
|
|
|
temp = pi_count / HALF_CLK;
|
|
|
- temp <<= (byte_lane & BIT0) ? 12 : 0;
|
|
|
+ temp <<= (byte_lane & 1) ? 12 : 0;
|
|
|
mrc_alt_write_mask(DDRPHY, reg, temp, msk);
|
|
|
|
|
|
/* Adjust PI_COUNT */
|
|
|
- pi_count -= ((pi_count / HALF_CLK) & 0xF) * HALF_CLK;
|
|
|
+ pi_count -= ((pi_count / HALF_CLK) & 0xf) * HALF_CLK;
|
|
|
|
|
|
/*
|
|
|
* PI (1/64 MCLK, 1 PIs)
|
|
|
* BL0 -> B0DLLPICODER0[13:08] (0x00-0x3F)
|
|
|
* BL1 -> B1DLLPICODER0[13:08] (0x00-0x3F)
|
|
|
*/
|
|
|
- reg = (byte_lane & BIT0) ? B1DLLPICODER0 : B0DLLPICODER0;
|
|
|
- reg += (((byte_lane >> 1) * DDRIODQ_BL_OFFSET) +
|
|
|
- (channel * DDRIODQ_CH_OFFSET));
|
|
|
- msk = (BIT13 | BIT12 | BIT11 | BIT10 | BIT9 | BIT8);
|
|
|
+ reg = (byte_lane & 1) ? B1DLLPICODER0 : B0DLLPICODER0;
|
|
|
+ reg += ((byte_lane >> 1) * DDRIODQ_BL_OFFSET +
|
|
|
+ channel * DDRIODQ_CH_OFFSET);
|
|
|
+ msk = 0x3f00;
|
|
|
temp = pi_count << 8;
|
|
|
mrc_alt_write_mask(DDRPHY, reg, temp, msk);
|
|
|
|
|
@@ -499,25 +496,25 @@ void set_wdq(uint8_t channel, uint8_t rank,
|
|
|
* BL0/1 -> B01DBCTL1[06/09] (+1 select)
|
|
|
* BL0/1 -> B01DBCTL1[00/03] (enable)
|
|
|
*/
|
|
|
- reg = B01DBCTL1 + ((byte_lane >> 1) * DDRIODQ_BL_OFFSET) +
|
|
|
- (channel * DDRIODQ_CH_OFFSET);
|
|
|
+ reg = B01DBCTL1 + (byte_lane >> 1) * DDRIODQ_BL_OFFSET +
|
|
|
+ channel * DDRIODQ_CH_OFFSET;
|
|
|
msk = 0x00;
|
|
|
temp = 0x00;
|
|
|
|
|
|
/* enable */
|
|
|
- msk |= (byte_lane & BIT0) ? BIT3 : BIT0;
|
|
|
+ msk |= (byte_lane & 1) ? (1 << 3) : (1 << 0);
|
|
|
if ((pi_count < EARLY_DB) || (pi_count > LATE_DB))
|
|
|
temp |= msk;
|
|
|
|
|
|
/* select */
|
|
|
- msk |= (byte_lane & BIT0) ? BIT9 : BIT6;
|
|
|
+ msk |= (byte_lane & 1) ? (1 << 9) : (1 << 6);
|
|
|
if (pi_count < EARLY_DB)
|
|
|
temp |= msk;
|
|
|
|
|
|
mrc_alt_write_mask(DDRPHY, reg, temp, msk);
|
|
|
|
|
|
/* error check */
|
|
|
- if (pi_count > 0x3F) {
|
|
|
+ if (pi_count > 0x3f) {
|
|
|
training_message(channel, rank, byte_lane);
|
|
|
mrc_post_code(0xee, 0xe3);
|
|
|
}
|
|
@@ -544,11 +541,11 @@ uint32_t get_wdq(uint8_t channel, uint8_t rank, uint8_t byte_lane)
|
|
|
* BL0 -> B01PTRCTL0[03:00] (0x0-0xF)
|
|
|
* BL1 -> B01PTRCTL0[15:12] (0x0-0xF)
|
|
|
*/
|
|
|
- reg = B01PTRCTL0 + ((byte_lane >> 1) * DDRIODQ_BL_OFFSET) +
|
|
|
- (channel * DDRIODQ_CH_OFFSET);
|
|
|
+ reg = B01PTRCTL0 + (byte_lane >> 1) * DDRIODQ_BL_OFFSET +
|
|
|
+ channel * DDRIODQ_CH_OFFSET;
|
|
|
temp = msg_port_alt_read(DDRPHY, reg);
|
|
|
- temp >>= (byte_lane & BIT0) ? (12) : (0);
|
|
|
- temp &= 0xF;
|
|
|
+ temp >>= (byte_lane & 1) ? 12 : 0;
|
|
|
+ temp &= 0xf;
|
|
|
|
|
|
/* Adjust PI_COUNT */
|
|
|
pi_count = temp * HALF_CLK;
|
|
@@ -558,12 +555,12 @@ uint32_t get_wdq(uint8_t channel, uint8_t rank, uint8_t byte_lane)
|
|
|
* BL0 -> B0DLLPICODER0[13:08] (0x00-0x3F)
|
|
|
* BL1 -> B1DLLPICODER0[13:08] (0x00-0x3F)
|
|
|
*/
|
|
|
- reg = (byte_lane & BIT0) ? B1DLLPICODER0 : B0DLLPICODER0;
|
|
|
- reg += (((byte_lane >> 1) * DDRIODQ_BL_OFFSET) +
|
|
|
- (channel * DDRIODQ_CH_OFFSET));
|
|
|
+ reg = (byte_lane & 1) ? B1DLLPICODER0 : B0DLLPICODER0;
|
|
|
+ reg += ((byte_lane >> 1) * DDRIODQ_BL_OFFSET +
|
|
|
+ channel * DDRIODQ_CH_OFFSET);
|
|
|
temp = msg_port_alt_read(DDRPHY, reg);
|
|
|
temp >>= 8;
|
|
|
- temp &= 0x3F;
|
|
|
+ temp &= 0x3f;
|
|
|
|
|
|
/* Adjust PI_COUNT */
|
|
|
pi_count += temp;
|
|
@@ -589,14 +586,14 @@ void set_wcmd(uint8_t channel, uint32_t pi_count)
|
|
|
* RDPTR (1/2 MCLK, 64 PIs)
|
|
|
* CMDPTRREG[11:08] (0x0-0xF)
|
|
|
*/
|
|
|
- reg = CMDPTRREG + (channel * DDRIOCCC_CH_OFFSET);
|
|
|
- msk = (BIT11 | BIT10 | BIT9 | BIT8);
|
|
|
+ reg = CMDPTRREG + channel * DDRIOCCC_CH_OFFSET;
|
|
|
+ msk = 0xf00;
|
|
|
temp = pi_count / HALF_CLK;
|
|
|
temp <<= 8;
|
|
|
mrc_alt_write_mask(DDRPHY, reg, temp, msk);
|
|
|
|
|
|
/* Adjust PI_COUNT */
|
|
|
- pi_count -= ((pi_count / HALF_CLK) & 0xF) * HALF_CLK;
|
|
|
+ pi_count -= ((pi_count / HALF_CLK) & 0xf) * HALF_CLK;
|
|
|
|
|
|
/*
|
|
|
* PI (1/64 MCLK, 1 PIs)
|
|
@@ -609,18 +606,13 @@ void set_wcmd(uint8_t channel, uint32_t pi_count)
|
|
|
* CMDDLLPICODER1[13:08] -> CMDSLICE R0 (unused)
|
|
|
* CMDDLLPICODER1[05:00] -> CMDSLICE L0 (unused)
|
|
|
*/
|
|
|
- reg = CMDDLLPICODER1 + (channel * DDRIOCCC_CH_OFFSET);
|
|
|
-
|
|
|
- msk = (BIT29 | BIT28 | BIT27 | BIT26 | BIT25 | BIT24 |
|
|
|
- BIT21 | BIT20 | BIT19 | BIT18 | BIT17 | BIT16 |
|
|
|
- BIT13 | BIT12 | BIT11 | BIT10 | BIT9 | BIT8 |
|
|
|
- BIT5 | BIT4 | BIT3 | BIT2 | BIT1 | BIT0);
|
|
|
-
|
|
|
+ reg = CMDDLLPICODER1 + channel * DDRIOCCC_CH_OFFSET;
|
|
|
+ msk = 0x3f3f3f3f;
|
|
|
temp = (pi_count << 24) | (pi_count << 16) |
|
|
|
(pi_count << 8) | (pi_count << 0);
|
|
|
|
|
|
mrc_alt_write_mask(DDRPHY, reg, temp, msk);
|
|
|
- reg = CMDDLLPICODER0 + (channel * DDRIOCCC_CH_OFFSET); /* PO */
|
|
|
+ reg = CMDDLLPICODER0 + channel * DDRIOCCC_CH_OFFSET; /* PO */
|
|
|
mrc_alt_write_mask(DDRPHY, reg, temp, msk);
|
|
|
|
|
|
/*
|
|
@@ -628,24 +620,24 @@ void set_wcmd(uint8_t channel, uint32_t pi_count)
|
|
|
* CMDCFGREG0[17] (+1 select)
|
|
|
* CMDCFGREG0[16] (enable)
|
|
|
*/
|
|
|
- reg = CMDCFGREG0 + (channel * DDRIOCCC_CH_OFFSET);
|
|
|
+ reg = CMDCFGREG0 + channel * DDRIOCCC_CH_OFFSET;
|
|
|
msk = 0x00;
|
|
|
temp = 0x00;
|
|
|
|
|
|
/* enable */
|
|
|
- msk |= BIT16;
|
|
|
+ msk |= (1 << 16);
|
|
|
if ((pi_count < EARLY_DB) || (pi_count > LATE_DB))
|
|
|
temp |= msk;
|
|
|
|
|
|
/* select */
|
|
|
- msk |= BIT17;
|
|
|
+ msk |= (1 << 17);
|
|
|
if (pi_count < EARLY_DB)
|
|
|
temp |= msk;
|
|
|
|
|
|
mrc_alt_write_mask(DDRPHY, reg, temp, msk);
|
|
|
|
|
|
/* error check */
|
|
|
- if (pi_count > 0x3F)
|
|
|
+ if (pi_count > 0x3f)
|
|
|
mrc_post_code(0xee, 0xe4);
|
|
|
|
|
|
LEAVEFN();
|
|
@@ -667,10 +659,10 @@ uint32_t get_wcmd(uint8_t channel)
|
|
|
* RDPTR (1/2 MCLK, 64 PIs)
|
|
|
* CMDPTRREG[11:08] (0x0-0xF)
|
|
|
*/
|
|
|
- reg = CMDPTRREG + (channel * DDRIOCCC_CH_OFFSET);
|
|
|
+ reg = CMDPTRREG + channel * DDRIOCCC_CH_OFFSET;
|
|
|
temp = msg_port_alt_read(DDRPHY, reg);
|
|
|
temp >>= 8;
|
|
|
- temp &= 0xF;
|
|
|
+ temp &= 0xf;
|
|
|
|
|
|
/* Adjust PI_COUNT */
|
|
|
pi_count = temp * HALF_CLK;
|
|
@@ -686,10 +678,10 @@ uint32_t get_wcmd(uint8_t channel)
|
|
|
* CMDDLLPICODER1[13:08] -> CMDSLICE R0 (unused)
|
|
|
* CMDDLLPICODER1[05:00] -> CMDSLICE L0 (unused)
|
|
|
*/
|
|
|
- reg = CMDDLLPICODER1 + (channel * DDRIOCCC_CH_OFFSET);
|
|
|
+ reg = CMDDLLPICODER1 + channel * DDRIOCCC_CH_OFFSET;
|
|
|
temp = msg_port_alt_read(DDRPHY, reg);
|
|
|
temp >>= 16;
|
|
|
- temp &= 0x3F;
|
|
|
+ temp &= 0x3f;
|
|
|
|
|
|
/* Adjust PI_COUNT */
|
|
|
pi_count += temp;
|
|
@@ -716,13 +708,13 @@ void set_wclk(uint8_t channel, uint8_t rank, uint32_t pi_count)
|
|
|
* CCPTRREG[15:12] -> CLK1 (0x0-0xF)
|
|
|
* CCPTRREG[11:08] -> CLK0 (0x0-0xF)
|
|
|
*/
|
|
|
- reg = CCPTRREG + (channel * DDRIOCCC_CH_OFFSET);
|
|
|
- msk = (BIT15 | BIT14 | BIT13 | BIT12 | BIT11 | BIT10 | BIT9 | BIT8);
|
|
|
+ reg = CCPTRREG + channel * DDRIOCCC_CH_OFFSET;
|
|
|
+ msk = 0xff00;
|
|
|
temp = ((pi_count / HALF_CLK) << 12) | ((pi_count / HALF_CLK) << 8);
|
|
|
mrc_alt_write_mask(DDRPHY, reg, temp, msk);
|
|
|
|
|
|
/* Adjust PI_COUNT */
|
|
|
- pi_count -= ((pi_count / HALF_CLK) & 0xF) * HALF_CLK;
|
|
|
+ pi_count -= ((pi_count / HALF_CLK) & 0xf) * HALF_CLK;
|
|
|
|
|
|
/*
|
|
|
* PI (1/64 MCLK, 1 PIs)
|
|
@@ -731,16 +723,18 @@ void set_wclk(uint8_t channel, uint8_t rank, uint32_t pi_count)
|
|
|
*/
|
|
|
reg = rank ? ECCB1DLLPICODER0 : ECCB1DLLPICODER0;
|
|
|
reg += (channel * DDRIOCCC_CH_OFFSET);
|
|
|
- msk = (BIT21 | BIT20 | BIT19 | BIT18 | BIT17 | BIT16 |
|
|
|
- BIT13 | BIT12 | BIT11 | BIT10 | BIT9 | BIT8);
|
|
|
+ msk = 0x3f3f00;
|
|
|
temp = (pi_count << 16) | (pi_count << 8);
|
|
|
mrc_alt_write_mask(DDRPHY, reg, temp, msk);
|
|
|
+
|
|
|
reg = rank ? ECCB1DLLPICODER1 : ECCB1DLLPICODER1;
|
|
|
reg += (channel * DDRIOCCC_CH_OFFSET);
|
|
|
mrc_alt_write_mask(DDRPHY, reg, temp, msk);
|
|
|
+
|
|
|
reg = rank ? ECCB1DLLPICODER2 : ECCB1DLLPICODER2;
|
|
|
reg += (channel * DDRIOCCC_CH_OFFSET);
|
|
|
mrc_alt_write_mask(DDRPHY, reg, temp, msk);
|
|
|
+
|
|
|
reg = rank ? ECCB1DLLPICODER3 : ECCB1DLLPICODER3;
|
|
|
reg += (channel * DDRIOCCC_CH_OFFSET);
|
|
|
mrc_alt_write_mask(DDRPHY, reg, temp, msk);
|
|
@@ -750,24 +744,24 @@ void set_wclk(uint8_t channel, uint8_t rank, uint32_t pi_count)
|
|
|
* CCCFGREG1[11:08] (+1 select)
|
|
|
* CCCFGREG1[03:00] (enable)
|
|
|
*/
|
|
|
- reg = CCCFGREG1 + (channel * DDRIOCCC_CH_OFFSET);
|
|
|
+ reg = CCCFGREG1 + channel * DDRIOCCC_CH_OFFSET;
|
|
|
msk = 0x00;
|
|
|
temp = 0x00;
|
|
|
|
|
|
/* enable */
|
|
|
- msk |= (BIT3 | BIT2 | BIT1 | BIT0);
|
|
|
+ msk |= 0xf;
|
|
|
if ((pi_count < EARLY_DB) || (pi_count > LATE_DB))
|
|
|
temp |= msk;
|
|
|
|
|
|
/* select */
|
|
|
- msk |= (BIT11 | BIT10 | BIT9 | BIT8);
|
|
|
+ msk |= 0xf00;
|
|
|
if (pi_count < EARLY_DB)
|
|
|
temp |= msk;
|
|
|
|
|
|
mrc_alt_write_mask(DDRPHY, reg, temp, msk);
|
|
|
|
|
|
/* error check */
|
|
|
- if (pi_count > 0x3F)
|
|
|
+ if (pi_count > 0x3f)
|
|
|
mrc_post_code(0xee, 0xe5);
|
|
|
|
|
|
LEAVEFN();
|
|
@@ -790,10 +784,10 @@ uint32_t get_wclk(uint8_t channel, uint8_t rank)
|
|
|
* CCPTRREG[15:12] -> CLK1 (0x0-0xF)
|
|
|
* CCPTRREG[11:08] -> CLK0 (0x0-0xF)
|
|
|
*/
|
|
|
- reg = CCPTRREG + (channel * DDRIOCCC_CH_OFFSET);
|
|
|
+ reg = CCPTRREG + channel * DDRIOCCC_CH_OFFSET;
|
|
|
temp = msg_port_alt_read(DDRPHY, reg);
|
|
|
temp >>= rank ? 12 : 8;
|
|
|
- temp &= 0xF;
|
|
|
+ temp &= 0xf;
|
|
|
|
|
|
/* Adjust PI_COUNT */
|
|
|
pi_count = temp * HALF_CLK;
|
|
@@ -807,7 +801,7 @@ uint32_t get_wclk(uint8_t channel, uint8_t rank)
|
|
|
reg += (channel * DDRIOCCC_CH_OFFSET);
|
|
|
temp = msg_port_alt_read(DDRPHY, reg);
|
|
|
temp >>= rank ? 16 : 8;
|
|
|
- temp &= 0x3F;
|
|
|
+ temp &= 0x3f;
|
|
|
|
|
|
pi_count += temp;
|
|
|
|
|
@@ -835,28 +829,31 @@ void set_wctl(uint8_t channel, uint8_t rank, uint32_t pi_count)
|
|
|
* CCPTRREG[31:28] (0x0-0xF)
|
|
|
* CCPTRREG[27:24] (0x0-0xF)
|
|
|
*/
|
|
|
- reg = CCPTRREG + (channel * DDRIOCCC_CH_OFFSET);
|
|
|
- msk = (BIT31 | BIT30 | BIT29 | BIT28 | BIT27 | BIT26 | BIT25 | BIT24);
|
|
|
+ reg = CCPTRREG + channel * DDRIOCCC_CH_OFFSET;
|
|
|
+ msk = 0xff000000;
|
|
|
temp = ((pi_count / HALF_CLK) << 28) | ((pi_count / HALF_CLK) << 24);
|
|
|
mrc_alt_write_mask(DDRPHY, reg, temp, msk);
|
|
|
|
|
|
/* Adjust PI_COUNT */
|
|
|
- pi_count -= ((pi_count / HALF_CLK) & 0xF) * HALF_CLK;
|
|
|
+ pi_count -= ((pi_count / HALF_CLK) & 0xf) * HALF_CLK;
|
|
|
|
|
|
/*
|
|
|
* PI (1/64 MCLK, 1 PIs)
|
|
|
* ECCB1DLLPICODER?[29:24] (0x00-0x3F)
|
|
|
* ECCB1DLLPICODER?[29:24] (0x00-0x3F)
|
|
|
*/
|
|
|
- reg = ECCB1DLLPICODER0 + (channel * DDRIOCCC_CH_OFFSET);
|
|
|
- msk = (BIT29 | BIT28 | BIT27 | BIT26 | BIT25 | BIT24);
|
|
|
+ reg = ECCB1DLLPICODER0 + channel * DDRIOCCC_CH_OFFSET;
|
|
|
+ msk = 0x3f000000;
|
|
|
temp = (pi_count << 24);
|
|
|
mrc_alt_write_mask(DDRPHY, reg, temp, msk);
|
|
|
- reg = ECCB1DLLPICODER1 + (channel * DDRIOCCC_CH_OFFSET);
|
|
|
+
|
|
|
+ reg = ECCB1DLLPICODER1 + channel * DDRIOCCC_CH_OFFSET;
|
|
|
mrc_alt_write_mask(DDRPHY, reg, temp, msk);
|
|
|
- reg = ECCB1DLLPICODER2 + (channel * DDRIOCCC_CH_OFFSET);
|
|
|
+
|
|
|
+ reg = ECCB1DLLPICODER2 + channel * DDRIOCCC_CH_OFFSET;
|
|
|
mrc_alt_write_mask(DDRPHY, reg, temp, msk);
|
|
|
- reg = ECCB1DLLPICODER3 + (channel * DDRIOCCC_CH_OFFSET);
|
|
|
+
|
|
|
+ reg = ECCB1DLLPICODER3 + channel * DDRIOCCC_CH_OFFSET;
|
|
|
mrc_alt_write_mask(DDRPHY, reg, temp, msk);
|
|
|
|
|
|
/*
|
|
@@ -864,24 +861,24 @@ void set_wctl(uint8_t channel, uint8_t rank, uint32_t pi_count)
|
|
|
* CCCFGREG1[13:12] (+1 select)
|
|
|
* CCCFGREG1[05:04] (enable)
|
|
|
*/
|
|
|
- reg = CCCFGREG1 + (channel * DDRIOCCC_CH_OFFSET);
|
|
|
+ reg = CCCFGREG1 + channel * DDRIOCCC_CH_OFFSET;
|
|
|
msk = 0x00;
|
|
|
temp = 0x00;
|
|
|
|
|
|
/* enable */
|
|
|
- msk |= (BIT5 | BIT4);
|
|
|
+ msk |= 0x30;
|
|
|
if ((pi_count < EARLY_DB) || (pi_count > LATE_DB))
|
|
|
temp |= msk;
|
|
|
|
|
|
/* select */
|
|
|
- msk |= (BIT13 | BIT12);
|
|
|
+ msk |= 0x3000;
|
|
|
if (pi_count < EARLY_DB)
|
|
|
temp |= msk;
|
|
|
|
|
|
mrc_alt_write_mask(DDRPHY, reg, temp, msk);
|
|
|
|
|
|
/* error check */
|
|
|
- if (pi_count > 0x3F)
|
|
|
+ if (pi_count > 0x3f)
|
|
|
mrc_post_code(0xee, 0xe6);
|
|
|
|
|
|
LEAVEFN();
|
|
@@ -906,10 +903,10 @@ uint32_t get_wctl(uint8_t channel, uint8_t rank)
|
|
|
* CCPTRREG[31:28] (0x0-0xF)
|
|
|
* CCPTRREG[27:24] (0x0-0xF)
|
|
|
*/
|
|
|
- reg = CCPTRREG + (channel * DDRIOCCC_CH_OFFSET);
|
|
|
+ reg = CCPTRREG + channel * DDRIOCCC_CH_OFFSET;
|
|
|
temp = msg_port_alt_read(DDRPHY, reg);
|
|
|
temp >>= 24;
|
|
|
- temp &= 0xF;
|
|
|
+ temp &= 0xf;
|
|
|
|
|
|
/* Adjust PI_COUNT */
|
|
|
pi_count = temp * HALF_CLK;
|
|
@@ -919,10 +916,10 @@ uint32_t get_wctl(uint8_t channel, uint8_t rank)
|
|
|
* ECCB1DLLPICODER?[29:24] (0x00-0x3F)
|
|
|
* ECCB1DLLPICODER?[29:24] (0x00-0x3F)
|
|
|
*/
|
|
|
- reg = ECCB1DLLPICODER0 + (channel * DDRIOCCC_CH_OFFSET);
|
|
|
+ reg = ECCB1DLLPICODER0 + channel * DDRIOCCC_CH_OFFSET;
|
|
|
temp = msg_port_alt_read(DDRPHY, reg);
|
|
|
temp >>= 24;
|
|
|
- temp &= 0x3F;
|
|
|
+ temp &= 0x3f;
|
|
|
|
|
|
/* Adjust PI_COUNT */
|
|
|
pi_count += temp;
|
|
@@ -938,17 +935,16 @@ uint32_t get_wctl(uint8_t channel, uint8_t rank)
|
|
|
*/
|
|
|
void set_vref(uint8_t channel, uint8_t byte_lane, uint32_t setting)
|
|
|
{
|
|
|
- uint32_t reg = (byte_lane & 0x1) ? (B1VREFCTL) : (B0VREFCTL);
|
|
|
+ uint32_t reg = (byte_lane & 0x1) ? B1VREFCTL : B0VREFCTL;
|
|
|
|
|
|
ENTERFN();
|
|
|
|
|
|
DPF(D_TRN, "Vref ch%d ln%d : val=%03X\n",
|
|
|
channel, byte_lane, setting);
|
|
|
|
|
|
- mrc_alt_write_mask(DDRPHY, (reg + (channel * DDRIODQ_CH_OFFSET) +
|
|
|
- ((byte_lane >> 1) * DDRIODQ_BL_OFFSET)),
|
|
|
- (vref_codes[setting] << 2),
|
|
|
- (BIT7 | BIT6 | BIT5 | BIT4 | BIT3 | BIT2));
|
|
|
+ mrc_alt_write_mask(DDRPHY, reg + channel * DDRIODQ_CH_OFFSET +
|
|
|
+ (byte_lane >> 1) * DDRIODQ_BL_OFFSET,
|
|
|
+ vref_codes[setting] << 2, 0xfc);
|
|
|
|
|
|
/*
|
|
|
* need to wait ~300ns for Vref to settle
|
|
@@ -969,15 +965,15 @@ uint32_t get_vref(uint8_t channel, uint8_t byte_lane)
|
|
|
{
|
|
|
uint8_t j;
|
|
|
uint32_t ret_val = sizeof(vref_codes) / 2;
|
|
|
- uint32_t reg = (byte_lane & 0x1) ? (B1VREFCTL) : (B0VREFCTL);
|
|
|
+ uint32_t reg = (byte_lane & 0x1) ? B1VREFCTL : B0VREFCTL;
|
|
|
uint32_t temp;
|
|
|
|
|
|
ENTERFN();
|
|
|
|
|
|
- temp = msg_port_alt_read(DDRPHY, (reg + (channel * DDRIODQ_CH_OFFSET) +
|
|
|
- ((byte_lane >> 1) * DDRIODQ_BL_OFFSET)));
|
|
|
+ temp = msg_port_alt_read(DDRPHY, reg + channel * DDRIODQ_CH_OFFSET +
|
|
|
+ (byte_lane >> 1) * DDRIODQ_BL_OFFSET);
|
|
|
temp >>= 2;
|
|
|
- temp &= 0x3F;
|
|
|
+ temp &= 0x3f;
|
|
|
|
|
|
for (j = 0; j < sizeof(vref_codes); j++) {
|
|
|
if (vref_codes[j] == temp) {
|
|
@@ -997,7 +993,7 @@ uint32_t get_vref(uint8_t channel, uint8_t byte_lane)
|
|
|
*/
|
|
|
uint32_t get_addr(uint8_t channel, uint8_t rank)
|
|
|
{
|
|
|
- uint32_t offset = 0x02000000; /* 32MB */
|
|
|
+ uint32_t offset = 32 * 1024 * 1024; /* 32MB */
|
|
|
|
|
|
/* Begin product specific code */
|
|
|
if (channel > 0) {
|
|
@@ -1040,8 +1036,8 @@ uint32_t sample_dqs(struct mrc_params *mrc_params, uint8_t channel,
|
|
|
uint32_t address = get_addr(channel, rank);
|
|
|
|
|
|
/* initialise msk[] */
|
|
|
- msk[0] = rcvn ? BIT1 : BIT9; /* BL0 */
|
|
|
- msk[1] = rcvn ? BIT0 : BIT8; /* BL1 */
|
|
|
+ msk[0] = rcvn ? (1 << 1) : (1 << 9); /* BL0 */
|
|
|
+ msk[1] = rcvn ? (1 << 0) : (1 << 8); /* BL1 */
|
|
|
|
|
|
/* cycle through each byte lane group */
|
|
|
for (bl_grp = 0; bl_grp < (NUM_BYTE_LANES / bl_divisor) / 2; bl_grp++) {
|
|
@@ -1056,9 +1052,9 @@ uint32_t sample_dqs(struct mrc_params *mrc_params, uint8_t channel,
|
|
|
* DQTRAINSTS register
|
|
|
*/
|
|
|
sampled_val[j] = msg_port_alt_read(DDRPHY,
|
|
|
- (DQTRAINSTS +
|
|
|
- (bl_grp * DDRIODQ_BL_OFFSET) +
|
|
|
- (channel * DDRIODQ_CH_OFFSET)));
|
|
|
+ DQTRAINSTS +
|
|
|
+ bl_grp * DDRIODQ_BL_OFFSET +
|
|
|
+ channel * DDRIODQ_CH_OFFSET);
|
|
|
}
|
|
|
|
|
|
/*
|
|
@@ -1076,7 +1072,7 @@ uint32_t sample_dqs(struct mrc_params *mrc_params, uint8_t channel,
|
|
|
num_0s++;
|
|
|
}
|
|
|
if (num_1s > num_0s)
|
|
|
- ret_val |= (1 << (bl + (bl_grp * 2)));
|
|
|
+ ret_val |= (1 << (bl + bl_grp * 2));
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -1116,10 +1112,10 @@ void find_rising_edge(struct mrc_params *mrc_params, uint32_t delay[],
|
|
|
/* increase sample delay by 26 PI (0.2 CLK) */
|
|
|
if (rcvn) {
|
|
|
set_rcvn(channel, rank, bl,
|
|
|
- delay[bl] + (sample * SAMPLE_DLY));
|
|
|
+ delay[bl] + sample * SAMPLE_DLY);
|
|
|
} else {
|
|
|
set_wdqs(channel, rank, bl,
|
|
|
- delay[bl] + (sample * SAMPLE_DLY));
|
|
|
+ delay[bl] + sample * SAMPLE_DLY);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -1129,7 +1125,7 @@ void find_rising_edge(struct mrc_params *mrc_params, uint32_t delay[],
|
|
|
|
|
|
DPF(D_TRN,
|
|
|
"Find rising edge %s ch%d rnk%d: #%d dly=%d dqs=%02X\n",
|
|
|
- (rcvn ? "RCVN" : "WDQS"), channel, rank, sample,
|
|
|
+ rcvn ? "RCVN" : "WDQS", channel, rank, sample,
|
|
|
sample * SAMPLE_DLY, sample_result[sample]);
|
|
|
}
|
|
|
|
|
@@ -1137,7 +1133,7 @@ void find_rising_edge(struct mrc_params *mrc_params, uint32_t delay[],
|
|
|
* This pattern will help determine where we landed and ultimately
|
|
|
* how to place RCVEN/WDQS.
|
|
|
*/
|
|
|
- for (bl = 0; bl < (NUM_BYTE_LANES / bl_divisor); bl++) {
|
|
|
+ for (bl = 0; bl < NUM_BYTE_LANES / bl_divisor; bl++) {
|
|
|
/* build transition_pattern (MSB is 1st sample) */
|
|
|
transition_pattern = 0;
|
|
|
for (sample = 0; sample < SAMPLE_CNT; sample++) {
|
|
@@ -1202,7 +1198,7 @@ void find_rising_edge(struct mrc_params *mrc_params, uint32_t delay[],
|
|
|
/* take a sample */
|
|
|
temp = sample_dqs(mrc_params, channel, rank, rcvn);
|
|
|
/* check all each byte lane for proper edge */
|
|
|
- for (bl = 0; bl < (NUM_BYTE_LANES / bl_divisor); bl++) {
|
|
|
+ for (bl = 0; bl < NUM_BYTE_LANES / bl_divisor; bl++) {
|
|
|
if (temp & (1 << bl)) {
|
|
|
/* sampled "1" */
|
|
|
if (direction[bl] == BACKWARD) {
|
|
@@ -1340,10 +1336,10 @@ void lfsr32(uint32_t *lfsr_ptr)
|
|
|
lfsr = *lfsr_ptr;
|
|
|
|
|
|
for (i = 0; i < 32; i++) {
|
|
|
- bit = 1 ^ (lfsr & BIT0);
|
|
|
- bit = bit ^ ((lfsr & BIT1) >> 1);
|
|
|
- bit = bit ^ ((lfsr & BIT2) >> 2);
|
|
|
- bit = bit ^ ((lfsr & BIT22) >> 22);
|
|
|
+ bit = 1 ^ (lfsr & 1);
|
|
|
+ bit = bit ^ ((lfsr & 2) >> 1);
|
|
|
+ bit = bit ^ ((lfsr & 4) >> 2);
|
|
|
+ bit = bit ^ ((lfsr & 0x400000) >> 22);
|
|
|
|
|
|
lfsr = ((lfsr >> 1) | (bit << 31));
|
|
|
}
|
|
@@ -1362,16 +1358,16 @@ void clear_pointers(void)
|
|
|
for (channel = 0; channel < NUM_CHANNELS; channel++) {
|
|
|
for (bl = 0; bl < NUM_BYTE_LANES; bl++) {
|
|
|
mrc_alt_write_mask(DDRPHY,
|
|
|
- (B01PTRCTL1 +
|
|
|
- (channel * DDRIODQ_CH_OFFSET) +
|
|
|
- ((bl >> 1) * DDRIODQ_BL_OFFSET)),
|
|
|
- ~BIT8, BIT8);
|
|
|
+ B01PTRCTL1 +
|
|
|
+ channel * DDRIODQ_CH_OFFSET +
|
|
|
+ (bl >> 1) * DDRIODQ_BL_OFFSET,
|
|
|
+ ~(1 << 8), (1 << 8));
|
|
|
|
|
|
mrc_alt_write_mask(DDRPHY,
|
|
|
- (B01PTRCTL1 +
|
|
|
- (channel * DDRIODQ_CH_OFFSET) +
|
|
|
- ((bl >> 1) * DDRIODQ_BL_OFFSET)),
|
|
|
- BIT8, BIT8);
|
|
|
+ B01PTRCTL1 +
|
|
|
+ channel * DDRIODQ_CH_OFFSET +
|
|
|
+ (bl >> 1) * DDRIODQ_BL_OFFSET,
|
|
|
+ (1 << 8), (1 << 8));
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -1412,7 +1408,7 @@ static void print_timings_internal(uint8_t algo, uint8_t channel, uint8_t rank,
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
- for (bl = 0; bl < (NUM_BYTE_LANES / bl_divisor); bl++) {
|
|
|
+ for (bl = 0; bl < NUM_BYTE_LANES / bl_divisor; bl++) {
|
|
|
switch (algo) {
|
|
|
case RCVN:
|
|
|
DPF(D_INFO, " %03d", get_rcvn(channel, rank, bl));
|