[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