summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/bios_reader/bios_reader.c4
-rw-r--r--src/i830_bios.h2
2 files changed, 4 insertions, 2 deletions
diff --git a/src/bios_reader/bios_reader.c b/src/bios_reader/bios_reader.c
index 328cacf2..27ec7694 100644
--- a/src/bios_reader/bios_reader.c
+++ b/src/bios_reader/bios_reader.c
@@ -170,6 +170,7 @@ static void dump_general_definitions(void)
struct child_device_config *child;
int i;
char child_id[11];
+ int child_device_num;
block = find_section(BDB_GENERAL_DEFINITIONS);
@@ -188,7 +189,8 @@ static void dump_general_definitions(void)
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));
- for (i = 0; i < 4; i++) {
+ child_device_num = (block->size - sizeof(*defs)) / sizeof(*child);
+ for (i = 0; i < child_device_num; i++) {
child = &defs->devices[i];
if (!child->device_type) {
printf("\tChild device %d not present\n", i);
diff --git a/src/i830_bios.h b/src/i830_bios.h
index 1f1f1aa2..8a3025e7 100644
--- a/src/i830_bios.h
+++ b/src/i830_bios.h
@@ -228,7 +228,7 @@ struct bdb_general_definitions {
* TV and LVDS are missing, so be careful when interpreting
* [4] and [5].
*/
- struct child_device_config devices[6];
+ struct child_device_config devices[0];
/* may be another device block here on some platforms */
} __attribute__((packed));