diff mbox series

[35/35] drm/i915/bios: Define VBT block 253 (PRD Table) contents

Message ID 20240503122449.27266-36-ville.syrjala@linux.intel.com (mailing list archive)
State New
Headers show
Series drm/i915/bios: Define (almost) all BDB blocks | expand

Commit Message

Ville Syrjala May 3, 2024, 12:24 p.m. UTC
From: Ville Syrjälä <ville.syrjala@linux.intel.com>

Define the contents of VBT block 253 (PRD Table).

Unfortunately the block has two definitions, with the cutoff
supposedly happening on ICL vs. TGL. Also according to some
notes it might be that the VBIOS (if that's still a thing)
still uses the old definition even on TGL+. Quite the mess.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/display/intel_vbt_defs.h | 26 +++++++++++++++++++
 1 file changed, 26 insertions(+)

Comments

Jani Nikula May 6, 2024, 9:45 a.m. UTC | #1
On Fri, 03 May 2024, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Define the contents of VBT block 253 (PRD Table).
>
> Unfortunately the block has two definitions, with the cutoff
> supposedly happening on ICL vs. TGL. Also according to some
> notes it might be that the VBIOS (if that's still a thing)
> still uses the old definition even on TGL+. Quite the mess.
>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

Reviewed-by: Jani Nikula <jani.nikula@intel.com>

> ---
>  drivers/gpu/drm/i915/display/intel_vbt_defs.h | 26 +++++++++++++++++++
>  1 file changed, 26 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_vbt_defs.h b/drivers/gpu/drm/i915/display/intel_vbt_defs.h
> index 338f6133bb1e..9d5b87ff1728 100644
> --- a/drivers/gpu/drm/i915/display/intel_vbt_defs.h
> +++ b/drivers/gpu/drm/i915/display/intel_vbt_defs.h
> @@ -189,6 +189,7 @@ enum bdb_block_id {
>  	BDB_VSWING_PREEMPH		= 57, /* 218+ */
>  	BDB_GENERIC_DTD			= 58, /* 229+ */
>  	BDB_INT15_HOOK			= 252, /* VBIOS only */
> +	BDB_PRD_TABLE			= 253,
>  	BDB_SKIP			= 254, /* VBIOS only */
>  };
>  
> @@ -1576,4 +1577,29 @@ struct bdb_generic_dtd {
>  	struct generic_dtd_entry dtd[];	/* up to 24 DTD's */
>  } __packed;
>  
> +/*
> + * Block 253 - PRD Table
> + */
> +
> +struct prd_entry_old {
> +	u8 displays_attached;
> +	u8 display_in_pipe_a;
> +	u8 display_in_pipe_b;
> +} __packed;
> +
> +struct bdb_prd_table_old {
> +	struct prd_entry_old list[0];				/* ???-216 */
> +	u16 num_entries;					/* ???-216 */
> +} __packed;
> +
> +struct prd_entry_new {
> +	u16 primary_display;
> +	u16 secondary_display;
> +} __packed;
> +
> +struct bdb_prd_table_new {
> +	u16 num_entries;					/* 217+ */
> +	struct prd_entry_new list[];				/* 217+ */
> +} __packed;
> +
>  #endif /* _INTEL_VBT_DEFS_H_ */
diff mbox series

Patch

diff --git a/drivers/gpu/drm/i915/display/intel_vbt_defs.h b/drivers/gpu/drm/i915/display/intel_vbt_defs.h
index 338f6133bb1e..9d5b87ff1728 100644
--- a/drivers/gpu/drm/i915/display/intel_vbt_defs.h
+++ b/drivers/gpu/drm/i915/display/intel_vbt_defs.h
@@ -189,6 +189,7 @@  enum bdb_block_id {
 	BDB_VSWING_PREEMPH		= 57, /* 218+ */
 	BDB_GENERIC_DTD			= 58, /* 229+ */
 	BDB_INT15_HOOK			= 252, /* VBIOS only */
+	BDB_PRD_TABLE			= 253,
 	BDB_SKIP			= 254, /* VBIOS only */
 };
 
@@ -1576,4 +1577,29 @@  struct bdb_generic_dtd {
 	struct generic_dtd_entry dtd[];	/* up to 24 DTD's */
 } __packed;
 
+/*
+ * Block 253 - PRD Table
+ */
+
+struct prd_entry_old {
+	u8 displays_attached;
+	u8 display_in_pipe_a;
+	u8 display_in_pipe_b;
+} __packed;
+
+struct bdb_prd_table_old {
+	struct prd_entry_old list[0];				/* ???-216 */
+	u16 num_entries;					/* ???-216 */
+} __packed;
+
+struct prd_entry_new {
+	u16 primary_display;
+	u16 secondary_display;
+} __packed;
+
+struct bdb_prd_table_new {
+	u16 num_entries;					/* 217+ */
+	struct prd_entry_new list[];				/* 217+ */
+} __packed;
+
 #endif /* _INTEL_VBT_DEFS_H_ */