drm/edid: add a quirk for two LG monitors to get them to work on 10bpc
[ Upstream commit aa193f7eff
]
The LG 27GP950 and LG 27GN950 have visible display corruption when
trying to use 10bpc modes. So, to fix this, cap their maximum DSC
target bitrate to 15bpp.
Suggested-by: Roman Li <roman.li@amd.com>
Reviewed-by: Harry Wentland <harry.wentland@amd.com>
Signed-off-by: Hamza Mahfooz <hamza.mahfooz@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
2b7e54cdda
commit
dd76b1c9f6
|
@ -87,6 +87,8 @@ static int oui(u8 first, u8 second, u8 third)
|
|||
#define EDID_QUIRK_FORCE_10BPC (1 << 11)
|
||||
/* Non desktop display (i.e. HMD) */
|
||||
#define EDID_QUIRK_NON_DESKTOP (1 << 12)
|
||||
/* Cap the DSC target bitrate to 15bpp */
|
||||
#define EDID_QUIRK_CAP_DSC_15BPP (1 << 13)
|
||||
|
||||
#define MICROSOFT_IEEE_OUI 0xca125c
|
||||
|
||||
|
@ -147,6 +149,12 @@ static const struct edid_quirk {
|
|||
EDID_QUIRK('F', 'C', 'M', 13600, EDID_QUIRK_PREFER_LARGE_75 |
|
||||
EDID_QUIRK_DETAILED_IN_CM),
|
||||
|
||||
/* LG 27GP950 */
|
||||
EDID_QUIRK('G', 'S', 'M', 0x5bbf, EDID_QUIRK_CAP_DSC_15BPP),
|
||||
|
||||
/* LG 27GN950 */
|
||||
EDID_QUIRK('G', 'S', 'M', 0x5b9a, EDID_QUIRK_CAP_DSC_15BPP),
|
||||
|
||||
/* LGD panel of HP zBook 17 G2, eDP 10 bpc, but reports unknown bpc */
|
||||
EDID_QUIRK('L', 'G', 'D', 764, EDID_QUIRK_FORCE_10BPC),
|
||||
|
||||
|
@ -6166,6 +6174,7 @@ static void drm_reset_display_info(struct drm_connector *connector)
|
|||
|
||||
info->mso_stream_count = 0;
|
||||
info->mso_pixel_overlap = 0;
|
||||
info->max_dsc_bpp = 0;
|
||||
}
|
||||
|
||||
static u32 update_display_info(struct drm_connector *connector,
|
||||
|
@ -6252,6 +6261,9 @@ static u32 update_display_info(struct drm_connector *connector,
|
|||
info->non_desktop = true;
|
||||
}
|
||||
|
||||
if (quirks & EDID_QUIRK_CAP_DSC_15BPP)
|
||||
info->max_dsc_bpp = 15;
|
||||
|
||||
return quirks;
|
||||
}
|
||||
|
||||
|
|
|
@ -656,6 +656,12 @@ struct drm_display_info {
|
|||
* @mso_pixel_overlap: eDP MSO segment pixel overlap, 0-8 pixels.
|
||||
*/
|
||||
u8 mso_pixel_overlap;
|
||||
|
||||
/**
|
||||
* @max_dsc_bpp: Maximum DSC target bitrate, if it is set to 0 the
|
||||
* monitor's default value is used instead.
|
||||
*/
|
||||
u32 max_dsc_bpp;
|
||||
};
|
||||
|
||||
int drm_display_info_set_bus_formats(struct drm_display_info *info,
|
||||
|
|
Loading…
Reference in New Issue