[PATCH i-g-t v7 00/48] Unigraf integration

Louis Chauvet
2026-02-23T12:08:47Z

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..16: Preparation for the series, I decided to move them at the
start to avoid mixing unigraf and igt modifications
- PATCHES 17..19: Add basic unigraf configuration
- *PATCH 20: Autoconnect unigraf when configured
- *PATCHES 21..23: Add more unigraf configuration
- PATCHES 24..29: Add basic unigraf helpers
- *PATCH 30: First basic unigraf test (connection, MST stream count)
- *PATCHES 31..35: Add CRC calculation using unigraf instead of GPU CRC
- PATCHES 36..43: Move i915-specific helpers and create generic ones,
clean some code
- PATCHES 44..47: Add unigraf configuration for link configuration
- *PATCHES 48: Add link training tests

Each * is a new feature and the series can be partially applied to this
point.

Thanks,
Louis Chauvet

Signed-off-by: Louis Chauvet <louis.chauvet@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 (48):
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/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 | 831 ++++++++++++++--------------
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/unigraf/TSI.h | 228 ++++++++
lib/unigraf/TSI_types.h | 126 +++++
lib/unigraf/unigraf.c | 907 +++++++++++++++++++++++++++++++
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 | 135 +++++
tests/unigraf/unigraf_lt.c | 183 +++++++
30 files changed, 3243 insertions(+), 469 deletions(-)
---
base-commit: 4987fcaab16c415042d0969743877a8141625589
change-id: 20250425-unigraf-integration-11ed330755d5

Best regards,
--
Louis Chauvet <louis.chauvet@bootlin.com>