On Mon, 27 Mar 2023, Ville Syrjala <ville.syrjala@xxxxxxxxxxxxxxx> wrote: > From: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > > IPS is a per-pipe feature, so let's move the debugfs stuff > under the crtc directory, and only register it when IPS > is actually available. > > Signed-off-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> Yay! Reviewed-by: Jani Nikula <jani.nikula@xxxxxxxxx> > --- > drivers/gpu/drm/i915/display/hsw_ips.c | 15 +++++++-------- > drivers/gpu/drm/i915/display/hsw_ips.h | 3 +-- > .../gpu/drm/i915/display/intel_display_debugfs.c | 2 +- > 3 files changed, 9 insertions(+), 11 deletions(-) > > diff --git a/drivers/gpu/drm/i915/display/hsw_ips.c b/drivers/gpu/drm/i915/display/hsw_ips.c > index 2910f5d0f3e2..47209c858c32 100644 > --- a/drivers/gpu/drm/i915/display/hsw_ips.c > +++ b/drivers/gpu/drm/i915/display/hsw_ips.c > @@ -270,12 +270,10 @@ void hsw_ips_get_config(struct intel_crtc_state *crtc_state) > > static int hsw_ips_debugfs_status_show(struct seq_file *m, void *unused) > { > - struct drm_i915_private *i915 = m->private; > + struct intel_crtc *crtc = m->private; > + struct drm_i915_private *i915 = to_i915(crtc->base.dev); > intel_wakeref_t wakeref; > > - if (!HAS_IPS(i915)) > - return -ENODEV; > - > wakeref = intel_runtime_pm_get(&i915->runtime_pm); > > seq_printf(m, "Enabled by kernel parameter: %s\n", > @@ -297,10 +295,11 @@ static int hsw_ips_debugfs_status_show(struct seq_file *m, void *unused) > > DEFINE_SHOW_ATTRIBUTE(hsw_ips_debugfs_status); > > -void hsw_ips_debugfs_register(struct drm_i915_private *i915) > +void hsw_ips_crtc_debugfs_add(struct intel_crtc *crtc) > { > - struct drm_minor *minor = i915->drm.primary; > + if (!hsw_crtc_supports_ips(crtc)) > + return; > > - debugfs_create_file("i915_ips_status", 0444, minor->debugfs_root, > - i915, &hsw_ips_debugfs_status_fops); > + debugfs_create_file("i915_ips_status", 0444, crtc->base.debugfs_entry, > + crtc, &hsw_ips_debugfs_status_fops); > } > diff --git a/drivers/gpu/drm/i915/display/hsw_ips.h b/drivers/gpu/drm/i915/display/hsw_ips.h > index 7ed6061874f7..4eb83b350791 100644 > --- a/drivers/gpu/drm/i915/display/hsw_ips.h > +++ b/drivers/gpu/drm/i915/display/hsw_ips.h > @@ -8,7 +8,6 @@ > > #include <linux/types.h> > > -struct drm_i915_private; > struct intel_atomic_state; > struct intel_crtc; > struct intel_crtc_state; > @@ -23,6 +22,6 @@ bool hsw_crtc_state_ips_capable(const struct intel_crtc_state *crtc_state); > int hsw_ips_compute_config(struct intel_atomic_state *state, > struct intel_crtc *crtc); > void hsw_ips_get_config(struct intel_crtc_state *crtc_state); > -void hsw_ips_debugfs_register(struct drm_i915_private *i915); > +void hsw_ips_crtc_debugfs_add(struct intel_crtc *crtc); > > #endif /* __HSW_IPS_H__ */ > diff --git a/drivers/gpu/drm/i915/display/intel_display_debugfs.c b/drivers/gpu/drm/i915/display/intel_display_debugfs.c > index cc5026272558..d5715ccc37f0 100644 > --- a/drivers/gpu/drm/i915/display/intel_display_debugfs.c > +++ b/drivers/gpu/drm/i915/display/intel_display_debugfs.c > @@ -1092,7 +1092,6 @@ void intel_display_debugfs_register(struct drm_i915_private *i915) > ARRAY_SIZE(intel_display_debugfs_list), > minor->debugfs_root, minor); > > - hsw_ips_debugfs_register(i915); > intel_dmc_debugfs_register(i915); > intel_fbc_debugfs_register(i915); > intel_hpd_debugfs_register(i915); > @@ -1461,6 +1460,7 @@ void intel_crtc_debugfs_add(struct intel_crtc *crtc) > crtc_updates_add(crtc); > intel_drrs_crtc_debugfs_add(crtc); > intel_fbc_crtc_debugfs_add(crtc); > + hsw_ips_crtc_debugfs_add(crtc); > > debugfs_create_file("i915_current_bpc", 0444, root, crtc, > &i915_current_bpc_fops); -- Jani Nikula, Intel Open Source Graphics Center