blob: 4fa38c791c4183d4f6252d40dc3db3008af6d380 [file] [log] [blame]
#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);
}