software/liblitedram: allow forced write leveling delays, improve delay printf when failing.
This commit is contained in:
parent
1d63d66a09
commit
e28e808c24
|
@ -337,17 +337,28 @@ static int write_level_scan(int *delays, int loops, int show)
|
||||||
/* rst delay */
|
/* rst delay */
|
||||||
write_delay_rst(i);
|
write_delay_rst(i);
|
||||||
|
|
||||||
|
/* use forced delay if configured */
|
||||||
|
if (sdrwl_delays[i] >= 0) {
|
||||||
|
delays[i] = sdrwl_delays[i];
|
||||||
|
|
||||||
|
/* configure write delay */
|
||||||
|
for(j=0; j<delays[i]; j++)
|
||||||
|
write_delay_inc(i);
|
||||||
/* succeed only if the start of a 1s window has been found */
|
/* succeed only if the start of a 1s window has been found */
|
||||||
if (one_window_best_count > 0 && one_window_best_start > 0) {
|
} else if (one_window_best_count > 0 && one_window_best_start > 0) {
|
||||||
delays[i] = one_window_best_start;
|
delays[i] = one_window_best_start;
|
||||||
|
|
||||||
/* configure write delay */
|
/* configure write delay */
|
||||||
for(j=0; j<delays[i]; j++)
|
for(j=0; j<delays[i]; j++)
|
||||||
write_delay_inc(i);
|
write_delay_inc(i);
|
||||||
}
|
}
|
||||||
if (show)
|
if (show) {
|
||||||
|
if (delays[i] == -1)
|
||||||
|
printf(" delay: -\n");
|
||||||
|
else
|
||||||
printf(" delay: %02d\n", delays[i]);
|
printf(" delay: %02d\n", delays[i]);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
sdrwloff();
|
sdrwloff();
|
||||||
|
|
||||||
|
@ -847,6 +858,9 @@ void sdrcal(void)
|
||||||
|
|
||||||
int sdrinit(void)
|
int sdrinit(void)
|
||||||
{
|
{
|
||||||
|
int i;
|
||||||
|
for (i=0; i<16; i++) sdrwl_delays[i] = -1; /* disabled forced delays */
|
||||||
|
|
||||||
printf("Initializing DRAM @0x%08x...\n", MAIN_RAM_BASE);
|
printf("Initializing DRAM @0x%08x...\n", MAIN_RAM_BASE);
|
||||||
|
|
||||||
#if CSR_DDRPHY_RST_ADDR
|
#if CSR_DDRPHY_RST_ADDR
|
||||||
|
|
|
@ -31,6 +31,8 @@ void sdrwr(unsigned int addr);
|
||||||
/* Write Leveling */
|
/* Write Leveling */
|
||||||
/*-----------------------------------------------------------------------*/
|
/*-----------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
int sdrwl_delays[16];
|
||||||
|
|
||||||
void sdrwlon(void);
|
void sdrwlon(void);
|
||||||
void sdrwloff(void);
|
void sdrwloff(void);
|
||||||
int write_level(void);
|
int write_level(void);
|
||||||
|
|
Loading…
Reference in New Issue