From: Louis Chauvet <louis.chauvet@bootlin.com>
To: igt-dev@lists.freedesktop.org
Cc: thomas.petazzoni@bootlin.com, luca.ceresoli@bootlin.com,
kory.maincent@bootlin.com, markyacoub@google.com,
khaled.almahallawy@intel.com,
Louis Chauvet <louis.chauvet@bootlin.com>
Subject: [PATCH i-g-t v9 00/49] Unigraf integration
Date: Mon, 16 Mar 2026 17:17:21 +0100 [thread overview]
Message-ID: <20260316-unigraf-integration-v9-0-a01dffc3b0cb@bootlin.com> (raw)
Hi everyone,
I am excited to share I currently have access to a Unigraf device,
which I believe could significantly enhance the capabilities within IGT.
This device has the potential to enable testing of low-level hardware
features that are currently not covered. Specifically, Unigraf devices can
assist in testing link training, signal integrity, HDCP, DSC, and more.
It's important to note that the Unigraf SDK is not open-source, and the
communication protocol with the device is proprietary. As a result, I have
utilized the libTSI.so library, which can be downloaded from [1]. In this
series, I have not used the official TSI_types.h header because it was
incompatible with C, so I hardcoded some necessary values.
This series is a bit longer than I expected, but can be splitted to be
merged faster:
- PATCHES 1..17: Preparation for the series, I decided to move them at the
start to avoid mixing unigraf and igt modifications
- PATCHES 18..20: Add basic unigraf configuration
- *PATCH 21: Autoconnect unigraf when configured
- *PATCHES 22..24: Add more unigraf configuration
- PATCHES 25..30: Add basic unigraf helpers
- *PATCH 31: First basic unigraf test (connection, MST stream count)
- *PATCHES 32..36: Add CRC calculation using unigraf instead of GPU CRC
- PATCHES 37..44: Move i915-specific helpers and create generic ones,
clean some code
- PATCHES 45..48: Add unigraf configuration for link configuration
- *PATCHES 49: Add link training tests
Each * is a new feature and the series can be partially applied to this
point.
Thanks,
Louis Chauvet
PS: sorry for the resend, I found a mistake in the cover and in a patch
authoship.
Signed-off-by: Louis Chauvet <louis.chauvet@bootlin.com>
---
Changes in v9:
- Fix numbering in cover letter
- Clarify authorship in array tests (file skeleton was generated by
Mistral, but edited by me)
- Link to v8: https://lore.kernel.org/r/20260316-unigraf-integration-v8-0-4489bf8572be@bootlin.com
Changes in v8:
- Fixed memory leaks found by Köry
- Renamed list to array (I did not use the existing igt_list, it adds a
layer of complexity: new structure to store int + link, custom free
function...)
- Added test for array
- Link to v7: https://lore.kernel.org/r/20260223-unigraf-integration-v7-0-73dc9143c8c1@bootlin.com
Changes in v7:
- Applied Kory's comments (I forgot to update this list ...)
- Link to v6: https://lore.kernel.org/r/20260202-unigraf-integration-v6-0-834af822eee7@bootlin.com
Changes in v6:
- Fix missed conflicts on master, I don't know how I missed them, sorry
- Link to v5: https://lore.kernel.org/r/20260128-unigraf-integration-v5-0-fbf2e997a011@bootlin.com
Changes in v5:
- Fixed all feedback from Luca (thanks a lot!)
- Added PATCHES 39..40 to clean i915/dp (checkpatch warning)
- Reordered 31..48 to be able to apply partially the series if needed.
- Few modifications of 31..48 to rebase on master and apply some Luca's
comments
- Link to v4: https://lore.kernel.org/r/20251110-unigraf-integration-v4-0-0fc7bb1b4101@bootlin.com
Changes in v4:
- Rebased on master
- Fixed multiple unigraf callbacks
- Created link training tests
- Link to v3: https://lore.kernel.org/r/20250823-unigraf-integration-v3-0-cdc36d5fab4c@bootlin.com
Changes in v3:
- Rebased on master
- Added support for MST
- Repair autodetection and CRC usage
- Link to v2: https://lore.kernel.org/r/20250717-unigraf-integration-v2-0-77dc329e584c@bootlin.com
Changes in v2:
- Splitted in many commits
- Add CRC support
- Link to v1: https://lore.kernel.org/r/20250517-unigraf-integration-v1-1-044acd2133dd@bootlin.com
---
Louis Chauvet (49):
lib/igt_kms: Add a detect timeout value
lib/igt_kms: Add helper to wait for a specific status on a connector
lib/igt_kms: Add function to list connected connectors
lib/igt_kms: Add helper to obtain a connector by its name or MST path
lib/igt_kms: Add helper to wait for new connectors
lib/tests: Add tests for array manipulations
lib/igt_kms: Add helper to get a pipe from a connector
lib/igt_kms: Expose dump_connector_attrs
lib/igt_kms: Expose reset_connectors_at_exit
lib/igt_kms: Expose connector_attr_set and igt_connector_attr_set
lib/igt_debugfs: Move debugfs helpers to the proper location
lib/igt_debugfs: Add const when make sense
lib/igt_amd: Add const when make sense
lib/igt_kms: Add const when make sense
lib/monitor_edids: Add helper functions for using monitor_edid objects
lib/monitor_edids: Add helper to get an EDID by its name
lib/monitor_edids: Add helper to print all available EDID names
lib/unigraf: Add used defines for TSI_Types
lib/unigraf: Add TSI.h
lib/unigraf: Initial Unigraf support
lib/igt_kms: Automatically connect unigraf on display require
lib/unigraf: Introduce device configuration
lib/unigraf: Introduce role configuration
lib/unigraf: Introduce input configuration
lib/unigraf: Add reset function
lib/unigraf: Add unigraf assert and deassert helpers
lib/unigraf: Add plug/unplug helpers
lib/unigraf: Allows sst/mst configuration
lib/unigraf: Add helpers to read and write edid
lib/unigraf: Add connector and EDID configuration
tests/unigraf: Add basic unigraf tests
lib/unigraf: Add unigraf CRC capture
lib/unigraf: Add configuration for CRC usage
lib/unigraf: add unigraf_get_connector_by_stream
lib/unigraf: Add helper to check timings received by unigraf
lib/igt_pipe_crc: Add unigraf crc calculation
lib/i915/dp: Move DP-related function for i915 to proper folder
lib/i915/dp: Rename functions to avoid confusion
lib/i915/dp: Add helper to get maximum supported rate
lib/i915/dp: Properly check sscanf results
lib/i915/dp: Use igt_output_name instead of private field
lib/igt_dp: Create generic helpers for DP information
lib/igt_kms: Add asserts to avoid null pointer dereference
lib/igt_kms: Add helper to get a CRTC from an output
lib/unigraf: Add lane count configuration
docs/unigraf: Add unigraf documentation
lib/unigraf: Add helpers to set maximum link rate
lib/unigraf: Add helpers to get the current LT status
tests/unigraf/unigraf_lt: Add test for link training
docs/unigraf.txt | 81 +++
lib/i915/i915_dp.c | 392 +++++++++++++
lib/i915/i915_dp.h | 23 +
lib/igt_amd.c | 2 +-
lib/igt_amd.h | 2 +-
lib/igt_core.c | 33 ++
lib/igt_core.h | 9 +
lib/igt_debugfs.c | 96 +++-
lib/igt_debugfs.h | 15 +-
lib/igt_dp.c | 177 ++++++
lib/igt_dp.h | 30 +
lib/igt_kms.c | 844 ++++++++++++++--------------
lib/igt_kms.h | 41 +-
lib/igt_pipe_crc.c | 35 ++
lib/meson.build | 12 +
lib/monitor_edids/dp_edids.h | 3 +
lib/monitor_edids/hdmi_edids.h | 3 +
lib/monitor_edids/monitor_edids_helper.c | 126 +++++
lib/monitor_edids/monitor_edids_helper.h | 10 +-
lib/tests/igt_kms_array_diff.c | 159 ++++++
lib/tests/meson.build | 1 +
lib/unigraf/TSI.h | 228 ++++++++
lib/unigraf/TSI_types.h | 126 +++++
lib/unigraf/unigraf.c | 909 +++++++++++++++++++++++++++++++
lib/unigraf/unigraf.h | 105 ++++
meson.build | 14 +
tests/intel/kms_dp_link_training.c | 19 +-
tests/intel/kms_dp_linktrain_fallback.c | 57 +-
tests/meson.build | 4 +
tests/unigraf/meson.build | 13 +
tests/unigraf/unigraf_connectivity.c | 138 +++++
tests/unigraf/unigraf_lt.c | 183 +++++++
32 files changed, 3421 insertions(+), 469 deletions(-)
---
base-commit: a7e8b577d5f590093bb2aeb65d73666f12941383
change-id: 20250425-unigraf-integration-11ed330755d5
Best regards,
--
Louis Chauvet <louis.chauvet@bootlin.com>
next reply other threads:[~2026-03-16 16:23 UTC|newest]
Thread overview: 83+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-16 16:17 Louis Chauvet [this message]
2026-03-16 16:17 ` [PATCH i-g-t v9 01/49] lib/igt_kms: Add a detect timeout value Louis Chauvet
2026-03-16 18:50 ` Kamil Konieczny
2026-03-16 16:17 ` [PATCH i-g-t v9 02/49] lib/igt_kms: Add helper to wait for a specific status on a connector Louis Chauvet
2026-03-24 10:22 ` Kamil Konieczny
2026-03-16 16:17 ` [PATCH i-g-t v9 03/49] lib/igt_kms: Add function to list connected connectors Louis Chauvet
2026-03-24 10:34 ` Kamil Konieczny
2026-03-24 13:56 ` Louis Chauvet
2026-03-16 16:17 ` [PATCH i-g-t v9 04/49] lib/igt_kms: Add helper to obtain a connector by its name or MST path Louis Chauvet
2026-03-16 16:17 ` [PATCH i-g-t v9 05/49] lib/igt_kms: Add helper to wait for new connectors Louis Chauvet
2026-03-17 14:56 ` Kory Maincent
2026-03-23 14:40 ` Louis Chauvet
2026-03-24 10:11 ` Kamil Konieczny
2026-03-16 16:17 ` [PATCH i-g-t v9 06/49] lib/tests: Add tests for array manipulations Louis Chauvet
2026-03-17 15:00 ` Kory Maincent
2026-03-16 16:17 ` [PATCH i-g-t v9 07/49] lib/igt_kms: Add helper to get a pipe from a connector Louis Chauvet
2026-03-24 7:58 ` Jani Nikula
2026-03-24 10:02 ` Kamil Konieczny
2026-03-16 16:17 ` [PATCH i-g-t v9 08/49] lib/igt_kms: Expose dump_connector_attrs Louis Chauvet
2026-03-16 16:17 ` [PATCH i-g-t v9 09/49] lib/igt_kms: Expose reset_connectors_at_exit Louis Chauvet
2026-03-16 16:17 ` [PATCH i-g-t v9 10/49] lib/igt_kms: Expose connector_attr_set and igt_connector_attr_set Louis Chauvet
2026-03-16 16:17 ` [PATCH i-g-t v9 11/49] lib/igt_debugfs: Move debugfs helpers to the proper location Louis Chauvet
2026-03-16 16:17 ` [PATCH i-g-t v9 12/49] lib/igt_debugfs: Add const when make sense Louis Chauvet
2026-03-16 16:17 ` [PATCH i-g-t v9 13/49] lib/igt_amd: " Louis Chauvet
2026-03-16 16:17 ` [PATCH i-g-t v9 14/49] lib/igt_kms: " Louis Chauvet
2026-03-16 16:17 ` [PATCH i-g-t v9 15/49] lib/monitor_edids: Add helper functions for using monitor_edid objects Louis Chauvet
2026-03-17 15:09 ` Kory Maincent
2026-03-24 10:15 ` Kamil Konieczny
2026-03-24 14:09 ` Louis Chauvet
2026-03-16 16:17 ` [PATCH i-g-t v9 16/49] lib/monitor_edids: Add helper to get an EDID by its name Louis Chauvet
2026-03-16 16:17 ` [PATCH i-g-t v9 17/49] lib/monitor_edids: Add helper to print all available EDID names Louis Chauvet
2026-03-16 16:17 ` [PATCH i-g-t v9 18/49] lib/unigraf: Add used defines for TSI_Types Louis Chauvet
2026-03-16 16:17 ` [PATCH i-g-t v9 19/49] lib/unigraf: Add TSI.h Louis Chauvet
2026-03-16 16:17 ` [PATCH i-g-t v9 20/49] lib/unigraf: Initial Unigraf support Louis Chauvet
2026-03-24 8:19 ` Naladala, Ramanaidu
2026-03-24 9:37 ` Louis Chauvet
2026-03-26 9:59 ` Louis Chauvet
2026-03-24 9:58 ` Kamil Konieczny
2026-03-16 16:17 ` [PATCH i-g-t v9 21/49] lib/igt_kms: Automatically connect unigraf on display require Louis Chauvet
2026-03-16 16:17 ` [PATCH i-g-t v9 22/49] lib/unigraf: Introduce device configuration Louis Chauvet
2026-03-17 15:16 ` Kory Maincent
2026-03-16 16:17 ` [PATCH i-g-t v9 23/49] lib/unigraf: Introduce role configuration Louis Chauvet
2026-03-17 15:19 ` Kory Maincent
2026-03-16 16:17 ` [PATCH i-g-t v9 24/49] lib/unigraf: Introduce input configuration Louis Chauvet
2026-03-16 16:17 ` [PATCH i-g-t v9 25/49] lib/unigraf: Add reset function Louis Chauvet
2026-03-16 16:17 ` [PATCH i-g-t v9 26/49] lib/unigraf: Add unigraf assert and deassert helpers Louis Chauvet
2026-03-16 16:17 ` [PATCH i-g-t v9 27/49] lib/unigraf: Add plug/unplug helpers Louis Chauvet
2026-03-16 16:17 ` [PATCH i-g-t v9 28/49] lib/unigraf: Allows sst/mst configuration Louis Chauvet
2026-03-16 16:17 ` [PATCH i-g-t v9 29/49] lib/unigraf: Add helpers to read and write edid Louis Chauvet
2026-03-17 15:32 ` Kory Maincent
2026-03-23 14:46 ` Louis Chauvet
2026-03-23 16:26 ` Kamil Konieczny
2026-03-23 17:34 ` Louis Chauvet
2026-03-24 9:35 ` Louis Chauvet
2026-03-16 16:17 ` [PATCH i-g-t v9 30/49] lib/unigraf: Add connector and EDID configuration Louis Chauvet
2026-03-16 16:17 ` [PATCH i-g-t v9 31/49] tests/unigraf: Add basic unigraf tests Louis Chauvet
2026-03-17 15:46 ` Kory Maincent
2026-03-23 14:49 ` Louis Chauvet
2026-03-24 19:25 ` Naladala, Ramanaidu
2026-03-16 16:17 ` [PATCH i-g-t v9 32/49] lib/unigraf: Add unigraf CRC capture Louis Chauvet
2026-03-16 16:17 ` [PATCH i-g-t v9 33/49] lib/unigraf: Add configuration for CRC usage Louis Chauvet
2026-03-16 16:17 ` [PATCH i-g-t v9 34/49] lib/unigraf: add unigraf_get_connector_by_stream Louis Chauvet
2026-03-16 16:17 ` [PATCH i-g-t v9 35/49] lib/unigraf: Add helper to check timings received by unigraf Louis Chauvet
2026-03-16 16:17 ` [PATCH i-g-t v9 36/49] lib/igt_pipe_crc: Add unigraf crc calculation Louis Chauvet
2026-03-16 16:17 ` [PATCH i-g-t v9 37/49] lib/i915/dp: Move DP-related function for i915 to proper folder Louis Chauvet
2026-03-16 16:17 ` [PATCH i-g-t v9 38/49] lib/i915/dp: Rename functions to avoid confusion Louis Chauvet
2026-03-16 16:18 ` [PATCH i-g-t v9 39/49] lib/i915/dp: Add helper to get maximum supported rate Louis Chauvet
2026-03-16 16:18 ` [PATCH i-g-t v9 40/49] lib/i915/dp: Properly check sscanf results Louis Chauvet
2026-03-16 16:18 ` [PATCH i-g-t v9 41/49] lib/i915/dp: Use igt_output_name instead of private field Louis Chauvet
2026-03-16 16:18 ` [PATCH i-g-t v9 42/49] lib/igt_dp: Create generic helpers for DP information Louis Chauvet
2026-03-17 15:55 ` Kory Maincent
2026-03-23 14:52 ` Louis Chauvet
2026-03-16 16:18 ` [PATCH i-g-t v9 43/49] lib/igt_kms: Add asserts to avoid null pointer dereference Louis Chauvet
2026-03-16 16:18 ` [PATCH i-g-t v9 44/49] lib/igt_kms: Add helper to get a CRTC from an output Louis Chauvet
2026-03-17 15:56 ` Kory Maincent
2026-03-16 16:18 ` [PATCH i-g-t v9 45/49] lib/unigraf: Add lane count configuration Louis Chauvet
2026-03-16 16:18 ` [PATCH i-g-t v9 46/49] docs/unigraf: Add unigraf documentation Louis Chauvet
2026-03-17 15:58 ` Kory Maincent
2026-03-24 8:07 ` Naladala, Ramanaidu
2026-03-16 16:18 ` [PATCH i-g-t v9 47/49] lib/unigraf: Add helpers to set maximum link rate Louis Chauvet
2026-03-16 16:18 ` [PATCH i-g-t v9 48/49] lib/unigraf: Add helpers to get the current LT status Louis Chauvet
2026-03-16 16:18 ` [PATCH i-g-t v9 49/49] tests/unigraf/unigraf_lt: Add test for link training Louis Chauvet
2026-03-17 12:02 ` ✗ Fi.CI.BUILD: failure for Unigraf integration (rev8) 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=20260316-unigraf-integration-v9-0-a01dffc3b0cb@bootlin.com \
--to=louis.chauvet@bootlin.com \
--cc=igt-dev@lists.freedesktop.org \
--cc=khaled.almahallawy@intel.com \
--cc=kory.maincent@bootlin.com \
--cc=luca.ceresoli@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