static void dp_ctrl_config_ctrl(struct dp_ctrl_private *ctrl)
 {
        u32 config = 0, tbd;
-       u8 *dpcd = ctrl->panel->dpcd;
+       const u8 *dpcd = ctrl->panel->dpcd;
 
        /* Default-> LSCLK DIV: 1/4 LCLK  */
        config |= (2 << DP_CONFIGURATION_CTRL_LSCLK_DIV_SHIFT);
 
        /* Scrambler reset enable */
-       if (dpcd[DP_EDP_CONFIGURATION_CAP] & DP_ALTERNATE_SCRAMBLER_RESET_CAP)
+       if (drm_dp_alternate_scrambler_reset_cap(dpcd))
                config |= DP_CONFIGURATION_CTRL_ASSR;
 
        tbd = dp_link_get_test_bits_depth(ctrl->link,
        const u8 *dpcd = ctrl->panel->dpcd;
        u8 encoding = DP_SET_ANSI_8B10B;
        u8 ssc;
+       u8 assr;
        struct dp_link_info link_info = {0};
 
        dp_ctrl_config_ctrl(ctrl);
        drm_dp_dpcd_write(ctrl->aux, DP_MAIN_LINK_CHANNEL_CODING_SET,
                                &encoding, 1);
 
+       if (drm_dp_alternate_scrambler_reset_cap(dpcd)) {
+               assr = DP_ALTERNATE_SCRAMBLER_RESET_ENABLE;
+               drm_dp_dpcd_write(ctrl->aux, DP_EDP_CONFIGURATION_SET,
+                               &assr, 1);
+       }
+
        ret = dp_ctrl_link_train_1(ctrl, training_step);
        if (ret) {
                DRM_ERROR("link training #1 failed. ret=%d\n", ret);