Skip to content

Commit dec9de2

Browse files
kleinermalexdeucher
authored andcommitted
drm/amd/display: Add link_rate quirk for Apple 15" MBP 2017
This fixes a problem found on the MacBookPro 2017 Retina panel: The panel reports 10 bpc color depth in its EDID, and the firmware chooses link settings at boot which support enough bandwidth for 10 bpc (324000 kbit/sec aka LINK_RATE_RBR2 aka 0xc), but the DP_MAX_LINK_RATE dpcd register only reports 2.7 Gbps (multiplier value 0xa) as possible, in direct contradiction of what the firmware successfully set up. This restricts the panel to 8 bpc, not providing the full color depth of the panel on Linux <= 5.5. Additionally, commit '4a8ca46bae8a ("drm/amd/display: Default max bpc to 16 for eDP")' introduced into Linux 5.6-rc1 will unclamp panel depth to its full 10 bpc, thereby requiring a eDP bandwidth for all modes that exceeds the bandwidth available and causes all modes to fail validation -> No modes for the laptop panel -> failure to set any mode -> Panel goes dark. This patch adds a quirk specific to the MBP 2017 15" Retina panel to override reported max link rate to the correct maximum of 0xc = LINK_RATE_RBR2 to fix the darkness and reduced display precision. Please apply for Linux 5.6+ to avoid regressing Apple MBP panel support. Signed-off-by: Mario Kleiner <[email protected]> Signed-off-by: Alex Deucher <[email protected]>
1 parent 063e768 commit dec9de2

File tree

1 file changed

+11
-0
lines changed

1 file changed

+11
-0
lines changed

drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3401,6 +3401,17 @@ static bool retrieve_link_cap(struct dc_link *link)
34013401
sink_id.ieee_device_id,
34023402
sizeof(sink_id.ieee_device_id));
34033403

3404+
/* Quirk Apple MBP 2017 15" Retina panel: Wrong DP_MAX_LINK_RATE */
3405+
{
3406+
uint8_t str_mbp_2017[] = { 101, 68, 21, 101, 98, 97 };
3407+
3408+
if ((link->dpcd_caps.sink_dev_id == 0x0010fa) &&
3409+
!memcmp(link->dpcd_caps.sink_dev_id_str, str_mbp_2017,
3410+
sizeof(str_mbp_2017))) {
3411+
link->reported_link_cap.link_rate = 0x0c;
3412+
}
3413+
}
3414+
34043415
core_link_read_dpcd(
34053416
link,
34063417
DP_SINK_HW_REVISION_START,

0 commit comments

Comments
 (0)