Skip to content

Commit 30fbce3

Browse files
aunali1alexdeucher
authored andcommitted
drm/amd/display: Force link_rate as LINK_RATE_RBR2 for 2018 15" Apple Retina panels
The eDP link rate reported by the DP_MAX_LINK_RATE dpcd register (0xa) is contradictory to the highest rate supported reported by EDID (0xc = LINK_RATE_RBR2). The effects of this compounded with commit '4a8ca46bae8a ("drm/amd/display: Default max bpc to 16 for eDP")' results in no display modes being found and a dark panel. For now, simply force the maximum supported link rate for the eDP attached 2018 15" Apple Retina panels. Additionally, we must also check the firmware revision since the device ID reported by the DPCD is identical to that of the more capable 16,1, incorrectly quirking it. We also use said firmware check to quirk the refreshed 15,1 models with Vega graphics as they use a slightly newer firmware version. Tested-by: Aun-Ali Zaidi <[email protected]> Reviewed-by: Harry Wentland <[email protected]> Signed-off-by: Aun-Ali Zaidi <[email protected]> Signed-off-by: Aditya Garg <[email protected]> Signed-off-by: Alex Deucher <[email protected]> Cc: [email protected]
1 parent 49a6ebb commit 30fbce3

File tree

1 file changed

+20
-0
lines changed

1 file changed

+20
-0
lines changed

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

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5597,6 +5597,26 @@ static bool retrieve_link_cap(struct dc_link *link)
55975597
dp_hw_fw_revision.ieee_fw_rev,
55985598
sizeof(dp_hw_fw_revision.ieee_fw_rev));
55995599

5600+
/* Quirk for Apple MBP 2018 15" Retina panels: wrong DP_MAX_LINK_RATE */
5601+
{
5602+
uint8_t str_mbp_2018[] = { 101, 68, 21, 103, 98, 97 };
5603+
uint8_t fwrev_mbp_2018[] = { 7, 4 };
5604+
uint8_t fwrev_mbp_2018_vega[] = { 8, 4 };
5605+
5606+
/* We also check for the firmware revision as 16,1 models have an
5607+
* identical device id and are incorrectly quirked otherwise.
5608+
*/
5609+
if ((link->dpcd_caps.sink_dev_id == 0x0010fa) &&
5610+
!memcmp(link->dpcd_caps.sink_dev_id_str, str_mbp_2018,
5611+
sizeof(str_mbp_2018)) &&
5612+
(!memcmp(link->dpcd_caps.sink_fw_revision, fwrev_mbp_2018,
5613+
sizeof(fwrev_mbp_2018)) ||
5614+
!memcmp(link->dpcd_caps.sink_fw_revision, fwrev_mbp_2018_vega,
5615+
sizeof(fwrev_mbp_2018_vega)))) {
5616+
link->reported_link_cap.link_rate = LINK_RATE_RBR2;
5617+
}
5618+
}
5619+
56005620
memset(&link->dpcd_caps.dsc_caps, '\0',
56015621
sizeof(link->dpcd_caps.dsc_caps));
56025622
memset(&link->dpcd_caps.fec_cap, '\0', sizeof(link->dpcd_caps.fec_cap));

0 commit comments

Comments
 (0)