60 lines
1.5 KiB
C
60 lines
1.5 KiB
C
|
|
#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);
|
|
}
|