Commit f7033fab authored by Antheas Kapenekakis's avatar Antheas Kapenekakis Committed by Mario Limonciello (AMD)
Browse files

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: default avatarPhilip Müller <philm@manjaro.org>
Reviewed-by: default avatarMario Limonciello <mario.limonciello@amd.com>
Signed-off-by: default avatarAntheas Kapenekakis <lkml@antheas.dev>
Link: https://lore.kernel.org/r/20250829145541.512671-4-lkml@antheas.dev


Acked-by: default avatarAlex Deucher <alexander.deucher@amd.com>
Signed-off-by: default avatarMario Limonciello (AMD) <superm1@kernel.org>
parent 6eee1ef9
Loading
Loading
Loading
Loading
+14 −5
Original line number Diff line number Diff line
@@ -8,11 +8,14 @@
#include <drm/drm_edid.h>
#include <drm/drm_utils.h>

struct drm_get_panel_backlight_quirk {
	struct {
struct drm_panel_match {
	enum dmi_field field;
	const char * const value;
	} dmi_match;
};

struct drm_get_panel_backlight_quirk {
	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))