dp_info->tries = 0;
        voltage = 0xff;
        while (1) {
-               drm_dp_link_train_clock_recovery_delay(dp_info->dpcd);
+               drm_dp_link_train_clock_recovery_delay(dp_info->aux, dp_info->dpcd);
 
                if (drm_dp_dpcd_read_link_status(dp_info->aux,
                                                 dp_info->link_status) <= 0) {
 
 }
 EXPORT_SYMBOL(drm_dp_get_adjust_request_post_cursor);
 
-void drm_dp_link_train_clock_recovery_delay(const u8 dpcd[DP_RECEIVER_CAP_SIZE])
+void drm_dp_link_train_clock_recovery_delay(const struct drm_dp_aux *aux,
+                                           const u8 dpcd[DP_RECEIVER_CAP_SIZE])
 {
        unsigned long rd_interval = dpcd[DP_TRAINING_AUX_RD_INTERVAL] &
                                         DP_TRAINING_AUX_RD_MASK;
 
                                                        enum drm_dp_phy dp_phy)
 {
        if (dp_phy == DP_PHY_DPRX)
-               drm_dp_link_train_clock_recovery_delay(intel_dp->dpcd);
+               drm_dp_link_train_clock_recovery_delay(&intel_dp->aux, intel_dp->dpcd);
        else
                drm_dp_lttpr_link_train_clock_recovery_delay();
 }
 
        tries = 0;
        old_v_level = ctrl->link->phy_params.v_level;
        for (tries = 0; tries < maximum_retries; tries++) {
-               drm_dp_link_train_clock_recovery_delay(ctrl->panel->dpcd);
+               drm_dp_link_train_clock_recovery_delay(ctrl->aux, ctrl->panel->dpcd);
 
                ret = dp_ctrl_read_link_status(ctrl, link_status);
                if (ret)
 
        tries = 0;
        old_v_level = ctrl->v_level;
        while (1) {
-               drm_dp_link_train_clock_recovery_delay(ctrl->dpcd);
+               drm_dp_link_train_clock_recovery_delay(ctrl->drm_aux, ctrl->dpcd);
 
                rlen = drm_dp_dpcd_read_link_status(ctrl->drm_aux, link_status);
                if (rlen < DP_LINK_STATUS_SIZE) {
 
        dp_info->tries = 0;
        voltage = 0xff;
        while (1) {
-               drm_dp_link_train_clock_recovery_delay(dp_info->dpcd);
+               drm_dp_link_train_clock_recovery_delay(dp_info->aux, dp_info->dpcd);
 
                if (drm_dp_dpcd_read_link_status(dp_info->aux,
                                                 dp_info->link_status) <= 0) {
 
                if (ret)
                        return ret;
 
-               drm_dp_link_train_clock_recovery_delay(dp->dpcd);
+               drm_dp_link_train_clock_recovery_delay(&dp->aux, dp->dpcd);
                ret = drm_dp_dpcd_read_link_status(&dp->aux, link_status);
                if (ret < 0)
                        return ret;
 
 #include <drm/drm_connector.h>
 
 struct drm_device;
+struct drm_dp_aux;
 
 /*
  * Unless otherwise noted, all values are from the DP 1.1a spec.  Note that
 #define DP_LTTPR_COMMON_CAP_SIZE       8
 #define DP_LTTPR_PHY_CAP_SIZE          3
 
-void drm_dp_link_train_clock_recovery_delay(const u8 dpcd[DP_RECEIVER_CAP_SIZE]);
+void drm_dp_link_train_clock_recovery_delay(const struct drm_dp_aux *aux,
+                                           const u8 dpcd[DP_RECEIVER_CAP_SIZE]);
 void drm_dp_lttpr_link_train_clock_recovery_delay(void);
 void drm_dp_link_train_channel_eq_delay(const u8 dpcd[DP_RECEIVER_CAP_SIZE]);
 void drm_dp_lttpr_link_train_channel_eq_delay(const u8 caps[DP_LTTPR_PHY_CAP_SIZE]);