Igt-dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Ville Syrjala <ville.syrjala@linux.intel.com>
To: igt-dev@lists.freedesktop.org
Subject: [PATCH i-g-t 16/20] tools/intel_vbt_decode: Track the SDVO panel type
Date: Fri, 31 May 2024 17:23:50 +0300	[thread overview]
Message-ID: <20240531142354.16528-17-ville.syrjala@linux.intel.com> (raw)
In-Reply-To: <20240531142354.16528-1-ville.syrjala@linux.intel.com>

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

Just like we do for the LFP panel types, let's keep track of
the SDVO panel type.

I suppose technically we should also check h40_set_panel_type,
and if set then derive the panel type via some VBIOS call or
some such crazyness. We'll just ignore that and assume the VBT
specified panel type is correct. Could also add a comman line
override, but meh.

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

diff --git a/tools/intel_vbt_decode.c b/tools/intel_vbt_decode.c
index 167b5751ad16..04520973aae1 100644
--- a/tools/intel_vbt_decode.c
+++ b/tools/intel_vbt_decode.c
@@ -69,6 +69,7 @@ struct context {
 
 	uint32_t devid;
 	int panel_type, panel_type2;
+	int sdvo_panel_type;
 	bool dump_all_panel_types;
 	bool hexdump;
 };
@@ -101,6 +102,14 @@ static const char *panel_str(const struct context *context, int panel_type)
 	return "";
 }
 
+static const char *sdvo_panel_str(const struct context *context, int sdvo_panel_type)
+{
+	if (sdvo_panel_type == context->sdvo_panel_type)
+		return " (*)";
+
+	return "";
+}
+
 /* Get BDB block size given a pointer to Block ID. */
 static uint32_t _get_blocksize(const uint8_t *block_base)
 {
@@ -1935,7 +1944,7 @@ static void dump_sdvo_lvds_dtd(struct context *context,
 	const struct bdb_sdvo_lvds_dtd *t = block_data(block);
 
 	for (int n = 0; n < ARRAY_SIZE(t->dtd); n++) {
-		printf("%d:\n", n);
+		printf("\tSDVO Panel %d%s\n", n, sdvo_panel_str(context, n));
 		print_detail_timing_data(&t->dtd[n]);
 	}
 }
@@ -2623,6 +2632,25 @@ static int get_panel_type(struct context *context, bool is_panel_type2)
 	return panel_type;
 }
 
+/* get SDVO panel type from SDVO options block, or -1 if block not found */
+static int get_sdvo_panel_type(struct context *context)
+{
+	const struct bdb_sdvo_lvds_options *options;
+	struct bdb_block *block;
+	int panel_type = -1;
+
+	block = find_section(context, BDB_SDVO_LVDS_OPTIONS);
+	if (!block)
+		return -1;
+
+	options = block_data(block);
+	panel_type = options->panel_type;
+
+	free(block);
+
+	return panel_type;
+}
+
 static int
 get_device_id(unsigned char *bios, int size)
 {
@@ -2933,6 +2961,7 @@ int main(int argc, char **argv)
 	struct context context = {
 		.panel_type = -1,
 		.panel_type2 = -1,
+		.sdvo_panel_type = -1,
 	};
 	const char *panel_edid = NULL, *panel_edid2 = NULL;
 	char *endp;
@@ -3134,6 +3163,9 @@ int main(int argc, char **argv)
 		context.panel_type2 = -1;
 	}
 
