int max_tmds_clock = intel_hdmi_source_max_tmds_clock(to_i915(dev));
 
        if (respect_downstream_limits) {
+               struct intel_connector *connector = hdmi->attached_connector;
+               const struct drm_display_info *info = &connector->base.display_info;
+
                if (hdmi->dp_dual_mode.max_tmds_clock)
                        max_tmds_clock = min(max_tmds_clock,
                                             hdmi->dp_dual_mode.max_tmds_clock);
-               if (!hdmi->has_hdmi_sink)
+
+               if (info->max_tmds_clock)
+                       max_tmds_clock = min(max_tmds_clock,
+                                            info->max_tmds_clock);
+               else if (!hdmi->has_hdmi_sink)
                        max_tmds_clock = min(max_tmds_clock, 165000);
        }