image: Add functions to obtain category information

Add generic functions which can look up information about a category:

- the number of items in the category
- the category description
- an item long time
- an item short time

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Tom Rini <trini@konsulko.com>
This commit is contained in:
Simon Glass 2016-06-30 10:52:16 -06:00 committed by Tom Rini
parent 30495bff35
commit 1426220b0e
2 changed files with 102 additions and 0 deletions

View file

@ -583,6 +583,74 @@ const table_entry_t *get_table_entry(const table_entry_t *table, int id)
return NULL;
}
static const char *unknown_msg(enum ih_category category)
{
static char msg[30];
strcpy(msg, "Unknown ");
strcat(msg, table_info[category].desc);
return msg;
}
/**
* get_cat_table_entry_name - translate entry id to long name
* @category: category to look up (enum ih_category)
* @id: entry id to be translated
*
* This will scan the translation table trying to find the entry that matches
* the given id.
*
* @retur long entry name if translation succeeds; error string on failure
*/
const char *genimg_get_cat_name(enum ih_category category, uint id)
{
const table_entry_t *entry;
entry = get_table_entry(table_info[category].table, id);
if (!entry)
return unknown_msg(category);
#if defined(USE_HOSTCC) || !defined(CONFIG_NEEDS_MANUAL_RELOC)
return entry->lname;
#else
return entry->lname + gd->reloc_off;
#endif
}
/**
* get_cat_table_entry_short_name - translate entry id to short name
* @category: category to look up (enum ih_category)
* @id: entry id to be translated
*
* This will scan the translation table trying to find the entry that matches
* the given id.
*
* @retur short entry name if translation succeeds; error string on failure
*/
const char *genimg_get_cat_short_name(enum ih_category category, uint id)
{
const table_entry_t *entry;
entry = get_table_entry(table_info[category].table, id);
if (!entry)
return unknown_msg(category);
#if defined(USE_HOSTCC) || !defined(CONFIG_NEEDS_MANUAL_RELOC)
return entry->sname;
#else
return entry->sname + gd->reloc_off;
#endif
}
int genimg_get_cat_count(enum ih_category category)
{
return table_info[category].count;
}
const char *genimg_get_cat_desc(enum ih_category category)
{
return table_info[category].desc;
}
/**
* get_table_entry_name - translate entry id to long name
* @table: pointer to a translation table for entries of a specific type