Skip to content
Snippets Groups Projects
Commit 79843950 authored by Valentin Longchamp's avatar Valentin Longchamp Committed by Wolfgang Denk
Browse files

POST: add post_log_res field for post results in global data


The current post_log_word in global data is currently split into 2x
16 bits: half for the test start, half for the test success.
Since we alredy have more than 16 POST tests defined and more could
be defined, this may result in an overflow and the post_output_backlog
would not work for the tests defined further of these 16 positions.

An additional field is added to global data so that we can now support up
to 32 (depending of architecture) tests. The post_log_word is only used
to record the start of the test and the new field post_log_res for the
test success (or failure). The post_output_backlog is for this change
also adapted.

Signed-off-by: default avatarValentin Longchamp <valentin.longchamp@keymile.com>
parent 3e161ced
No related branches found
No related tags found
No related merge requests found
......@@ -80,6 +80,7 @@ typedef struct global_data {
char env_buf[32]; /* buffer for getenv() before reloc. */
#if defined(CONFIG_POST) || defined(CONFIG_LOGBUFFER)
unsigned long post_log_word; /* Record POST activities */
unsigned long post_log_res; /* success of POST test */
unsigned long post_init_f_time; /* When post_init_f started */
#endif
} gd_t;
......
......@@ -53,6 +53,7 @@ typedef struct global_data {
unsigned long env_valid; /* Checksum of Environment valid? */
#if defined(CONFIG_POST) || defined(CONFIG_LOGBUFFER)
unsigned long post_log_word; /* Record POST activities */
unsigned long post_log_res; /* success of POST test */
unsigned long post_init_f_time; /* When post_init_f started */
#endif
......
......@@ -37,6 +37,7 @@ typedef struct global_data {
unsigned long env_valid; /* Checksum of Environment valid */
#if defined(CONFIG_POST) || defined(CONFIG_LOGBUFFER)
unsigned long post_log_word; /* Record POST activities */
unsigned long post_log_res; /* success of POST test */
unsigned long post_init_f_time; /* When post_init_f started */
#endif
void **jt; /* Standalone app jump table */
......
......@@ -163,6 +163,7 @@ typedef struct global_data {
#endif
#if defined(CONFIG_POST) || defined(CONFIG_LOGBUFFER)
unsigned long post_log_word; /* Record POST activities */
unsigned long post_log_res; /* success of POST test */
unsigned long post_init_f_time; /* When post_init_f started */
#endif
#ifdef CONFIG_BOARD_TYPES
......
......@@ -61,6 +61,7 @@ typedef struct global_data {
#endif
#if defined(CONFIG_POST) || defined(CONFIG_LOGBUFFER)
unsigned long post_log_word; /* Record POST activities */
unsigned long post_log_res; /* success of POST test */
unsigned long post_init_f_time; /* When post_init_f started */
#endif
#ifdef CONFIG_BOARD_TYPES
......
......@@ -121,6 +121,7 @@ void post_bootmode_init (void)
/* Reset activity record */
gd->post_log_word = 0;
gd->post_log_res = 0;
}
int post_bootmode_get (unsigned int *last_test)
......@@ -144,12 +145,12 @@ int post_bootmode_get (unsigned int *last_test)
/* POST tests run before relocation only mark status bits .... */
static void post_log_mark_start ( unsigned long testid )
{
gd->post_log_word |= (testid)<<16;
gd->post_log_word |= testid;
}
static void post_log_mark_succ ( unsigned long testid )
{
gd->post_log_word |= testid;
gd->post_log_res |= testid;
}
/* ... and the messages are output once we are relocated */
......@@ -158,9 +159,9 @@ void post_output_backlog ( void )
int j;
for (j = 0; j < post_list_size; j++) {
if (gd->post_log_word & (post_list[j].testid<<16)) {
if (gd->post_log_word & (post_list[j].testid)) {
post_log ("POST %s ", post_list[j].cmd);
if (gd->post_log_word & post_list[j].testid)
if (gd->post_log_res & post_list[j].testid)
post_log ("PASSED\n");
else {
post_log ("FAILED\n");
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment