From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id A7EFDC87FCA for ; Thu, 7 Aug 2025 11:32:53 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 67C3E10E81C; Thu, 7 Aug 2025 11:32:53 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="ftxiwWSb"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.11]) by gabe.freedesktop.org (Postfix) with ESMTPS id 95FB010E822; Thu, 7 Aug 2025 11:32:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1754566371; x=1786102371; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=lySCfT0sOYiTS/XCla5zLSy7Tr6493WD8scychd1etk=; b=ftxiwWSbb3QHbk5p2/sM4Nqajaej51c+tLgJgn/X92hZ47O41lBOEhEb zHMg18/fnay23ur17JTyJoUWbPJjmZw76uwo8aINUW8boRPVYRx8SSst5 H8x8Ei3tB8JKN6jRGbEbIxlrhQq7IcwZ+kiup4TtWszNEkdDw+FbhEFKB vxwarGSvTS0+bwuDDEzcEmigbxbJzLjDniGvnndBEy6+matOd4Z2CAmIr 44xzXQpA6p47gcAgc2Mw4n+26G74tctNjz/jn4K33FAMj0ARIaufBFVKv ISJhEtHQVOEHk+q5hBBlMmrkMQ3RDCBIO7hmzjc0zKFu1/12iu5vC1mgu Q==; X-CSE-ConnectionGUID: bbyS5y/4R3OU2F+hY3YplQ== X-CSE-MsgGUID: gULdh5uCRr2psNR+imiPYg== X-IronPort-AV: E=McAfee;i="6800,10657,11514"; a="67166994" X-IronPort-AV: E=Sophos;i="6.17,271,1747724400"; d="scan'208";a="67166994" Received: from fmviesa002.fm.intel.com ([10.60.135.142]) by orvoesa103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Aug 2025 04:30:00 -0700 X-CSE-ConnectionGUID: 7/ENkSO2TOOX+Ynb73IUtQ== X-CSE-MsgGUID: qwyqyQFfROS8qyY7zMNKKg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.17,271,1747724400"; d="scan'208";a="188716600" Received: from srr4-3-linux-103-aknautiy.iind.intel.com ([10.223.34.160]) by fmviesa002-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Aug 2025 04:29:59 -0700 From: Ankit Nautiyal To: intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org Cc: ville.syrjala@linux.intel.com, jani.nikula@linux.intel.com, mitulkumar.ajitkumar.golani@intel.com, Ankit Nautiyal Subject: [PATCH 07/12] drm/i915/vrr: Use vrr.sync_start for getting vtotal Date: Thu, 7 Aug 2025 16:45:43 +0530 Message-ID: <20250807111548.1490624-8-ankit.k.nautiyal@intel.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20250807111548.1490624-1-ankit.k.nautiyal@intel.com> References: <20250807111548.1490624-1-ankit.k.nautiyal@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: intel-xe@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel Xe graphics driver List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-xe-bounces@lists.freedesktop.org Sender: "Intel-xe" Currently, in intel_vrr_get_config() crtc_vtotal is computed from vrr.vmin vtotal, since the VTOTAL.Vtotal bits are deprecated. Since vmin is currently set to crtc_vtotal, this gives us the vtotal. However, as we move to optimized guardband, vmin will be modified to set to the minimum Vtotal for highest refresh rate supported. Instead of depending on vmin, compute vtotal from crtc_vsync_start and vrr.vsync_start. This works since vrr.vsync_start is measured from the end of vblank, and crtc_vsync_start is measured from start of the scanline. Together their sum is equal to the crtc_vtotal. Signed-off-by: Ankit Nautiyal --- drivers/gpu/drm/i915/display/intel_vrr.c | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/drivers/gpu/drm/i915/display/intel_vrr.c b/drivers/gpu/drm/i915/display/intel_vrr.c index 3eed37f271b0..46a85720411f 100644 --- a/drivers/gpu/drm/i915/display/intel_vrr.c +++ b/drivers/gpu/drm/i915/display/intel_vrr.c @@ -735,17 +735,6 @@ void intel_vrr_get_config(struct intel_crtc_state *crtc_state) TRANS_VRR_VMAX(display, cpu_transcoder)) + 1; crtc_state->vrr.vmin = intel_de_read(display, TRANS_VRR_VMIN(display, cpu_transcoder)) + 1; - - /* - * For platforms that always use VRR Timing Generator, the VTOTAL.Vtotal - * bits are not filled. Since for these platforms TRAN_VMIN is always - * filled with crtc_vtotal, use TRAN_VRR_VMIN to get the vtotal for - * adjusted_mode. - */ - if (intel_vrr_always_use_vrr_tg(display)) - crtc_state->hw.adjusted_mode.crtc_vtotal = - intel_vrr_vmin_vtotal(crtc_state); - if (HAS_AS_SDP(display)) { trans_vrr_vsync = intel_de_read(display, @@ -755,6 +744,16 @@ void intel_vrr_get_config(struct intel_crtc_state *crtc_state) crtc_state->vrr.vsync_end = REG_FIELD_GET(VRR_VSYNC_END_MASK, trans_vrr_vsync); } + /* + * For platforms that always use VRR Timing Generator, the VTOTAL.Vtotal + * bits are not filled. Since vrr.vsync_start is computed as: + * crtc_vtotal - crtc_vsync_start, we can derive vtotal from + * vrr.vsync_start and crtc_vsync_start. + */ + if (intel_vrr_always_use_vrr_tg(display)) + crtc_state->hw.adjusted_mode.crtc_vtotal = + crtc_state->hw.adjusted_mode.crtc_vsync_start + + crtc_state->vrr.vsync_start; } vrr_enable = trans_vrr_ctl & VRR_CTL_VRR_ENABLE; -- 2.45.2