[PATCH i-g-t 04/27] tools/intel_vbt_decode: Decode block 3 (Display Toggle Option)

Jani Nikula jani.nikula at intel.com
Thu Jun 13 09:14:45 UTC 2024


On Fri, 07 Jun 2024, Ville Syrjala <ville.syrjala at linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala at linux.intel.com>
>
> Decode VBT block 3 (Display Toggle Option).
>
> On ALM the block appears to contain some kind of actual toggle
> list of child devices, on all more modern machines it just has
> the feature bits.
>
> Example output from ALM:
> BDB block 3 (27 bytes, min 3 bytes) - Display toggle option block:
>         0000: 03 1b 00 00 0c 00 08 00  01 00 09 00 02 00 00 00
>         0010: 00 00 00 00 00 00 00 00  00 00 00 00 00 00
>
>         Feature bits: 0x00
>         Num entries: 12
>         Toggle list #1: LFP1 (0x0008)
>         Toggle list #2: CRT (0x0001)
>         Toggle list #3: CRT,LFP1 (0x0009)
>         Toggle list #4: TV (0x0002)
>         Toggle list #5: none (0x0000)
>         Toggle list #6: none (0x0000)
>         Toggle list #7: none (0x0000)
>         Toggle list #8: none (0x0000)
>         Toggle list #9: none (0x0000)
>         Toggle list #10: none (0x0000)
>         Toggle list #11: none (0x0000)
>         Toggle list #12: none (0x0000)
>
> Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
> ---
>  tools/intel_vbt_decode.c | 21 +++++++++++++++++++++
>  1 file changed, 21 insertions(+)
>
> diff --git a/tools/intel_vbt_decode.c b/tools/intel_vbt_decode.c
> index cee1d5196a9a..4281bd7e520e 100644
> --- a/tools/intel_vbt_decode.c
> +++ b/tools/intel_vbt_decode.c
> @@ -316,6 +316,8 @@ static size_t block_min_size(const struct context *context, int section_id)
>  		return sizeof(struct bdb_general_features);
>  	case BDB_GENERAL_DEFINITIONS:
>  		return sizeof(struct bdb_general_definitions);
> +	case BDB_DISPLAY_TOGGLE:
> +		return sizeof(struct bdb_display_toggle);
>  	case BDB_PSR:
>  		return sizeof(struct bdb_psr);
>  	case BDB_CHILD_DEVICE_TABLE:
> @@ -1249,6 +1251,20 @@ static void dump_general_definitions(struct context *context,
>  			   child_dev_num, defs->child_dev_size);
>  }
>  
> +static void dump_display_toggle(struct context *context,
> +				const struct bdb_block *block)
> +{
> +	const struct bdb_display_toggle *t = block_data(block);
> +
> +	printf("\tFeature bits: 0x%02x\n", t->feature_bits);
> +	printf("\tNum entries: %d\n", t->num_entries);
> +
> +	for (int i = 0 ; i < t->num_entries; i++)

Superfluous space before ; there. Seems to have been copy-pasted to a
few patches in the series.

> +		printf("\tToggle list #%d: %s (0x%04x)\n",
> +		       i+1, child_device_handle(context, t->list[i]),
> +		       t->list[i]);
> +}
> +
>  static void dump_legacy_child_devices(struct context *context,
>  				      const struct bdb_block *block)
>  {
> @@ -2727,6 +2743,11 @@ struct dumper dumpers[] = {
>  		.name = "General definitions block",
>  		.dump = dump_general_definitions,
>  	},
> +	{
> +		.id = BDB_DISPLAY_TOGGLE,
> +		.name = "Display toggle option block",
> +		.dump = dump_display_toggle,
> +	},
>  	{
>  		.id = BDB_PSR,
>  		.min_bdb_version = 165,

-- 
Jani Nikula, Intel


More information about the igt-dev mailing list