continuing my journey through u-boot POST code, and i can see the "init_f" function pointer here:
struct post_test { char *name; char *cmd; char *desc; int flags; int (*test) (int flags); int (*init_f) (void); <----- void (*reloc) (void); unsigned long testid; }; but what *specific* issue was it introduced to solve? i can see over in common/board_f.c the sequence of init routines, including this snippet: #if defined(CONFIG_ARM) || defined(CONFIG_X86) || defined(CONFIG_NDS32) || \ defined(CONFIG_MICROBLAZE) || defined(CONFIG_AVR32) dram_init, /* configure available RAM banks */ #endif #if defined(CONFIG_MIPS) || defined(CONFIG_PPC) || defined(CONFIG_M68K) init_func_ram, #endif #ifdef CONFIG_POST post_init_f, <----- #endif INIT_FUNC_WATCHDOG_RESET #if defined(CONFIG_SYS_DRAM_TEST) testdram, #endif /* CONFIG_SYS_DRAM_TEST */ INIT_FUNC_WATCHDOG_RESET #ifdef CONFIG_POST init_post, #endif so, first, it seems clear that those callbacks are meant to be invoked immediately after configuring RAM but before testing it. and over in post/post.c, we have: int post_init_f(void) { int res = 0; unsigned int i; for (i = 0; i < post_list_size; i++) { struct post_test *test = post_list + i; if (test->init_f && test->init_f()) res = -1; } gd->post_init_f_time = post_time_ms(0); if (!gd->post_init_f_time) printf("%s: post_time_ms not implemented\n", __FILE__); return res; } so if any tests have that pointer set, the corresponding routine will be invoked. so i can see that the post_init_f() routine is useful for setting the start time of these tests (if, in fact, there are any), but i'm still unclear on the value of allowing POST tests to register a routine to be invoked at *precisely* that point in the startup. what is so magical about allowing POST test routines at that exact point? rday -- ======================================================================== Robert P. J. Day Ottawa, Ontario, CANADA http://crashcourse.ca Twitter: http://twitter.com/rpjday LinkedIn: http://ca.linkedin.com/in/rpjday ======================================================================== _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot