|
@@ -905,6 +905,38 @@ bool drm_mode_equal_no_clocks_no_stereo(const struct drm_display_mode *mode1,
|
|
|
}
|
|
|
EXPORT_SYMBOL(drm_mode_equal_no_clocks_no_stereo);
|
|
|
|
|
|
+/**
|
|
|
+ * drm_mode_validate_basic - make sure the mode is somewhat sane
|
|
|
+ * @mode: mode to check
|
|
|
+ *
|
|
|
+ * Check that the mode timings are at least somewhat reasonable.
|
|
|
+ * Any hardware specific limits are left up for each driver to check.
|
|
|
+ *
|
|
|
+ * Returns:
|
|
|
+ * The mode status
|
|
|
+ */
|
|
|
+enum drm_mode_status
|
|
|
+drm_mode_validate_basic(const struct drm_display_mode *mode)
|
|
|
+{
|
|
|
+ if (mode->clock == 0)
|
|
|
+ return MODE_CLOCK_LOW;
|
|
|
+
|
|
|
+ if (mode->hdisplay == 0 ||
|
|
|
+ mode->hsync_start < mode->hdisplay ||
|
|
|
+ mode->hsync_end < mode->hsync_start ||
|
|
|
+ mode->htotal < mode->hsync_end)
|
|
|
+ return MODE_H_ILLEGAL;
|
|
|
+
|
|
|
+ if (mode->vdisplay == 0 ||
|
|
|
+ mode->vsync_start < mode->vdisplay ||
|
|
|
+ mode->vsync_end < mode->vsync_start ||
|
|
|
+ mode->vtotal < mode->vsync_end)
|
|
|
+ return MODE_V_ILLEGAL;
|
|
|
+
|
|
|
+ return MODE_OK;
|
|
|
+}
|
|
|
+EXPORT_SYMBOL(drm_mode_validate_basic);
|
|
|
+
|
|
|
/**
|
|
|
* drm_mode_validate_size - make sure modes adhere to size constraints
|
|
|
* @mode: mode to check
|