linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3 0/6] drm: panel-backlight-quirks: Do partial refactor and apply OLED fix
@ 2025-08-29 14:55 Antheas Kapenekakis
  2025-08-29 14:55 ` [PATCH v3 1/6] drm: panel-backlight-quirks: Make EDID match optional Antheas Kapenekakis
                   ` (5 more replies)
  0 siblings, 6 replies; 11+ messages in thread
From: Antheas Kapenekakis @ 2025-08-29 14:55 UTC (permalink / raw)
  To: amd-gfx
  Cc: dri-devel, linux-kernel, philm, Alex Deucher,
	Christian König, Mario Limonciello, Robert Beckett,
	Antheas Kapenekakis

This is an alternative to [1], since Phil found out there are still invalid
values. We need to reconsider the other patch in that series anyway because
the latest AMD firmware update might have fixed the Z13.

This series refactors the panel-backlight-quirks code to make it easier to
add new quirks. Specifically, it adds the ability to bind to a secondary
DMI match so that the make of a device can be specified. Then, it makes
EDID optional, for devices we know the value should be applied universally.

This is then used to add a quirk for OLED panels that have an issue
when their backlight is set with a value that contains a 0/1 value in their
minor byte. This issue affects four handhelds from three different vendors,
three of which are in the field. This quirk applies a |3 mask to the
backlight value, which avoids this issue. In addition, the value change
is minor enough so that it is essentially a NOOP. There is no need for
ensuring it runs only on panels with faulty firmwares.

Finally, since allowed by this refactor, a quirk for Steam Decks is added
that lowers their minimum brightness to 0, matching SteamOS. This is
a nicety commit, which allows for mildly lower minimum brightness, so
there is no time sensitivity for having it merged. Mario noted that if
that quirk was refactored to use an EDID match via the current interface,
it could go through the fixes tree and land sooner, but perhaps it is not
worth the effort.

[1] https://lore.kernel.org/all/20250824085351.454619-2-lkml@antheas.dev/

---
V2: https://lore.kernel.org/all/20250827174400.3692549-1-lkml@antheas.dev/
V1: https://lore.kernel.org/all/20250824200202.1744335-1-lkml@antheas.dev/

Changes since V2:
- Apply SD quirks at the middle so that backlight quirks stay together
- Add log when quirks are applied. Has to be separate because we need
  to grab a reference to the drm_device first and add it to min
  brightness first.
- Capitalize OR in patch 4

Changes since v1:
- Remove leftover quirk from patch 3 (refactor)
- Add dangling comma in patch 4 (oled quirk)
- Add the next generation Zotac Zone in patch 4 (currently unreleased)
- Reword patch 1 and 5 subjects

Antheas Kapenekakis (6):
  drm: panel-backlight-quirks: Make EDID match optional
  drm: panel-backlight-quirks: Convert brightness quirk to generic
    structure
  drm: panel-backlight-quirks: Add secondary DMI match
  drm: panel-backlight-quirks: Add brightness mask quirk
  drm: panel-backlight-quirks: Add Steam Deck brightness quirk
  drm: panel-backlight-quirks: Log applied panel brightness quirks

 .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c |  31 ++++-
 .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h |   5 +
 drivers/gpu/drm/drm_panel_backlight_quirks.c  | 113 ++++++++++++++----
 include/drm/drm_utils.h                       |   8 +-
 4 files changed, 125 insertions(+), 32 deletions(-)


base-commit: 1b237f190eb3d36f52dffe07a40b5eb210280e00
-- 
2.51.0



^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH v3 1/6] drm: panel-backlight-quirks: Make EDID match optional
  2025-08-29 14:55 [PATCH v3 0/6] drm: panel-backlight-quirks: Do partial refactor and apply OLED fix Antheas Kapenekakis
@ 2025-08-29 14:55 ` Antheas Kapenekakis
  2025-08-29 14:55 ` [PATCH v3 2/6] drm: panel-backlight-quirks: Convert brightness quirk to generic structure Antheas Kapenekakis
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 11+ messages in thread
From: Antheas Kapenekakis @ 2025-08-29 14:55 UTC (permalink / raw)
  To: amd-gfx
  Cc: dri-devel, linux-kernel, philm, Alex Deucher,
	Christian König, Mario Limonciello, Robert Beckett,
	Antheas Kapenekakis

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üller <philm@manjaro.org>
Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
Signed-off-by: Antheas Kapenekakis <lkml@antheas.dev>
---
 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 struct drm_panel_min_bac
 	if (!dmi_match(quirk->dmi_match.field, quirk->dmi_match.value))
 		return false;
 
