void *data, struct drm_file *file_priv);
 int drm_mode_page_flip_ioctl(struct drm_device *dev,
                             void *data, struct drm_file *file_priv);
+
+/* drm_edid.c */
+void drm_mode_fixup_1366x768(struct drm_display_mode *mode);
 
 #include <drm/drm_encoder.h>
 #include <drm/drm_displayid.h>
 
+#include "drm_crtc_internal.h"
+
 #define version_greater(edid, maj, min) \
        (((edid)->version > (maj)) || \
         ((edid)->version == (maj) && (edid)->revision > (min)))
 /* fix up 1366x768 mode from 1368x768;
  * GFT/CVT can't express 1366 width which isn't dividable by 8
  */
-static void fixup_mode_1366x768(struct drm_display_mode *mode)
+void drm_mode_fixup_1366x768(struct drm_display_mode *mode)
 {
        if (mode->hdisplay == 1368 && mode->vdisplay == 768) {
                mode->hdisplay = 1366;
                if (!newmode)
                        return modes;
 
-               fixup_mode_1366x768(newmode);
+               drm_mode_fixup_1366x768(newmode);
                if (!mode_in_range(newmode, edid, timing) ||
                    !valid_inferred_mode(connector, newmode)) {
                        drm_mode_destroy(dev, newmode);
                if (!newmode)
                        return modes;
 
-               fixup_mode_1366x768(newmode);
+               drm_mode_fixup_1366x768(newmode);
                if (!mode_in_range(newmode, edid, timing) ||
                    !valid_inferred_mode(connector, newmode)) {
                        drm_mode_destroy(dev, newmode);
 
 
        mode->type |= DRM_MODE_TYPE_USERDEF;
        /* fix up 1368x768: GFT/CVT can't express 1366 width due to alignment */
-       if (cmd->xres == 1366 && mode->hdisplay == 1368) {
-               mode->hdisplay = 1366;
-               mode->hsync_start--;
-               mode->hsync_end--;
-               drm_mode_set_name(mode);
-       }
+       if (cmd->xres == 1366)
+               drm_mode_fixup_1366x768(mode);
        drm_mode_set_crtcinfo(mode, CRTC_INTERLACE_HALVE_V);
        return mode;
 }