From 2e5be5d57dbe5e04a5abbd01417fc098f8925a35 Mon Sep 17 00:00:00 2001 From: Rodrigo Vivi Date: Thu, 12 Jan 2023 17:25:06 -0500 Subject: [PATCH] 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: Rodrigo Vivi Reviewed-by: Matthew Brost --- drivers/gpu/drm/xe/xe_guc.c | 24 +++++------------------- 1 file changed, 5 insertions(+), 19 deletions(-) diff --git a/drivers/gpu/drm/xe/xe_guc.c b/drivers/gpu/drm/xe/xe_guc.c index 52f42bd5cad7a..7e8451e60d2d3 100644 --- a/drivers/gpu/drm/xe/xe_guc.c +++ b/drivers/gpu/drm/xe/xe_guc.c @@ -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); -- 2.30.2