[PATCH i-g-t 3/6] lib/igt_kms: allow set and reset value to be same

Imre Deak imre.deak at intel.com
Wed Sep 18 14:33:27 UTC 2024


On Thu, Sep 12, 2024 at 11:58:36AM +0530, Kunal Joshi wrote:
> allow set and reset value to be same, let the caller handle
> this scenario instead.
> 
> example scenario where this is required.
> i915_dp_force_link_rate should be auto before starting test
> should be auto at exit
> 
> v2: handle the scenario at caller side
> 
> Signed-off-by: Kunal Joshi <kunal1.joshi at intel.com>
> ---
>  lib/igt_kms.c | 21 +++++++++++++--------
>  1 file changed, 13 insertions(+), 8 deletions(-)
> 
> diff --git a/lib/igt_kms.c b/lib/igt_kms.c
> index 863eb5331..a7f8d0f83 100644
> --- a/lib/igt_kms.c
> +++ b/lib/igt_kms.c
> @@ -1557,7 +1557,8 @@ static void connector_attr_free(struct igt_connector_attr *c)
>  static bool connector_attr_set(int idx, drmModeConnector *connector,
>  			       int dir, igt_connector_attr_set set,
>  			       const char *attr, const char *value,
> -			       const char *reset_value)
> +			       const char *reset_value,
> +			       bool allow_set_equals_reset)

force_reset would describe better what the flag does.

>  {
>  	struct igt_connector_attr *c;
>  
> @@ -1573,7 +1574,7 @@ static bool connector_attr_set(int idx, drmModeConnector *connector,
>  		return false;
>  	}
>  
> -	if (!strcmp(c->value, c->reset_value))
> +	if (!allow_set_equals_reset && !strcmp(c->value, c->reset_value))
>  		connector_attr_free(c);
>  
>  	return true;
> @@ -1582,7 +1583,8 @@ static bool connector_attr_set(int idx, drmModeConnector *connector,
>  static bool connector_attr_set_sysfs(int drm_fd,
>  				     drmModeConnector *connector,
>  				     const char *attr, const char *value,
> -				     const char *reset_value)
> +				     const char *reset_value,
> +				     bool allow_set_equals_reset)
>  {
>  	char name[80];
>  	int idx, dir;
> @@ -1600,7 +1602,8 @@ static bool connector_attr_set_sysfs(int drm_fd,
>  		return false;
>  
>  	if (!connector_attr_set(idx, connector, dir,
> -				igt_sysfs_set, attr, value, reset_value))
> +				igt_sysfs_set, attr, value, reset_value,
> +				allow_set_equals_reset))
>  		return false;
>  
>  	igt_debug("Connector %s/%s is now %s\n", name, attr, value);
> @@ -1611,7 +1614,8 @@ static bool connector_attr_set_sysfs(int drm_fd,
>  static bool connector_attr_set_debugfs(int drm_fd,
>  				       drmModeConnector *connector,
>  				       const char *attr, const char *value,
> -				       const char *reset_value)
> +				       const char *reset_value,
> +				       bool allow_set_equals_reset)
>  {
>  	char name[80];
>  	int idx, dir;
> @@ -1630,7 +1634,7 @@ static bool connector_attr_set_debugfs(int drm_fd,
>  
>  	if (!connector_attr_set(idx, connector, dir,
>  				igt_sysfs_set, attr,
> -				value, reset_value))
> +				value, reset_value, allow_set_equals_reset))
>  		return false;
>  
>  	igt_info("Connector %s/%s is now %s\n", name, attr, value);
> @@ -1662,7 +1666,8 @@ static bool force_connector(int drm_fd,
>  			    const char *value)
>  {
>  	return connector_attr_set_sysfs(drm_fd, connector,
> -					"status", value, "detect");
> +					"status", value, "detect",
> +					false);
>  }
>  
>  /**
> @@ -1727,7 +1732,7 @@ static bool force_connector_bigjoiner(int drm_fd,
>  {
>  	return connector_attr_set_debugfs(drm_fd, connector,
>  					  "i915_bigjoiner_force_enable",
> -					  value, "0");
> +					  value, "0", false);
>  }
>  
>  /**
> -- 
> 2.43.0
> 


More information about the igt-dev mailing list