bios/sdram: iterate multiple time for write leveling and add vote to eliminate transcients
This commit is contained in:
parent
09f962fdc4
commit
fc0d5c3963
|
@ -229,7 +229,7 @@ void sdrwloff(void)
|
||||||
|
|
||||||
int write_level(void)
|
int write_level(void)
|
||||||
{
|
{
|
||||||
int i, j;
|
int i, j, k;
|
||||||
|
|
||||||
int dq_address;
|
int dq_address;
|
||||||
unsigned char dq;
|
unsigned char dq;
|
||||||
|
@ -269,11 +269,22 @@ int write_level(void)
|
||||||
#endif
|
#endif
|
||||||
/* scan taps */
|
/* scan taps */
|
||||||
for(j=0;j<err_ddrphy_wdly;j++) {
|
for(j=0;j<err_ddrphy_wdly;j++) {
|
||||||
ddrphy_wlevel_strobe_write(1);
|
int zero_count = 0;
|
||||||
cdelay(10);
|
int one_count = 0;
|
||||||
dq = MMPTR(dq_address);
|
for (k=0; k<128; k++) {
|
||||||
printf("%d", dq != 0);
|
ddrphy_wlevel_strobe_write(1);
|
||||||
taps_scan[j] = (dq != 0);
|
cdelay(10);
|
||||||
|
dq = MMPTR(dq_address);
|
||||||
|
if (dq != 0)
|
||||||
|
one_count++;
|
||||||
|
else
|
||||||
|
zero_count++;
|
||||||
|
}
|
||||||
|
if (one_count > zero_count)
|
||||||
|
taps_scan[j] = 1;
|
||||||
|
else
|
||||||
|
taps_scan[j] = 0;
|
||||||
|
printf("%d", taps_scan[j]);
|
||||||
ddrphy_wdly_dq_inc_write(1);
|
ddrphy_wdly_dq_inc_write(1);
|
||||||
ddrphy_wdly_dqs_inc_write(1);
|
ddrphy_wdly_dqs_inc_write(1);
|
||||||
cdelay(10);
|
cdelay(10);
|
||||||
|
|
Loading…
Reference in New Issue