dri-devel Archive on lore.kernel.org
 help / color / mirror / Atom feed
* Re: [v8 3/3] drm/debug: Expose connector VRR monitor range via debugfs
  2020-06-19 21:23 ` [v8 3/3] drm/debug: Expose connector VRR monitor range via debugfs Bhanuprakash Modem
@ 2020-06-19 18:42   ` Manasi Navare
  2020-06-22  4:34     ` Modem, Bhanuprakash
  0 siblings, 1 reply; 7+ messages in thread
From: Manasi Navare @ 2020-06-19 18:42 UTC (permalink / raw)
  To: Bhanuprakash Modem; +Cc: intel-gfx, dri-devel

Hi Bhanu,

Thanks for the patch, functionality wise looks good. Have you tested this
with kms_vrr IGT, do we see the vrr_range properly exposed?

Also please find some comments below

On Sat, Jun 20, 2020 at 02:53:56AM +0530, Bhanuprakash Modem wrote:
> [Why]
> It's useful to know the min and max vrr range for IGT testing.
> 
> [How]
> Expose the min and max vfreq for the connector via a debugfs file
> on the connector, "vrr_range".
> 
> Example usage: cat /sys/kernel/debug/dri/0/DP-1/vrr_range
> 
> v2:
> * Fix the typo in max_vfreq (Manasi)
> * Change the name of node to i915_vrr_info so we can add
> other vrr info for more debug info (Manasi)
> * Change the VRR capable to display Yes or No (Manasi)
> * Fix indentation checkpatch errors (Manasi)
> v3:
> * Remove the unnecessary debug print (Manasi)
> v4:
> * Rebase
> v5:
> * Rename to vrr_range to match AMD debugfs
> v6:
> * Rebase (manasi)
> v7:
> * Fix cmpilation due to rebase
> v8:
> * Move debugfs node creation logic to DRM (Emil)
> * Remove AMD specific logic (Emil)
> 
> Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
> Signed-off-by: Manasi Navare <manasi.d.navare@intel.com>
> Cc: Jani Nikula <jani.nikula@linux.intel.com>
> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Cc: Harry Wentland <harry.wentland@amd.com>
> ---
>  .../amd/display/amdgpu_dm/amdgpu_dm_debugfs.c | 20 -----------------
>  drivers/gpu/drm/drm_debugfs.c                 | 22 +++++++++++++++++++
>  2 files changed, 22 insertions(+), 20 deletions(-)
> 
> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c
> index 076af267b488..71387d2af2ed 100644
> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c
> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c
> @@ -820,24 +820,6 @@ static int output_bpc_show(struct seq_file *m, void *data)
>  	return res;
>  }
>  
> -/*
> - * Returns the min and max vrr vfreq through the connector's debugfs file.
> - * Example usage: cat /sys/kernel/debug/dri/0/DP-1/vrr_range
> - */
> -static int vrr_range_show(struct seq_file *m, void *data)
> -{
> -	struct drm_connector *connector = m->private;
> -	struct amdgpu_dm_connector *aconnector = to_amdgpu_dm_connector(connector);
> -
> -	if (connector->status != connector_status_connected)
> -		return -ENODEV;
> -
> -	seq_printf(m, "Min: %u\n", (unsigned int)aconnector->min_vfreq);
> -	seq_printf(m, "Max: %u\n", (unsigned int)aconnector->max_vfreq);
> -
> -	return 0;
> -}
> -
>  #ifdef CONFIG_DRM_AMD_DC_HDCP
>  /*
>   * Returns the HDCP capability of the Display (1.4 for now).
> @@ -1001,7 +983,6 @@ static ssize_t dp_dpcd_data_read(struct file *f, char __user *buf,
>  DEFINE_SHOW_ATTRIBUTE(dmub_fw_state);
>  DEFINE_SHOW_ATTRIBUTE(dmub_tracebuffer);
>  DEFINE_SHOW_ATTRIBUTE(output_bpc);
> -DEFINE_SHOW_ATTRIBUTE(vrr_range);
>  #ifdef CONFIG_DRM_AMD_DC_HDCP
>  DEFINE_SHOW_ATTRIBUTE(hdcp_sink_capability);
>  #endif
> @@ -1059,7 +1040,6 @@ static const struct {
>  		{"phy_settings", &dp_phy_settings_debugfs_fop},
>  		{"test_pattern", &dp_phy_test_pattern_fops},
>  		{"output_bpc", &output_bpc_fops},
> -		{"vrr_range", &vrr_range_fops},
>  #ifdef CONFIG_DRM_AMD_DC_HDCP
>  		{"hdcp_sink_capability", &hdcp_sink_capability_fops},
>  #endif

I think the AMD sepecific debugfs removal should be in a separate patch follwing the drm_debugfs addition
patch because from merging pov that patch will get merged through AMD tree
and drm patch will get merged through drm_misc
Also cc the amd dev mailing list for that patch.

@Harry does that sound okay from merging pov?

Manasi

> diff --git a/drivers/gpu/drm/drm_debugfs.c b/drivers/gpu/drm/drm_debugfs.c
> index bfe4602f206b..3d7182001004 100644
> --- a/drivers/gpu/drm/drm_debugfs.c
> +++ b/drivers/gpu/drm/drm_debugfs.c
> @@ -376,6 +376,24 @@ static ssize_t edid_write(struct file *file, const char __user *ubuf,
>  	return (ret) ? ret : len;
>  }
>  
> +/*
> + * Returns the min and max vrr vfreq through the connector's debugfs file.
> + * Example usage: cat /sys/kernel/debug/dri/0/DP-1/vrr_range
> + */
> +static int vrr_range_show(struct seq_file *m, void *data)
> +{
> +	struct drm_connector *connector = m->private;
> +
> +	if (connector->status != connector_status_connected)
> +		return -ENODEV;
> +
> +	seq_printf(m, "Min: %u\n", (u8)connector->display_info.monitor_range.min_vfreq);
> +	seq_printf(m, "Max: %u\n", (u8)connector->display_info.monitor_range.max_vfreq);
> +
> +	return 0;
> +}
> +DEFINE_SHOW_ATTRIBUTE(vrr_range);
> +
>  static const struct file_operations drm_edid_fops = {
>  	.owner = THIS_MODULE,
>  	.open = edid_open,
> @@ -413,6 +431,10 @@ void drm_debugfs_connector_add(struct drm_connector *connector)
>  	/* edid */
>  	debugfs_create_file("edid_override", S_IRUGO | S_IWUSR, root, connector,
>  			    &drm_edid_fops);
> +
> +	/* vrr range */
> +	debugfs_create_file("vrr_range", S_IRUGO, root, connector,
> +			    &vrr_range_fops);
>  }
>  
>  void drm_debugfs_connector_remove(struct drm_connector *connector)
> -- 
> 2.20.1
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [Intel-gfx] [v6 1/3] drm/dp: DRM DP helper for reading Ignore MSA from DPCD
  2020-06-19 21:23 ` [v6 1/3] drm/dp: DRM DP helper for reading Ignore MSA from DPCD Bhanuprakash Modem
