]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/i915/de: Replace __intel_de_wait_for_register_nowl() with intel_de_wait_fw_us_ato...
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Mon, 10 Nov 2025 17:27:53 +0000 (19:27 +0200)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Tue, 11 Nov 2025 17:34:43 +0000 (19:34 +0200)
Nuke the remaining _nowl() stuff from the wakelock code in the
form of __intel_de_wait_for_register_nowl(), and replace it with
intel_de_wait_fw_us_atomic() that uses the low level _fw() register
accessors in line with the rest of the code.

No change in behaviour since wakelocks are only supported on xe,
and xe doesn't have uncore.lock nor unclaimed register detection
stuff.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patch.msgid.link/20251110172756.2132-15-ville.syrjala@linux.intel.com
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
Acked-by: Jani Nikula <jani.nikula@intel.com>
drivers/gpu/drm/i915/display/intel_de.h
drivers/gpu/drm/i915/display/intel_dmc_wl.c

index 655867ea76b8073c89a926c7de8e00121889f8ca..a7ce3b875e06c6bfae0cd44ce83d8176ab2e8929 100644 (file)
@@ -97,16 +97,6 @@ intel_de_rmw(struct intel_display *display, i915_reg_t reg, u32 clear, u32 set)
        return val;
 }
 
-static inline int
-__intel_de_wait_for_register_atomic_nowl(struct intel_display *display,
-                                        i915_reg_t reg,
-                                        u32 mask, u32 value,
-                                        unsigned int fast_timeout_us)
-{
-       return __intel_wait_for_register(__to_uncore(display), reg, mask,
-                                        value, fast_timeout_us, 0, NULL);
-}
-
 static inline int
 intel_de_wait_us(struct intel_display *display, i915_reg_t reg,
                 u32 mask, u32 value, unsigned int timeout_us,
@@ -150,6 +140,15 @@ intel_de_wait_fw_ms(struct intel_display *display, i915_reg_t reg,
                                            value, 2, timeout_ms, out_value);
 }
 
+static inline int
+intel_de_wait_fw_us_atomic(struct intel_display *display, i915_reg_t reg,
+                          u32 mask, u32 value, unsigned int timeout_us,
+                          u32 *out_value)
+{
+       return __intel_wait_for_register_fw(__to_uncore(display), reg, mask,
+                                           value, timeout_us, 0, out_value);
+}
+
 static inline int
 intel_de_wait_for_set_us(struct intel_display *display, i915_reg_t reg,
                         u32 mask, unsigned int timeout_us)
index 869beb6f280d0b6ad8e29501003924dd579ff817..73a3101514f3b7f876427ced7993ff1d8346a667 100644 (file)
@@ -181,9 +181,9 @@ static void intel_dmc_wl_work(struct work_struct *work)
 
        intel_de_rmw_fw(display, DMC_WAKELOCK1_CTL, DMC_WAKELOCK_CTL_REQ, 0);
 
-       if (__intel_de_wait_for_register_atomic_nowl(display, DMC_WAKELOCK1_CTL,
-                                                    DMC_WAKELOCK_CTL_ACK, 0,
-                                                    DMC_WAKELOCK_CTL_TIMEOUT_US)) {
+       if (intel_de_wait_fw_us_atomic(display, DMC_WAKELOCK1_CTL,
+                                      DMC_WAKELOCK_CTL_ACK, 0,
+                                      DMC_WAKELOCK_CTL_TIMEOUT_US, NULL)) {
                WARN_RATELIMIT(1, "DMC wakelock release timed out");
                goto out_unlock;
        }
@@ -213,10 +213,10 @@ static void __intel_dmc_wl_take(struct intel_display *display)
         * We need to use the atomic variant of the waiting routine
         * because the DMC wakelock is also taken in atomic context.
         */
-       if (__intel_de_wait_for_register_atomic_nowl(display, DMC_WAKELOCK1_CTL,
-                                                    DMC_WAKELOCK_CTL_ACK,
-                                                    DMC_WAKELOCK_CTL_ACK,
-                                                    DMC_WAKELOCK_CTL_TIMEOUT_US)) {
+       if (intel_de_wait_fw_us_atomic(display, DMC_WAKELOCK1_CTL,
+                                      DMC_WAKELOCK_CTL_ACK,
+                                      DMC_WAKELOCK_CTL_ACK,
+                                      DMC_WAKELOCK_CTL_TIMEOUT_US, NULL)) {
                WARN_RATELIMIT(1, "DMC wakelock ack timed out");
                return;
        }