From nobody Fri Oct 3 14:34:23 2025 Received: from relay12.grserver.gr (relay12.grserver.gr [88.99.38.195]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5875E31B11B for ; Fri, 29 Aug 2025 14:57:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=88.99.38.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756479477; cv=none; b=ZKkxgclSr/4zV5kEE4KTvs6tsAobXSRraLV2SJQ/lE3CsZX675SEFpkiFbDTahEvK1phhPHBc0Eag2WSyyCXlhPULjfQHp8bhE4nFD5Jvur9CHgnh10m/RW7JPHoO/BLrmylKJMtXGBWgyT8H3KEJl9IsvK+ypPazik4q0KtW+s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756479477; c=relaxed/simple; bh=oggK3NZUbCtod6VJUSJ8r9D7f/geDAhMAaRxzY5CLTA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=tf79Rc31E2XQ8v9uFGbO9epG4uSen/lFnih2i8QRGJ753IBtCV9EXajBu8XixRdLOGhhNaHIYmJzWA74dfB2p7NY7nL4/Xi0f2V0P01yHvWLQEPdzfbvsXuQIl4BwwPeZgQOucBI5Vr0Z+nRIM4yzx076NCkSzFnAYqYBeZxZW0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=antheas.dev; spf=pass smtp.mailfrom=antheas.dev; dkim=temperror (0-bit key) header.d=antheas.dev header.i=@antheas.dev header.b=RwjKHf0a; arc=none smtp.client-ip=88.99.38.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=antheas.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=antheas.dev Authentication-Results: smtp.subspace.kernel.org; dkim=temperror (0-bit key) header.d=antheas.dev header.i=@antheas.dev header.b="RwjKHf0a" Received: from relay12 (localhost [127.0.0.1]) by relay12.grserver.gr (Proxmox) with ESMTP id 28971BDC09; Fri, 29 Aug 2025 17:57:47 +0300 (EEST) Received: from linux3247.grserver.gr (linux3247.grserver.gr [213.158.90.240]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by relay12.grserver.gr (Proxmox) with ESMTPS id B3F40BDD1C; Fri, 29 Aug 2025 17:57:46 +0300 (EEST) Received: from antheas-z13 (x5996a855.customers.hiper-net.dk [89.150.168.85]) by linux3247.grserver.gr (Postfix) with ESMTPSA id D45922018C9; Fri, 29 Aug 2025 17:57:45 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=antheas.dev; s=default; t=1756479466; bh=eOvCjbVtCDcSD69NmTG6S1mGz0BcfYQbAOIOCu/qG44=; h=From:To:Subject; b=RwjKHf0ai59wInqx1PTslD8P1TSwCyzKVaD1dXPwGd2vFUEnADOl5gKdIdyXfXKg2 eCp6yoAy/T7L4CFNc8CVTC65cJr/SIHyPn4pK9Q0dheyH+yMbLKOn42IlAcstbhSqz JLPNnTe5kYHPvDC/io1NsvZbXl/a2fZc+rjSZsDTUXCe9Fxq7vXo/GHYpGGcgKfi0x lz2t9ouuAixOmCbTHelYAkFLTx5huOM1ZZEQgJ2Ut8SH2tGxpGRZoTrxk7ggv8u8xe OnQmAn8omfJfXFp1RSlU2TBKu1YcFWDme6DWjaCWuG5R1R0vXCW/yLP3/2yjDAuTQX 1IuPui2MRfVsw== Authentication-Results: linux3247.grserver.gr; spf=pass (sender IP is 89.150.168.85) smtp.mailfrom=lkml@antheas.dev smtp.helo=antheas-z13 Received-SPF: pass (linux3247.grserver.gr: connection is authenticated) From: Antheas Kapenekakis To: amd-gfx@lists.freedesktop.org Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, philm@manjaro.org, Alex Deucher , =?UTF-8?q?Christian=20K=C3=B6nig?= , Mario Limonciello , Robert Beckett , Antheas Kapenekakis Subject: [PATCH v3 1/6] drm: panel-backlight-quirks: Make EDID match optional Date: Fri, 29 Aug 2025 16:55:36 +0200 Message-ID: <20250829145541.512671-2-lkml@antheas.dev> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250829145541.512671-1-lkml@antheas.dev> References: <20250829145541.512671-1-lkml@antheas.dev> 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 X-PPP-Message-ID: <175647946639.277952.14470684280693686509@linux3247.grserver.gr> X-PPP-Vhost: antheas.dev X-Virus-Scanned: clamav-milter 1.4.3 at linux3247.grserver.gr X-Virus-Status: Clean Currently, having a valid panel_id match is required to use the quirk system. For certain devices, we know that all SKUs need a certain quirk. Therefore, allow not specifying ident by only checking for a match if panel_id is non-zero. Tested-by: Philip M=C3=BCller Reviewed-by: Mario Limonciello Signed-off-by: Antheas Kapenekakis --- drivers/gpu/drm/drm_panel_backlight_quirks.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/drm_panel_backlight_quirks.c b/drivers/gpu/drm= /drm_panel_backlight_quirks.c index 598f812b7cb3..b38b33e26ea5 100644 --- a/drivers/gpu/drm/drm_panel_backlight_quirks.c +++ b/drivers/gpu/drm/drm_panel_backlight_quirks.c @@ -50,7 +50,7 @@ static bool drm_panel_min_backlight_quirk_matches(const s= truct drm_panel_min_bac if (!dmi_match(quirk->dmi_match.field, quirk->dmi_match.value)) return false; =20 - if (!drm_edid_match(edid, &quirk->ident)) + if (quirk->ident.panel_id && !drm_edid_match(edid, &quirk->ident)) return false; =20 return true; --=20 2.51.0 From nobody Fri Oct 3 14:34:23 2025 Received: from relay12.grserver.gr (relay12.grserver.gr [88.99.38.195]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 83A60320CA7 for ; Fri, 29 Aug 2025 14:57:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=88.99.38.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756479478; cv=none; b=PkY0hNFyTToyetlk6zcdyVgElREV3Jl0rdoIsoEIk5+lZ2a3gKjZnvQjpUrNXscPzTjaC8Ez5I5rpnQUOs0X2uqVnTDHnb+wtVJ4XjaDVeNC3GjGNoXIWC8I8nbJBFU3EmxiykPzAEjXFEFWAA+lCtUOXY12/+ja24aCG3QhAHM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756479478; c=relaxed/simple; bh=2UTKZGrlwVQjqeuTJRGARz3kE6PZXpAZhcSHK7DSEcQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=aILdr9bghpVIbRaQ5lIu8H0jyT8vDCh2DFKWoCkRRqy+ZeyUgz3Yq1M63XWI7MehocDUtOQ5ohyCxb/QRRs5td1qtlUv8cEydh9LPG4otiUBw/WgGmLfgsYxIG8I8xT4iIeXT7oD3TSo+4jW54qMSisvPtIgB+blqZTI8DfIZJ0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=antheas.dev; spf=pass smtp.mailfrom=antheas.dev; dkim=temperror (0-bit key) header.d=antheas.dev header.i=@antheas.dev header.b=HLmNaUj+; arc=none smtp.client-ip=88.99.38.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=antheas.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=antheas.dev Authentication-Results: smtp.subspace.kernel.org; dkim=temperror (0-bit key) header.d=antheas.dev header.i=@antheas.dev header.b="HLmNaUj+" Received: from relay12 (localhost [127.0.0.1]) by relay12.grserver.gr (Proxmox) with ESMTP id 65888BDDF0; Fri, 29 Aug 2025 17:57:48 +0300 (EEST) Received: from linux3247.grserver.gr (linux3247.grserver.gr [213.158.90.240]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by relay12.grserver.gr (Proxmox) with ESMTPS id A6F64BDCD5; Fri, 29 Aug 2025 17:57:47 +0300 (EEST) Received: from antheas-z13 (x5996a855.customers.hiper-net.dk [89.150.168.85]) by linux3247.grserver.gr (Postfix) with ESMTPSA id BF3A32018CC; Fri, 29 Aug 2025 17:57:46 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=antheas.dev; s=default; t=1756479467; bh=HHK+g2DZ8i8mkVPMcYzml+I2hLTWhk/vBCh7AySeRAI=; h=From:To:Subject; b=HLmNaUj+0fFO/3OQBrKPMtwkSLBsuB1b/J1C+5rZ5L1TfauDt1IQEcIoD7722jY1m vcqcbL3s+4xvn71wL7gRidpHFcH1YI67FbNeLoq9ZN4ik1OBFgOV7HmaCkj7Zy+WJ5 R7qJjos0zTGty7fgMTBQ+KXRjT2kTSkKoBIay74esK3MZZiy3hioIAZ+bobTYg0OF8 RTraamdMkl9uCB8yTfXnOWyXULXjtMO0woMZFN7WXzb6OdKitCzlHlC1e2wlJOahFi 6+3TQYjWkl849wotKG1sNi6ppWnKCcI4J96VqduYS1vQoDCl8nftq4nep0uzsQHP0v 4m7gZ6tG3Szmg== Authentication-Results: linux3247.grserver.gr; spf=pass (sender IP is 89.150.168.85) smtp.mailfrom=lkml@antheas.dev smtp.helo=antheas-z13 Received-SPF: pass (linux3247.grserver.gr: connection is authenticated) From: Antheas Kapenekakis To: amd-gfx@lists.freedesktop.org Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, philm@manjaro.org, Alex Deucher , =?UTF-8?q?Christian=20K=C3=B6nig?= , Mario Limonciello , Robert Beckett , Antheas Kapenekakis Subject: [PATCH v3 2/6] drm: panel-backlight-quirks: Convert brightness quirk to generic structure Date: Fri, 29 Aug 2025 16:55:37 +0200 Message-ID: <20250829145541.512671-3-lkml@antheas.dev> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250829145541.512671-1-lkml@antheas.dev> References: <20250829145541.512671-1-lkml@antheas.dev> 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 X-PPP-Message-ID: <175647946730.278009.5728958328614822021@linux3247.grserver.gr> X-PPP-Vhost: antheas.dev X-Virus-Scanned: clamav-milter 1.4.3 at linux3247.grserver.gr X-Virus-Status: Clean Currently, the brightness quirk is limited to minimum brightness only. Refactor it to a structure, so that more quirks can be added in the future. Reserve 0 value for "no quirk", and use u16 to allow minimum brightness up to 255. Tested-by: Philip M=C3=BCller Reviewed-by: Mario Limonciello Signed-off-by: Antheas Kapenekakis --- .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 12 ++++-- drivers/gpu/drm/drm_panel_backlight_quirks.c | 41 ++++++++++--------- include/drm/drm_utils.h | 7 +++- 3 files changed, 35 insertions(+), 25 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 a0ca3b2c6bd8..b967c6952e11 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c @@ -3612,11 +3612,11 @@ static struct drm_mode_config_helper_funcs amdgpu_d= m_mode_config_helperfuncs =3D { =20 static void update_connector_ext_caps(struct amdgpu_dm_connector *aconnect= or) { + const struct drm_panel_backlight_quirk *panel_backlight_quirk; struct amdgpu_dm_backlight_caps *caps; struct drm_connector *conn_base; struct amdgpu_device *adev; struct drm_luminance_range_info *luminance_range; - int min_input_signal_override; =20 if (aconnector->bl_idx =3D=3D -1 || aconnector->dc_link->connector_signal !=3D SIGNAL_TYPE_EDP) @@ -3656,9 +3656,13 @@ static void update_connector_ext_caps(struct amdgpu_= dm_connector *aconnector) else caps->aux_min_input_signal =3D 1; =20 - min_input_signal_override =3D drm_get_panel_min_brightness_quirk(aconnect= or->drm_edid); - if (min_input_signal_override >=3D 0) - caps->min_input_signal =3D min_input_signal_override; + panel_backlight_quirk =3D + drm_get_panel_backlight_quirk(aconnector->drm_edid); + if (!IS_ERR_OR_NULL(panel_backlight_quirk)) { + if (panel_backlight_quirk->min_brightness) + caps->min_input_signal =3D + panel_backlight_quirk->min_brightness - 1; + } } =20 DEFINE_FREE(sink_release, struct dc_sink *, if (_T) dc_sink_release(_T)) diff --git a/drivers/gpu/drm/drm_panel_backlight_quirks.c b/drivers/gpu/drm= /drm_panel_backlight_quirks.c index b38b33e26ea5..702726c20ccc 100644 --- a/drivers/gpu/drm/drm_panel_backlight_quirks.c +++ b/drivers/gpu/drm/drm_panel_backlight_quirks.c @@ -8,23 +8,23 @@ #include #include =20 -struct drm_panel_min_backlight_quirk { +struct drm_get_panel_backlight_quirk { struct { enum dmi_field field; const char * const value; } dmi_match; struct drm_edid_ident ident; - u8 min_brightness; + struct drm_panel_backlight_quirk quirk; }; =20 -static const struct drm_panel_min_backlight_quirk drm_panel_min_backlight_= quirks[] =3D { +static const struct drm_get_panel_backlight_quirk drm_panel_min_backlight_= quirks[] =3D { /* 13 inch matte panel */ { .dmi_match.field =3D DMI_BOARD_VENDOR, .dmi_match.value =3D "Framework", .ident.panel_id =3D drm_edid_encode_panel_id('B', 'O', 'E', 0x0bca), .ident.name =3D "NE135FBM-N41", - .min_brightness =3D 0, + .quirk =3D { .min_brightness =3D 1, }, }, /* 13 inch glossy panel */ { @@ -32,7 +32,7 @@ static const struct drm_panel_min_backlight_quirk drm_pan= el_min_backlight_quirks .dmi_match.value =3D "Framework", .ident.panel_id =3D drm_edid_encode_panel_id('B', 'O', 'E', 0x095f), .ident.name =3D "NE135FBM-N41", - .min_brightness =3D 0, + .quirk =3D { .min_brightness =3D 1, }, }, /* 13 inch 2.8k panel */ { @@ -40,12 +40,13 @@ static const struct drm_panel_min_backlight_quirk drm_p= anel_min_backlight_quirks .dmi_match.value =3D "Framework", .ident.panel_id =3D drm_edid_encode_panel_id('B', 'O', 'E', 0x0cb4), .ident.name =3D "NE135A1M-NY1", - .min_brightness =3D 0, + .quirk =3D { .min_brightness =3D 1, }, }, }; =20 -static bool drm_panel_min_backlight_quirk_matches(const struct drm_panel_m= in_backlight_quirk *quirk, - const struct drm_edid *edid) +static bool drm_panel_min_backlight_quirk_matches( + const struct drm_get_panel_backlight_quirk *quirk, + const struct drm_edid *edid) { if (!dmi_match(quirk->dmi_match.field, quirk->dmi_match.value)) return false; @@ -57,39 +58,39 @@ static bool drm_panel_min_backlight_quirk_matches(const= struct drm_panel_min_bac } =20 /** - * drm_get_panel_min_brightness_quirk - Get minimum supported brightness l= evel for a panel. + * drm_get_panel_backlight_quirk - Get backlight quirks for a panel * @edid: EDID of the panel to check * * This function checks for platform specific (e.g. DMI based) quirks * providing info on the minimum backlight brightness for systems where th= is - * cannot be probed correctly from the hard-/firm-ware. + * cannot be probed correctly from the hard-/firm-ware and other sources. * * Returns: - * A negative error value or - * an override value in the range [0, 255] representing 0-100% to be scale= d to - * the drivers target range. + * a drm_panel_backlight_quirk struct if a quirk was found, otherwise an + * error pointer. */ -int drm_get_panel_min_brightness_quirk(const struct drm_edid *edid) +const struct drm_panel_backlight_quirk * +drm_get_panel_backlight_quirk(const struct drm_edid *edid) { - const struct drm_panel_min_backlight_quirk *quirk; + const struct drm_get_panel_backlight_quirk *quirk; size_t i; =20 if (!IS_ENABLED(CONFIG_DMI)) - return -ENODATA; + return ERR_PTR(-ENODATA); =20 if (!edid) - return -EINVAL; + return ERR_PTR(-EINVAL); =20 for (i =3D 0; i < ARRAY_SIZE(drm_panel_min_backlight_quirks); i++) { quirk =3D &drm_panel_min_backlight_quirks[i]; =20 if (drm_panel_min_backlight_quirk_matches(quirk, edid)) - return quirk->min_brightness; + return &quirk->quirk; } =20 - return -ENODATA; + return ERR_PTR(-ENODATA); } -EXPORT_SYMBOL(drm_get_panel_min_brightness_quirk); +EXPORT_SYMBOL(drm_get_panel_backlight_quirk); =20 MODULE_DESCRIPTION("Quirks for panel backlight overrides"); MODULE_LICENSE("GPL"); diff --git a/include/drm/drm_utils.h b/include/drm/drm_utils.h index 15fa9b6865f4..82eeee4a58ab 100644 --- a/include/drm/drm_utils.h +++ b/include/drm/drm_utils.h @@ -16,7 +16,12 @@ struct drm_edid; =20 int drm_get_panel_orientation_quirk(int width, int height); =20 -int drm_get_panel_min_brightness_quirk(const struct drm_edid *edid); +struct drm_panel_backlight_quirk { + u16 min_brightness; +}; + +const struct drm_panel_backlight_quirk * +drm_get_panel_backlight_quirk(const struct drm_edid *edid); =20 signed long drm_timeout_abs_to_jiffies(int64_t timeout_nsec); =20 --=20 2.51.0 From nobody Fri Oct 3 14:34:23 2025 Received: from relay12.grserver.gr (relay12.grserver.gr [88.99.38.195]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E760C320CCA for ; Fri, 29 Aug 2025 14:57:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=88.99.38.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756479478; cv=none; b=jhbvBV7gLIEWX054ep0pgpg+O1T1eiKPWbkwJT67GfM/6LVoH9bqn+eWNaIPXJF237DN7yozW8jQQx9GVqVs/dfwCa0hD2ONsz74D5EPQdc3YsdT+iN+wfojF0oTENTAhS+0wGthUyVWM5sYmLlx1/NCCGTS4FCVwylxdsdXy+o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756479478; c=relaxed/simple; bh=FQPwafbAyoSk7lj+QYNSua1dd+Yac2mai5v00FfzM2A=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=AkYECVUSNh8sPeQ8Hf7Sq5MKVvJhfgtwtJ1Avrt8H+TNwgUbddUy7vgLyfvS7bhBTiVKhpW5O2ag/Bn04jvWlXI7s3SwDYyuGwBBL8nYprv2t/EYhkSfdvnCM/vVAYVKaqUKsjMcFf/2vbBT1p1L+kdqRD2pszNCDn4yJDyELrQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=antheas.dev; spf=pass smtp.mailfrom=antheas.dev; dkim=temperror (0-bit key) header.d=antheas.dev header.i=@antheas.dev header.b=R9JrjxDr; arc=none smtp.client-ip=88.99.38.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=antheas.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=antheas.dev Authentication-Results: smtp.subspace.kernel.org; dkim=temperror (0-bit key) header.d=antheas.dev header.i=@antheas.dev header.b="R9JrjxDr" Received: from relay12 (localhost [127.0.0.1]) by relay12.grserver.gr (Proxmox) with ESMTP id 1C955BDE43; Fri, 29 Aug 2025 17:57:49 +0300 (EEST) Received: from linux3247.grserver.gr (linux3247.grserver.gr [213.158.90.240]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by relay12.grserver.gr (Proxmox) with ESMTPS id 8D31ABDD96; Fri, 29 Aug 2025 17:57:48 +0300 (EEST) Received: from antheas-z13 (x5996a855.customers.hiper-net.dk [89.150.168.85]) by linux3247.grserver.gr (Postfix) with ESMTPSA id AA6D72018C9; Fri, 29 Aug 2025 17:57:47 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=antheas.dev; s=default; t=1756479468; bh=iy5mjsAtc23/5vk879aOYltCxJDQw7DgKHkVwiiTYp4=; h=From:To:Subject; b=R9JrjxDrLI8z8uwiSf0c2gNBBWRvmn1BpNrkPR1YJMofpENrTmRnkau7z/T2WvEWj +4Ch3Sv+FHv7b6sb+rh+XD023YhP3kRqSSo5FOdkh0GkwObxebjqbHwtyYmKW1Hfq+ L+vu8gco0h+mwmjdELM8jlqBjfG65B0THEYOCozFVtXUDrquRXcoD00pSnY+ZViXjZ WJL0YIgBtrp+7WbLcUXlwg/kXdjOVqnys0w5Z7VVXsAAinQRYfoSiAXU+CWBiTqc9U NTP3vBVZS381Ns4Ln8HIS8NcgaL1inoBzQDMyibVIi2SbVHe/Q0JLLidPfvV2JMAen vzyMGyuoCrA7w== Authentication-Results: linux3247.grserver.gr; spf=pass (sender IP is 89.150.168.85) smtp.mailfrom=lkml@antheas.dev smtp.helo=antheas-z13 Received-SPF: pass (linux3247.grserver.gr: connection is authenticated) From: Antheas Kapenekakis To: amd-gfx@lists.freedesktop.org Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, philm@manjaro.org, Alex Deucher , =?UTF-8?q?Christian=20K=C3=B6nig?= , Mario Limonciello , Robert Beckett , Antheas Kapenekakis Subject: [PATCH v3 3/6] drm: panel-backlight-quirks: Add secondary DMI match Date: Fri, 29 Aug 2025 16:55:38 +0200 Message-ID: <20250829145541.512671-4-lkml@antheas.dev> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250829145541.512671-1-lkml@antheas.dev> References: <20250829145541.512671-1-lkml@antheas.dev> 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 X-PPP-Message-ID: <175647946822.278051.14854790477276188364@linux3247.grserver.gr> X-PPP-Vhost: antheas.dev X-Virus-Scanned: clamav-milter 1.4.3 at linux3247.grserver.gr X-Virus-Status: Clean Using a single DMI match only allows matching per manufacturer. Introduce a second optional match to allow matching make/model. In addition, make DMI optional to allow matching only by EDID. Tested-by: Philip M=C3=BCller Reviewed-by: Mario Limonciello Signed-off-by: Antheas Kapenekakis --- drivers/gpu/drm/drm_panel_backlight_quirks.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/drm_panel_backlight_quirks.c b/drivers/gpu/drm= /drm_panel_backlight_quirks.c index 702726c20ccc..3d386a96e50e 100644 --- a/drivers/gpu/drm/drm_panel_backlight_quirks.c +++ b/drivers/gpu/drm/drm_panel_backlight_quirks.c @@ -8,11 +8,14 @@ #include #include =20 +struct drm_panel_match { + enum dmi_field field; + const char * const value; +}; + struct drm_get_panel_backlight_quirk { - struct { - enum dmi_field field; - const char * const value; - } dmi_match; + struct drm_panel_match dmi_match; + struct drm_panel_match dmi_match_other; struct drm_edid_ident ident; struct drm_panel_backlight_quirk quirk; }; @@ -48,7 +51,13 @@ static bool drm_panel_min_backlight_quirk_matches( const struct drm_get_panel_backlight_quirk *quirk, const struct drm_edid *edid) { - if (!dmi_match(quirk->dmi_match.field, quirk->dmi_match.value)) + if (quirk->dmi_match.field && + !dmi_match(quirk->dmi_match.field, quirk->dmi_match.value)) + return false; + + if (quirk->dmi_match_other.field && + !dmi_match(quirk->dmi_match_other.field, + quirk->dmi_match_other.value)) return false; =20 if (quirk->ident.panel_id && !drm_edid_match(edid, &quirk->ident)) --=20 2.51.0 From nobody Fri Oct 3 14:34:23 2025 Received: from relay12.grserver.gr (relay12.grserver.gr [88.99.38.195]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C7D67321453 for ; Fri, 29 Aug 2025 14:57:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=88.99.38.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756479479; cv=none; b=En0mBoEcA3/24/mvIlZOZAu1kodRhxF3rbhz8ZTldwPsqmIl/0jaBQ/L9qA2Qk5yKiSKYljoCKOOCzSEWAnUeKsRG12iRYBk1IqqamNuIa6/TbvHm/ImK5dfn60lmyBYPl430lKvGoWEQaBl2w5pmTPPM6j18L8Z8NROcNs0dTQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756479479; c=relaxed/simple; bh=0nrxfGfyriairNvZDUn8/Z7E2udqUmp22tu8VMJ4sAo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=QZsPiI/5JjzbT+7I8PKG7kKpNoQhSZLlWHyo194VO2ML3o85KZAhrglxmk+boA7a1wnSKbcjy1c304f2Ci7CveiO2ZB7dozt0/3rZnOtkzxUGw39Kwh/QtB8e6EiB2v862DZcDlfut9kwgDB4/VvGL8XNOE/IRLvWsYwJUvI0iQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=antheas.dev; spf=pass smtp.mailfrom=antheas.dev; dkim=temperror (0-bit key) header.d=antheas.dev header.i=@antheas.dev header.b=ONQMKR8G; arc=none smtp.client-ip=88.99.38.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=antheas.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=antheas.dev Authentication-Results: smtp.subspace.kernel.org; dkim=temperror (0-bit key) header.d=antheas.dev header.i=@antheas.dev header.b="ONQMKR8G" Received: from relay12 (localhost [127.0.0.1]) by relay12.grserver.gr (Proxmox) with ESMTP id 99C97BDDEA; Fri, 29 Aug 2025 17:57:50 +0300 (EEST) Received: from linux3247.grserver.gr (linux3247.grserver.gr [213.158.90.240]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by relay12.grserver.gr (Proxmox) with ESMTPS id 67E89BDE02; Fri, 29 Aug 2025 17:57:49 +0300 (EEST) Received: from antheas-z13 (x5996a855.customers.hiper-net.dk [89.150.168.85]) by linux3247.grserver.gr (Postfix) with ESMTPSA id 8DB132018C3; Fri, 29 Aug 2025 17:57:48 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=antheas.dev; s=default; t=1756479469; bh=AWOXbXinCzQ2Goffljex4rLLR3iTRPeFRtaMnsJKfCA=; h=From:To:Subject; b=ONQMKR8GLNse3Dxcvz2nsjPNyOWEHwqySq3KayZDiqzH0YGXvPjmTq1LRs0PaSqOW MIxUDFZSdqPN9cPpvLyV5uN+bKTbyNTjqdZeoRwRtq5uepjpw+Zz+esn6K8gzNVmvb IQaO7U/pNGEWgXi5m5nZA6MW18llw944UOBO2J6GOJypjSSf+fnnA/vdOvHUa/KDQs nngV/nVjLW8vHoZpqqcKExwop5atm1gFvifk4J6KSJQSugaYYVfLTTm/ZwGtkLpziS 47qhxq5T3ovv+Ku8cYHYqJ2R4BaAClgJXsW/rWWasRN3DZLZohCHM+aFucHZn3y10v KTK0PPykJJ4RQ== Authentication-Results: linux3247.grserver.gr; spf=pass (sender IP is 89.150.168.85) smtp.mailfrom=lkml@antheas.dev smtp.helo=antheas-z13 Received-SPF: pass (linux3247.grserver.gr: connection is authenticated) From: Antheas Kapenekakis To: amd-gfx@lists.freedesktop.org Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, philm@manjaro.org, Alex Deucher , =?UTF-8?q?Christian=20K=C3=B6nig?= , Mario Limonciello , Robert Beckett , Antheas Kapenekakis Subject: [PATCH v3 4/6] drm: panel-backlight-quirks: Add brightness mask quirk Date: Fri, 29 Aug 2025 16:55:39 +0200 Message-ID: <20250829145541.512671-5-lkml@antheas.dev> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250829145541.512671-1-lkml@antheas.dev> References: <20250829145541.512671-1-lkml@antheas.dev> 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 X-PPP-Message-ID: <175647946909.278092.16277961246646507136@linux3247.grserver.gr> X-PPP-Vhost: antheas.dev X-Virus-Scanned: clamav-milter 1.4.3 at linux3247.grserver.gr X-Virus-Status: Clean Certain OLED devices malfunction on specific brightness levels. Specifically, when DP_SOURCE_BACKLIGHT_LEVEL is written to with the first byte being 0x00 and sometimes 0x01, the panel forcibly turns off until the device sleeps again. Below are some examples. This was found by iterating over brighness ranges while printing DP_SOURCE_BACKLIGHT_LEVEL. It was found that the screen would malfunction on specific values, and some of them were collected. Therefore, introduce a quirk where the minor byte of brightness is OR'd with 0x03 to avoid the range of invalid values. This quirk was tested by removing the workarounds and iterating from 0 to 50_000 value ranges with a cadence of 0.2s/it. The range of the panel is 1000...400_000, so the values were slightly interpolated during testing. The custom brightness curve added on 6.15 was disabled. 86016: 10101000000000000 86272: 10101000100000000 87808: 10101011100000000 251648: 111101011100000000 251649: 111101011100000001 86144: 10101000010000000 87809: 10101011100000001 251650: 111101011100000010 Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/3803 Tested-by: Philip M=C3=BCller Reviewed-by: Mario Limonciello Signed-off-by: Antheas Kapenekakis --- .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 7 ++++ .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h | 5 +++ drivers/gpu/drm/drm_panel_backlight_quirks.c | 36 +++++++++++++++++++ include/drm/drm_utils.h | 1 + 4 files changed, 49 insertions(+) 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 b967c6952e11..263f15f6fdea 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c @@ -3662,6 +3662,9 @@ static void update_connector_ext_caps(struct amdgpu_d= m_connector *aconnector) if (panel_backlight_quirk->min_brightness) caps->min_input_signal =3D panel_backlight_quirk->min_brightness - 1; + if (panel_backlight_quirk->brightness_mask) + caps->brightness_mask =3D + panel_backlight_quirk->brightness_mask; } } =20 @@ -4862,6 +4865,10 @@ static void amdgpu_dm_backlight_set_level(struct amd= gpu_display_manager *dm, brightness =3D convert_brightness_from_user(caps, dm->brightness[bl_idx]); link =3D (struct dc_link *)dm->backlight_link[bl_idx]; =20 + /* Apply brightness quirk */ + if (caps->brightness_mask) + brightness |=3D caps->brightness_mask; + /* Change brightness based on AUX property */ mutex_lock(&dm->dc_lock); if (dm->dc->caps.ips_support && dm->dc->ctx->dmub_srv->idle_allowed) { diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h b/drivers/gp= u/drm/amd/display/amdgpu_dm/amdgpu_dm.h index b937da0a4e4a..60ce2ceb653a 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h @@ -200,6 +200,11 @@ struct amdgpu_dm_backlight_caps { * @aux_support: Describes if the display supports AUX backlight. */ bool aux_support; + /** + * @brightness_mask: After deriving brightness, OR it with this mask. + * Workaround for panels with issues with certain brightness values. + */ + u32 brightness_mask; /** * @ac_level: the default brightness if booted on AC */ diff --git a/drivers/gpu/drm/drm_panel_backlight_quirks.c b/drivers/gpu/drm= /drm_panel_backlight_quirks.c index 3d386a96e50e..2bdbd5583d32 100644 --- a/drivers/gpu/drm/drm_panel_backlight_quirks.c +++ b/drivers/gpu/drm/drm_panel_backlight_quirks.c @@ -45,6 +45,42 @@ static const struct drm_get_panel_backlight_quirk drm_pa= nel_min_backlight_quirks .ident.name =3D "NE135A1M-NY1", .quirk =3D { .min_brightness =3D 1, }, }, + /* Have OLED Panels with brightness issue when last byte is 0/1 */ + { + .dmi_match.field =3D DMI_SYS_VENDOR, + .dmi_match.value =3D "AYANEO", + .dmi_match_other.field =3D DMI_PRODUCT_NAME, + .dmi_match_other.value =3D "AYANEO 3", + .quirk =3D { .brightness_mask =3D 3, }, + }, + { + .dmi_match.field =3D DMI_SYS_VENDOR, + .dmi_match.value =3D "ZOTAC", + .dmi_match_other.field =3D DMI_BOARD_NAME, + .dmi_match_other.value =3D "G0A1W", + .quirk =3D { .brightness_mask =3D 3, }, + }, + { + .dmi_match.field =3D DMI_SYS_VENDOR, + .dmi_match.value =3D "ZOTAC", + .dmi_match_other.field =3D DMI_BOARD_NAME, + .dmi_match_other.value =3D "G1A1W", + .quirk =3D { .brightness_mask =3D 3, }, + }, + { + .dmi_match.field =3D DMI_SYS_VENDOR, + .dmi_match.value =3D "ONE-NETBOOK", + .dmi_match_other.field =3D DMI_PRODUCT_NAME, + .dmi_match_other.value =3D "ONEXPLAYER F1Pro", + .quirk =3D { .brightness_mask =3D 3, }, + }, + { + .dmi_match.field =3D DMI_SYS_VENDOR, + .dmi_match.value =3D "ONE-NETBOOK", + .dmi_match_other.field =3D DMI_PRODUCT_NAME, + .dmi_match_other.value =3D "ONEXPLAYER F1 EVA-02", + .quirk =3D { .brightness_mask =3D 3, }, + }, }; =20 static bool drm_panel_min_backlight_quirk_matches( diff --git a/include/drm/drm_utils.h b/include/drm/drm_utils.h index 82eeee4a58ab..6a46f755daba 100644 --- a/include/drm/drm_utils.h +++ b/include/drm/drm_utils.h @@ -18,6 +18,7 @@ int drm_get_panel_orientation_quirk(int width, int height= ); =20 struct drm_panel_backlight_quirk { u16 min_brightness; + u32 brightness_mask; }; =20 const struct drm_panel_backlight_quirk * --=20 2.51.0 From nobody Fri Oct 3 14:34:23 2025 Received: from relay10.grserver.gr (relay10.grserver.gr [37.27.248.198]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 746AE32252B for ; Fri, 29 Aug 2025 14:57:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=37.27.248.198 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756479481; cv=none; b=XqtQDysAaHYWQ8RlwWTleQehPyLUeE2JEGEHlmw5Kq+cN/3WN0hd7cDQPp6PbiUmuYmRX8W+8+BnmxfKFHIryD3b+Vqqg5+FwynScIKVAyYC7iKGRqYvyGzCyHnoHGH77l+LZfSFoptQ6ZZ9LLEC1E3aiF1YONTvc9GXEcPV7f4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756479481; c=relaxed/simple; bh=kpkOWkP2ADTKd+rHE3JQGjrevDX0McBS3/M/jWcfRMI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=qKnco+WwYhUbqStCC3lB3NWdgzzLf3b4u8K4KGhJqyCXyBJtXPeJYzBsEJG1P59GUDFtyFlovx4tE1LhYWnf9EHuiIwi5P1rDXGRwk+XePijbw6xDsdtoQWg6HxDkoSJqxiAZ3mnAgaZ7DOCIN0/XSXRls5Q1qiLV4BsnrC22E8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=antheas.dev; spf=pass smtp.mailfrom=antheas.dev; dkim=temperror (0-bit key) header.d=antheas.dev header.i=@antheas.dev header.b=XEnolZwB; arc=none smtp.client-ip=37.27.248.198 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=antheas.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=antheas.dev Authentication-Results: smtp.subspace.kernel.org; dkim=temperror (0-bit key) header.d=antheas.dev header.i=@antheas.dev header.b="XEnolZwB" Received: from relay10 (localhost.localdomain [127.0.0.1]) by relay10.grserver.gr (Proxmox) with ESMTP id 9F74546EEB; Fri, 29 Aug 2025 17:57:51 +0300 (EEST) Received: from linux3247.grserver.gr (linux3247.grserver.gr [213.158.90.240]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by relay10.grserver.gr (Proxmox) with ESMTPS id 68B8346E58; Fri, 29 Aug 2025 17:57:50 +0300 (EEST) Received: from antheas-z13 (x5996a855.customers.hiper-net.dk [89.150.168.85]) by linux3247.grserver.gr (Postfix) with ESMTPSA id 6B8832018C2; Fri, 29 Aug 2025 17:57:49 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=antheas.dev; s=default; t=1756479470; bh=wnaFa95KLwLAHuy8hRJGl95XVR2g5HRB8pLDB83uhp4=; h=From:To:Subject; b=XEnolZwBIv1Hd+UuES803Wwkw4PVCyozWLBGUn4dkHyg5PQaV7mioMuYXO/f90lxh voYVK1BWrhleR5DVnj7ioyaFi1+EjnlZqkPG73g7HnBsyzvhJntlmQ4XxDrTRMrfXm /lKcBJ5mWm5Z9Gg9JVxEMQAXnBbLO2mhz8s6mXJ3MdaHTo2bngDPu3N2qYay2lUu3Z g1x+4PECNAHL5UMlGHlesm9e2Mf+Yt9PBlQKxAz9DyOx2Rn4aBCTHEc7kNKC2XCSqJ QtPPxVPwQ096gMBNl81jqllxSeAsPNTkmkzqebSTUytXlplaFMY6OMctoDRBUtn8eT 2NYUjxqFI3/yg== Authentication-Results: linux3247.grserver.gr; spf=pass (sender IP is 89.150.168.85) smtp.mailfrom=lkml@antheas.dev smtp.helo=antheas-z13 Received-SPF: pass (linux3247.grserver.gr: connection is authenticated) From: Antheas Kapenekakis To: amd-gfx@lists.freedesktop.org Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, philm@manjaro.org, Alex Deucher , =?UTF-8?q?Christian=20K=C3=B6nig?= , Mario Limonciello , Robert Beckett , Antheas Kapenekakis Subject: [PATCH v3 5/6] drm: panel-backlight-quirks: Add Steam Deck brightness quirk Date: Fri, 29 Aug 2025 16:55:40 +0200 Message-ID: <20250829145541.512671-6-lkml@antheas.dev> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250829145541.512671-1-lkml@antheas.dev> References: <20250829145541.512671-1-lkml@antheas.dev> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-PPP-Message-ID: <175647946994.278128.15105326836596737803@linux3247.grserver.gr> X-PPP-Vhost: antheas.dev X-Virus-Scanned: clamav-milter 1.4.3 at linux3247.grserver.gr X-Virus-Status: Clean Content-Type: text/plain; charset="utf-8" On the SteamOS kernel, Valve universally makes minimum brightness 0 for all devices. SteamOS is (was?) meant for the Steam Deck, so enabling it universally is reasonable. However, it causes issues in certain devices. Therefore, introduce it just for the Steam Deck here. SteamOS kernel does not have a public mirror, but this replaces commit 806dd74bb225 ("amd/drm: override backlight min value from 12 -> 0") in the latest, as of this writing, SteamOS kernel (6.11.11-valve24). See unofficial mirror reconstructed from sources below. Link: https://gitlab.com/evlaV/linux-integration/-/commit/806dd74bb225 Reviewed-by: Robert Beckett Reviewed-by: Mario Limonciello Signed-off-by: Antheas Kapenekakis --- drivers/gpu/drm/drm_panel_backlight_quirks.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/drivers/gpu/drm/drm_panel_backlight_quirks.c b/drivers/gpu/drm= /drm_panel_backlight_quirks.c index 2bdbd5583d32..537dc6dd0534 100644 --- a/drivers/gpu/drm/drm_panel_backlight_quirks.c +++ b/drivers/gpu/drm/drm_panel_backlight_quirks.c @@ -45,6 +45,21 @@ static const struct drm_get_panel_backlight_quirk drm_pa= nel_min_backlight_quirks .ident.name =3D "NE135A1M-NY1", .quirk =3D { .min_brightness =3D 1, }, }, + /* Steam Deck models */ + { + .dmi_match.field =3D DMI_SYS_VENDOR, + .dmi_match.value =3D "Valve", + .dmi_match_other.field =3D DMI_PRODUCT_NAME, + .dmi_match_other.value =3D "Jupiter", + .quirk =3D { .min_brightness =3D 1, }, + }, + { + .dmi_match.field =3D DMI_SYS_VENDOR, + .dmi_match.value =3D "Valve", + .dmi_match_other.field =3D DMI_PRODUCT_NAME, + .dmi_match_other.value =3D "Galileo", + .quirk =3D { .min_brightness =3D 1, }, + }, /* Have OLED Panels with brightness issue when last byte is 0/1 */ { .dmi_match.field =3D DMI_SYS_VENDOR, --=20 2.51.0 From nobody Fri Oct 3 14:34:23 2025 Received: from relay12.grserver.gr (relay12.grserver.gr [88.99.38.195]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C25F6321F22 for ; Fri, 29 Aug 2025 14:57:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=88.99.38.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756479480; cv=none; b=iQP3rtjHVN/9R1rXYBISgMYTkPU1V15gfbdk6qHK0g3DyPsXznskG9gxVtiSnc28GBCMg7s+VlLzHdsdhL24YTGTXZLENDoJjooKVpMXUexppSyPIFAlzY7lRXI2rkDS4Iiuok9TTO7nQUBrK/VtGSB9ZJFurmaHjGA/Vz6ujgc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756479480; c=relaxed/simple; bh=GbBOsFjp0mNCay0apH+0veiToC7EJSVTmjWdFUs4a1M=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=X6wUeIP1c/KuV9UiIcav890ZU+lheBAA4x5zY4V8MkOh9dFExq770nDE7oLamg1q738yrmD2vinbMt80tx33Bg1PmM6YOQJGcUq5i5uWG4IFBX2sqVIYIFVXuRoDLfei7ShBCRj9/wRJJmBvsn1FbdVi89YX7qpp59kLR8LP1vE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=antheas.dev; spf=pass smtp.mailfrom=antheas.dev; dkim=temperror (0-bit key) header.d=antheas.dev header.i=@antheas.dev header.b=DQXq2/uj; arc=none smtp.client-ip=88.99.38.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=antheas.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=antheas.dev Authentication-Results: smtp.subspace.kernel.org; dkim=temperror (0-bit key) header.d=antheas.dev header.i=@antheas.dev header.b="DQXq2/uj" Received: from relay12 (localhost [127.0.0.1]) by relay12.grserver.gr (Proxmox) with ESMTP id B5F29BDE9C; Fri, 29 Aug 2025 17:57:51 +0300 (EEST) Received: from linux3247.grserver.gr (linux3247.grserver.gr [213.158.90.240]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by relay12.grserver.gr (Proxmox) with ESMTPS id 1B8C4BCF58; Fri, 29 Aug 2025 17:57:51 +0300 (EEST) Received: from antheas-z13 (x5996a855.customers.hiper-net.dk [89.150.168.85]) by linux3247.grserver.gr (Postfix) with ESMTPSA id 3F50F2067F3; Fri, 29 Aug 2025 17:57:50 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=antheas.dev; s=default; t=1756479470; bh=6RKE2eX0bGesXYi+c9kmIa8eVlQw2K/rKlycX1Jf8cs=; h=From:To:Subject; b=DQXq2/ujGqWBGmQ+W0N46qaT72q3pW1kP53ZseX35g040qmLvhs2bws0nSDsRjk8x yRkiC4wnBY2javTB/TY2h2hbVXN45GtP6CNir7D6p+ZxcO/6OVKTh5eqLcxXF4IoZy WnR9Xz2eJ/HvhtE/54xRRrxcDngu6eFEXPWu1BBnbAT2uuaQ8a58ezuA/uu3Lk1jPd DhxVq20BMimvnjh6uAEHnNlE/OIt0NsxnIrEIdVxYLUAdizr5FeJ/Gf9nuGO1Ob8+O rhXq9v/+rGcezWxAhxurEsuC9UQqfPIgGh0rQDcgDm2m9CKyXu+gSYpMzCca6XWu1e ga8XlqzJIJzNg== Authentication-Results: linux3247.grserver.gr; spf=pass (sender IP is 89.150.168.85) smtp.mailfrom=lkml@antheas.dev smtp.helo=antheas-z13 Received-SPF: pass (linux3247.grserver.gr: connection is authenticated) From: Antheas Kapenekakis To: amd-gfx@lists.freedesktop.org Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, philm@manjaro.org, Alex Deucher , =?UTF-8?q?Christian=20K=C3=B6nig?= , Mario Limonciello , Robert Beckett , Antheas Kapenekakis Subject: [PATCH v3 6/6] drm: panel-backlight-quirks: Log applied panel brightness quirks Date: Fri, 29 Aug 2025 16:55:41 +0200 Message-ID: <20250829145541.512671-7-lkml@antheas.dev> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250829145541.512671-1-lkml@antheas.dev> References: <20250829145541.512671-1-lkml@antheas.dev> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-PPP-Message-ID: <175647947078.278157.16049391296817176052@linux3247.grserver.gr> X-PPP-Vhost: antheas.dev X-Virus-Scanned: clamav-milter 1.4.3 at linux3247.grserver.gr X-Virus-Status: Clean Content-Type: text/plain; charset="utf-8" Currently, when a panel brightness quirk is applied, there is no log indicating that a quirk was applied. Unwrap the drm device on its own and use drm_info() to log when a quirk is applied. Suggested-by: Mario Limonciello Signed-off-by: Antheas Kapenekakis --- .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 16 +++++++++++++--- 1 file changed, 13 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 263f15f6fdea..2a3e17d83d6e 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c @@ -3617,13 +3617,15 @@ static void update_connector_ext_caps(struct amdgpu= _dm_connector *aconnector) struct drm_connector *conn_base; struct amdgpu_device *adev; struct drm_luminance_range_info *luminance_range; + struct drm_device *drm; =20 if (aconnector->bl_idx =3D=3D -1 || aconnector->dc_link->connector_signal !=3D SIGNAL_TYPE_EDP) return; =20 conn_base =3D &aconnector->base; - adev =3D drm_to_adev(conn_base->dev); + drm =3D conn_base->dev; + adev =3D drm_to_adev(drm); =20 caps =3D &adev->dm.backlight_caps[aconnector->bl_idx]; caps->ext_caps =3D &aconnector->dc_link->dpcd_sink_ext_caps; @@ -3659,12 +3661,20 @@ static void update_connector_ext_caps(struct amdgpu= _dm_connector *aconnector) panel_backlight_quirk =3D drm_get_panel_backlight_quirk(aconnector->drm_edid); if (!IS_ERR_OR_NULL(panel_backlight_quirk)) { - if (panel_backlight_quirk->min_brightness) + if (panel_backlight_quirk->min_brightness) { + drm_info(drm, + "Applying panel backlight quirk, min_brightness: %d\n", + panel_backlight_quirk->min_brightness); caps->min_input_signal =3D panel_backlight_quirk->min_brightness - 1; - if (panel_backlight_quirk->brightness_mask) + } + if (panel_backlight_quirk->brightness_mask) { + drm_info(drm, + "Applying panel backlight quirk, brightness_mask: 0x%X\n", + panel_backlight_quirk->brightness_mask); caps->brightness_mask =3D panel_backlight_quirk->brightness_mask; + } } } =20 --=20 2.51.0