summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Vetter <daniel.vetter@ffwll.ch>2016-08-29 10:27:56 +0200
committerDaniel Vetter <daniel.vetter@ffwll.ch>2016-08-29 15:37:41 +0200
commit77953bd136d2a70bca2dc93b3ccda07a2b37076f (patch)
tree46015885f617a683e72d12f332782181b03395b0
parent59e71ee746a37fe077b73cecf189de1d27efd6eb (diff)
downloadlinux-77953bd136d2a70bca2dc93b3ccda07a2b37076f.tar.bz2
drm: Unify handling of blob and object properties
They work exactly the same now, after the refcounting unification a bit ago. The only reason they're distinct is backwards compat with existing userspace. Cc: Daniel Stone <daniels@collabora.com> Reviewed-by: Archit Taneja <architt@codeaurora.org> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> Link: http://patchwork.freedesktop.org/patch/msgid/20160829082757.17913-8-daniel.vetter@ffwll.ch
-rw-r--r--drivers/gpu/drm/drm_property.c23
1 files changed, 5 insertions, 18 deletions
diff --git a/drivers/gpu/drm/drm_property.c b/drivers/gpu/drm/drm_property.c
index 162cc9032ae5..b5521f705b1c 100644
--- a/drivers/gpu/drm/drm_property.c
+++ b/drivers/gpu/drm/drm_property.c
@@ -911,20 +911,8 @@ bool drm_property_change_valid_get(struct drm_property *property,
for (i = 0; i < property->num_values; i++)
valid_mask |= (1ULL << property->values[i]);
return !(value & ~valid_mask);
- } else if (drm_property_type_is(property, DRM_MODE_PROP_BLOB)) {
- struct drm_property_blob *blob;
-
- if (value == 0)
- return true;
-
- blob = drm_property_lookup_blob(property->dev, value);
- if (blob) {
- *ref = &blob->base;
- return true;
- } else {
- return false;
- }
- } else if (drm_property_type_is(property, DRM_MODE_PROP_OBJECT)) {
+ } else if (drm_property_type_is(property, DRM_MODE_PROP_BLOB) ||
+ drm_property_type_is(property, DRM_MODE_PROP_OBJECT)) {
/* a zero value for an object property translates to null: */
if (value == 0)
return true;
@@ -941,13 +929,12 @@ bool drm_property_change_valid_get(struct drm_property *property,
}
void drm_property_change_valid_put(struct drm_property *property,
- struct drm_mode_object *ref)
+ struct drm_mode_object *ref)
{
if (!ref)
return;
- if (drm_property_type_is(property, DRM_MODE_PROP_OBJECT)) {
+ if (drm_property_type_is(property, DRM_MODE_PROP_OBJECT) ||
+ drm_property_type_is(property, DRM_MODE_PROP_BLOB))
drm_mode_object_unreference(ref);
- } else if (drm_property_type_is(property, DRM_MODE_PROP_BLOB))
- drm_property_unreference_blob(obj_to_blob(ref));
}