@ 2020-06-19 20:01   ` Manasi Navare
  0 siblings, 0 replies; 7+ messages in thread
From: Manasi Navare @ 2020-06-19 20:01 UTC (permalink / raw)
  To: Bhanuprakash Modem; +Cc: intel-gfx, dri-devel

Thanks for the review, pushed to drm-misc

Manasi

On Sat, Jun 20, 2020 at 02:53:54AM +0530, Bhanuprakash Modem wrote:
> From: Manasi Navare <manasi.d.navare@intel.com>
> 
> DP sink device sets the Ignore MSA bit in its
> DP_DOWNSTREAM_PORT_COUNT register to indicate its ability to
> ignore the MSA video timing parameters and its ability to support
> seamless video timing change over a range of timing exposed by
> DisplayID and EDID.
> This is required for the sink to indicate that it is Adaptive sync
> capable.
> 
> v3:
> * Fi the typo in commit message (Manasi)
> v2:
> * Rename to describe what the function does (Jani Nikula)
> 
> Cc: Jani Nikula <jani.nikula@linux.intel.com>
> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Cc: Harry Wentland <harry.wentland@amd.com>
> Cc: Nicholas Kazlauskas <Nicholas.Kazlauskas@amd.com>
> Signed-off-by: Manasi Navare <manasi.d.navare@intel.com>
> Reviewed-by: Harry Wentland <harry.wentland@amd.com>
> ---
>  include/drm/drm_dp_helper.h | 8 ++++++++
>  1 file changed, 8 insertions(+)
> 
> diff --git a/include/drm/drm_dp_helper.h b/include/drm/drm_dp_helper.h
> index 1165ec105638..e47dc22ebf50 100644
> --- a/include/drm/drm_dp_helper.h
> +++ b/include/drm/drm_dp_helper.h
> @@ -1457,6 +1457,14 @@ drm_dp_alternate_scrambler_reset_cap(const u8 dpcd[DP_RECEIVER_CAP_SIZE])
>  			DP_ALTERNATE_SCRAMBLER_RESET_CAP;
>  }
>  
> +/* Ignore MSA timing for Adaptive Sync support on DP 1.4 */
> +static inline bool
> +drm_dp_sink_can_do_video_without_timing_msa(const u8 dpcd[DP_RECEIVER_CAP_SIZE])
> +{
> +	return dpcd[DP_DOWN_STREAM_PORT_COUNT] &
> +		DP_MSA_TIMING_PAR_IGNORED;
> +}
> +
>  /*
>   * DisplayPort AUX channel
>   */
> -- 
> 2.20.1
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [v6 0/3] VRR capable attach prop in i915, DPCD helper, VRR debugfs
@ 2020-06-19 21:23 Bhanuprakash Modem
  2020-06-19 21:23 ` [v6 1/3] drm/dp: DRM DP helper for reading Ignore MSA from DPCD Bhanuprakash Modem
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Bhanuprakash Modem @ 2020-06-19 21:23 UTC (permalink / raw)
  To: bhanuprakash.modem, dri-devel, intel-gfx

