OSDN Git Service

drm/amd/display: store lttpr mode with dpcd
authorabdoulaye berthe <abdoulaye.berthe@amd.com>
Wed, 11 Dec 2019 20:18:08 +0000 (15:18 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 16 Jan 2020 19:11:20 +0000 (14:11 -0500)
Make sure that lttpr_caps has the mode set to repeater.

Signed-off-by: abdoulaye berthe <abdoulaye.berthe@amd.com>
Reviewed-by: Wenjing Liu <Wenjing.Liu@amd.com>
Acked-by: Harry Wentland <harry.wentland@amd.com>
Acked-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c

index 5d0e7ab..f703b39 100644 (file)
@@ -1217,24 +1217,33 @@ static void configure_lttpr_mode(struct dc_link *link)
        uint8_t repeater_cnt;
        uint32_t aux_interval_address;
        uint8_t repeater_id;
+       enum dc_status result = DC_ERROR_UNEXPECTED;
        uint8_t repeater_mode = DP_PHY_REPEATER_MODE_TRANSPARENT;
 
        DC_LOG_HW_LINK_TRAINING("%s\n Set LTTPR to Transparent Mode\n", __func__);
-       core_link_write_dpcd(link,
+       result = core_link_write_dpcd(link,
                        DP_PHY_REPEATER_MODE,
                        (uint8_t *)&repeater_mode,
                        sizeof(repeater_mode));
 
+       if (result == DC_OK) {
+               link->dpcd_caps.lttpr_caps.mode = repeater_mode;
+       }
+
        if (!link->is_lttpr_mode_transparent) {
 
                DC_LOG_HW_LINK_TRAINING("%s\n Set LTTPR to Non Transparent Mode\n", __func__);
 
                repeater_mode = DP_PHY_REPEATER_MODE_NON_TRANSPARENT;
-               core_link_write_dpcd(link,
+               result = core_link_write_dpcd(link,
                                DP_PHY_REPEATER_MODE,
                                (uint8_t *)&repeater_mode,
                                sizeof(repeater_mode));
 
+               if (result == DC_OK) {
+                       link->dpcd_caps.lttpr_caps.mode = repeater_mode;
+               }
+
                repeater_cnt = convert_to_count(link->dpcd_caps.lttpr_caps.phy_repeater_cnt);
                for (repeater_id = repeater_cnt; repeater_id > 0; repeater_id--) {
                        aux_interval_address = DP_TRAINING_AUX_RD_INTERVAL_PHY_REPEATER1 +