@@ -1746,58 +1746,7 @@ static void drm_crtc_convert_to_umode(struct drm_mode_modeinfo *out,
out->name[DRM_DISPLAY_MODE_LEN-1] = 0;
}
-/**
- * drm_mode_new_from_umode - convert a modeinfo into a drm_display_mode
- * @dev: DRM device to create mode for
- * @in: drm_mode_modeinfo to use
- *
- * Convert a drm_mode_modeinfo into a drm_display_mode structure to return to
- * the caller.
- *
- * Returns:
- * New drm_display_mode on success, NULL on failure
- */
-static struct drm_display_mode *drm_mode_new_from_umode(struct drm_device *dev,
- const struct drm_mode_modeinfo *in)
-{
- struct drm_display_mode *out;
-
- out = drm_mode_create(dev);
- if (!out)
- return NULL;
-
- if (in->clock > INT_MAX || in->vrefresh > INT_MAX)
- goto err;
-
- if ((in->flags & DRM_MODE_FLAG_3D_MASK) > DRM_MODE_FLAG_3D_MAX)
- goto err;
-
- out->clock = in->clock;
- out->hdisplay = in->hdisplay;
- out->hsync_start = in->hsync_start;
- out->hsync_end = in->hsync_end;
- out->htotal = in->htotal;
- out->hskew = in->hskew;
- out->vdisplay = in->vdisplay;
- out->vsync_start = in->vsync_start;
- out->vsync_end = in->vsync_end;
- out->vtotal = in->vtotal;
- out->vscan = in->vscan;
- out->vrefresh = in->vrefresh;
- out->flags = in->flags;
- out->type = in->type;
- strncpy(out->name, in->name, DRM_DISPLAY_MODE_LEN);
- out->name[DRM_DISPLAY_MODE_LEN-1] = 0;
- out->status = drm_mode_validate_basic(out);
- if (out->status != MODE_OK)
- goto err;
-
- return out;
-err:
- drm_mode_destroy(dev, out);
- return NULL;
-}
/**
* drm_mode_getresources - get graphics configuration
@@ -892,6 +892,59 @@ struct drm_display_mode *drm_mode_duplicate(struct drm_device *dev,
EXPORT_SYMBOL(drm_mode_duplicate);
/**
+ * drm_mode_new_from_umode - convert a modeinfo into a drm_display_mode
+ * @dev: DRM device to create mode for
+ * @in: drm_mode_modeinfo to use
+ *
+ * Convert a drm_mode_modeinfo into a drm_display_mode structure to return to
+ * the caller.
+ *
+ * Returns:
+ * New drm_display_mode on success, NULL on failure
+ */
+struct drm_display_mode *drm_mode_new_from_umode(struct drm_device *dev,
+ const struct drm_mode_modeinfo *in)
+{
+ struct drm_display_mode *out;
+
+ out = drm_mode_create(dev);
+ if (!out)
+ return NULL;
+
+ if (in->clock > INT_MAX || in->vrefresh > INT_MAX)
+ goto err;
+
+ if ((in->flags & DRM_MODE_FLAG_3D_MASK) > DRM_MODE_FLAG_3D_MAX)
+ goto err;
+
+ out->clock = in->clock;
+ out->hdisplay = in->hdisplay;
+ out->hsync_start = in->hsync_start;
+ out->hsync_end = in->hsync_end;
+ out->htotal = in->htotal;
+ out->hskew = in->hskew;
+ out->vdisplay = in->vdisplay;
+ out->vsync_start = in->vsync_start;
+ out->vsync_end = in->vsync_end;
+ out->vtotal = in->vtotal;
+ out->vscan = in->vscan;
+ out->vrefresh = in->vrefresh;
+ out->flags = in->flags;
+ out->type = in->type;
+ strncpy(out->name, in->name, DRM_DISPLAY_MODE_LEN);
+ out->name[DRM_DISPLAY_MODE_LEN-1] = 0;
+
+ out->status = drm_mode_validate_basic(out);
+ if (out->status != MODE_OK)
+ goto err;
+
+ return out;
+err:
+ drm_mode_destroy(dev, out);
+ return NULL;
+}
+
+/**
* drm_mode_equal - test modes for equality
* @mode1: first mode
* @mode2: second mode
@@ -216,6 +216,8 @@ void drm_mode_copy(struct drm_display_mode *dst,
const struct drm_display_mode *src);
struct drm_display_mode *drm_mode_duplicate(struct drm_device *dev,
const struct drm_display_mode *mode);
+struct drm_display_mode *drm_mode_new_from_umode(struct drm_device *dev,
+ const struct drm_mode_modeinfo *in);
bool drm_mode_equal(const struct drm_display_mode *mode1,
const struct drm_display_mode *mode2);
bool drm_mode_equal_no_clocks_no_stereo(const struct drm_display_mode *mode1,
Signed-off-by: Daniel Stone <daniels@collabora.com> --- drivers/gpu/drm/drm_crtc.c | 51 ------------------------------------------- drivers/gpu/drm/drm_modes.c | 53 +++++++++++++++++++++++++++++++++++++++++++++ include/drm/drm_modes.h | 2 ++ 3 files changed, 55 insertions(+), 51 deletions(-)