This is an initial set of patches for enabling VRR support in i915.
This series has patches for:
1. Adding a drm dpcd helper to read ignore MSA
   bit in sink's DPCD indicating sink support for VRR
2. Attach and set VRR capable connector prop for Intel DP conn
3. Expose VRR min and max through debugfs

Aditya Swarup (1):
  drm/i915/dp: Attach and set drm connector VRR property

Bhanuprakash Modem (1):
  drm/debug: Expose connector VRR monitor range via debugfs

Manasi Navare (1):
  drm/dp: DRM DP helper for reading Ignore MSA from DPCD

 .../amd/display/amdgpu_dm/amdgpu_dm_debugfs.c | 20 --------------
 drivers/gpu/drm/drm_debugfs.c                 | 22 +++++++++++++++
 drivers/gpu/drm/i915/display/intel_dp.c       | 27 +++++++++++++++++++
 drivers/gpu/drm/i915/display/intel_dp.h       |  2 ++
 include/drm/drm_dp_helper.h                   |  8 ++++++
 5 files changed, 59 insertions(+), 20 deletions(-)

-- 
2.20.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [v6 1/3] drm/dp: DRM DP helper for reading Ignore MSA from DPCD
  2020-06-19 21:23 [v6 0/3] VRR capable attach prop in i915, DPCD helper, VRR debugfs Bhanuprakash Modem
@ 2020-06-19 21:23 ` Bhanuprakash Modem
  2020-06-19 20:01   ` [Intel-gfx] " Manasi Navare
  2020-06-19 21:23 ` [v6 2/3] drm/i915/dp: Attach and set drm connector VRR property Bhanuprakash Modem
  2020-06-19 21:23 ` [v8 3/3] drm/debug: Expose connector VRR monitor range via debugfs Bhanuprakash Modem
  2 siblings, 1 reply; 7+ messages in thread
From: Bhanuprakash Modem @ 2020-06-19 21:23 UTC (permalink / raw)
  To: bhanuprakash.modem, dri-devel, intel-gfx

From: Manasi Navare <manasi.d.navare@intel.com>

DP sink device sets the Ignore MSA bit in its
DP_DOWNSTREAM_PORT_COUNT register to indicate its ability to
ignore the MSA video timing parameters and its ability to support
seamless video timing change over a range of timing exposed by
DisplayID and EDID.
This is required for the sink to indicate that it is Adaptive sync
capable.

v3:
* Fi the typo in commit message (Manasi)
v2:
* Rename to describe what the function does (Jani Nikula)

