diff mbox series

[v7,6/8] drm/i915/lobf: Add debug interface for lobf

Message ID 20250403092825.484347-7-animesh.manna@intel.com (mailing list archive)
State New
Headers show
Series LOBF enablement fix | expand

Commit Message

Animesh Manna April 3, 2025, 9:28 a.m. UTC
Add an interface in debugfs which will help in debugging LOBF
feature.

v1: Initial version.
v2:
- Remove FORCE_EN flag. [Jouni]
- Change prefix from I915 to INTEL. [Jani]
- Use u8 instead of bool for lobf-debug flag. [Jani]
v3:
- Use intel_connector instead of display. [Jani]
- Remove edp connector check as it was already present
in caller function. [Jani]
- Remove loop of searching edp encoder which is directly
accessible from intel_connector. [Jani]
v4:
- Simplify alpm debug to bool instead of bit-mask. [Jani]
v5:
- Remove READ_ONCE(). [Jani]
- Modify variable name to *_disable_*. [Jouni]

Signed-off-by: Animesh Manna <animesh.manna@intel.com>
---
 drivers/gpu/drm/i915/display/intel_alpm.c     | 32 +++++++++++++++++++
 .../drm/i915/display/intel_display_types.h    |  1 +
 2 files changed, 33 insertions(+)

Comments

Hogander, Jouni April 8, 2025, 8:01 a.m. UTC | #1
On Thu, 2025-04-03 at 14:58 +0530, Animesh Manna wrote:
> Add an interface in debugfs which will help in debugging LOBF
> feature.
> 
> v1: Initial version.
> v2:
> - Remove FORCE_EN flag. [Jouni]
> - Change prefix from I915 to INTEL. [Jani]
> - Use u8 instead of bool for lobf-debug flag. [Jani]
> v3:
> - Use intel_connector instead of display. [Jani]
> - Remove edp connector check as it was already present
> in caller function. [Jani]
> - Remove loop of searching edp encoder which is directly
> accessible from intel_connector. [Jani]
> v4:
> - Simplify alpm debug to bool instead of bit-mask. [Jani]
> v5:
> - Remove READ_ONCE(). [Jani]
> - Modify variable name to *_disable_*. [Jouni]
> 
> Signed-off-by: Animesh Manna <animesh.manna@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_alpm.c     | 32
> +++++++++++++++++++
>  .../drm/i915/display/intel_display_types.h    |  1 +
>  2 files changed, 33 insertions(+)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_alpm.c
> b/drivers/gpu/drm/i915/display/intel_alpm.c
> index 7ab29c5fef38..46d569df37c0 100644
> --- a/drivers/gpu/drm/i915/display/intel_alpm.c
> +++ b/drivers/gpu/drm/i915/display/intel_alpm.c
> @@ -276,6 +276,9 @@ void intel_alpm_lobf_compute_config(struct
> intel_dp *intel_dp,
>  	int waketime_in_lines, first_sdp_position;
>  	int context_latency, guardband;
>  
> +	if (intel_dp->alpm_parameters.lobf_disable_debug)
> +		return;

Adding this reminded me about debug printouts. Maybe you should start
adding them. Easier to understand what is happening when looking
through logs. I.e. "Why LOBF is not enabled"

BR,

Jouni Högander


> +
>  	if (!intel_dp_is_edp(intel_dp))
>  		return;
>  
> @@ -440,6 +443,32 @@ static int i915_edp_lobf_info_show(struct
> seq_file *m, void *data)
>  
>  DEFINE_SHOW_ATTRIBUTE(i915_edp_lobf_info);
>  
> +static int
> +i915_edp_lobf_debug_get(void *data, u64 *val)
> +{
> +	struct intel_connector *connector = data;
> +	struct intel_dp *intel_dp = enc_to_intel_dp(connector-
> >encoder);
> +
> +	*val = intel_dp->alpm_parameters.lobf_disable_debug;
> +
> +	return 0;
> +}
> +
> +static int
> +i915_edp_lobf_debug_set(void *data, u64 val)
> +{
> +	struct intel_connector *connector = data;
> +	struct intel_dp *intel_dp = enc_to_intel_dp(connector-
> >encoder);
> +
> +	intel_dp->alpm_parameters.lobf_disable_debug = val;
> +
> +	return 0;
> +}
> +
> +DEFINE_SIMPLE_ATTRIBUTE(i915_edp_lobf_debug_fops,
> +			i915_edp_lobf_debug_get,
> i915_edp_lobf_debug_set,
> +			"%llu\n");
> +
>  void intel_alpm_lobf_debugfs_add(struct intel_connector *connector)
>  {
>  	struct intel_display *display = to_intel_display(connector);
> @@ -449,6 +478,9 @@ void intel_alpm_lobf_debugfs_add(struct
> intel_connector *connector)
>  	    connector->base.connector_type !=
> DRM_MODE_CONNECTOR_eDP)
>  		return;
>  
> +	debugfs_create_file("i915_edp_lobf_debug", 0644, root,
> +			    connector, &i915_edp_lobf_debug_fops);
> +
>  	debugfs_create_file("i915_edp_lobf_info", 0444, root,
>  			    connector, &i915_edp_lobf_info_fops);
>  }
> diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h
> b/drivers/gpu/drm/i915/display/intel_display_types.h
> index 0b3d29d42ee2..daa5e2438c94 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_types.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_types.h
> @@ -1812,6 +1812,7 @@ struct intel_dp {
>  		u8 aux_less_wake_lines;
>  		u8 silence_period_sym_clocks;
>  		u8 lfps_half_cycle_num_of_syms;
> +		bool lobf_disable_debug;
>  	} alpm_parameters;
>  
>  	u8 alpm_dpcd;
diff mbox series

