diff options
author | Daniel Stone <daniels@collabora.com> | 2015-05-22 08:34:49 -0400 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2015-05-22 10:18:21 -0400 |
commit | 99531d9bb76c649df15311c717deefdff7cc5b7b (patch) | |
tree | c9d5451cf8038c831fee928eb92af8e280b3420d /drivers/gpu/drm/drm_crtc.c | |
parent | 934a8a899a7275ed187810fe9a15a93397e88c6b (diff) |
drm: Allow creating blob properties without copy
Make the data parameter to drm_property_create_blob optional; if
omitted, the copy will be skipped and the data will be empty.
Signed-off-by: Daniel Stone <daniels@collabora.com>
Reviewed-by: Maarten Lankhorst <maarten.lankhorst@intel.com>
Tested-by: Sean Paul <seanpaul@chromium.org>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm/drm_crtc.c')
-rw-r--r-- | drivers/gpu/drm/drm_crtc.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c index f6b0332aad7f..0844108e19e0 100644 --- a/drivers/gpu/drm/drm_crtc.c +++ b/drivers/gpu/drm/drm_crtc.c | |||
@@ -4145,6 +4145,16 @@ done: | |||
4145 | return ret; | 4145 | return ret; |
4146 | } | 4146 | } |
4147 | 4147 | ||
4148 | /** | ||
4149 | * drm_property_create_blob - Create new blob property | ||
4150 | * | ||
4151 | * Creates a new blob property for a specified DRM device, optionally | ||
4152 | * copying data. | ||
4153 | * | ||
4154 | * @dev: DRM device to create property for | ||
4155 | * @length: Length to allocate for blob data | ||
4156 | * @data: If specified, copies data into blob | ||
4157 | */ | ||
4148 | struct drm_property_blob * | 4158 | struct drm_property_blob * |
4149 | drm_property_create_blob(struct drm_device *dev, size_t length, | 4159 | drm_property_create_blob(struct drm_device *dev, size_t length, |
4150 | const void *data) | 4160 | const void *data) |
@@ -4152,7 +4162,7 @@ drm_property_create_blob(struct drm_device *dev, size_t length, | |||
4152 | struct drm_property_blob *blob; | 4162 | struct drm_property_blob *blob; |
4153 | int ret; | 4163 | int ret; |
4154 | 4164 | ||
4155 | if (!length || !data) | 4165 | if (!length) |
4156 | return NULL; | 4166 | return NULL; |
4157 | 4167 | ||
4158 | blob = kzalloc(sizeof(struct drm_property_blob)+length, GFP_KERNEL); | 4168 | blob = kzalloc(sizeof(struct drm_property_blob)+length, GFP_KERNEL); |
@@ -4162,7 +4172,8 @@ drm_property_create_blob(struct drm_device *dev, size_t length, | |||
4162 | blob->length = length; | 4172 | blob->length = length; |
4163 | blob->dev = dev; | 4173 | blob->dev = dev; |
4164 | 4174 | ||
4165 | memcpy(blob->data, data, length); | 4175 | if (data) |
4176 | memcpy(blob->data, data, length); | ||
4166 | 4177 | ||
4167 | mutex_lock(&dev->mode_config.blob_lock); | 4178 | mutex_lock(&dev->mode_config.blob_lock); |
4168 | 4179 | ||