diff options
Diffstat (limited to 'drivers/gpu/drm/drm_crtc.c')
-rw-r--r-- | drivers/gpu/drm/drm_crtc.c | 109 |
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) | |||
969 | EXPORT_SYMBOL(drm_mode_config_reset); | 969 | EXPORT_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 | */ | ||
990 | int 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 | */ | ||
1042 | int 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 | */ | ||
1069 | int 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 | * |