#include <common.h> | |
#include <diag.h> | |
diag_func_t *diag_sequence[] = | |
{ | |
mem_data_bus_test, /* DRAM Data bus test */ | |
mem_address_bus_test, /* DRAM Address bus test */ | |
mem_device_test, /* DRAM device test */ | |
mvNandDetectTest, | |
mvNandBadBlockTest, | |
gbe_link_detect_test, | |
//gbe_mac_loopback_test, | |
//gbe_external_loopback_test, | |
mvNandReadWriteTest, | |
rtc_test, /* RTC test */ | |
NULL, | |
}; | |
unsigned int *mem_test_start_offset; | |
unsigned int *mem_test_end_offset; | |
void run_diag(void) | |
{ | |
char board_name[30]; | |
diag_func_t **diag_func_ptr; | |
printf("\n\nRunning diagnostics ...\n"); | |
/* Get the start and the end memory address offset for memory test */ | |
diag_get_mem_detail(&mem_test_start_offset, &mem_test_end_offset); | |
for (diag_func_ptr = diag_sequence; *diag_func_ptr; ++diag_func_ptr) | |
{ | |
printf("\n"); | |
if((*diag_func_ptr)()) | |
break; | |
} | |
if(*diag_func_ptr == NULL) | |
printf("\nDiag completed\n"); | |
else | |
printf("\nDiag FAILED\n"); | |
} | |
void diag_init(char *board_name) | |
{ | |
/* Init interrupts - we would need this as we use timer interrupt in udelay */ | |
interrupt_init(); | |
/* Initialize board so that all the GPIO are set & we are good to init serial */ | |
diag_board_init(board_name); | |
/* Get the start and the end memory address offset for memory test */ | |
diag_get_mem_detail(&mem_test_start_offset, &mem_test_end_offset); | |
/* Serial init */ | |
diag_serial_init(DIAG_SERIAL_CONSOLE_PORT, DIAG_BAUD_RATE); | |
} |