diff --git a/src/i830_bios.c b/src/i830_bios.c index ff49025d..2cb0b07b 100644 --- a/src/i830_bios.c +++ b/src/i830_bios.c @@ -88,8 +88,8 @@ static void parse_panel_data(I830Ptr pI830, struct bdb_header *bdb) { struct bdb_lvds_options *lvds_options; - struct bdb_lvds_lfp_data *lvds_lfp_data; - struct bdb_lvds_lfp_data_entry *entry; + struct bdb_lvds_lfp_data_ptrs *lvds_lfp_data_ptrs; + int timing_offset; DisplayModePtr fixed_mode; unsigned char *timing_ptr; @@ -104,12 +104,13 @@ parse_panel_data(I830Ptr pI830, struct bdb_header *bdb) if (lvds_options->panel_type == 0xff) return; - lvds_lfp_data = find_section(bdb, BDB_LVDS_LFP_DATA); - if (!lvds_lfp_data) + lvds_lfp_data_ptrs = find_section(bdb, BDB_LVDS_LFP_DATA_PTRS); + if (!lvds_lfp_data_ptrs) return; - entry = &lvds_lfp_data->data[lvds_options->panel_type]; - timing_ptr = (unsigned char *)&entry->dvo_timing; + timing_offset = + lvds_lfp_data_ptrs->ptr[lvds_options->panel_type].dvo_timing_offset; + timing_ptr = (unsigned char *)bdb + timing_offset; fixed_mode = xnfalloc(sizeof(DisplayModeRec)); memset(fixed_mode, 0, sizeof(*fixed_mode));