-	if (!drm_edid_match(edid, &quirk->ident))
+	if (quirk->ident.panel_id && !drm_edid_match(edid, &quirk->ident))
 		return false;
 
 	return true;
-- 
2.51.0



^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH v3 2/6] drm: panel-backlight-quirks: Convert brightness quirk to generic structure
  2025-08-29 14:55 [PATCH v3 0/6] drm: panel-backlight-quirks: Do partial refactor and apply OLED fix Antheas Kapenekakis
  2025-08-29 14:55 ` [PATCH v3 1/6] drm: panel-backlight-quirks: Make EDID match optional Antheas Kapenekakis
@ 2025-08-29 14:55 ` Antheas Kapenekakis
  2025-08-29 14:55 ` [PATCH v3 3/6] drm: panel-backlight-quirks: Add secondary DMI match Antheas Kapenekakis
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 11+ messages in thread
From: Antheas Kapenekakis @ 2025-08-29 14:55 UTC (permalink / raw)
  To: amd-gfx
  Cc: dri-devel, linux-kernel, philm, Alex Deucher,
	Christian König, Mario Limonciello, Robert Beckett,
	Antheas Kapenekakis

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üller <philm@manjaro.org>
Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
Signed-off-by: Antheas Kapenekakis <lkml@antheas.dev>
---
 .../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/gpu/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_dm_mode_config_helperfuncs = {
 
 static void update_connector_ext_caps(struct amdgpu_dm_connector *aconnector)
 {
+	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;
 
 	if (aconnector->bl_idx == -1 ||
 	    aconnector->dc_link->connector_signal != SIGNAL_TYPE_EDP)
@@ -3656,9 +3656,13 @@ static void update_connector_ext_caps(struct amdgpu_dm_connector *aconnector)
 	else
 		caps->aux_min_input_signal = 1;
 
-	min_input_signal_override = drm_get_panel_min_brightness_quirk(aconnector->drm_edid);
-	if (min_input_signal_override >= 0)
-		caps->min_input_signal = min_input_signal_override;
+	panel_backlight_quirk =
+		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 =
+				panel_backlight_quirk->min_brightness - 1;
+	}
 }
 
 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 <drm/drm_edid.h>
 #include <drm/drm_utils.h>
 
-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;
 };
 
-static const struct drm_panel_min_backlight_quirk drm_panel_min_backlight_quirks[] = {
+static const struct drm_get_panel_backlight_quirk drm_panel_min_backlight_quirks[] = {
 	/* 13 inch matte panel */
 	{
 		.dmi_match.field = DMI_BOARD_VENDOR,
 		.dmi_match.value = "Framework",
 		.ident.panel_id = drm_edid_encode_panel_id('B', 'O', 'E', 0x0bca),
 		.ident.name = "NE135FBM-N41",
-		.min_brightness = 0,
+		.quirk = { .min_brightness = 1, },
 	},
 	/* 13 inch glossy panel */
 	{
@@ -32,7 +32,7 @@ static const struct drm_panel_min_backlight_quirk drm_panel_min_backlight_quirks
 		.dmi_match.value = "Framework",
 		.ident.panel_id = drm_edid_encode_panel_id('B', 'O', 'E', 0x095f),
 		.ident.name = "NE135FBM-N41",
-		.min_brightness = 0,
+		.quirk = { .min_brightness = 1, },
 	},
 	/* 13 inch 2.8k panel */
 	{
@@ -40,12 +40,13 @@ static const struct drm_panel_min_backlight_quirk drm_panel_min_backlight_quirks
 		.dmi_match.value = "Framework",
 		.ident.panel_id = drm_edid_encode_panel_id('B', 'O', 'E', 0x0cb4),
 		.ident.name = "NE135A1M-NY1",
-		.min_brightness = 0,
+		.quirk = { .min_brightness = 1, },
 	},
 };
 
-static bool drm_panel_min_backlight_quirk_matches(const struct drm_panel_min_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
 }
 
 /**
- * drm_get_panel_min_brightness_quirk - Get minimum supported brightness level 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 this
- * 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 scaled 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;
 
 	if (!IS_ENABLED(CONFIG_DMI))
-		return -ENODATA;
+		return ERR_PTR(-ENODATA);
 
 	if (!edid)
-		return -EINVAL;
+		return ERR_PTR(-EINVAL);
 
 	for (i = 0; i < ARRAY_SIZE(drm_panel_min_backlight_quirks); i++) {
 		quirk = &drm_panel_min_backlight_quirks[i];
 
 		if (drm_panel_min_backlight_quirk_matches(quirk, edid))
-			return quirk->min_brightness;
+			return &quirk->quirk;
 	}
 
-	return -ENODATA;
+	return ERR_PTR(-ENODATA);
 }
-EXPORT_SYMBOL(drm_get_panel_min_brightness_quirk);
+EXPORT_SYMBOL(drm_get_panel_backlight_quirk);
 
 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;
 
 int drm_get_panel_orientation_quirk(int width, int height);
 
-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);
 
 signed long drm_timeout_abs_to_jiffies(int64_t timeout_nsec);
 
-- 
2.51.0



^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH v3 3/6] drm: panel-backlight-quirks: Add secondary DMI match
  2025-08-29 14:55 [PATCH v3 0/6] drm: panel-backlight-quirks: Do partial refactor and apply OLED fix Antheas Kapenekakis
  2025-08-29 14:55 ` [PATCH v3 1/6] drm: panel-backlight-quirks: Make EDID match optional Antheas Kapenekakis
  2025-08-29 14:55 ` [PATCH v3 2/6] drm: panel-backlight-quirks: Convert brightness quirk to generic structure Antheas Kapenekakis
@ 2025-08-29 14:55 ` Antheas Kapenekakis
  2025-08-29 14:55 ` [PATCH v3 4/6] drm: panel-backlight-quirks: Add brightness mask quirk Antheas Kapenekakis
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 11+ messages in thread
From: Antheas Kapenekakis @ 2025-08-29 14:55 UTC (permalink / raw)
  To: amd-gfx
  Cc: dri-devel, linux-kernel, philm, Alex Deucher,
	Christian König, Mario Limonciello, Robert Beckett,
	Antheas Kapenekakis

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üller <philm@manjaro.org>
Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
Signed-off-by: Antheas Kapenekakis <lkml@antheas.dev>
---
 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 <drm/drm_edid.h>
 #include <drm/drm_utils.h>
 
+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;
 
 	if (quirk->ident.panel_id && !drm_edid_match(edid, &quirk->ident))
-- 
2.51.0



^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH v3 4/6] drm: panel-backlight-quirks: Add brightness mask quirk
  2025-08-29 14:55 [PATCH v3 0/6] drm: panel-backlight-quirks: Do partial refactor and apply OLED fix Antheas Kapenekakis
                   ` (2 preceding siblings ...)
  2025-08-29 14:55 ` [PATCH v3 3/6] drm: panel-backlight-quirks: Add secondary DMI match Antheas Kapenekakis
@ 2025-08-29 14:55 ` Antheas Kapenekakis
  2025-08-29 14:55 ` [PATCH v3 5/6] drm: panel-backlight-quirks: Add Steam Deck brightness quirk Antheas Kapenekakis
  2025-08-29 14:55 ` [PATCH v3 6/6] drm: panel-backlight-quirks: Log applied panel brightness quirks Antheas Kapenekakis
  5 siblings, 0 replies; 11+ messages in thread