Cc: Jani Nikula <jani.nikula@linux.intel.com>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Cc: Harry Wentland <harry.wentland@amd.com>
Cc: Nicholas Kazlauskas <Nicholas.Kazlauskas@amd.com>
Signed-off-by: Manasi Navare <manasi.d.navare@intel.com>
Reviewed-by: Harry Wentland <harry.wentland@amd.com>
---
 include/drm/drm_dp_helper.h | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/include/drm/drm_dp_helper.h b/include/drm/drm_dp_helper.h
index 1165ec105638..e47dc22ebf50 100644
--- a/include/drm/drm_dp_helper.h
+++ b/include/drm/drm_dp_helper.h
@@ -1457,6 +1457,14 @@ drm_dp_alternate_scrambler_reset_cap(const u8 dpcd[DP_RECEIVER_CAP_SIZE])
 			DP_ALTERNATE_SCRAMBLER_RESET_CAP;
 }
 
+/* Ignore MSA timing for Adaptive Sync support on DP 1.4 */
+static inline bool
+drm_dp_sink_can_do_video_without_timing_msa(const u8 dpcd[DP_RECEIVER_CAP_SIZE])
+{
+	return dpcd[DP_DOWN_STREAM_PORT_COUNT] &
+		DP_MSA_TIMING_PAR_IGNORED;
+}
+
 /*
  * DisplayPort AUX channel
  */
