drm/i915/ips: Make IPS debugfs per-crtc
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Mon, 27 Mar 2023 13:39:41 +0000 (16:39 +0300)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Tue, 28 Mar 2023 07:54:08 +0000 (10:54 +0300)
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@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20230327133942.22063-1-ville.syrjala@linux.intel.com
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
drivers/gpu/drm/i915/display/hsw_ips.c
drivers/gpu/drm/i915/display/hsw_ips.h
drivers/gpu/drm/i915/display/intel_display_debugfs.c

index 2910f5d0f3e2b6f1cc29bc04206864669f7ef879..47209c858c3249f2a500d452de1c150b32234a6d 100644 (file)
@@ -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);
 }
index 7ed6061874f73def4fdae1778ca1f78a51a6dfbd..4eb83b350791a52d371ae1e67cc8ce4fbc542df9 100644 (file)
@@ -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__ */
index cc502627255845edda5140fa06b7a1cc24450dc3..d5715ccc37f0e67d837aed01b10e72e38bf6209d 100644 (file)
@@ -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);