From: Antheas Kapenekakis @ 2025-08-29 14:55 UTC (permalink / raw)
  To: amd-gfx
  Cc: dri-devel, linux-kernel, philm, Alex Deucher,
	Christian König, Mario Limonciello, Robert Beckett,
	Antheas Kapenekakis

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üller <philm@manjaro.org>
Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
Signed-off-by: Antheas Kapenekakis <lkml@antheas.dev>
---
 .../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/gpu/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_dm_connector *aconnector)
 		if (panel_backlight_quirk->min_brightness)
 			caps->min_input_signal =
 				panel_backlight_quirk->min_brightness - 1;
+		if (panel_backlight_quirk->brightness_mask)
+			caps->brightness_mask =
+				panel_backlight_quirk->brightness_mask;
 	}
 }
 
@@ -4862,6 +4865,10 @@ static void amdgpu_dm_backlight_set_level(struct amdgpu_display_manager *dm,
 	brightness = convert_brightness_from_user(caps, dm->brightness[bl_idx]);
 	link = (struct dc_link *)dm->backlight_link[bl_idx];
 
+	/* Apply brightness quirk */
+	if (caps->brightness_mask)
+		brightness |= 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/gpu/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_panel_min_backlight_quirks
 		.ident.name = "NE135A1M-NY1",
 		.quirk = { .min_brightness = 1, },
 	},
