[PATCH i-g-t 17/27] tools/intel_vbt_decode: Decode block 25 (SDVO LVDS PPS)

Ville Syrjala ville.syrjala at linux.intel.com
Fri Jun 7 13:57:48 UTC 2024


From: Ville Syrjälä <ville.syrjala at linux.intel.com>

Decode VBT block 25 (SDVO LVDS PPS). Four sets (one for each SDVO
panel type) of power sequencing delays.

Example output from CST:
BDB block 25 (40 bytes, min 40 bytes) - SDVO LVDS PPS:
        0000: 19 28 00 19 00 fa 00 fa  00 19 00 90 01 20 00 20
        0010: 00 20 00 20 00 c8 00 40  00 40 00 40 00 40 00 2c
        0020: 01 40 00 40 00 40 00 40  00 2c 01

        SDVO Panel 0
                T0: 25 ms
                T1: 250 ms
                T2: 250 ms
                T3: 25 ms
                T4: 400 ms
        ...
        SDVO Panel 3 (*)
                T0: 64 ms
                T1: 64 ms
                T2: 64 ms
                T3: 64 ms
                T4: 300 ms

Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
---
 tools/intel_vbt_decode.c | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/tools/intel_vbt_decode.c b/tools/intel_vbt_decode.c
index 54b25f6d2418..d5c6a225b3df 100644
--- a/tools/intel_vbt_decode.c
+++ b/tools/intel_vbt_decode.c
@@ -356,6 +356,8 @@ static size_t block_min_size(const struct context *context, int section_id)
 		return sizeof(struct bdb_sdvo_lvds_dtd);
 	case BDB_SDVO_LVDS_PNP_ID:
 		return sizeof(struct bdb_sdvo_lvds_pnp_id);
+	case BDB_SDVO_LVDS_PPS:
+		return sizeof(struct bdb_sdvo_lvds_pps);
 	case BDB_EDP:
 		return sizeof(struct bdb_edp);
 	case BDB_DISPLAY_SELECT_IVB:
@@ -2600,6 +2602,21 @@ static void dump_sdvo_lvds_pnp_id(struct context *context,
 	}
 }
 
+static void dump_sdvo_lvds_pps(struct context *context,
+			       const struct bdb_block *block)
+{
+	const struct bdb_sdvo_lvds_pps *t = block_data(block);
+
+	for (int n = 0; n < ARRAY_SIZE(t->pps); n++) {
+		printf("\tSDVO Panel %d%s\n", n, sdvo_panel_str(context, n));
+		printf("\t\tT0: %d ms\n", t->pps[n].t0);
+		printf("\t\tT1: %d ms\n", t->pps[n].t1);
+		printf("\t\tT2: %d ms\n", t->pps[n].t2);
+		printf("\t\tT3: %d ms\n", t->pps[n].t3);
+		printf("\t\tT4: %d ms\n", t->pps[n].t4);
+	}
+}
+
 static void dump_sdvo_lvds_options(struct context *context,
 				   const struct bdb_block *block)
 {
@@ -3446,6 +3463,11 @@ struct dumper dumpers[] = {
 		.name = "SDVO LVDS PnP ID",
 		.dump = dump_sdvo_lvds_pnp_id
 	},
+	{
+		.id = BDB_SDVO_LVDS_PPS,
+		.name = "SDVO LVDS PPS",
+		.dump = dump_sdvo_lvds_pps,
+	},
 	{
 		.id = BDB_EDP,
 		.name = "eDP block",
-- 
2.44.2



More information about the igt-dev mailing list