From nobody Thu Mar 5 08:54:29 2026 Received: from mail-ej1-f66.google.com (mail-ej1-f66.google.com [209.85.218.66]) (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 EB9CF33343A for ; Mon, 16 Feb 2026 16:45:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.66 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771260352; cv=none; b=ZC+4hITOH457eUwebYwYlB/D9P2ngqbwfTWT0VlY+e+z+dqImr5E+hbrd++Xqc2tdVKL628IJo5TY49dY6bPUt116D2HNsfemINrlpYV8PdcsWXgKXtZ15uwH5WSd9hS0IJMaJsCnwfs8CKKj4yMxXkQssDN0tf/cuILwdjT3eo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771260352; c=relaxed/simple; bh=kOcP3O5mOyOa8QiY2J/PIz0z8zX+WWCfyntHlidhUSY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=RQ0apYyZ8kIZrPy8FsvwDAkOO4KVOaSAlUBM572/b01/b+pwcOtnuPfbRh19xn1Tcyx1wc6F44T2S/8vL8vRqogNGlBQWm524aAuMAZ+FFWXC2Y2c4Y0nm2v/Htzir9rB4wQjNErfw8cfp8U4i+SzcldW8F/ZeHBF0XIBvP1tLY= 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=T8WQsDJz; arc=none smtp.client-ip=209.85.218.66 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="T8WQsDJz" Received: by mail-ej1-f66.google.com with SMTP id a640c23a62f3a-b8fa033d805so46898566b.1 for ; Mon, 16 Feb 2026 08:45:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1771260347; x=1771865147; 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=61QqaYqAJ4tBG5OXB271IehCG1TZaMd4977PuSXDslQ=; b=T8WQsDJzSPAqcjWjjyc5QNbj145/4ZKdtIYHVNhogmdp7pM5yOd5AeQ/9Yua+jmDbZ Kz8xU6SXsP2RLrKzG1h+sih1nlZdyPCIdJOv/GShLZhH0zd/kp+Se+ZIQZDYwPcwDUTL Vqs1vaHNg6zrVVpswtUK2dfOcJiW3MFWrI72/XbW7tAk7/p1sOqXW+PScyCD8VUKkK1d pMKSOjorK1wTRnEudKpt6AGLll5527rk6sx/FMXx7qrS4OShp3Ao+whFFBXAsXqyky9e LDEc/DNCspSgN7VwCbtwIfOR7kIDQ5EMp+0c1hMBQHhIwJ+tZGFKYj0uEy0WPLQE0QKO mNnA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771260347; x=1771865147; 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=61QqaYqAJ4tBG5OXB271IehCG1TZaMd4977PuSXDslQ=; b=sLsd/0ng+WLUk6K5GqEnWNqsXZ33JUwkbs1XWDxyzW8ThfPUuz03AhP7/k6koASFk3 cF/vmImuc4sfV7WjcIyuADBPnWMPyDqZtgUfMN+cwmsVofYmKoiPL4Ser3GUYiNo+xgZ 5OT1GzsOSKn67sHj2wTS/HInPzwOy1Pz6/emkAykCZZLzY0hXmPfB69+7PKl6rbd40Z5 7KNn1fnmER2z7v88cM/3TQMr0IemwMMqCF/YdPcT2WJcYyLgFxyP0ZHJP397x4l/U7yf 7uHw46MDXErFkW3QVAZDBvKOZRGz+Jiz/5n0RmT804EPmhghlDJ1FuPcr+s8cPTBAg04 z8ZA== X-Forwarded-Encrypted: i=1; AJvYcCVg93Y7C31J/G8DSs7F0EyI6l/YHsUefe45E9JyUu2OoygBipxy2OF1qA8lqBZMRlZig/Zff1kGsTWTvoc=@vger.kernel.org X-Gm-Message-State: AOJu0Yy9CsFzTEM0vQBxYWId7kp5SsuMZHBXJKUll6jwRDr6uMf+ilbh YDWguhFhqFg5+f3aWZ2pbdHxTh85zWY8At59lWfJirP1+5IAtK8M30qY X-Gm-Gg: AZuq6aIXe/ZQPGhGdDVEamH38EN8LNe1wIyFNhwOK6hugijXIR0hYFNlK+kCR7LhTaD aAlYPciWUPeItF/L6DpBWLdyb2JKX2nEA5fLo1L6xjCJnYa0jwt7iFVQTV6ht5qT81zL7owIhJa mbfGWw1dCcybHXU6hH6uts5MlkTr1griO5hif426omYWdz/FclkMlqldWiUbxejmfWNY/R5dgzS CS1an9C5xhprDMj1T45tnxdauw5G2crMHkFd742ZTAcD1EIiCpHaHydcWRZqc6kz2ZvYXlQCrCU Jtq8jSswK1AVwQtpjEY7GH1Rg74D/yPmXfEBUJHZqEdlc8m2qXDQY+v4KuFYKkGxT0bofHRked+ FaeG8RszSbSzEUICj20so6K1NEcEDxKv7sD3NwjR6+Lcgp3opSmJvZBfVMsONkN/P+d2qei1bIy MNdczwImy6wcW771w4XQbFgISXELTS926aiF9PP8HonGX+kJItgvjQxnQg7n7oNb55CuQu+aH0c Z4p X-Received: by 2002:a17:907:3e88:b0:b73:59b0:34c6 with SMTP id a640c23a62f3a-b8face510e0mr348090166b.4.1771260347159; Mon, 16 Feb 2026 08:45:47 -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-b8fc735d185sm264683866b.14.2026.02.16.08.45.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 16 Feb 2026 08:45:46 -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 v4 21/27] drm/amd/display: Enable HDMI VRR Date: Mon, 16 Feb 2026 17:45:10 +0100 Message-ID: <20260216164516.36803-22-tomasz.pakula.oficjalny@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260216164516.36803-1-tomasz.pakula.oficjalny@gmail.com> References: <20260216164516.36803-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 | 15 ++++++++++++--- .../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, 18 insertions(+), 3 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 288437ada2a5..6a2806cc800a 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c @@ -9629,7 +9629,10 @@ static void update_freesync_state_on_stream( =20 aconn =3D (struct amdgpu_dm_connector *)new_stream->dm_stream_context; =20 - if (aconn && (aconn->as_type =3D=3D ADAPTIVE_SYNC_TYPE_PCON_ALLOWED || + if (aconn && aconn->as_type =3D=3D ADAPTIVE_SYNC_TYPE_HDMI) + packet_type =3D PACKET_TYPE_VTEM; + + else if (aconn && (aconn->as_type =3D=3D ADAPTIVE_SYNC_TYPE_PCON_ALLOWED = || aconn->vsdb_info.replay_mode)) { pack_sdp_v1_3 =3D aconn->pack_sdp_v1_3; =20 @@ -13419,8 +13422,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_info.= freesync_supported) { - monitor_range_from_vsdb(&connector->display_info, &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->display_info, &vsdb_info); + } else if (vsdb_info.freesync_supported) + monitor_range_from_vsdb(&connector->display_info, &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 027113ec147d..03d37b6f1cd0 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 @@ -59,6 +59,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 96c84f70ed44..7106b409ae54 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 @@ -699,6 +699,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.53.0