Message ID | 20250403092825.484347-7-animesh.manna@intel.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | LOBF enablement fix | expand |
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 --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;
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(+)