+	/* Have OLED Panels with brightness issue when last byte is 0/1 */
+	{
+		.dmi_match.field = DMI_SYS_VENDOR,
+		.dmi_match.value = "AYANEO",
+		.dmi_match_other.field = DMI_PRODUCT_NAME,
+		.dmi_match_other.value = "AYANEO 3",
+		.quirk = { .brightness_mask = 3, },
+	},
+	{
+		.dmi_match.field = DMI_SYS_VENDOR,
+		.dmi_match.value = "ZOTAC",
+		.dmi_match_other.field = DMI_BOARD_NAME,
+		.dmi_match_other.value = "G0A1W",
+		.quirk = { .brightness_mask = 3, },
+	},
+	{
+		.dmi_match.field = DMI_SYS_VENDOR,
+		.dmi_match.value = "ZOTAC",
+		.dmi_match_other.field = DMI_BOARD_NAME,
+		.dmi_match_other.value = "G1A1W",
+		.quirk = { .brightness_mask = 3, },
+	},
+	{
+		.dmi_match.field = DMI_SYS_VENDOR,
+		.dmi_match.value = "ONE-NETBOOK",
+		.dmi_match_other.field = DMI_PRODUCT_NAME,
+		.dmi_match_other.value = "ONEXPLAYER F1Pro",
+		.quirk = { .brightness_mask = 3, },
+	},
+	{
+		.dmi_match.field = DMI_SYS_VENDOR,
+		.dmi_match.value = "ONE-NETBOOK",
+		.dmi_match_other.field = DMI_PRODUCT_NAME,
+		.dmi_match_other.value = "ONEXPLAYER F1 EVA-02",
+		.quirk = { .brightness_mask = 3, },
+	},
 };
 
 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);
 
 struct drm_panel_backlight_quirk {
 	u16 min_brightness;
+	u32 brightness_mask;
 };
 
 const struct drm_panel_backlight_quirk *
-- 
2.51.0



^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH v3 5/6] drm: panel-backlight-quirks: Add Steam Deck brightness quirk
  2025-08-29 14:55 [PATCH v3 0/6] drm: panel-backlight-quirks: Do partial refactor and apply OLED fix Antheas Kapenekakis
                   ` (3 preceding siblings ...)
  2025-08-29 14:55 ` [PATCH v3 4/6] drm: panel-backlight-quirks: Add brightness mask quirk Antheas Kapenekakis
@ 2025-08-29 14:55 ` Antheas Kapenekakis
  2025-08-29 14:55 ` [PATCH v3 6/6] drm: panel-backlight-quirks: Log applied panel brightness quirks Antheas Kapenekakis
  5 siblings, 0 replies; 11+ messages in thread
From: Antheas Kapenekakis @ 2025-08-29 14:55 UTC (permalink / raw)
  To: amd-gfx
  Cc: dri-devel, linux-kernel, philm, Alex Deucher,
	Christian König, Mario Limonciello, Robert Beckett,
	Antheas Kapenekakis

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 <bob.beckett@collabora.com>
Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
Signed-off-by: Antheas Kapenekakis <lkml@antheas.dev>
---
 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_panel_min_backlight_quirks
 		.ident.name = "NE135A1M-NY1",
 		.quirk = { .min_brightness = 1, },
 	},
+	/* Steam Deck models */
+	{
+		.dmi_match.field = DMI_SYS_VENDOR,
+		.dmi_match.value = "Valve",
+		.dmi_match_other.field = DMI_PRODUCT_NAME,
+		.dmi_match_other.value = "Jupiter",
+		.quirk = { .min_brightness = 1, },
+	},
+	{
+		.dmi_match.field = DMI_SYS_VENDOR,
+		.dmi_match.value = "Valve",
+		.dmi_match_other.field = DMI_PRODUCT_NAME,
+		.dmi_match_other.value = "Galileo",
+		.quirk = { .min_brightness = 1, },
+	},
 	/* Have OLED Panels with brightness issue when last byte is 0/1 */
 	{
 		.dmi_match.field = DMI_SYS_VENDOR,
-- 
2.51.0



^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH v3 6/6] drm: panel-backlight-quirks: Log applied panel brightness quirks
  2025-08-29 14:55 [PATCH v3 0/6] drm: panel-backlight-quirks: Do partial refactor and apply OLED fix Antheas Kapenekakis
                   ` (4 preceding siblings ...)
  2025-08-29 14:55 ` [PATCH v3 5/6] drm: panel-backlight-quirks: Add Steam Deck brightness quirk Antheas Kapenekakis
@ 2025-08-29 14:55 ` Antheas Kapenekakis
  2025-08-29 15:01   ` Antheas Kapenekakis
  5 siblings, 1 reply; 11+ messages in thread
From: Antheas Kapenekakis @ 2025-08-29 14:55 UTC (permalink / raw)
  To: amd-gfx
  Cc: dri-devel, linux-kernel, philm, Alex Deucher,
	Christian König, Mario Limonciello, Robert Beckett,
	Antheas Kapenekakis

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 <mario.limonciello@amd.com>
Signed-off-by: Antheas Kapenekakis <lkml@antheas.dev>
---
 .../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/gpu/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;
 
 	if (aconnector->bl_idx == -1 ||
 	    aconnector->dc_link->connector_signal != SIGNAL_TYPE_EDP)
 		return;
 
 	conn_base = &aconnector->base;
-	adev = drm_to_adev(conn_base->dev);
+	drm = conn_base->dev;
+	adev = drm_to_adev(drm);
 
 	caps = &adev->dm.backlight_caps[aconnector->bl_idx];
 	caps->ext_caps = &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 =
 		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 =
 				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 =
 				panel_backlight_quirk->brightness_mask;
+		}
 	}
 }
 
-- 
2.51.0



^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [PATCH v3 6/6] drm: panel-backlight-quirks: Log applied panel brightness quirks
  2025-08-29 14:55 ` [PATCH v3 6/6] drm: panel-backlight-quirks: Log applied panel brightness quirks Antheas Kapenekakis
@ 2025-08-29 15:01   ` Antheas Kapenekakis
  2025-09-03  4:52     ` Mario Limonciello
  0 siblings, 1 reply; 11+ messages in thread
From: Antheas Kapenekakis @ 2025-08-29 15:01 UTC (permalink / raw)
  To: amd-gfx
  Cc: dri-devel, linux-kernel, philm, Alex Deucher,
	Christian König, Mario Limonciello, Robert Beckett

On Fri, 29 Aug 2025 at 16:57, Antheas Kapenekakis <lkml@antheas.dev> wrote:
>
> 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 <mario.limonciello@amd.com>
> Signed-off-by: Antheas Kapenekakis <lkml@antheas.dev>
> ---
>  .../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/gpu/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;
>
>         if (aconnector->bl_idx == -1 ||
>             aconnector->dc_link->connector_signal != SIGNAL_TYPE_EDP)
>                 return;
>
>         conn_base = &aconnector->base;
> -       adev = drm_to_adev(conn_base->dev);
> +       drm = conn_base->dev;
> +       adev = drm_to_adev(drm);
>
>         caps = &adev->dm.backlight_caps[aconnector->bl_idx];
>         caps->ext_caps = &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 =
>                 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);

mmm, needs a -1 here

>                         caps->min_input_signal =
>                                 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 =
>                                 panel_backlight_quirk->brightness_mask;
> +               }
>         }
>  }
>
> --
> 2.51.0
>
>


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v3 6/6] drm: panel-backlight-quirks: Log applied panel brightness quirks
  2025-08-29 15:01   ` Antheas Kapenekakis
@ 2025-09-03  4:52     ` Mario Limonciello
  2025-09-03 15:03       ` Deucher, Alexander
  0 siblings, 1 reply; 11+ messages in thread
From: Mario Limonciello @ 2025-09-03  4:52 UTC (permalink / raw)
  To: Antheas Kapenekakis, amd-gfx
  Cc: dri-devel, linux-kernel, philm, Alex Deucher,
	Christian König, Robert Beckett

On 8/29/2025 10:01 AM, Antheas Kapenekakis wrote:
> On Fri, 29 Aug 2025 at 16:57, Antheas Kapenekakis <lkml@antheas.dev> wrote:
>>
>> 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 <mario.limonciello@amd.com>
>> Signed-off-by: Antheas Kapenekakis <lkml@antheas.dev>
>> ---
>>   .../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/gpu/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;
>>
>>          if (aconnector->bl_idx == -1 ||
>>              aconnector->dc_link->connector_signal != SIGNAL_TYPE_EDP)
>>                  return;
>>
>>          conn_base = &aconnector->base;
>> -       adev = drm_to_adev(conn_base->dev);
>> +       drm = conn_base->dev;
>> +       adev = drm_to_adev(drm);
>>
>>          caps = &adev->dm.backlight_caps[aconnector->bl_idx];
>>          caps->ext_caps = &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 =
>>                  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);
> 
> mmm, needs a -1 here
> 

You may as well re-order it too so that you set caps->min_input_signal 
and access it in this message.

>>                          caps->min_input_signal =
>>                                  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 =
>>                                  panel_backlight_quirk->brightness_mask;
>> +               }
>>          }
>>   }
>>
>> --
>> 2.51.0
>>
>>
> 


^ permalink raw reply	[flat|nested] 11+ messages in thread

* RE: [PATCH v3 6/6] drm: panel-backlight-quirks: Log applied panel brightness quirks
  2025-09-03  4:52     ` Mario Limonciello
@ 2025-09-03 15:03       ` Deucher, Alexander
  2025-09-03 15:29         ` Mario Limonciello
  0 siblings, 1 reply; 11+ messages in thread
From: Deucher, Alexander @ 2025-09-03 15:03 UTC (permalink / raw)
  To: Mario Limonciello, Antheas Kapenekakis,
	amd-gfx@lists.freedesktop.org
  Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org,
	philm@manjaro.org, Koenig, Christian, Robert Beckett

[Public]

> -----Original Message-----
> From: Mario Limonciello <superm1@kernel.org>
> Sent: Wednesday, September 3, 2025 12:53 AM
> To: Antheas Kapenekakis <lkml@antheas.dev>; amd-gfx@lists.freedesktop.org
> Cc: dri-devel@lists.freedesktop.org; linux-kernel@vger.kernel.org;
> philm@manjaro.org; Deucher, Alexander <Alexander.Deucher@amd.com>; Koenig,
> Christian <Christian.Koenig@amd.com>; Robert Beckett
> <bob.beckett@collabora.com>
> Subject: Re: [PATCH v3 6/6] drm: panel-backlight-quirks: Log applied panel
> brightness quirks
>
> On 8/29/2025 10:01 AM, Antheas Kapenekakis wrote:
> > On Fri, 29 Aug 2025 at 16:57, Antheas Kapenekakis <lkml@antheas.dev> wrote:
> >>
> >> 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 <mario.limonciello@amd.com>
> >> Signed-off-by: Antheas Kapenekakis <lkml@antheas.dev>
> >> ---
> >>   .../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/gpu/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;
> >>
> >>          if (aconnector->bl_idx == -1 ||
> >>              aconnector->dc_link->connector_signal != SIGNAL_TYPE_EDP)
> >>                  return;
> >>
> >>          conn_base = &aconnector->base;
> >> -       adev = drm_to_adev(conn_base->dev);
> >> +       drm = conn_base->dev;
> >> +       adev = drm_to_adev(drm);
> >>
> >>          caps = &adev->dm.backlight_caps[aconnector->bl_idx];
> >>          caps->ext_caps = &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 =
> >>                  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);
> >
> > mmm, needs a -1 here
> >
>
> You may as well re-order it too so that you set caps->min_input_signal and access
> it in this message.
>

With that fixed up, the series is:
Acked-by: Alex Deucher <alexander.deucher@amd.com>


> >>                          caps->min_input_signal =
> >>                                  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 =
> >>
> >> panel_backlight_quirk->brightness_mask;
> >> +               }
> >>          }
> >>   }
> >>
> >> --
> >> 2.51.0
> >>
> >>
> >


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v3 6/6] drm: panel-backlight-quirks: Log applied panel brightness quirks
  2025-09-03 15:03       ` Deucher, Alexander
