]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commitdiff
drm/xe: Convert guc_ready to regular xe_mmio_wait32
authorRodrigo Vivi <rodrigo.vivi@intel.com>
Thu, 12 Jan 2023 22:25:06 +0000 (17:25 -0500)
committerRodrigo Vivi <rodrigo.vivi@intel.com>
Tue, 12 Dec 2023 19:05:59 +0000 (14:05 -0500)
Possible now that the wait function returns the last read value.

So we can remove the users of i915's wait_for one by one...

Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
drivers/gpu/drm/xe/xe_guc.c

index 52f42bd5cad7a2d29b817912a7769369f9cb165d..7e8451e60d2d3b79d840b5cee86be130956c535c 100644 (file)
@@ -403,24 +403,6 @@ static int guc_xfer_rsa(struct xe_guc *guc)
        return 0;
 }
 
-/*
- * Read the GuC status register (GUC_STATUS) and store it in the
- * specified location; then return a boolean indicating whether
- * the value matches either of two values representing completion
- * of the GuC boot process.
- *
- * This is used for polling the GuC status in a wait_for()
- * loop below.
- */
-static bool guc_ready(struct xe_guc *guc, u32 *status)
-{
-       u32 val = xe_mmio_read32(guc_to_gt(guc), GUC_STATUS.reg);
-       u32 uk_val = REG_FIELD_GET(GS_UKERNEL_MASK, val);
-
-       *status = val;
-       return uk_val == XE_GUC_LOAD_STATUS_READY;
-}
-
 static int guc_wait_ucode(struct xe_guc *guc)
 {
        struct xe_device *xe = guc_to_xe(guc);
@@ -444,7 +426,11 @@ static int guc_wait_ucode(struct xe_guc *guc)
         * 200ms. Even at slowest clock, this should be sufficient. And
         * in the working case, a larger timeout makes no difference.
         */
-       ret = wait_for(guc_ready(guc, &status), 200);
+       ret = xe_mmio_wait32(guc_to_gt(guc), GUC_STATUS.reg,
+                            FIELD_PREP(GS_UKERNEL_MASK,
+                                       XE_GUC_LOAD_STATUS_READY),
+                            GS_UKERNEL_MASK, 200, &status);
+
        if (ret) {
                struct drm_device *drm = &xe->drm;
                struct drm_printer p = drm_info_printer(drm->dev);