aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/drm_crtc.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/drm_crtc.c')
-rw-r--r--drivers/gpu/drm/drm_crtc.c109
1 files changed, 0 insertions, 109 deletions
diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
index 7612f85e99fb..b0827634af18 100644
--- a/drivers/gpu/drm/drm_crtc.c
+++ b/drivers/gpu/drm/drm_crtc.c
@@ -969,115 +969,6 @@ void drm_mode_config_reset(struct drm_device *dev)
969EXPORT_SYMBOL(drm_mode_config_reset); 969EXPORT_SYMBOL(drm_mode_config_reset);
970 970
971/** 971/**
972 * drm_mode_create_dumb_ioctl - create a dumb backing storage buffer
973 * @dev: DRM device
974 * @data: ioctl data
975 * @file_priv: DRM file info
976 *
977 * This creates a new dumb buffer in the driver's backing storage manager (GEM,
978 * TTM or something else entirely) and returns the resulting buffer handle. This
979 * handle can then be wrapped up into a framebuffer modeset object.
980 *
981 * Note that userspace is not allowed to use such objects for render
982 * acceleration - drivers must create their own private ioctls for such a use
983 * case.
984 *
985 * Called by the user via ioctl.
986 *
987 * Returns:
988 * Zero on success, negative errno on failure.
989 */
990int drm_mode_create_dumb_ioctl(struct drm_device *dev,
991 void *data, struct drm_file *file_priv)
992{
993 struct drm_mode_create_dumb *args = data;
994 u32 cpp, stride, size;
995
996 if (!dev->driver->dumb_create)
997 return -ENOSYS;
998 if (!args->width || !args->height || !args->bpp)
999 return -EINVAL;
1000
1001 /* overflow checks for 32bit size calculations */
1002 /* NOTE: DIV_ROUND_UP() can overflow */
1003 cpp = DIV_ROUND_UP(args->bpp, 8);
1004 if (!cpp || cpp > 0xffffffffU / args->width)
1005 return -EINVAL;
1006 stride = cpp * args->width;
1007 if (args->height > 0xffffffffU / stride)
1008 return -EINVAL;
1009
1010 /* test for wrap-around */
1011 size = args->height * stride;
1012 if (PAGE_ALIGN(size) == 0)
1013 return -EINVAL;
1014
1015 /*
1016 * handle, pitch and size are output parameters. Zero them out to
1017 * prevent drivers from accidentally using uninitialized data. Since
1018 * not all existing userspace is clearing these fields properly we
1019 * cannot reject IOCTL with garbage in them.
1020 */
1021 args->handle = 0;
1022 args->pitch = 0;
1023 args->size = 0;
1024
1025 return dev->driver->dumb_create(file_priv, dev, args);
1026}
1027
1028/**
1029 * drm_mode_mmap_dumb_ioctl - create an mmap offset for a dumb backing storage buffer
1030 * @dev: DRM device
1031 * @data: ioctl data
1032 * @file_priv: DRM file info
1033 *
1034 * Allocate an offset in the drm device node's address space to be able to
1035 * memory map a dumb buffer.
1036 *
1037 * Called by the user via ioctl.
1038 *
1039 * Returns:
1040 * Zero on success, negative errno on failure.
1041 */
1042int drm_mode_mmap_dumb_ioctl(struct drm_device *dev,
1043 void *data, struct drm_file *file_priv)
1044{
1045 struct drm_mode_map_dumb *args = data;
1046
1047 /* call driver ioctl to get mmap offset */
1048 if (!dev->driver->dumb_map_offset)
1049 return -ENOSYS;
1050
1051 return dev->driver->dumb_map_offset(file_priv, dev, args->handle, &args->offset);
1052}
1053
1054/**
1055 * drm_mode_destroy_dumb_ioctl - destroy a dumb backing strage buffer
1056 * @dev: DRM device
1057 * @data: ioctl data
1058 * @file_priv: DRM file info
1059 *
1060 * This destroys the userspace handle for the given dumb backing storage buffer.
1061 * Since buffer objects must be reference counted in the kernel a buffer object
1062 * won't be immediately freed if a framebuffer modeset object still uses it.
1063 *
1064 * Called by the user via ioctl.
1065 *
1066 * Returns:
1067 * Zero on success, negative errno on failure.
1068 */
1069int drm_mode_destroy_dumb_ioctl(struct drm_device *dev,
1070 void *data, struct drm_file *file_priv)
1071{
1072 struct drm_mode_destroy_dumb *args = data;
1073
1074 if (!dev->driver->dumb_destroy)
1075 return -ENOSYS;
1076
1077 return dev->driver->dumb_destroy(file_priv, dev, args->handle);
1078}
1079
1080/**
1081 * drm_mode_config_init - initialize DRM mode_configuration structure 972 * drm_mode_config_init - initialize DRM mode_configuration structure
1082 * @dev: DRM device 973 * @dev: DRM device
1083 * 974 *