-- 
2.20.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [v6 2/3] drm/i915/dp: Attach and set drm connector VRR property
  2020-06-19 21:23 [v6 0/3] VRR capable attach prop in i915, DPCD helper, VRR debugfs Bhanuprakash Modem
  2020-06-19 21:23 ` [v6 1/3] drm/dp: DRM DP helper for reading Ignore MSA from DPCD Bhanuprakash Modem
@ 2020-06-19 21:23 ` Bhanuprakash Modem
  2020-06-19 21:23 ` [v8 3/3] drm/debug: Expose connector VRR monitor range via debugfs Bhanuprakash Modem
  2 siblings, 0 replies; 7+ messages in thread
From: Bhanuprakash Modem @ 2020-06-19 21:23 UTC (permalink / raw)
  To: bhanuprakash.modem, dri-devel, intel-gfx

From: Aditya Swarup <aditya.swarup@intel.com>

This function sets the VRR property for connector based
on the platform support, EDID monitor range and DP sink
DPCD capability of outputing video without msa
timing information.

v5:
* Fix the vrr prop not being set in kernel (Manasi)
* Unset the prop on connector disconnect (Manasi)
v4:
* Rebase (Mansi)
v3:
* intel_dp_is_vrr_capable can be used for debugfs, make it
non static (Manasi)
v2:
* Just set this in intel_dp_get_modes instead of new hook (Jani)

Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Cc: Jani Nikula <jani.nikula@linux.intel.com>
Signed-off-by: Aditya Swarup <aditya.swarup@intel.com>
Signed-off-by: Manasi Navare <manasi.d.navare@intel.com>
---
 drivers/gpu/drm/i915/display/intel_dp.c | 27 +++++++++++++++++++++++++
 drivers/gpu/drm/i915/display/intel_dp.h |  2 ++
 2 files changed, 29 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
index 42589cae766d..d0dba81cfb07 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -6149,6 +6149,9 @@ intel_dp_detect(struct drm_connector *connector,
 	if (status == connector_status_disconnected) {
 		memset(&intel_dp->compliance, 0, sizeof(intel_dp->compliance));
 		memset(intel_dp->dsc_dpcd, 0, sizeof(intel_dp->dsc_dpcd));
+		/*Reset the immutable VRR Capable property */
+		drm_connector_set_vrr_capable_property(connector,
+						       false);
 
 		if (intel_dp->is_mst) {
 			drm_dbg_kms(&dev_priv->drm,
@@ -6256,6 +6259,23 @@ intel_dp_force(struct drm_connector *connector)
 	intel_display_power_put(dev_priv, aux_domain, wakeref);
 }
 
+bool intel_dp_is_vrr_capable(struct drm_connector *connector)
+{
+	struct intel_dp *intel_dp = intel_attached_dp(to_intel_connector(connector));
+	const struct drm_display_info *info = &connector->display_info;
+	struct drm_i915_private *dev_priv = to_i915(connector->dev);
+
+	/*
+	 * DP Sink is capable of Variable refresh video timings if
+	 * Ignore MSA bit is set in DPCD.
+	 * EDID monitor range also should be atleast 10 for reasonable
+	 * Adaptive sync/ VRR end user experience.
+	 */
+	return INTEL_GEN(dev_priv) >= 12 &&
+		drm_dp_sink_can_do_video_without_timing_msa(intel_dp->dpcd) &&
+		info->monitor_range.max_vfreq - info->monitor_range.min_vfreq > 10;
+}
+
 static int intel_dp_get_modes(struct drm_connector *connector)
 {
 	struct intel_connector *intel_connector = to_intel_connector(connector);
@@ -6264,6 +6284,10 @@ static int intel_dp_get_modes(struct drm_connector *connector)
 	edid = intel_connector->detect_edid;
 	if (edid) {
 		int ret = intel_connector_update_modes(connector, edid);
+
+		if (intel_dp_is_vrr_capable(connector))
+			drm_connector_set_vrr_capable_property(connector,
+							       true);
 		if (ret)
 			return ret;
 	}
@@ -7325,6 +7349,9 @@ intel_dp_add_properties(struct intel_dp *intel_dp, struct drm_connector *connect
 		connector->state->scaling_mode = DRM_MODE_SCALE_ASPECT;
 
 	}
+
+	if (INTEL_GEN(dev_priv) >= 12)
+		drm_connector_attach_vrr_capable_property(connector);
 }
 
 static void intel_dp_init_panel_power_timestamps(struct intel_dp *intel_dp)
diff --git a/drivers/gpu/drm/i915/display/intel_dp.h b/drivers/gpu/drm/i915/display/intel_dp.h
index 0a8950f744f6..db895a3cd93f 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.h
+++ b/drivers/gpu/drm/i915/display/intel_dp.h
@@ -14,6 +14,7 @@ enum pipe;
 enum port;
 struct drm_connector_state;
 struct drm_encoder;
+struct drm_connector;
 struct drm_i915_private;
 struct drm_modeset_acquire_ctx;
 struct drm_dp_vsc_sdp;
@@ -120,6 +121,7 @@ void intel_read_dp_sdp(struct intel_encoder *encoder,
 		       unsigned int type);
 bool intel_digital_port_connected(struct intel_encoder *encoder);
 void intel_dp_process_phy_request(struct intel_dp *intel_dp);
+bool intel_dp_is_vrr_capable(struct drm_connector *connector);
 
 static inline unsigned int intel_dp_unused_lane_mask(int lane_count)
 {
-- 
2.20.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [v8 3/3] drm/debug: Expose connector VRR monitor range via debugfs
  2020-06-19 21:23 [v6 0/3] VRR capable attach prop in i915, DPCD helper, VRR debugfs Bhanuprakash Modem
  2020-06-19 21:23 ` [v6 1/3] drm/dp: DRM DP helper for reading Ignore MSA from DPCD Bhanuprakash Modem
  2020-06-19 21:23 ` [v6 2/3] drm/i915/dp: Attach and set drm connector VRR property Bhanuprakash Modem
@ 2020-06-19 21:23 ` Bhanuprakash Modem
  2020-06-19 18:42   ` Manasi Navare
  2 siblings, 1 reply; 7+ messages in thread
From: Bhanuprakash Modem @ 2020-06-19 21:23 UTC (permalink / raw)
  To: bhanuprakash.modem, dri-devel, intel-gfx

[Why]
It's useful to know the min and max vrr range for IGT testing.

[How]
Expose the min and max vfreq for the connector via a debugfs file
on the connector, "vrr_range".

Example usage: cat /sys/kernel/debug/dri/0/DP-1/vrr_range

v2:
* Fix the typo in max_vfreq (Manasi)
* Change the name of node to i915_vrr_info so we can add
other vrr info for more debug info (Manasi)
* Change the VRR capable to display Yes or No (Manasi)
* Fix indentation checkpatch errors (Manasi)
v3:
* Remove the unnecessary debug print (Manasi)
v4:
* Rebase
v5:
* Rename to vrr_range to match AMD debugfs
v6:
* Rebase (manasi)
v7:
* Fix cmpilation due to rebase
v8:
* Move debugfs node creation logic to DRM (Emil)
* Remove AMD specific logic (Emil)

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
Signed-off-by: Manasi Navare <manasi.d.navare@intel.com>
Cc: Jani Nikula <jani.nikula@linux.intel.com>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Cc: Harry Wentland <harry.wentland@amd.com>
---
 .../amd/display/amdgpu_dm/amdgpu_dm_debugfs.c | 20 -----------------
 drivers/gpu/drm/drm_debugfs.c                 | 22 +++++++++++++++++++
 2 files changed, 22 insertions(+), 20 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c
index 076af267b488..71387d2af2ed 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c
@@ -820,24 +820,6 @@ static int output_bpc_show(struct seq_file *m, void *data)
 	return res;
 }
 
-/*
- * Returns the min and max vrr vfreq through the connector's debugfs file.
- * Example usage: cat /sys/kernel/debug/dri/0/DP-1/vrr_range
- */
-static int vrr_range_show(struct seq_file *m, void *data)
-{
-	struct drm_connector *connector = m->private;
-	struct amdgpu_dm_connector *aconnector = to_amdgpu_dm_connector(connector);
-
-	if (connector->status != connector_status_connected)
-		return -ENODEV;
-
-	seq_printf(m, "Min: %u\n", (unsigned int)aconnector->min_vfreq);
-	seq_printf(m, "Max: %u\n", (unsigned int)aconnector->max_vfreq);
-
-	return 0;
-}
-
 #ifdef CONFIG_DRM_AMD_DC_HDCP
 /*
  * Returns the HDCP capability of the Display (1.4 for now).
@@ -1001,7 +983,6 @@ static ssize_t dp_dpcd_data_read(struct file *f, char __user *buf,
 DEFINE_SHOW_ATTRIBUTE(dmub_fw_state);
 DEFINE_SHOW_ATTRIBUTE(dmub_tracebuffer);
 DEFINE_SHOW_ATTRIBUTE(output_bpc);
-DEFINE_SHOW_ATTRIBUTE(vrr_range);
 #ifdef CONFIG_DRM_AMD_DC_HDCP
 DEFINE_SHOW_ATTRIBUTE(hdcp_sink_capability);
 #endif
@@ -1059,7 +1040,6 @@ static const struct {
 		{"phy_settings", &dp_phy_settings_debugfs_fop},
 		{"test_pattern", &dp_phy_test_pattern_fops},
 		{"output_bpc", &output_bpc_fops},
-		{"vrr_range", &vrr_range_fops},
 #ifdef CONFIG_DRM_AMD_DC_HDCP
 		{"hdcp_sink_capability", &hdcp_sink_capability_fops},
 #endif
diff --git a/drivers/gpu/drm/drm_debugfs.c b/drivers/gpu/drm/drm_debugfs.c
index bfe4602f206b..3d7182001004 100644
--- a/drivers/gpu/drm/drm_debugfs.c
+++ b/drivers/gpu/drm/drm_debugfs.c
@@ -376,6 +376,24 @@ static ssize_t edid_write(struct file *file, const char __user *ubuf,
 	return (ret) ? ret : len;
 }
 
+/*
+ * Returns the min and max vrr vfreq through the connector's debugfs file.
+ * Example usage: cat /sys/kernel/debug/dri/0/DP-1/vrr_range
+ */
+static int vrr_range_show(struct seq_file *m, void *data)
+{
+	struct drm_connector *connector = m->private;
+
+	if (connector->status != connector_status_connected)
+		return -ENODEV;
+
+	seq_printf(m, "Min: %u\n", (u8)connector->display_info.monitor_range.min_vfreq);
+	seq_printf(m, "Max: %u\n", (u8)connector->display_info.monitor_range.max_vfreq);
+
+	return 0;
+}
+DEFINE_SHOW_ATTRIBUTE(vrr_range);
+
 static const struct file_operations drm_edid_fops = {
 	.owner = THIS_MODULE,
 	.open = edid_open,
@@ -413,6 +431,10 @@ void drm_debugfs_connector_add(struct drm_connector *connector)
 	/* edid */
 	debugfs_create_file("edid_override", S_IRUGO | S_IWUSR, root, connector,
 			    &drm_edid_fops);
+
+	/* vrr range */
+	debugfs_create_file("vrr_range", S_IRUGO, root, connector,
+			    &vrr_range_fops);
 }
 
 void drm_debugfs_connector_remove(struct drm_connector *connector)
-- 
2.20.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* RE: [v8 3/3] drm/debug: Expose connector VRR monitor range via debugfs
  2020-06-19 18:42   ` Manasi Navare
