[PATCH i-g-t 1/3] lib/igt_kms: Add lib changes to check joiner is enabled

Karthik B S karthik.b.s at intel.com
Fri Feb 7 05:51:58 UTC 2025


Hi,

On 2/4/2025 11:57 PM, Jeevan B wrote:
> Added a library change where we if joiner is enabled or not.
Please fix the commit message.
>
> v2: Update function name and logic to check joiner
>      enabled for exact pipe. (Karthik)
>
> Signed-off-by: Jeevan B <jeevan.b at intel.com>
> ---
>   lib/igt_kms.c | 31 +++++++++++++++++++++++++++++++
>   lib/igt_kms.h |  1 +
>   2 files changed, 32 insertions(+)
>
> diff --git a/lib/igt_kms.c b/lib/igt_kms.c
> index 90f44b4d3..d4980d2ac 100644
> --- a/lib/igt_kms.c
> +++ b/lib/igt_kms.c
> @@ -6406,6 +6406,37 @@ bool bigjoiner_mode_found(int drm_fd, drmModeConnector *connector,
>   	return found;
>   }
>   
> +/**
> + * igt_is_joiner_enabled:
> + * @drmfd: A drm file descriptor
> + * @pipe: display pipe
> + *
> + * Returns: True if joiner is enabled, false otherwise.
> + */
> +bool igt_is_joiner_enabled(int drmfd, enum pipe pipe)
igt_is_joiner_enabled -> igt_is_joiner_enabled_for_pipe
> +{
> +	char buf[16384], master_str[64], slave_str[64];
> +	int dir, res;
> +	int initial_number = 0b11;

I think this variable can be named better, may be pipe_mask or something 
similar to this?

Thanks,
Karthik.B.S

> +
> +
> +	dir = igt_debugfs_dir(drmfd);
> +	igt_assert(dir >= 0);
> +
> +	res = igt_debugfs_simple_read(dir, "i915_display_info",
> +					    buf, sizeof(buf));
> +	close(dir);
> +	igt_assert(res >= 0);
> +	initial_number <<= pipe;
> +
> +	snprintf(master_str, sizeof(master_str),
> +		 "Linked to 0x%X pipes as a master", initial_number);
> +	snprintf(slave_str, sizeof(slave_str),
> +		 "Linked to 0x%X pipes as a slave", initial_number);
> +
> +	return (strstr(buf, master_str) && strstr(buf, slave_str));
> +}
> +
>   /**
>    * igt_ultrajoiner_possible:
>    * @mode: libdrm mode
> diff --git a/lib/igt_kms.h b/lib/igt_kms.h
> index 8810123fb..7df53ec9c 100644
> --- a/lib/igt_kms.h
> +++ b/lib/igt_kms.h
> @@ -1245,6 +1245,7 @@ int igt_get_max_dotclock(int fd);
>   bool igt_bigjoiner_possible(int drm_fd, drmModeModeInfo *mode, int max_dotclock);
>   bool bigjoiner_mode_found(int drm_fd, drmModeConnector *connector,
>   			  int max_dotclock, drmModeModeInfo *mode);
> +bool igt_is_joiner_enabled(int drmfd, enum pipe pipe);
>   bool igt_ultrajoiner_possible(drmModeModeInfo *mode, int max_dotclock);
>   bool ultrajoiner_mode_found(int drm_fd, drmModeConnector *connector,
>   			  int max_dotclock, drmModeModeInfo *mode);


More information about the igt-dev mailing list