From: Louis Chauvet <louis.chauvet@bootlin.com>
To: igt-dev@lists.freedesktop.org, ihf@google.com,
markyacoub@google.com, thomas.petazzoni@bootlin.com,
jeremie.dautheribes@bootlin.com
Cc: Louis Chauvet <louis.chauvet@bootlin.com>
Subject: [PATCH i-g-t v2 34/39] lib/chamelium/v3: Implement method to discover video signal status
Date: Tue, 09 Jul 2024 17:34:50 +0200 [thread overview]
Message-ID: <20240709-dev-remove-static-ports-v2-34-5adfc6985778@bootlin.com> (raw)
In-Reply-To: <20240709-dev-remove-static-ports-v2-0-5adfc6985778@bootlin.com>
The Chamelium can record signals received on its ports. This commit
introduces DetectResolution and WaitVideoInputStable RPC calls to utilize
this functionality, allowing users to monitor and manage video signal
status.
Signed-off-by: Louis Chauvet <louis.chauvet@bootlin.com>
---
lib/chamelium/v3/igt_chamelium.c | 54 ++++++++++++++++++++++++++++++++++++++++
lib/chamelium/v3/igt_chamelium.h | 5 +++-
2 files changed, 58 insertions(+), 1 deletion(-)
diff --git a/lib/chamelium/v3/igt_chamelium.c b/lib/chamelium/v3/igt_chamelium.c
index cf9eb330efe4..436a3cba139e 100644
--- a/lib/chamelium/v3/igt_chamelium.c
+++ b/lib/chamelium/v3/igt_chamelium.c
@@ -1119,3 +1119,57 @@ void chamelium_v3_apply_edid(struct igt_chamelium_v3 *chamelium,
igt_debug("RPC ApplyEdid(%d, %d)\n", port_id, edid_id);
xmlrpc_DECREF(__chamelium_rpc(chamelium, "ApplyEdid", "(ii)", port_id, edid_id));
}
+
+/**
+ * chamelium_v3_port_get_resolution - Get the resolution of a signal on a specific port
+ *
+ * @chamelium: Chamelium to use
+ * @port_id: Port to fetch the resolution
+ * @x: Out parameter for the width of the signal
+ * @y: Out parameter for the height of the signal
+ */
+void chamelium_v3_port_get_resolution(struct igt_chamelium_v3 *chamelium,
+ chamelium_v3_port_id port_id,
+ int *x, int *y)
+{
+ xmlrpc_value *res, *res_x, *res_y;
+
+ igt_debug("RPC DetectResolution(%d)\n", port_id);
+ res = __chamelium_rpc(chamelium, "DetectResolution", "(i)",
+ port_id);
+
+ xmlrpc_array_read_item(&chamelium->env, res, 0, &res_x);
+ xmlrpc_array_read_item(&chamelium->env, res, 1, &res_y);
+ xmlrpc_read_int(&chamelium->env, res_x, x);
+ xmlrpc_read_int(&chamelium->env, res_y, y);
+
+ xmlrpc_DECREF(res_x);
+ xmlrpc_DECREF(res_y);
+ xmlrpc_DECREF(res);
+}
+
+/**
+ * chamelium_v3_port_wait_video_input_stable - Get the resolution of a signal on a specific port
+ *
+ * @chamelium: Chamelium to use
+ * @port_id: Port to fetch the resolution
+ * @timeout_secs: Timeout to wait before returning
+ *
+ * Returns true if a signal is properly detected by the chamelium on the port @port_id
+ */
+bool chamelium_v3_port_wait_video_input_stable(struct igt_chamelium_v3 *chamelium,
+ chamelium_v3_port_id port_id,
+ int timeout_secs)
+{
+ xmlrpc_value *res;
+ xmlrpc_bool is_on;
+
+ igt_debug("RPC WaitVideoInputStable(%d, %d)\n", port_id, timeout_secs);
+ res = __chamelium_rpc(chamelium, "WaitVideoInputStable", "(ii)",
+ port_id, timeout_secs);
+
+ xmlrpc_read_bool(&chamelium->env, res, &is_on);
+ xmlrpc_DECREF(res);
+
+ return is_on;
+}
diff --git a/lib/chamelium/v3/igt_chamelium.h b/lib/chamelium/v3/igt_chamelium.h
index 0d2e481f6cca..bc0645f882c0 100644
--- a/lib/chamelium/v3/igt_chamelium.h
+++ b/lib/chamelium/v3/igt_chamelium.h
@@ -80,5 +80,8 @@ chamelium_edid_id chamelium_v3_create_edid(struct igt_chamelium_v3 *chamelium,
const struct edid *edid);
void chamelium_v3_apply_edid(struct igt_chamelium_v3 *chamelium, chamelium_v3_port_id port_id,
chamelium_edid_id edid_id);
-
+void chamelium_v3_port_get_resolution(struct igt_chamelium_v3 *chamelium,
+ chamelium_v3_port_id port_id, int *x, int *y);
+bool chamelium_v3_port_wait_video_input_stable(struct igt_chamelium_v3 *chamelium,
+ chamelium_v3_port_id port_id, int timeout_secs);
#endif //V3_IGT_CHAMELIUM_H
--
2.44.2
next prev parent reply other threads:[~2024-07-09 15:35 UTC|newest]
Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-09 15:34 [PATCH i-g-t v2 00/39] tests/chamelium: Integrate the chamelium v3 Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 01/39] lib/igt_kms: Add a detect timeout value Louis Chauvet
2024-08-27 7:51 ` Kamil Konieczny
2024-08-28 14:31 ` Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 02/39] lib/igt_kms: Add helper to wait for a specific status on a connector Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 03/39] lib/igt_kms: Add function to list connected connectors Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 04/39] lib/igt_kms: Add helper to obtain a connector by its name or MST path Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 05/39] lib/igt_kms: Add function to get valid pipe for specific output Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 06/39] lib/monitor_edids: Add helper functions for using monitor_edid objects Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 07/39] lib/monitor_edids: Add helper to get an EDID by its name Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 08/39] lib/monitor_edids: Add helper to print all available EDID names Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 09/39] lib/monitor_edids: Fix missing names in some monitor EDID Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 10/39] lib/monitor_edids: Add new EDID for HDMI 4k Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 11/39] tests/chamelium: Extract Chamelium v2 tests into a separate directory Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 12/39] lib/chamelium/v2: Extract chamelium v2 wrapper into its own directory Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 13/39] lib/chamelium/v2: Modify build options to separate Chamelium v2 and v3 Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 14/39] lib/chamelium/v3: Introduce the foundation for the Chamelium v3 wrapper Louis Chauvet
2024-08-26 9:22 ` Vignesh Raman
2024-08-28 17:26 ` Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 15/39] lib/chamelium/v3: Introduce initialization and cleanup of Chamelium-related structures Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 16/39] lib/chamelium/v3: Add method to discover Chamelium ports Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 17/39] lib/chamelium/v3: Implement method to retrieve Chamelium port names Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 18/39] tests/chamelium/v3: Implement a basic Chamelium v3 accessibility test Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 19/39] lib/chamelium/v3: Implement Chamelium reinitialization via Reset RPC call Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 20/39] lib/chamelium/v3: Implement methods for plugging Chamelium ports Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 21/39] lib/chamelium/v3: Implement methods for managing Chamelium EDID Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 22/39] lib/chamelium/v3: Implement Chamelium configuration parsing Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 23/39] lib/chamelium/v3: Log port mapping for debugging purposes Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 24/39] lib/chamelium/v3: Introduce new configuration format for MST support Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 25/39] lib/chamelium/v3: Provide access to port_mapping via method call Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 26/39] lib/chamelium/v3: Implement helper function to get port mapping from Chameleon port id Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 27/39] lib/chamelium/v3: Implement helper function to retrieve connector from port mapping Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 28/39] lib/chamelium/v3: Plug specific ports for all tests Louis Chauvet
2024-08-26 9:26 ` Vignesh Raman
2024-08-28 17:26 ` Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 29/39] lib/chamelium/v3: Implement Chamelium port autodetection algorithm Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 30/39] lib/chamelium/v3: Add save option to avoid doing autodetection every time Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 31/39] tests/chamelium/v3: Implement basic EDID handling test Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 32/39] tests/chamelium/v3: Implement 4K EDID stress test Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 33/39] tests/chamelium/v3: Implement non-4K " Louis Chauvet
2024-07-09 15:34 ` Louis Chauvet [this message]
2024-07-09 15:34 ` [PATCH i-g-t v2 35/39] tests/chamelium/v3: Implement test for DRM device resolution Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 36/39] lib/chamelium/v3: Implement hot plug toggle scheduling method Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 37/39] tests/chamelium/v3: Add test for display change detection during sleep Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 38/39] tests/chamelium/v3: Add MST EDID reading test Louis Chauvet
2024-07-09 15:34 ` [PATCH i-g-t v2 39/39] docs: Add Chamelium v3 Louis Chauvet
2024-07-09 15:47 ` [PATCH i-g-t v2 00/39] tests/chamelium: Integrate the chamelium v3 Louis Chauvet
2024-07-09 16:16 ` ✗ Fi.CI.BUILD: failure for " Patchwork
2024-07-10 9:48 ` Louis Chauvet
2024-08-26 9:30 ` Vignesh Raman
2024-07-09 16:21 ` ✗ GitLab.Pipeline: warning " 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=20240709-dev-remove-static-ports-v2-34-5adfc6985778@bootlin.com \
--to=louis.chauvet@bootlin.com \
--cc=igt-dev@lists.freedesktop.org \
--cc=ihf@google.com \
--cc=jeremie.dautheribes@bootlin.com \
--cc=markyacoub@google.com \
--cc=thomas.petazzoni@bootlin.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox