Add a new field to the value_data table, which is the function to
use to format the data value.

Signed-off-by: Penny Chiu <[email protected]>
---
 src/bct_dump.c | 59 +++++++++++++++++++++++++++++++++++++---------------------
 1 file changed, 38 insertions(+), 21 deletions(-)

diff --git a/src/bct_dump.c b/src/bct_dump.c
index dbef913..6d99214 100644
--- a/src/bct_dump.c
+++ b/src/bct_dump.c
@@ -27,37 +27,54 @@
 int enable_debug;
 cbootimage_soc_config * g_soc_config;
 
+static void format_u32_hex8(char const * message, void * data);
+static void format_u32(char const * message, void * data);
+
+typedef void (*format_function)(char const * message, void * data);
+
 typedef struct {
        parse_token id;
        char const * message;
+       format_function format;
 } value_data;
 
 static value_data const values[] = {
-       { token_boot_data_version,   "Version       = 0x%08x;\n" },
-       { token_block_size_log2,     "BlockSize     = 0x%08x;\n" },
-       { token_page_size_log2,      "PageSize      = 0x%08x;\n" },
-       { token_partition_size,      "PartitionSize = 0x%08x;\n" },
-       { token_odm_data,            "OdmData       = 0x%08x;\n\n" },
-       { token_bootloader_used,     "# Bootloader used       = %d;\n" },
-       { token_bootloaders_max,     "# Bootloaders max       = %d;\n" },
-       { token_bct_size,            "# BCT size              = %d;\n" },
-       { token_hash_size,           "# Hash size             = %d;\n" },
-       { token_crypto_offset,       "# Crypto offset         = %d;\n" },
-       { token_crypto_length,       "# Crypto length         = %d;\n" },
-       { token_max_bct_search_blks, "# Max BCT search blocks = %d;\n" },
+       { token_boot_data_version,   "Version       = ", format_u32_hex8 },
+       { token_block_size_log2,     "BlockSize     = ", format_u32_hex8 },
+       { token_page_size_log2,      "PageSize      = ", format_u32_hex8 },
+       { token_partition_size,      "PartitionSize = ", format_u32_hex8 },
+       { token_odm_data,            "OdmData       = ", format_u32_hex8 },
+       { token_bootloader_used,     "# Bootloader used       = ", format_u32 },
+       { token_bootloaders_max,     "# Bootloaders max       = ", format_u32 },
+       { token_bct_size,            "# BCT size              = ", format_u32 },
+       { token_hash_size,           "# Hash size             = ", format_u32 },
+       { token_crypto_offset,       "# Crypto offset         = ", format_u32 },
+       { token_crypto_length,       "# Crypto length         = ", format_u32 },
+       { token_max_bct_search_blks, "# Max BCT search blocks = ", format_u32 },
 };
 
 static value_data const bl_values[] = {
-       { token_bl_version,     "Version      = 0x%08x;\n" },
-       { token_bl_start_blk,   "Start block  = %d;\n" },
-       { token_bl_start_page,  "Start page   = %d;\n" },
-       { token_bl_length,      "Length       = %d;\n" },
-       { token_bl_load_addr,   "Load address = 0x%08x;\n" },
-       { token_bl_entry_point, "Entry point  = 0x%08x;\n" },
-       { token_bl_attribute,   "Attributes   = 0x%08x;\n" },
+       { token_bl_version,     "Version      = ", format_u32_hex8 },
+       { token_bl_start_blk,   "Start block  = ", format_u32 },
+       { token_bl_start_page,  "Start page   = ", format_u32 },
+       { token_bl_length,      "Length       = ", format_u32 },
+       { token_bl_load_addr,   "Load address = ", format_u32_hex8 },
+       { token_bl_entry_point, "Entry point  = ", format_u32_hex8 },
+       { token_bl_attribute,   "Attributes   = ", format_u32_hex8 },
 };
 
 /*****************************************************************************/
+static void format_u32_hex8(char const * message, void * data)
+{
+       printf("%s0x%08x;\n", message, *((u_int32_t *) data));
+}
+
+static void format_u32(char const * message, void * data)
+{
+       printf("%s%d;\n", message, *((u_int32_t *) data));
+}
+
+/*****************************************************************************/
 static void usage(void)
 {
        printf("Usage: bct_dump bctfile\n");
@@ -164,7 +181,7 @@ int main(int argc, char *argv[])
                         values[i].id == token_page_size_log2)
                        data = 1 << data;
 
-               printf(values[i].message, data);
+               values[i].format(values[i].message, &data);
        }
 
        /* Display bootloader values */
@@ -192,7 +209,7 @@ int main(int argc, char *argv[])
                                if (e != 0)
                                        data = -1;
 
-                               printf(bl_values[j].message, data);
+                               bl_values[j].format(bl_values[j].message, 
&data);
                        }
                }
        }
-- 
1.9.1

--
To unsubscribe from this list: send the line "unsubscribe linux-tegra" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to