Skip to content

Commit

Permalink
bios: print number of memory errors
Browse files Browse the repository at this point in the history
  • Loading branch information
Sebastien Bourdeauducq committed Feb 24, 2013
1 parent b854f1a commit 5e6505b
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 9 deletions.
24 changes: 16 additions & 8 deletions software/bios/sdram.c
Expand Up @@ -174,6 +174,7 @@ int memtest_silent(void)
volatile unsigned int *array = (unsigned int *)SDRAM_BASE;
int i;
unsigned int prv;
unsigned int error_cnt;

prv = 0;
for(i=0;i<TEST_SIZE/4;i++) {
Expand All @@ -182,20 +183,27 @@ int memtest_silent(void)
}

prv = 0;
error_cnt = 0;
for(i=0;i<TEST_SIZE/4;i++) {
prv = 1664525*prv + 1013904223;
if(array[i] != prv)
return 0;
error_cnt++;
}
return 1;
return error_cnt;
}

void memtest(void)
int memtest(void)
{
if(memtest_silent())
printf("OK\n");
else
printf("Failed\n");
unsigned int e;

e = memtest_silent();
if(e != 0) {
printf("Memtest failed: %d/%d words incorrect\n", e, TEST_SIZE/4);
return 0;
} else {
printf("Memtest OK\n");
return 1;
}
}

int ddrinit(void)
Expand All @@ -204,7 +212,7 @@ int ddrinit(void)

init_sequence();
CSR_DFII_CONTROL = DFII_CONTROL_SEL|DFII_CONTROL_CKE;
if(!memtest_silent())
if(!memtest())
return 0;

return 1;
Expand Down
2 changes: 1 addition & 1 deletion software/bios/sdram.h
Expand Up @@ -7,7 +7,7 @@ void ddrrow(char *_row);
void ddrrd(char *startaddr);
void ddrwr(char *startaddr);
int memtest_silent(void);
void memtest(void);
int memtest(void);
int ddrinit(void);

void asmiprobe(void);
Expand Down

0 comments on commit 5e6505b

Please sign in to comment.