Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bc5b9641 authored by Mario Kleiner's avatar Mario Kleiner Committed by Alex Deucher
Browse files

drm/edid: Add quirk for Sony PVM-2541A to get 12 bpc hdmi deep color.



The Sony PVM-2541A OLED high precision color display supports
both 10 bpc and 12 bpc hdmi deep color input, but its edid
does not signal any deep color support.

Add a quirk to force it being treated as a 12 bpc panel.

Signed-off-by: default avatarMario Kleiner <mario.kleiner.de@gmail.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent d0c94692
Loading
Loading
Loading
Loading
+8 −0
Original line number Original line Diff line number Diff line
@@ -70,6 +70,8 @@
#define EDID_QUIRK_FORCE_REDUCED_BLANKING	(1 << 7)
#define EDID_QUIRK_FORCE_REDUCED_BLANKING	(1 << 7)
/* Force 8bpc */
/* Force 8bpc */
#define EDID_QUIRK_FORCE_8BPC			(1 << 8)
#define EDID_QUIRK_FORCE_8BPC			(1 << 8)
/* Force 12bpc */
#define EDID_QUIRK_FORCE_12BPC			(1 << 9)


struct detailed_mode_closure {
struct detailed_mode_closure {
	struct drm_connector *connector;
	struct drm_connector *connector;
@@ -125,6 +127,9 @@ static struct edid_quirk {
	{ "SAM", 596, EDID_QUIRK_PREFER_LARGE_60 },
	{ "SAM", 596, EDID_QUIRK_PREFER_LARGE_60 },
	{ "SAM", 638, EDID_QUIRK_PREFER_LARGE_60 },
	{ "SAM", 638, EDID_QUIRK_PREFER_LARGE_60 },


	/* Sony PVM-2541A does up to 12 bpc, but only reports max 8 bpc */
	{ "SNY", 0x2541, EDID_QUIRK_FORCE_12BPC },

	/* ViewSonic VA2026w */
	/* ViewSonic VA2026w */
	{ "VSC", 5020, EDID_QUIRK_FORCE_REDUCED_BLANKING },
	{ "VSC", 5020, EDID_QUIRK_FORCE_REDUCED_BLANKING },


@@ -3660,6 +3665,9 @@ int drm_add_edid_modes(struct drm_connector *connector, struct edid *edid)
	if (quirks & EDID_QUIRK_FORCE_8BPC)
	if (quirks & EDID_QUIRK_FORCE_8BPC)
		connector->display_info.bpc = 8;
		connector->display_info.bpc = 8;


	if (quirks & EDID_QUIRK_FORCE_12BPC)
		connector->display_info.bpc = 12;

	return num_modes;
	return num_modes;
}
}
EXPORT_SYMBOL(drm_add_edid_modes);
EXPORT_SYMBOL(drm_add_edid_modes);