From nobody Mon Feb 9 21:37:07 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 A04BD31B136 for ; Tue, 3 Feb 2026 18:56:47 +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=1770145009; cv=none; b=pEcH/XekYWDmzfYFycbfCfhnsYKFpoixfxn0fJH5h2LkMKrHRdJGsF/jCGRyfAwntTKJIK0YpKYdJNIAhz/bd7op24OADUr7FqPPLZNqhazMlIBYSB7pHatdDKCKFX0bxWRl0o/gdR9F9KmbQltvOZwLRNyktnJwWfFrmq0nrBo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770145009; c=relaxed/simple; bh=JwEZjO0tYmGudgHsudxPDTBy24ZS2U9ocac2R6Vp4Pk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=bJ7hqBwXEZHuxtDJuQQ4rIVWEpmbkJgRU5cMHi2lrFPGY69ycNfurL4cHX33HbSwUsxojV2hTzRpnO3MLYCDG6EBKB/+HjTEMczMxy6eKAx761/0wI7o2nObsdKkU9lllcrYB7ft3TBZReHRlGZxmuTt4yNr2/FzR5oabh4Nj3A= 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=AYr2PMlz; 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="AYr2PMlz" Received: by mail-ej1-f67.google.com with SMTP id a640c23a62f3a-b8e0e812c27so59079866b.3 for ; Tue, 03 Feb 2026 10:56:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1770145006; x=1770749806; 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=YveXWB9fxJPi3CW0nlq6uRwljjhlFuvcOGXx+tNrYfY=; b=AYr2PMlzkY1rSryUUIJexrZG1FOrvHJp2OjQO7N/4HI520TmgjpzUjR4zOmMaXz0g8 /7ori9upGsdodAxm6rYJJJ1PI+BpL7APUttwfycfY1EG7C0JPUk5ti5Z+0p4BDJpwPHx v02eCuCGXWNTWqwZBljUk+uuDpSERF99BtH9ElH/LbULp1rvpHU7dO0VNcyHaXn3000n iXUCtqkKeGlJ86ZAB8rhhO4ZhFqMp0csAxbHdYz28GH+diOE3Ut0BUoO7g9wqH7sF/hE kpdl0swo/ypdg4vuLDuf5+woYwFD3NfXad4ehbS38wiTvVX/Ehjy3qzVNVh3vwlDfa3K 4/dg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770145006; x=1770749806; 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=YveXWB9fxJPi3CW0nlq6uRwljjhlFuvcOGXx+tNrYfY=; b=Ii2C+VC+1ZuksdrqMF18Z+Q+uHx4+WDAZnf6reJdfYi4rGUx12HmUmTzdjOMenqnHR nSlSRH5ONQF/vfy0FEPx9sbe781D7aqglRrmtISzaipWSOrci4Le2vW+FCavsmI1V4mJ eO14vcKUcE76hoPm9jfmWMLC/mkE36Hmdvd5LJSnGdlzk+B40ysIv7LJ+DMz9qP7LR6q dtnU2KEZBkW/A6YAKpdhLyi9jd70siwnisTTWC2TOwH2EXLzFkgokoAyDEjcoLL0B+uD 4syK2GemkiTMBgALYE2tV+zP0ojxoURtybPz0q4civhU1RRwCokzZ9ikU0XIa6dLJ1WQ EktQ== X-Forwarded-Encrypted: i=1; AJvYcCW+Q00KiosM6h2FyvEJQWY2GEFgA0Gar8DjLsM982zPXCH07ULASiL6WwsWz9Ov0+ezhDSgBQMyk3cQwnA=@vger.kernel.org X-Gm-Message-State: AOJu0Yy3Qz0ElfXo5DMLC+rGzp6CJPaAjhAtUJjHvXUA+NuCW5psQnjr AMAmzHEYWmcgMgSrUXi60OOcJRyyB+fRgguSlHVlmTcFhhuXmr78fnTzdenCQu/g X-Gm-Gg: AZuq6aJM//I2Y/b1XYGwO3aMQzgkrYRek+tQf4hO7U9Dri7M1LeIJ8/79rUjdVRGWlK BB1TQ5DIrHfJqlSJIo2Xz80MGgcxPZqSxSv/n4OfiHp6cGpzYoZQeQGZK8oGj3bOMnlC9hxUoI3 8mPFaRkyqC/XWqxDq7Qoa3/swd/maJVvFV8S6bS43IHV+BHAk6Od6UsPEwGjbREXYEQS0bmsgCH bmQdOISeiX7Yx+swFO0hxmb6QUn0+g0ZSclQNSO+uSnmv+UyiXYkNI7N6EIt/aBMT+l91vWEgmv 5WnZDboF6b3f09Vq/Xqak9pMy4m1En1tZ0mg/ODseYYFaHgwUvJTZJbBxhLzRl/I2zNaCPIfb1x aDo8d1SwB6Sqegv9GxMk00PYx8mKuHzl0dL4i9Zalnq8Dyaz2KI8OXK1HyszVA/JWwBIu9cOxG8 PkOTCfIN+gyybehzFLBRru4g7dPLbgYm9GNKn0sPRktKvboo4yuoXHJWm4kOIYD00p X-Received: by 2002:a17:907:3ea8:b0:b71:a627:3d9f with SMTP id a640c23a62f3a-b8e9ec91abamr22683566b.0.1770145005819; Tue, 03 Feb 2026 10:56:45 -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-b8e9fad97a7sm16715766b.0.2026.02.03.10.56.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 03 Feb 2026 10:56:45 -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, admin@ptr1337.dev Subject: [PATCH v3 11/19] drm/amd/display: Support HDMI VRRmax=0 Date: Tue, 3 Feb 2026 19:56:18 +0100 Message-ID: <20260203185626.55428-12-tomasz.pakula.oficjalny@gmail.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260203185626.55428-1-tomasz.pakula.oficjalny@gmail.com> References: <20260203185626.55428-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] VRRmax=3D0 is a valid value and means that the upper bound is guared by the selected video mode. [How] In this context, saved vrr max is the max possible refresh rate ever. Try getting upper VRR bound from AMD vsdbif it exists or rely on the limitations of BRR in VTEM info frames. I found through testing, that TVs seem to reject VTEM when BRR is set to over 1023 Hz. Use this as the last resort VRRmax. 1023 is the max value for a 10-bit field as well. v2: - Update max BRR value to 1023 Signed-off-by: Tomasz Paku=C5=82a --- .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 23 +++++++++++++++---- .../amd/display/modules/inc/mod_info_packet.h | 2 ++ 2 files changed, 20 insertions(+), 5 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 6fb23d59fcc9..2200161da71b 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c @@ -13232,14 +13232,27 @@ static void monitor_range_from_vsdb(struct drm_di= splay_info *display, } =20 /** - * Get VRR range from HDMI VRR info in EDID. + * Get VRR range from HDMI VRR info in EDID. If VRRmax =3D=3D 0, + * try getting upper bound from AMD vsdb. * * @conn: drm_connector with HDMI VRR info + * @vsdb: AMD vsdb from CAE */ -static void monitor_range_from_hdmi(struct drm_display_info *display) +static void monitor_range_from_hdmi(struct drm_display_info *display, + const struct amdgpu_hdmi_vsdb_info *vsdb) { + u16 vrr_max =3D display->hdmi.vrr_cap.vrr_max; + + /* Try getting upper vrr bound from AMD vsdb */ + if (vrr_max =3D=3D 0) + vrr_max =3D vsdb->max_refresh_rate_hz; + + /* Use max possible BRR value as a last resort */ + if (vrr_max =3D=3D 0) + vrr_max =3D VTEM_BRR_MAX; + display->monitor_range.min_vfreq =3D display->hdmi.vrr_cap.vrr_min; - display->monitor_range.max_vfreq =3D display->hdmi.vrr_cap.vrr_max; + display->monitor_range.max_vfreq =3D vrr_max; } =20 /* @@ -13374,8 +13387,8 @@ void amdgpu_dm_update_freesync_caps(struct drm_conn= ector *connector, /* DP -> HDMI PCON */ } else if (pcon_allowed) { /* Prefer HDMI VRR */ - if (hdmi_vrr.supported && hdmi_vrr.vrr_max > 0) - monitor_range_from_hdmi(&connector->display_info); + if (hdmi_vrr.supported) + monitor_range_from_hdmi(&connector->display_info, &vsdb_info); else if (vsdb_info.freesync_supported) { amdgpu_dm_connector->vsdb_info =3D vsdb_info; monitor_range_from_vsdb(&connector->display_info, &vsdb_info); 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 5de8a6918e6a..306eb7355c25 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 @@ -33,6 +33,8 @@ struct dc_stream_state; struct dc_info_packet; struct mod_vrr_params; =20 +#define VTEM_BRR_MAX 1023 + void set_vsc_packet_colorimetry_data( const struct dc_stream_state *stream, struct dc_info_packet *info_packet, --=20 2.52.0