Patch

diff --git a/drivers/gpu/drm/i915/display/intel_alpm.c b/drivers/gpu/drm/i915/display/intel_alpm.c
index 7ab29c5fef38..46d569df37c0 100644
--- a/drivers/gpu/drm/i915/display/intel_alpm.c
+++ b/drivers/gpu/drm/i915/display/intel_alpm.c
@@ -276,6 +276,9 @@  void intel_alpm_lobf_compute_config(struct intel_dp *intel_dp,
 	int waketime_in_lines, first_sdp_position;
 	int context_latency, guardband;
 
+	if (intel_dp->alpm_parameters.lobf_disable_debug)
+		return;
+
 	if (!intel_dp_is_edp(intel_dp))
 		return;
 
@@ -440,6 +443,32 @@  static int i915_edp_lobf_info_show(struct seq_file *m, void *data)
 
 DEFINE_SHOW_ATTRIBUTE(i915_edp_lobf_info);
 
+static int
+i915_edp_lobf_debug_get(void *data, u64 *val)
+{
+	struct intel_connector *connector = data;
+	struct intel_dp *intel_dp = enc_to_intel_dp(connector->encoder);
+
+	*val = intel_dp->alpm_parameters.lobf_disable_debug;
+
+	return 0;
+}
+
+static int
+i915_edp_lobf_debug_set(void *data, u64 val)
+{
+	struct intel_connector *connector = data;
+	struct intel_dp *intel_dp = enc_to_intel_dp(connector->encoder);
+
+	intel_dp->alpm_parameters.lobf_disable_debug = val;
+
+	return 0;
+}
+
+DEFINE_SIMPLE_ATTRIBUTE(i915_edp_lobf_debug_fops,
+			i915_edp_lobf_debug_get, i915_edp_lobf_debug_set,
+			"%llu\n");
+
 void intel_alpm_lobf_debugfs_add(struct intel_connector *connector)
 {
 	struct intel_display *display = to_intel_display(connector);
@@ -449,6 +478,9 @@  void intel_alpm_lobf_debugfs_add(struct intel_connector *connector)
 	    connector->base.connector_type != DRM_MODE_CONNECTOR_eDP)
 		return;
 
+	debugfs_create_file("i915_edp_lobf_debug", 0644, root,
+			    connector, &i915_edp_lobf_debug_fops);
+
 	debugfs_create_file("i915_edp_lobf_info", 0444, root,
 			    connector, &i915_edp_lobf_info_fops);
 }
diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h
index 0b3d29d42ee2..daa5e2438c94 100644
--- a/drivers/gpu/drm/i915/display/intel_display_types.h
+++ b/drivers/gpu/drm/i915/display/intel_display_types.h
@@ -1812,6 +1812,7 @@  struct intel_dp {
 		u8 aux_less_wake_lines;
 		u8 silence_period_sym_clocks;
 		u8 lfps_half_cycle_num_of_syms;
+		bool lobf_disable_debug;
 	} alpm_parameters;
 
 	u8 alpm_dpcd;