Commit 2e5be5d5 authored by Rodrigo Vivi's avatar Rodrigo Vivi
Browse files

drm/xe: Convert guc_ready to regular xe_mmio_wait32



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: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
Reviewed-by: default avatarMatthew Brost <matthew.brost@intel.com>
parent 7aaec3a6
Loading
Loading
Loading
Loading
+5 −19
Original line number Diff line number Diff line
@@ -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);