[PATCH i-g-t 10/14] lib/igt_kms: add helper to set connector link status

Imre Deak imre.deak at intel.com
Tue Sep 3 13:56:20 UTC 2024


On Mon, Aug 26, 2024 at 01:36:08AM +0530, Kunal Joshi wrote:
> add helper to set connector's link status property
> 
> Signed-off-by: Kunal Joshi <kunal1.joshi at intel.com>
> ---
>  lib/igt_kms.c | 36 ++++++++++++++++++++++++++++++++++++
>  lib/igt_kms.h |  2 ++
>  2 files changed, 38 insertions(+)
> 
> diff --git a/lib/igt_kms.c b/lib/igt_kms.c
> index 91f75243d..e0533f6ae 100644
> --- a/lib/igt_kms.c
> +++ b/lib/igt_kms.c
> @@ -2213,6 +2213,42 @@ void kmstest_set_connector_dpms(int fd, drmModeConnector *connector, int mode)
>  					       dpms, mode) == 0);
>  }
>  
> +/**
> + * kmstest_set_connector_link_status
> + * @drm_fd: drm file descriptor
> + * @connector: libdrm connector
> + * @link_status: DRM link status value
> + * 
> + * This function sets the link status of @connector to @link_status.
> + */
> +void kmstest_set_connector_link_status(int drm_fd, drmModeConnector *connector,
> +				       int link_status)
> +{
> +	int i, link_status_prop = 0;

The property ID's type is uint32_t.

> +	bool found_it = false;
> +
> +	for (i = 0; i < connector->count_props; i++) {
> +		struct drm_mode_get_property prop = {
> +			.prop_id = connector->props[i],
> +		};
> +
> +		if (drmIoctl(drm_fd, DRM_IOCTL_MODE_GETPROPERTY, &prop))
> +			continue;
> +
> +		if (strcmp(prop.name, "link-status"))

Maybe better looking up the name from igt_connector_prop_names[]. Looks
like the property ID is also already cached in
igt_output_t::props[IGT_IGT_CONNECTOR_LINK_STATUS], but looking it up
again here matches the related DPMS helper, so for now it's ok to do the
same.


> +			continue;
> +
> +		link_status_prop = prop.prop_id;
> +		found_it = true;
> +		break;
> +	}
> +	igt_assert_f(found_it, "LINK_STATUS property not found on %d\n",
> +		     connector->connector_id);
> +
> +	igt_assert(drmModeConnectorSetProperty(drm_fd, connector->connector_id,
> +					       link_status_prop, link_status) == 0);
> +}
> +
>  /**
>   * kmstest_get_property:
>   * @drm_fd: drm file descriptor
> diff --git a/lib/igt_kms.h b/lib/igt_kms.h
> index 640ec4e09..3d7842b36 100644
> --- a/lib/igt_kms.h
> +++ b/lib/igt_kms.h
> @@ -301,6 +301,8 @@ bool kmstest_probe_connector_config(int drm_fd, uint32_t connector_id,
>  void kmstest_free_connector_config(struct kmstest_connector_config *config);
>  
>  void kmstest_set_connector_dpms(int fd, drmModeConnector *connector, int mode);
> +void kmstest_set_connector_link_status(int drm_fd, drmModeConnector *connector,
> +				       int link_status);
>  bool kmstest_get_property(int drm_fd, uint32_t object_id, uint32_t object_type,
>  			  const char *name, uint32_t *prop_id, uint64_t *value,
>  			  drmModePropertyPtr *prop);
> -- 
> 2.34.1
> 


More information about the igt-dev mailing list