drm/i915: Shuffle DP .mode_valid() checks
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Tue, 2 Apr 2024 13:51:43 +0000 (16:51 +0300)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Wed, 3 Apr 2024 13:34:24 +0000 (16:34 +0300)
Move some of the more trivial checks in the DP .mode_valid()
hooks upwards to lessen the noise amongst the more complex
checks.

Reviewed-by: Vandita Kulkarni <vandita.kulkarni@intel.com>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240402135148.23011-3-ville.syrjala@linux.intel.com
drivers/gpu/drm/i915/display/intel_dp.c
drivers/gpu/drm/i915/display/intel_dp_mst.c

index b393ddbb7b35b819c0fad01c03bc902c78816389..819f3234de0357244077e2202a7b87785c4f7c3a 100644 (file)
@@ -1229,6 +1229,9 @@ intel_dp_mode_valid(struct drm_connector *_connector,
        if (mode->flags & DRM_MODE_FLAG_DBLCLK)
                return MODE_H_ILLEGAL;
 
+       if (mode->clock < 10000)
+               return MODE_CLOCK_LOW;
+
        fixed_mode = intel_panel_fixed_mode(connector, mode);
        if (intel_dp_is_edp(intel_dp) && fixed_mode) {
                status = intel_panel_mode_valid(connector, mode);
@@ -1238,9 +1241,6 @@ intel_dp_mode_valid(struct drm_connector *_connector,
                target_clock = fixed_mode->clock;
        }
 
-       if (mode->clock < 10000)
-               return MODE_CLOCK_LOW;
-
        if (intel_dp_need_bigjoiner(intel_dp, mode->hdisplay, target_clock)) {
                bigjoiner = true;
                max_dotclk *= 2;
index 9a7c75039989125732f63fa9a0771ac0139f0bfd..1405ab5e3accd35d2d4001890db13979d041dbf0 100644 (file)
@@ -1302,6 +1302,16 @@ intel_dp_mst_mode_valid_ctx(struct drm_connector *connector,
        if (*status != MODE_OK)
                return 0;
 
+       if (mode->flags & DRM_MODE_FLAG_DBLCLK) {
+               *status = MODE_H_ILLEGAL;
+               return 0;
+       }
+
+       if (mode->clock < 10000) {
+               *status = MODE_CLOCK_LOW;
+               return 0;
+       }
+
        max_link_clock = intel_dp_max_link_rate(intel_dp);
        max_lanes = intel_dp_max_lane_count(intel_dp);
 
@@ -1330,17 +1340,6 @@ intel_dp_mst_mode_valid_ctx(struct drm_connector *connector,
                *status = MODE_CLOCK_HIGH;
                return 0;
        }
-
-       if (mode->clock < 10000) {
-               *status = MODE_CLOCK_LOW;
-               return 0;
-       }
-
-       if (mode->flags & DRM_MODE_FLAG_DBLCLK) {
-               *status = MODE_H_ILLEGAL;
-               return 0;
-       }
-
        if (intel_dp_need_bigjoiner(intel_dp, mode->hdisplay, target_clock)) {
                bigjoiner = true;
                max_dotclk *= 2;