+	if (context.sdvo_panel_type == -1)
+		context.sdvo_panel_type = get_sdvo_panel_type(&context);
+
 	if (describe) {
 		print_description(&context);
 	} else if (header_only) {
-- 
2.44.1


  parent reply	other threads:[~2024-05-31 14:25 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-05-31 14:23 [PATCH i-g-t 00/20] tools/intel_vbt_decode: Refactoring and prep work for decoding more blocks Ville Syrjala
2024-05-31 14:23 ` [PATCH i-g-t 01/20] tools/intel_vbt_decode: Finish the s/lvds/lfp/ rename Ville Syrjala
2024-05-31 14:23 ` [PATCH i-g-t 02/20] tools/intel_vbt_decode: s/dump_sdvo_panel_dtd()/dump_sdvo_lvds_dtd()/ Ville Syrjala
2024-05-31 14:23 ` [PATCH i-g-t 03/20] lib: Define DIV_ROUND_CLOSEST() Ville Syrjala
2024-05-31 14:23 ` [PATCH i-g-t 04/20] tools/intel_vbt_decode: Fix some tabs Ville Syrjala
2024-05-31 14:23 ` [PATCH i-g-t 05/20] tools/intel_vbt_decode: Add missing newline Ville Syrjala
2024-05-31 14:23 ` [PATCH i-g-t 06/20] tools/intel_vbt_decode: Indent ALS dump Ville Syrjala
2024-05-31 14:23 ` [PATCH i-g-t 07/20] tools/intel_vbt_decode: Use "(LFP<n>)" to indicate LFP panel type Ville Syrjala
2024-05-31 14:23 ` [PATCH i-g-t 08/20] tools/intel_vbt_decode: Decode the "not HDMI" bit right way up Ville Syrjala
2024-05-31 14:23 ` [PATCH i-g-t 09/20] tools/intel_vbt_decode: Extract dump_pnp_id() Ville Syrjala
2024-05-31 14:48   ` Jani Nikula
2024-06-05 11:41     ` Ville Syrjälä
2024-05-31 14:23 ` [PATCH i-g-t 10/20] tools/intel_vbt_decode: Reuse print_detail_timing_data() Ville Syrjala
2024-05-31 14:50   ` Jani Nikula
2024-05-31 14:23 ` [PATCH i-g-t 11/20] tools/intel_vbt_decode: Dump the new eDP DSC disable bit Ville Syrjala
2024-05-31 14:23 ` [PATCH i-g-t 12/20] tools/intel_vbt_decode: Allow dumpers to delcate min version for the block Ville Syrjala
2024-05-31 14:23 ` [PATCH i-g-t 13/20] tools/intel_vbt_decode: Use .min_bdb_version to filter out PSR block on pre-165 VBTs Ville Syrjala
2024-05-31 14:23 ` [PATCH i-g-t 14/20] tools/intel_vbt_decode: Sort dumper table Ville Syrjala
2024-05-31 14:23 ` [PATCH i-g-t 15/20] tools/intel_vbt_decode: Use struct bdb_sdvo_lvds_dtd Ville Syrjala
2024-05-31 14:23 ` Ville Syrjala [this message]
2024-05-31 14:23 ` [PATCH i-g-t 17/20] tools/intel_vbt_decode: Use find_raw_section() to determine block presence Ville Syrjala
2024-05-31 14:23 ` [PATCH i-g-t 18/20] tools/intel_vbt_decode: Make device handle names more compact Ville Syrjala
2024-05-31 14:23 ` [PATCH i-g-t 19/20] tools/intel_vbt_decode: Declare min/max version for child dev handles Ville Syrjala
2024-05-31 14:23 ` [PATCH i-g-t 20/20] tools/intel_vbt_decode: Decode device handle as a bitmask Ville Syrjala
2024-05-31 15:10   ` Jani Nikula
2024-05-31 15:11 ` [PATCH i-g-t 00/20] tools/intel_vbt_decode: Refactoring and prep work for decoding more blocks Jani Nikula
2024-05-31 16:53 ` ✗ GitLab.Pipeline: warning for " Patchwork
2024-05-31 17:19 ` ✗ Fi.CI.BAT: failure " Patchwork
2024-05-31 17:24 ` ✓ CI.xeBAT: success " Patchwork
2024-05-31 19:02 ` ✗ CI.xeFULL: failure " 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=20240531142354.16528-17-ville.syrjala@linux.intel.com \
    --to=ville.syrjala@linux.intel.com \
    --cc=igt-dev@lists.freedesktop.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox