The function has little to do with atomic, it's just where it has so
far been needed. So, rename it to drm_property_replace_blob, move it
to drm_property.c and export it.

Change the semantics to return whether the blob was replaced instead
of using an extra argument for that.

Signed-off-by: Peter Rosin <p...@axentia.se>
---
 drivers/gpu/drm/drm_atomic.c   | 30 +-----------------------------
 drivers/gpu/drm/drm_property.c | 23 +++++++++++++++++++++++
 include/drm/drm_property.h     |  2 ++
 3 files changed, 26 insertions(+), 29 deletions(-)

diff --git a/drivers/gpu/drm/drm_atomic.c b/drivers/gpu/drm/drm_atomic.c
index 09ca662fcd35..16d73be6f76d 100644
--- a/drivers/gpu/drm/drm_atomic.c
+++ b/drivers/gpu/drm/drm_atomic.c
@@ -408,34 +408,6 @@ int drm_atomic_set_mode_prop_for_crtc(struct 
drm_crtc_state *state,
 }
 EXPORT_SYMBOL(drm_atomic_set_mode_prop_for_crtc);
 
-/**
- * drm_atomic_replace_property_blob - replace a blob property
- * @blob: a pointer to the member blob to be replaced
- * @new_blob: the new blob to replace with
- * @replaced: whether the blob has been replaced
- *
- * RETURNS:
- * Zero on success, error code on failure
- */
-static void
-drm_atomic_replace_property_blob(struct drm_property_blob **blob,
-                                struct drm_property_blob *new_blob,
-                                bool *replaced)
-{
-       struct drm_property_blob *old_blob = *blob;
-
-       if (old_blob == new_blob)
-               return;
-
-       drm_property_blob_put(old_blob);
-       if (new_blob)
-               drm_property_blob_get(new_blob);
-       *blob = new_blob;
-       *replaced = true;
-
-       return;
-}
-
 static int
 drm_atomic_replace_property_blob_from_id(struct drm_device *dev,
                                         struct drm_property_blob **blob,
@@ -456,7 +428,7 @@ drm_atomic_replace_property_blob_from_id(struct drm_device 
*dev,
                }
        }
 
-       drm_atomic_replace_property_blob(blob, new_blob, replaced);
+       *replaced |= drm_property_replace_blob(blob, new_blob);
        drm_property_blob_put(new_blob);
 
        return 0;
diff --git a/drivers/gpu/drm/drm_property.c b/drivers/gpu/drm/drm_property.c
index 3e88fa24eab3..bc5128203056 100644
--- a/drivers/gpu/drm/drm_property.c
+++ b/drivers/gpu/drm/drm_property.c
@@ -709,6 +709,29 @@ int drm_property_replace_global_blob(struct drm_device 
*dev,
 }
 EXPORT_SYMBOL(drm_property_replace_global_blob);
 
+/**
+ * drm_property_replace_blob - replace a blob property
+ * @blob: a pointer to the member blob to be replaced
+ * @new_blob: the new blob to replace with
+ *
+ * Return: true if the blob was in fact replaced.
+ */
+bool drm_property_replace_blob(struct drm_property_blob **blob,
+                              struct drm_property_blob *new_blob)
+{
+       struct drm_property_blob *old_blob = *blob;
+
+       if (old_blob == new_blob)
+               return false;
+
+       drm_property_blob_put(old_blob);
+       if (new_blob)
+               drm_property_blob_get(new_blob);
+       *blob = new_blob;
+       return true;
+}
+EXPORT_SYMBOL(drm_property_replace_blob);
+
 int drm_mode_getblob_ioctl(struct drm_device *dev,
                           void *data, struct drm_file *file_priv)
 {
diff --git a/include/drm/drm_property.h b/include/drm/drm_property.h
index 619868dc08d8..37355c623e6c 100644
--- a/include/drm/drm_property.h
+++ b/include/drm/drm_property.h
@@ -273,6 +273,8 @@ int drm_property_replace_global_blob(struct drm_device *dev,
                                     const void *data,
                                     struct drm_mode_object *obj_holds_id,
                                     struct drm_property *prop_holds_id);
+bool drm_property_replace_blob(struct drm_property_blob **blob,
+                              struct drm_property_blob *new_blob);
 struct drm_property_blob *drm_property_blob_get(struct drm_property_blob 
*blob);
 void drm_property_blob_put(struct drm_property_blob *blob);
 
-- 
2.11.0

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to