[PATCH i-g-t v3 2/3] lib/kms: Update force joiner helpers to accomodate ultrajoiner

Nautiyal, Ankit K ankit.k.nautiyal at intel.com
Wed Sep 18 10:39:37 UTC 2024


On 9/18/2024 1:04 PM, Karthik B S wrote:
> v2: Split the lib updates to separate patch (Ankit)
>
> v3: Use enum for joined pipes (Santhosh)
>
> Signed-off-by: Karthik B S <karthik.b.s at intel.com>

Acked-by: Ankit Nautiyal <ankit.k.nautiyal at intel.com>


> ---
>   lib/igt_kms.c            | 33 +++++++++++++++++++++++++--------
>   lib/igt_kms.h            | 16 +++++++++++++++-
>   tests/intel/kms_joiner.c |  2 +-
>   3 files changed, 41 insertions(+), 10 deletions(-)
>
> diff --git a/lib/igt_kms.c b/lib/igt_kms.c
> index cf453dcfc..a39d1176f 100644
> --- a/lib/igt_kms.c
> +++ b/lib/igt_kms.c
> @@ -1720,34 +1720,51 @@ bool kmstest_force_connector(int drm_fd, drmModeConnector *connector,
>   	return true;
>   }
>   
> -static bool force_connector_bigjoiner(int drm_fd,
> +static bool force_connector_joiner(int drm_fd,
>   				      drmModeConnector *connector,
>   				      const char *value)
>   {
>   	return connector_attr_set_debugfs(drm_fd, connector,
> -					  "i915_bigjoiner_force_enable",
> +					  "i915_joiner_force_enable",
>   					  value, "0");
>   }
>   
>   /**
> - * kmstest_force_connector_bigjoiner:
> + * kmstest_force_connector_joiner:
>    * @fd: drm file descriptor
>    * @connector: connector
>    *
> - * Enable force bigjoiner state on the specified connector
> + * Enable force joiner state on the specified connector
>    * and install exit handler for resetting
>    *
>    * Returns: True on success
>    */
> -bool kmstest_force_connector_bigjoiner(int drm_fd, drmModeConnector *connector)
> +bool kmstest_force_connector_joiner(int drm_fd, drmModeConnector *connector, int joined_pipes)
>   {
> -	const char *value = "1";
> +	const char *value;
>   	drmModeConnector *temp;
>   
> +	switch (joined_pipes) {
> +	case JOINED_PIPES_DEFAULT:
> +		value = "0";
> +		break;
> +	case JOINED_PIPES_NONE:
> +		value = "1";
> +		break;
> +	case JOINED_PIPES_BIG_JOINER:
> +		value = "2";
> +		break;
> +	case JOINED_PIPES_ULTRA_JOINER:
> +		value = "4";
> +		break;
> +	default:
> +		igt_assert(0);
> +	}
> +
>   	if (!is_intel_device(drm_fd))
>   		return false;
>   
> -	if (!force_connector_bigjoiner(drm_fd, connector, value))
> +	if (!force_connector_joiner(drm_fd, connector, value))
>   		return false;
>   
>   	dump_connector_attrs();
> @@ -6420,7 +6437,7 @@ bool igt_has_force_joiner_debugfs(int drmfd, char *conn_name)
>   	if (debugfs_fd < 0)
>   		return false;
>   
> -	ret = igt_debugfs_simple_read(debugfs_fd, "i915_bigjoiner_force_enable", buf, sizeof(buf));
> +	ret = igt_debugfs_simple_read(debugfs_fd, "i915_joiner_force_enable", buf, sizeof(buf));
>   	close(debugfs_fd);
>   
>   	return ret >= 0;
> diff --git a/lib/igt_kms.h b/lib/igt_kms.h
> index 4455632f4..2461fa47c 100644
> --- a/lib/igt_kms.h
> +++ b/lib/igt_kms.h
> @@ -260,9 +260,23 @@ enum intel_broadcast_rgb_mode {
>   
>   struct edid;
>   
> +/**
> + * joined_pipes:
> + * @JOINED_PIPES_DEFAULT: Default setting with no force joiner
> + * @JOINED_PIPES_NONE: Force to exactly one pipe
> + * @JOINED_PIPES_BIG_JOINER: Join two pipes big joiner
> + * @JOINED_PIPES_ULTRA_JOINER: Join four pipes for ultra joiner
> + */
> +enum joined_pipes {
> +	JOINED_PIPES_DEFAULT,
> +	JOINED_PIPES_NONE,
> +	JOINED_PIPES_BIG_JOINER,
> +	JOINED_PIPES_ULTRA_JOINER = 4
> +};
> +
>   bool kmstest_force_connector(int fd, drmModeConnector *connector,
>   			     enum kmstest_force_connector_state state);
> -bool kmstest_force_connector_bigjoiner(int drm_fd, drmModeConnector *connector);
> +bool kmstest_force_connector_joiner(int drm_fd, drmModeConnector *connector, int joined_pipes);
>   void kmstest_force_edid(int drm_fd, drmModeConnector *connector,
>   			const struct edid *edid);
>   
> diff --git a/tests/intel/kms_joiner.c b/tests/intel/kms_joiner.c
> index 633bf51c7..e193f9071 100644
> --- a/tests/intel/kms_joiner.c
> +++ b/tests/intel/kms_joiner.c
> @@ -106,7 +106,7 @@ static void enable_force_joiner_on_all_non_big_joiner_outputs(data_t *data)
>   
>   	for (i = 0; i < data->non_big_joiner_output_count; i++) {
>   		output = data->non_big_joiner_output[i];
> -		status = kmstest_force_connector_bigjoiner(data->drm_fd, output->config.connector);
> +		status = kmstest_force_connector_joiner(data->drm_fd, output->config.connector, JOINED_PIPES_BIG_JOINER);
>   		igt_assert_f(status, "Failed to toggle force joiner\n");
>   	}
>   }


More information about the igt-dev mailing list