Commit ca2a3c92 authored by Ville Syrjälä's avatar Ville Syrjälä

drm/i915/bios: Extract struct lvds_lfp_data_ptr_table

All the LFP data table pointers have uniform layout. Turn
that into a struct.
Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20220317171948.10400-2-ville.syrjala@linux.intel.comReviewed-by: default avatarJani Nikula <jani.nikula@intel.com>
parent f8eee759
...@@ -180,11 +180,11 @@ get_lvds_dvo_timing(const struct bdb_lvds_lfp_data *lvds_lfp_data, ...@@ -180,11 +180,11 @@ get_lvds_dvo_timing(const struct bdb_lvds_lfp_data *lvds_lfp_data,
*/ */
int lfp_data_size = int lfp_data_size =
lvds_lfp_data_ptrs->ptr[1].dvo_timing_offset - lvds_lfp_data_ptrs->ptr[1].dvo_timing.offset -
lvds_lfp_data_ptrs->ptr[0].dvo_timing_offset; lvds_lfp_data_ptrs->ptr[0].dvo_timing.offset;
int dvo_timing_offset = int dvo_timing_offset =
lvds_lfp_data_ptrs->ptr[0].dvo_timing_offset - lvds_lfp_data_ptrs->ptr[0].dvo_timing.offset -
lvds_lfp_data_ptrs->ptr[0].fp_timing_offset; lvds_lfp_data_ptrs->ptr[0].fp_timing.offset;
char *entry = (char *)lvds_lfp_data->data + lfp_data_size * index; char *entry = (char *)lvds_lfp_data->data + lfp_data_size * index;
return (struct lvds_dvo_timing *)(entry + dvo_timing_offset); return (struct lvds_dvo_timing *)(entry + dvo_timing_offset);
...@@ -205,7 +205,7 @@ get_lvds_fp_timing(const struct bdb_header *bdb, ...@@ -205,7 +205,7 @@ get_lvds_fp_timing(const struct bdb_header *bdb,
if (index >= ARRAY_SIZE(ptrs->ptr)) if (index >= ARRAY_SIZE(ptrs->ptr))
return NULL; return NULL;
ofs = ptrs->ptr[index].fp_timing_offset; ofs = ptrs->ptr[index].fp_timing.offset;
if (ofs < data_ofs || if (ofs < data_ofs ||
ofs + sizeof(struct lvds_fp_timing) > data_ofs + data_size) ofs + sizeof(struct lvds_fp_timing) > data_ofs + data_size)
return NULL; return NULL;
......
...@@ -722,15 +722,16 @@ struct bdb_lvds_options { ...@@ -722,15 +722,16 @@ struct bdb_lvds_options {
/* /*
* Block 41 - LFP Data Table Pointers * Block 41 - LFP Data Table Pointers
*/ */
struct lvds_lfp_data_ptr_table {
u16 offset; /* offsets are from start of bdb */
u8 table_size;
} __packed;
/* LFP pointer table contains entries to the struct below */ /* LFP pointer table contains entries to the struct below */
struct lvds_lfp_data_ptr { struct lvds_lfp_data_ptr {
u16 fp_timing_offset; /* offsets are from start of bdb */ struct lvds_lfp_data_ptr_table fp_timing;
u8 fp_table_size; struct lvds_lfp_data_ptr_table dvo_timing;
u16 dvo_timing_offset; struct lvds_lfp_data_ptr_table panel_pnp_id;
u8 dvo_table_size;
u16 panel_pnp_id_offset;
u8 pnp_table_size;
} __packed; } __packed;
struct bdb_lvds_lfp_data_ptrs { struct bdb_lvds_lfp_data_ptrs {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment