drm: panel-backlight-quirks: Add secondary DMI match

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>
Link: https://lore.kernel.org/r/20250829145541.512671-4-lkml@antheas.dev
Acked-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Mario Limonciello (AMD) <superm1@kernel.org>
This commit is contained in:
Antheas Kapenekakis
2025-08-29 16:55:38 +02:00
committed by Mario Limonciello (AMD)
parent 6eee1ef9e5
commit f7033fab81
+14 -5
View File
@@ -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))