@ 2025-09-03 15:29         ` Mario Limonciello
  0 siblings, 0 replies; 11+ messages in thread
From: Mario Limonciello @ 2025-09-03 15:29 UTC (permalink / raw)
  To: Deucher, Alexander, Antheas Kapenekakis,
	amd-gfx@lists.freedesktop.org
  Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org,
	philm@manjaro.org, Koenig, Christian, Robert Beckett

On 9/3/25 10:03 AM, Deucher, Alexander wrote:
> [Public]
> 
>> -----Original Message-----
>> From: Mario Limonciello <superm1@kernel.org>
>> Sent: Wednesday, September 3, 2025 12:53 AM
>> To: Antheas Kapenekakis <lkml@antheas.dev>; amd-gfx@lists.freedesktop.org
>> Cc: dri-devel@lists.freedesktop.org; linux-kernel@vger.kernel.org;
>> philm@manjaro.org; Deucher, Alexander <Alexander.Deucher@amd.com>; Koenig,
>> Christian <Christian.Koenig@amd.com>; Robert Beckett
>> <bob.beckett@collabora.com>
>> Subject: Re: [PATCH v3 6/6] drm: panel-backlight-quirks: Log applied panel
>> brightness quirks
>>
>> On 8/29/2025 10:01 AM, Antheas Kapenekakis wrote:
>>> On Fri, 29 Aug 2025 at 16:57, Antheas Kapenekakis <lkml@antheas.dev> wrote:
>>>>
>>>> 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 <mario.limonciello@amd.com>
>>>> Signed-off-by: Antheas Kapenekakis <lkml@antheas.dev>

Besides the one thing you identified this looks fine to me.

Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>

>>>> ---
>>>>    .../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/gpu/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;
>>>>
>>>>           if (aconnector->bl_idx == -1 ||
>>>>               aconnector->dc_link->connector_signal != SIGNAL_TYPE_EDP)
>>>>                   return;
>>>>
>>>>           conn_base = &aconnector->base;
>>>> -       adev = drm_to_adev(conn_base->dev);
>>>> +       drm = conn_base->dev;
>>>> +       adev = drm_to_adev(drm);
>>>>
>>>>           caps = &adev->dm.backlight_caps[aconnector->bl_idx];
>>>>           caps->ext_caps = &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 =
>>>>                   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);
>>>
>>> mmm, needs a -1 here
>>>
>>
>> You may as well re-order it too so that you set caps->min_input_signal and access
>> it in this message.
>>
> 
> With that fixed up, the series is:
> Acked-by: Alex Deucher <alexander.deucher@amd.com>
> 
> 

I've added a manual fixup for that change in the last patch and pushed 
the series to drm-misc-next.

a3ae3384be770 (HEAD -> drm-misc-next, drm-misc/for-linux-next, 
drm-misc/drm-misc-next) drm: panel-backlight-quirks: Log applied panel 
brightness quirks
bf0365b005d9a drm: panel-backlight-quirks: Add Steam Deck brightness quirk
aef10b1138e99 drm: panel-backlight-quirks: Add brightness mask quirk
f7033fab81d82 drm: panel-backlight-quirks: Add secondary DMI match
6eee1ef9e5985 drm: panel-backlight-quirks: Convert brightness quirk to 
generic structure
9931e4be11f21 drm: panel-backlight-quirks: Make EDID match optional

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2025-09-03 15:29 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-08-29 14:55 [PATCH v3 0/6] drm: panel-backlight-quirks: Do partial refactor and apply OLED fix Antheas Kapenekakis
2025-08-29 14:55 ` [PATCH v3 1/6] drm: panel-backlight-quirks: Make EDID match optional Antheas Kapenekakis
2025-08-29 14:55 ` [PATCH v3 2/6] drm: panel-backlight-quirks: Convert brightness quirk to generic structure Antheas Kapenekakis
2025-08-29 14:55 ` [PATCH v3 3/6] drm: panel-backlight-quirks: Add secondary DMI match Antheas Kapenekakis
2025-08-29 14:55 ` [PATCH v3 4/6] drm: panel-backlight-quirks: Add brightness mask quirk Antheas Kapenekakis
2025-08-29 14:55 ` [PATCH v3 5/6] drm: panel-backlight-quirks: Add Steam Deck brightness quirk Antheas Kapenekakis
2025-08-29 14:55 ` [PATCH v3 6/6] drm: panel-backlight-quirks: Log applied panel brightness quirks Antheas Kapenekakis
2025-08-29 15:01   ` Antheas Kapenekakis
2025-09-03  4:52     ` Mario Limonciello
2025-09-03 15:03       ` Deucher, Alexander
2025-09-03 15:29         ` Mario Limonciello

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).