summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorVille Syrjälä <ville.syrjala@linux.intel.com>2015-03-25 13:36:52 +0200
committerVille Syrjälä <ville.syrjala@linux.intel.com>2015-09-11 15:58:38 +0300
commitb1e756451c59b342a9d15433379bf543ddedd56b (patch)
treee2cf3d1001098e4593543facc9b8d999f1568e87 /tools
parentc137ac71584467424f8a7bbb40825fa6250093c5 (diff)
intel_bios_reader: Read the child device size from VBT
New stuff has been added to the end of the child device block at various times, so using a hardcoded size for the block is a bad idea. Fortunately the size of the block is listed in the VBT just before the blocks themselves, so grab it from there. Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Diffstat (limited to 'tools')
-rw-r--r--tools/intel_bios.h2
-rw-r--r--tools/intel_bios_reader.c7
2 files changed, 5 insertions, 4 deletions
diff --git a/tools/intel_bios.h b/tools/intel_bios.h
index aedc5fcb..64e723d4 100644
--- a/tools/intel_bios.h
+++ b/tools/intel_bios.h
@@ -269,7 +269,7 @@ struct bdb_general_definitions {
* TV and LVDS are missing, so be careful when interpreting
* [4] and [5].
*/
- struct child_device_config devices[0];
+ uint8_t devices[0];
/* may be another device block here on some platforms */
} __attribute__ ((packed));
diff --git a/tools/intel_bios_reader.c b/tools/intel_bios_reader.c
index 02390956..a5412f5a 100644
--- a/tools/intel_bios_reader.c
+++ b/tools/intel_bios_reader.c
@@ -341,7 +341,6 @@ static void dump_child_device(struct child_device_config *child)
static void dump_general_definitions(const struct bdb_block *block)
{
struct bdb_general_definitions *defs = block->data;
- struct child_device_config *child;
int i;
int child_device_num;
@@ -354,9 +353,11 @@ static void dump_general_definitions(const struct bdb_block *block)
printf("\tBoot display type: 0x%02x%02x\n", defs->boot_display[1],
defs->boot_display[0]);
printf("\tTV data block present: %s\n", YESNO(tv_present));
- child_device_num = (block->size - sizeof(*defs)) / sizeof(*child);
+ printf("\tChild device size: %d\n", defs->child_dev_size);
+ child_device_num = (block->size - sizeof(*defs)) /
+ defs->child_dev_size;
for (i = 0; i < child_device_num; i++)
- dump_child_device(&defs->devices[i]);
+ dump_child_device((void*)&defs->devices[i * defs->child_dev_size]);
}
static void dump_child_devices(const struct bdb_block *block)