From nobody Mon Feb 9 19:52:53 2026 Received: from mail-ej1-f67.google.com (mail-ej1-f67.google.com [209.85.218.67]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9DD612FC893 for ; Sun, 25 Jan 2026 18:39:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.67 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769366384; cv=none; b=MurBWSg4/VZ6lB90TVxJ5Lu/nvHrh1Llh+9jtP6aZokCqn7ch4m5DYBvT+oqn49jnfSLDIJ3hI0opVLV//AA8m5T2pR0wAb93mvEsa7Pa4ZPivc0iR96YioG8UclJwzCN8wEcpBa1dOSTswZAPtjvpQUfbqFGXeGodQkwJIQldc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769366384; c=relaxed/simple; bh=sa2ve9y1lPofbgUrII1RE9wkXH+4C+97+jeK6NwKK+w=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=AKRQMAYI6JY9yssHIVSxMBGXmvuOCtRInv93pGl85EyD7Ketx8MmthgV5TDeWvgeWtedYQD8zieQD285IFHrpA5ZMilbIpWlX4eFSB+lLqvs4UW86eo/ODeS3l5B7e10G9iqPKQ5gZs2ndPEmOsM7yJDJvxuqfEptE7ptZRKoOU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=gGkL8DeE; arc=none smtp.client-ip=209.85.218.67 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="gGkL8DeE" Received: by mail-ej1-f67.google.com with SMTP id a640c23a62f3a-b8859d3e1c3so43986666b.0 for ; Sun, 25 Jan 2026 10:39:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1769366381; x=1769971181; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=hdLeMslJpmP5aqg3skjNgOL1QWmOegbJOT5yvSqo4kw=; b=gGkL8DeEV/4qfyXSY+xnmEoSAEMtcqlkVLrEO6SMdAdn5u2nqC6e588QoMlSL9ikf3 /2h9Oe4BZbdZ8y8lsZX7eIAdVqkZyLTsGhEjGzfL9l3obzt5YF4VXuw35NCiqT6I44fI M7IUlG7qa+xYLteMLbUkPZLoYgvyG9ERIIA0RjrlP5dzc1lAVPv91CrnKiWcmDEHVFl9 r+rB+Q5tARp0sgIixG0/9HQLSs860LI7GpNGPS5uibiz+QP3rCPkO5lzcCr3W2cA+tVQ l4eGLhqn51mGyxdYnbykqFO1r4RN1B7Q6s7cKyyowjnVBq73mLVMA4O1ofmC8zazRU5n nWqg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769366381; x=1769971181; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=hdLeMslJpmP5aqg3skjNgOL1QWmOegbJOT5yvSqo4kw=; b=kpZKIuOlDh2L7ptvcGX3XSFLl4/IAXcaZ6qOfgpOylM54ag8P1PnUAMSU0PnxwESp9 kNWtSy4+5X+CrtiCIMzMZ3tyIyTOmhyWGxG7mwP3gCrXgwa4ooHwEMRwDhgXORyli/W3 t8ohjbBtYniclxzzkX1YiVuNTOPUoVBSlSLqE3wQwTJo/5f3d7r1RnK5vjNlTMYoT156 lyof0j4klmLpGPJAtM51z1N6UCicZsi4J55HY9EbPxEuhpuPfhsrRXwnxYLpN0hotzV9 ldR2d/71Trsk9lnBalJR0FsRkIpt0FNgLMwYlfQd2LnLI0X4/7oJ21aAVGNk6BVXrnVj YSLQ== X-Forwarded-Encrypted: i=1; AJvYcCXxlWBLqbexPxSmgZSCH9vEo5cdRrZpQnDuQAmANJjw8EXO2WKrYDD4ZDMFDb0OGzeTlvy8NlfEhpz+7A0=@vger.kernel.org X-Gm-Message-State: AOJu0Ywe4o4HQB589meyBemxMzG/HCU/cWX9HBY1CUqMb6TfcZ3YYr7a b4P/JoyJ6Y1ATLfeFaLPSkpB895sPjk7KwFmAnsid7CentwItwUYjDVp X-Gm-Gg: AZuq6aKsCW4oOoYd22/z2oyxJGcb5jXDX9y/nQ/3laUsdpEmK750P3QCFfh/GuATws7 OwZnBpTb6fR0yprvDI9tlfJZSC0fTm5AWJ+bFLPYJp90VDfRZJppMNz4ClYVMm24UL3vjwe+h8L UpnmNb0kUS3yXd48vGI2NcIjb75hEQO+y+qy/LcWNeqos17X7kVZTuZo+Oa4kIWVgV3jwa9NoGO vv32XYgy0PFymbhtq7lkn+YfDRsabB7exrPBmk89nWQvflc6FJQzfLUJ4nqM6XgrvKgrpYMpvh7 umL4xSbaRxBh9iohGC5hJy7wLPLibNj/bf4Xbpcz76OQsxejxiaAx/+2vyo1+nWXFB1DOUIwybM AiHkEJzbo48rR0rIsFiIK+U3/5pFeGkWPfAmfrYkPIMIYE8WcigAYG9GASvIhLH/Wfs9rkn9hqw k7OowEZwUtTu4uGMVcQHQaAPN5ZXVwwssrGBxus1+Hmxc0/+3O51wnOgUxQod9I0bw X-Received: by 2002:a17:907:6ea2:b0:b73:99f7:8130 with SMTP id a640c23a62f3a-b8d3fbe920fmr79276666b.6.1769366380901; Sun, 25 Jan 2026 10:39:40 -0800 (PST) Received: from laptok.lan (87-205-5-123.static.ip.netia.com.pl. [87.205.5.123]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b885b3dad3asm499133766b.12.2026.01.25.10.39.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 25 Jan 2026 10:39:40 -0800 (PST) From: =?UTF-8?q?Tomasz=20Paku=C5=82a?= To: alexander.deucher@amd.com, harry.wentland@amd.com, sunpeng.li@amd.com Cc: maarten.lankhorst@linux.intel.com, mripard@kernel.org, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, siqueira@igalia.com, dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org, tomasz.pakula.oficjalny@gmail.com, bernhard.berger@gmail.com, michel.daenzer@mailbox.org, daniel@fooishbar.org Subject: [PATCH v2 18/19] drm/amd/display: Enable HDMI VRR Date: Sun, 25 Jan 2026 19:39:13 +0100 Message-ID: <20260125183914.459228-19-tomasz.pakula.oficjalny@gmail.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260125183914.459228-1-tomasz.pakula.oficjalny@gmail.com> References: <20260125183914.459228-1-tomasz.pakula.oficjalny@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable [Why] We'd like to expose VRR functionality to end user if HDMI sink is advertising it's support. [How] VTEM info frame is used to signal HDMI sink that VRR is active. Use VTEM info packet as vrr_infopacket Signed-off-by: Tomasz Paku=C5=82a --- drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 13 +++++++++++-- .../gpu/drm/amd/display/modules/freesync/freesync.c | 4 ++++ .../drm/amd/display/modules/inc/mod_info_packet.h | 1 + .../amd/display/modules/info_packet/info_packet.c | 1 + 4 files changed, 17 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gp= u/drm/amd/display/amdgpu_dm/amdgpu_dm.c index f95e8a739303..7ebac7b610e7 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c @@ -9614,6 +9614,9 @@ static void update_freesync_state_on_stream( &new_stream->adaptive_sync_infopacket); } =20 + if (aconn && aconn->as_type =3D=3D ADAPTIVE_SYNC_TYPE_HDMI) + packet_type =3D PACKET_TYPE_VTEM; + mod_freesync_build_vrr_infopacket( dm->freesync_module, new_stream, @@ -13364,8 +13367,14 @@ void amdgpu_dm_update_freesync_caps(struct drm_con= nector *connector, } =20 /* HDMI */ - } else if (sink->sink_signal =3D=3D SIGNAL_TYPE_HDMI_TYPE_A && vsdb_frees= ync) { - monitor_range_from_vsdb(connector, &vsdb_info); + } else if (sink->sink_signal =3D=3D SIGNAL_TYPE_HDMI_TYPE_A) { + /* Prefer HDMI VRR */ + if (hdmi_vrr->supported) { + amdgpu_dm_connector->as_type =3D ADAPTIVE_SYNC_TYPE_HDMI; + monitor_range_from_hdmi(connector, valid_vsdb_cea ? &vsdb_info : NULL); + } else if (vsdb_freesync) + monitor_range_from_vsdb(connector, &vsdb_info); + freesync_capable =3D copy_range_to_amdgpu_connector(connector); =20 /* DP -> HDMI PCON */ diff --git a/drivers/gpu/drm/amd/display/modules/freesync/freesync.c b/driv= ers/gpu/drm/amd/display/modules/freesync/freesync.c index 1aae46d703ba..db197cf048e1 100644 --- a/drivers/gpu/drm/amd/display/modules/freesync/freesync.c +++ b/drivers/gpu/drm/amd/display/modules/freesync/freesync.c @@ -27,6 +27,7 @@ #include "dc.h" #include "mod_freesync.h" #include "core_types.h" +#include "mod_info_packet.h" =20 #define MOD_FREESYNC_MAX_CONCURRENT_STREAMS 32 =20 @@ -955,6 +956,9 @@ void mod_freesync_build_vrr_infopacket(struct mod_frees= ync *mod_freesync, return; =20 switch (packet_type) { + case PACKET_TYPE_VTEM: + mod_build_vtem_infopacket(stream, vrr, infopacket); + break; case PACKET_TYPE_FS_V3: build_vrr_infopacket_v3(stream->signal, vrr, app_tf, infopacket, stream-= >freesync_on_desktop); break; diff --git a/drivers/gpu/drm/amd/display/modules/inc/mod_info_packet.h b/dr= ivers/gpu/drm/amd/display/modules/inc/mod_info_packet.h index 07e86b16ef77..ca7c5542620d 100644 --- a/drivers/gpu/drm/amd/display/modules/inc/mod_info_packet.h +++ b/drivers/gpu/drm/amd/display/modules/inc/mod_info_packet.h @@ -60,6 +60,7 @@ enum adaptive_sync_type { ADAPTIVE_SYNC_TYPE_PCON_ALLOWED =3D 2, ADAPTIVE_SYNC_TYPE_PCON_NOT_ALLOWED =3D 3, ADAPTIVE_SYNC_TYPE_EDP =3D 4, + ADAPTIVE_SYNC_TYPE_HDMI =3D 5, }; =20 enum adaptive_sync_sdp_version { diff --git a/drivers/gpu/drm/amd/display/modules/info_packet/info_packet.c = b/drivers/gpu/drm/amd/display/modules/info_packet/info_packet.c index 5e245a053267..38056b2d37b2 100644 --- a/drivers/gpu/drm/amd/display/modules/info_packet/info_packet.c +++ b/drivers/gpu/drm/amd/display/modules/info_packet/info_packet.c @@ -719,6 +719,7 @@ void mod_build_adaptive_sync_infopacket(const struct dc= _stream_state *stream, break; case ADAPTIVE_SYNC_TYPE_NONE: case ADAPTIVE_SYNC_TYPE_PCON_NOT_ALLOWED: + case ADAPTIVE_SYNC_TYPE_HDMI: default: break; } --=20 2.52.0