From nobody Tue Feb 10 04:13:45 2026 Received: from mail-ej1-f68.google.com (mail-ej1-f68.google.com [209.85.218.68]) (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 907BC21C9EA for ; Mon, 19 Jan 2026 01:12:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.68 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768785153; cv=none; b=Hryrta3ri7kxEPmhia8tpZGdCK0zChkHzJFzfOEQ8+eFYvlsE0KE39IrEPfqMmMyfqCIcA2pd5I15YzWnl/rKZxAluld4vitpzluiHMv3r6DgXeSDMhazRBQ4Gu32W9VDI6cTtjnbCzLgQXM/Mo8rl52dfBLx0MytMxQJdvMSWU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768785153; c=relaxed/simple; bh=IiY4wM1QbitUjJyz9oF0qt2+x2OItyme+2zj/R8nQbE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=Et0vwVRCDZOgJswPzyMO0g/GI9SLjmoseZTmko0bQ8Xec3MYCQKBEjTeMai9aClTsfpZV1RK9NpEe4UfMCvnaZ72lCdzQBYD3xz7nW2Gb1SLKhzFjrW2DAlBsg+ll4PZLyJneVgO5Ha1q38onnX4qCM4BrRjsU/+wz2VZGV+IG8= 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=hUTHmLbI; arc=none smtp.client-ip=209.85.218.68 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="hUTHmLbI" Received: by mail-ej1-f68.google.com with SMTP id a640c23a62f3a-b876b5c69baso41828666b.0 for ; Sun, 18 Jan 2026 17:12:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1768785134; x=1769389934; 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=LmS0ptEIRfbi9CAZ3uGo3bYbHVKnzDLVy6mHiQZnvAs=; b=hUTHmLbImxg0KQtce5hxJFQL8fGLcsUfilDKHeE/nB3Cb9s2ZV3Pf/AfKcVfoofno9 J+zo65r06rPbZC8Pm7V+NWrCDBU63op0Qeb695V50WuWJ9tQDfIddwpTyLTcdCfUzslT TaM7fl2CikILtv7CGDcDOtiXY41IzdDXtMSKmPxUh0GcE4sv4FhsuUKxU3z2heJCgi3e zjpZqYqPc8MUo0p17TE8sDJbpLXjamY8grw3HU2mnAywwOlSXZvk9qG0imG2NpJj+jV1 TlLAZS+7YMSwMsRBvg0Zi7xCwroQojJ7XodyEu3nwIffii6rKsiT4bvsAvVn74l7QcmY gIJA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768785134; x=1769389934; 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=LmS0ptEIRfbi9CAZ3uGo3bYbHVKnzDLVy6mHiQZnvAs=; b=vSxJTX9gsFiS7zhN2DFpI8lJXxGcuagzJhvLdX4HZ3SVv9bi0+xt8hLtUgZADUY9Fp WD8f/uyuFrzIuFZEnMBwh15pV0aeDxXOzjbMCbpi5BmYZEjSOkXwjwh0+uwgQzcpsRBe ORt8sNt7BQau5ZHFBWplsP6kvrjARyZghJGlxNd0+if3uZlxRTK+GznznRRv4o3WZX+V uOJGAQlIC+JGQThAiB7H27O2qLiVl0oWcabPAkHn1R4XxVodhis5iChLnCDwPEdBzexG q3YsBpa93jincX5L3XSpkZjgJVa6l4X00M3gxpdQy+ERQDq2lU11suHNfaavwmAd+Unj x/Eg== X-Forwarded-Encrypted: i=1; AJvYcCV6Pi2FwlnstPcK+HrHllk5WfsShF1uAlJC0F4fEbKE7bEW9BJWkteySE+sYTFXfPJC6AVOuo5WMs05IIk=@vger.kernel.org X-Gm-Message-State: AOJu0Yzb+fnJKCqALB0PsHT6oM76+aa6QAB+BbQYdhg6JDhnxwyYFqVa +3daZlWA6gEoYt4IdaCSbnAysMbpspU32lv5lfbO5GhI8tcCoHHAuDbr X-Gm-Gg: AY/fxX6oqsOpZHeVcc9sbqbGFnKNhP+rNVVJCMZwgIK5ciy8ydyf3q+zMfrrLLdIRyX JOoDLz4c3Xht8PNKyffQ5ytqt2JOv8dTh85UamtzI60E1EIFcMPU6N6yokJ6iYRTFYoW18LXrIC iWBCP83SiaGGcEtOi8EwNI8GBm5wdCqroqrG8k52yW5lL4hvdAngzDWSMO9JSNGl2G9xBO+CJHb eowRmkh1iiBbmtopqJhcqd70xsDkUE9oE6+a04dOzn6CixReUHYjzXSD//X43qfatyKEdngwZIC tMbIXLKu1tX3qwT3s6IcwpjGVCBp/bmLsglNRp/aF/nYphabTkuC+q3e8NPbKBLyzMDat+q5v79 RkF3tZJyL3yFe521qVHnovAk2Iw1CJlzaEhyECwrxanQpaF1NK/JBy66Pju0rPs79Zj+AzPyoza VKTp4V5o7xBq5lJPYMjjUqjoiDYjdizH5Lylzp23hq4qTuS6UFYmjC7BV3kYlif+xY X-Received: by 2002:a05:6402:348d:b0:64c:9e19:982d with SMTP id 4fb4d7f45d1cf-654523cc85bmr4269887a12.1.1768785133994; Sun, 18 Jan 2026 17:12:13 -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 4fb4d7f45d1cf-654535c4912sm8989806a12.30.2026.01.18.17.12.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 Jan 2026 17:12:13 -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 Subject: [PATCH 17/17] drm/amd/display: Enable HDMI VRR Date: Mon, 19 Jan 2026 02:11:46 +0100 Message-ID: <20260119011146.62302-18-tomasz.pakula.oficjalny@gmail.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260119011146.62302-1-tomasz.pakula.oficjalny@gmail.com> References: <20260119011146.62302-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 ef7e02ebda41..75c3c8ad07e5 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c @@ -9612,6 +9612,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, @@ -13347,8 +13350,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 7bca0541443c..3fef1890a3fa 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 42a736a5509a..e6d3398046d5 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 @@ -686,6 +686,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