From: "Michał Grzelak" <michal.grzelak@intel.com>
To: igt-dev@lists.freedesktop.org
Cc: "Pranay Samala" <pranay.samala@intel.com>,
"Jani Nikula" <jani.nikula@intel.com>,
"Suraj Kandpal" <suraj.kandpal@intel.com>,
"Michał Grzelak" <michal.grzelak@intel.com>
Subject: [PATCH i-g-t v6 4/6] tools/vbt_decode: parse & dump VS/PE-O tables for Snps
Date: Wed, 9 Sep 2026 20:34:49 +0200 [thread overview]
Message-ID: <20260909183451.2630263-5-michal.grzelak@intel.com> (raw)
In-Reply-To: <20260909183451.2630263-1-michal.grzelak@intel.com>
Dump VBT #57 tables for Snps. Add a table of strings to store each table
purpose. Show the affected modes on dumping.
v5->v6
- add spaces around operators
v2->v3
- use Cx0 for Snps
v1->v2
- check platform basing on devid not VBT signature (Jani)
Signed-off-by: Michał Grzelak <michal.grzelak@intel.com>
---
tools/intel_vbt_decode.c | 66 ++++++++++++++++++++++++++++++++++------
1 file changed, 56 insertions(+), 10 deletions(-)
diff --git a/tools/intel_vbt_decode.c b/tools/intel_vbt_decode.c
index 80e0db2814..85f1404785 100644
--- a/tools/intel_vbt_decode.c
+++ b/tools/intel_vbt_decode.c
@@ -3465,24 +3465,70 @@ static const char * const vspeo_dp14_levels[10] = {
"V3-P0",
};
-static void dump_vswing_preemphasis(struct context *context,
- const struct bdb_block *block)
+static const char * const vspeo_cx0_tables[6] = {
+ "C10: DP 1.4 RBR/HBR; C20: UNUSED",
+ "C10: DP 1.4 HBR2/HBR3; C20: UNUSED",
+ "C10: eDP non-HBR3; C20: UNUSED",
+ "C10: eDP HBR3; C20: UNUSED",
+ "C10: UNUSED; C20: DP 1.4",
+ "C10: UNUSED; C20: DP 2.X",
+};
+
+static void dump_cx0_vspeo(const struct bdb_vswing_preemph *vspeo,
+ int num_rows)
{
- const struct bdb_vswing_preemph *vspeo = block_data(block);
+ const unsigned int *tables = vspeo->tables;
+ size_t offset = 0;
printf("\tNumber of vswing tables: %d\n", vspeo->num_tables);
printf("\tNumber of columns: %d\n", vspeo->num_columns);
+ printf("\tNumber of rows: %d\n", num_rows);
+ printf("\tPHY type: Cx0\n");
for (int idx = 0; idx < vspeo->num_tables; idx++) {
- printf("\tVswing Table #%d:\n", idx+1);
+ printf("\tVswing Table #%d (%s):\n", idx + 1, vspeo_cx0_tables[idx]);
+ for (int row = 0; row < num_rows; row++) {
+ int vswing = tables[offset];
+ int pre_cursor = tables[offset + 1];
+ int post_cursor = tables[offset + 2];
+
+ printf("\t\tPreset #%02d: ", row + 1);
+ printf("vswing: 0x%08x, ", vswing);
+ printf("pre-cursor: 0x%08x, ", pre_cursor);
+ printf("post-cursor: 0x%08x\n", post_cursor);
+
+ offset += vspeo->num_columns;
+ }
+ }
+}
+
+static int
+vswing_preemph_num_rows(int devid)
+{
+ return intel_display_ver(devid) >= 14 ? 16 : 10;
+}
- for (int row = 0; row < 10; row++) {
- printf("\t\t%s: ", vspeo_dp14_levels[row]);
+static void dump_vswing_preemphasis(struct context *context,
+ const struct bdb_block *block)
+{
+ const struct bdb_vswing_preemph *vspeo = block_data(block);
+ int devid = context->devid;
+ int num_rows;
- for (int col = 0; col < vspeo->num_columns; col++)
- printf(" 0x%08x", vspeo->tables[idx * 10 * vspeo->num_columns + row * vspeo->num_columns + col]);
- printf("\n");
- }
+ if (!devid) {
+ fprintf(stderr, "Error: cannot parse VS/PE-O without devid\n");
+ return;
+ }
+
+ num_rows = vswing_preemph_num_rows(devid);
+
+ if (IS_PANTHERLAKE(devid) ||
+ IS_BATTLEMAGE(devid) ||
+ IS_LUNARLAKE(devid) ||
+ IS_METEORLAKE(devid)) {
+ dump_cx0_vspeo(vspeo, num_rows);
+ } else {
+ printf("Warning: deparsing VS/PE-O from devid %x not supported\n", devid);
}
}
--
2.45.2
next prev parent reply other threads:[~2026-09-09 18:40 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-09 18:34 [PATCH i-g-t v6 0/6] Vswing / Pre-emphasis Override decoding Michał Grzelak
2026-09-09 18:34 ` [PATCH i-g-t v6 1/6] tools/vbt_decode: fix tables' offset reading Michał Grzelak
2026-09-09 18:34 ` [PATCH i-g-t v6 2/6] tools/vbt_decode: rename VBT#57 related vars Michał Grzelak
2026-09-09 18:34 ` [PATCH i-g-t v6 3/6] tools/vbt_decode: validate DEVICE env var Michał Grzelak
2026-09-09 18:34 ` Michał Grzelak [this message]
2026-09-09 18:34 ` [PATCH i-g-t v6 5/6] tools/vbt_decode: parse & dump VS/PE-O tables for Combo Michał Grzelak
2026-09-09 18:34 ` [PATCH i-g-t v6 6/6] tools/vbt_decode: change VBT#57 Combo's layout Michał Grzelak
2026-09-09 23:50 ` ✓ Xe.CI.BAT: success for Vswing / Pre-emphasis Override decoding (rev5) Patchwork
2026-09-10 0:25 ` ✓ i915.CI.BAT: " Patchwork
2026-09-10 11:23 ` ✗ Xe.CI.FULL: failure " Patchwork
2026-09-10 19:51 ` ✗ i915.CI.Full: " Patchwork
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260909183451.2630263-5-michal.grzelak@intel.com \
--to=michal.grzelak@intel.com \
--cc=igt-dev@lists.freedesktop.org \
--cc=jani.nikula@intel.com \
--cc=pranay.samala@intel.com \
--cc=suraj.kandpal@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.