@ 2020-06-22  4:34     ` Modem, Bhanuprakash
  0 siblings, 0 replies; 7+ messages in thread
From: Modem, Bhanuprakash @ 2020-06-22  4:34 UTC (permalink / raw)
  To: Navare, Manasi D
  Cc: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org

> -----Original Message-----
> From: Navare, Manasi D <manasi.d.navare@intel.com>
> Sent: Saturday, June 20, 2020 12:13 AM
> To: Modem, Bhanuprakash <bhanuprakash.modem@intel.com>
> Cc: dri-devel@lists.freedesktop.org; intel-gfx@lists.freedesktop.org
> Subject: Re: [v8 3/3] drm/debug: Expose connector VRR monitor range via
> debugfs
> 
> Hi Bhanu,
> 
> Thanks for the patch, functionality wise looks good. Have you tested this
> with kms_vrr IGT, do we see the vrr_range properly exposed?

[Bhanu]
Yes, the vrr_range is exposing properly. I have verified the debugfs node
manually and through IGT.
 
> 
> Also please find some comments below
> 
> On Sat, Jun 20, 2020 at 02:53:56AM +0530, Bhanuprakash Modem wrote:
> > [Why]
> > It's useful to know the min and max vrr range for IGT testing.
> >
> > [How]
> > Expose the min and max vfreq for the connector via a debugfs file
> > on the connector, "vrr_range".
> >
> > Example usage: cat /sys/kernel/debug/dri/0/DP-1/vrr_range
> >
> > v2:
> > * Fix the typo in max_vfreq (Manasi)
> > * Change the name of node to i915_vrr_info so we can add
> > other vrr info for more debug info (Manasi)
> > * Change the VRR capable to display Yes or No (Manasi)
> > * Fix indentation checkpatch errors (Manasi)
> > v3:
> > * Remove the unnecessary debug print (Manasi)
> > v4:
> > * Rebase
> > v5:
> > * Rename to vrr_range to match AMD debugfs
> > v6:
> > * Rebase (manasi)
> > v7:
> > * Fix cmpilation due to rebase
> > v8:
> > * Move debugfs node creation logic to DRM (Emil)
> > * Remove AMD specific logic (Emil)
> >
> > Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
> > Signed-off-by: Manasi Navare <manasi.d.navare@intel.com>
> > Cc: Jani Nikula <jani.nikula@linux.intel.com>
> > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > Cc: Harry Wentland <harry.wentland@amd.com>
> > ---
> >  .../amd/display/amdgpu_dm/amdgpu_dm_debugfs.c | 20 -----------------
> >  drivers/gpu/drm/drm_debugfs.c                 | 22 +++++++++++++++++++
> >  2 files changed, 22 insertions(+), 20 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c
> b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c
> > index 076af267b488..71387d2af2ed 100644
> > --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c
> > +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c
> > @@ -820,24 +820,6 @@ static int output_bpc_show(struct seq_file *m, void
> *data)
> >  	return res;
> >  }
> >
> > -/*
> > - * Returns the min and max vrr vfreq through the connector's debugfs
> file.
> > - * Example usage: cat /sys/kernel/debug/dri/0/DP-1/vrr_range
> > - */
> > -static int vrr_range_show(struct seq_file *m, void *data)
> > -{
> > -	struct drm_connector *connector = m->private;
> > -	struct amdgpu_dm_connector *aconnector =
> to_amdgpu_dm_connector(connector);
> > -
> > -	if (connector->status != connector_status_connected)
> > -		return -ENODEV;
> > -
> > -	seq_printf(m, "Min: %u\n", (unsigned int)aconnector->min_vfreq);
> > -	seq_printf(m, "Max: %u\n", (unsigned int)aconnector->max_vfreq);
> > -
> > -	return 0;
> > -}
> > -
> >  #ifdef CONFIG_DRM_AMD_DC_HDCP
> >  /*
> >   * Returns the HDCP capability of the Display (1.4 for now).
> > @@ -1001,7 +983,6 @@ static ssize_t dp_dpcd_data_read(struct file *f,
> char __user *buf,
> >  DEFINE_SHOW_ATTRIBUTE(dmub_fw_state);
> >  DEFINE_SHOW_ATTRIBUTE(dmub_tracebuffer);
> >  DEFINE_SHOW_ATTRIBUTE(output_bpc);
> > -DEFINE_SHOW_ATTRIBUTE(vrr_range);
> >  #ifdef CONFIG_DRM_AMD_DC_HDCP
> >  DEFINE_SHOW_ATTRIBUTE(hdcp_sink_capability);
> >  #endif
> > @@ -1059,7 +1040,6 @@ static const struct {
> >  		{"phy_settings", &dp_phy_settings_debugfs_fop},
> >  		{"test_pattern", &dp_phy_test_pattern_fops},
> >  		{"output_bpc", &output_bpc_fops},
> > -		{"vrr_range", &vrr_range_fops},
> >  #ifdef CONFIG_DRM_AMD_DC_HDCP
> >  		{"hdcp_sink_capability", &hdcp_sink_capability_fops},
> >  #endif
> 
> I think the AMD sepecific debugfs removal should be in a separate patch
> follwing the drm_debugfs addition
> patch because from merging pov that patch will get merged through AMD tree
> and drm patch will get merged through drm_misc
> Also cc the amd dev mailing list for that patch.
[Bhanu] Sure
> 
> @Harry does that sound okay from merging pov?
> 
> Manasi
> 
> > diff --git a/drivers/gpu/drm/drm_debugfs.c
> b/drivers/gpu/drm/drm_debugfs.c
> > index bfe4602f206b..3d7182001004 100644
> > --- a/drivers/gpu/drm/drm_debugfs.c
> > +++ b/drivers/gpu/drm/drm_debugfs.c
> > @@ -376,6 +376,24 @@ static ssize_t edid_write(struct file *file, const
> char __user *ubuf,
> >  	return (ret) ? ret : len;
> >  }
> >
> > +/*
> > + * Returns the min and max vrr vfreq through the connector's debugfs
> file.
> > + * Example usage: cat /sys/kernel/debug/dri/0/DP-1/vrr_range
> > + */
> > +static int vrr_range_show(struct seq_file *m, void *data)
> > +{
> > +	struct drm_connector *connector = m->private;
> > +
> > +	if (connector->status != connector_status_connected)
> > +		return -ENODEV;
> > +
> > +	seq_printf(m, "Min: %u\n", (u8)connector-
> >display_info.monitor_range.min_vfreq);
> > +	seq_printf(m, "Max: %u\n", (u8)connector-
> >display_info.monitor_range.max_vfreq);
> > +
> > +	return 0;
> > +}
> > +DEFINE_SHOW_ATTRIBUTE(vrr_range);
> > +
> >  static const struct file_operations drm_edid_fops = {
> >  	.owner = THIS_MODULE,
> >  	.open = edid_open,
> > @@ -413,6 +431,10 @@ void drm_debugfs_connector_add(struct drm_connector
> *connector)
> >  	/* edid */
> >  	debugfs_create_file("edid_override", S_IRUGO | S_IWUSR, root,
> connector,
> >  			    &drm_edid_fops);
> > +
> > +	/* vrr range */
> > +	debugfs_create_file("vrr_range", S_IRUGO, root, connector,
> > +			    &vrr_range_fops);
> >  }
> >
> >  void drm_debugfs_connector_remove(struct drm_connector *connector)
> > --
> > 2.20.1
> >
> > _______________________________________________
> > dri-devel mailing list
> > dri-devel@lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/dri-devel
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2020-06-22  4:34 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-06-19 21:23 [v6 0/3] VRR capable attach prop in i915, DPCD helper, VRR debugfs Bhanuprakash Modem
2020-06-19 21:23 ` [v6 1/3] drm/dp: DRM DP helper for reading Ignore MSA from DPCD Bhanuprakash Modem
2020-06-19 20:01   ` [Intel-gfx] " Manasi Navare
2020-06-19 21:23 ` [v6 2/3] drm/i915/dp: Attach and set drm connector VRR property Bhanuprakash Modem
2020-06-19 21:23 ` [v8 3/3] drm/debug: Expose connector VRR monitor range via debugfs Bhanuprakash Modem
2020-06-19 18:42   ` Manasi Navare
2020-06-22  4:34     ` Modem, Bhanuprakash

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox