[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