diff mbox

[v4,01/14] drm/atomic: export drm_atomic_replace_property_blob

Message ID 1499343648-29695-2-git-send-email-peda@axentia.se (mailing list archive)
State New, archived
Headers show

Commit Message

Peter Rosin July 6, 2017, 12:20 p.m. UTC
While at it, add some words in the kernel-doc about the 'replaced' arg and
remove a faulty kernel-doc comment on the return value.

Also remove a redundant return statement.

Signed-off-by: Peter Rosin <peda@axentia.se>
---
 drivers/gpu/drm/drm_atomic.c | 17 +++++++++--------
 include/drm/drm_atomic.h     |  4 ++++
 2 files changed, 13 insertions(+), 8 deletions(-)

Comments

Daniel Vetter July 11, 2017, 8:01 a.m. UTC | #1
On Thu, Jul 06, 2017 at 02:20:35PM +0200, Peter Rosin wrote:
> While at it, add some words in the kernel-doc about the 'replaced' arg and
> remove a faulty kernel-doc comment on the return value.
> 
> Also remove a redundant return statement.
> 
> Signed-off-by: Peter Rosin <peda@axentia.se>
> ---
>  drivers/gpu/drm/drm_atomic.c | 17 +++++++++--------
>  include/drm/drm_atomic.h     |  4 ++++
>  2 files changed, 13 insertions(+), 8 deletions(-)
> 
> diff --git a/drivers/gpu/drm/drm_atomic.c b/drivers/gpu/drm/drm_atomic.c
> index 09ca662..b7d9696 100644
> --- a/drivers/gpu/drm/drm_atomic.c
> +++ b/drivers/gpu/drm/drm_atomic.c
> @@ -414,13 +414,15 @@ EXPORT_SYMBOL(drm_atomic_set_mode_prop_for_crtc);
>   * @new_blob: the new blob to replace with
>   * @replaced: whether the blob has been replaced
>   *
> - * RETURNS:
> - * Zero on success, error code on failure
> + * Note that you are required to initialize @replaced to false before the
> + * call, since it is only set to true when the blob property is changed and
> + * not set to false when the property is not changed. This enables a series
> + * of calls to be made where you are interested in if any property is
> + * replaced, but not care so much about exactly which of them was replaced.
>   */
> -static void
> -drm_atomic_replace_property_blob(struct drm_property_blob **blob,
> -				 struct drm_property_blob *new_blob,
> -				 bool *replaced)
> +void drm_atomic_replace_property_blob(struct drm_property_blob **blob,
> +				      struct drm_property_blob *new_blob,
> +				      bool *replaced)

Yes I know I'm super-annoying, but this function now feels misplaced. It
has nothing to do with atomic, it just replaces a pointer to a blob with
anther pointer. I think it'd be much better if we move this function to
drm_property.c, and rename it to drm_property_replace_blob.

Second, instead of typing a huge paragraph explaining how replaced works,
I think the better option would be to drop that parameter and instead
return a boolean indicating whether the blob was replaced or not.

That's a bit more work, but imo functions which are exported need to pass
a higher barrier wrt api polish.

Thanks, Daniel

>  {
>  	struct drm_property_blob *old_blob = *blob;
>  
> @@ -432,9 +434,8 @@ drm_atomic_replace_property_blob(struct drm_property_blob **blob,
>  		drm_property_blob_get(new_blob);
>  	*blob = new_blob;
>  	*replaced = true;
> -
> -	return;
>  }
> +EXPORT_SYMBOL(drm_atomic_replace_property_blob);
>  
>  static int
>  drm_atomic_replace_property_blob_from_id(struct drm_device *dev,
> diff --git a/include/drm/drm_atomic.h b/include/drm/drm_atomic.h
> index dcc8e0c..8b32ea5 100644
> --- a/include/drm/drm_atomic.h
> +++ b/include/drm/drm_atomic.h
> @@ -321,6 +321,10 @@ int drm_atomic_connector_set_property(struct drm_connector *connector,
>  		struct drm_connector_state *state, struct drm_property *property,
>  		uint64_t val);
>  
> +void drm_atomic_replace_property_blob(struct drm_property_blob **blob,
> +				      struct drm_property_blob *new_blob,
> +				      bool *replaced);
> +
>  void * __must_check
>  drm_atomic_get_private_obj_state(struct drm_atomic_state *state,
>  			      void *obj,
> -- 
> 2.1.4
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
Peter Rosin July 11, 2017, 12:06 p.m. UTC | #2
On 2017-07-11 10:01, Daniel Vetter wrote:
> On Thu, Jul 06, 2017 at 02:20:35PM +0200, Peter Rosin wrote:
>> While at it, add some words in the kernel-doc about the 'replaced' arg and
>> remove a faulty kernel-doc comment on the return value.
>>
>> Also remove a redundant return statement.
>>
>> Signed-off-by: Peter Rosin <peda@axentia.se>
>> ---
>>  drivers/gpu/drm/drm_atomic.c | 17 +++++++++--------
>>  include/drm/drm_atomic.h     |  4 ++++
>>  2 files changed, 13 insertions(+), 8 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/drm_atomic.c b/drivers/gpu/drm/drm_atomic.c
>> index 09ca662..b7d9696 100644
>> --- a/drivers/gpu/drm/drm_atomic.c
>> +++ b/drivers/gpu/drm/drm_atomic.c
>> @@ -414,13 +414,15 @@ EXPORT_SYMBOL(drm_atomic_set_mode_prop_for_crtc);
>>   * @new_blob: the new blob to replace with
>>   * @replaced: whether the blob has been replaced
>>   *
>> - * RETURNS:
>> - * Zero on success, error code on failure
>> + * Note that you are required to initialize @replaced to false before the
>> + * call, since it is only set to true when the blob property is changed and
>> + * not set to false when the property is not changed. This enables a series
>> + * of calls to be made where you are interested in if any property is
>> + * replaced, but not care so much about exactly which of them was replaced.
>>   */
>> -static void
>> -drm_atomic_replace_property_blob(struct drm_property_blob **blob,
>> -				 struct drm_property_blob *new_blob,
>> -				 bool *replaced)
>> +void drm_atomic_replace_property_blob(struct drm_property_blob **blob,
>> +				      struct drm_property_blob *new_blob,
>> +				      bool *replaced)
> 
> Yes I know I'm super-annoying, but this function now feels misplaced. It
> has nothing to do with atomic, it just replaces a pointer to a blob with
> anther pointer. I think it'd be much better if we move this function to
> drm_property.c, and rename it to drm_property_replace_blob.

Right, good judgement. Regarding incremental reviewing, I had it coming
because I am guilty too... :-) Anyway, no problem!

> Second, instead of typing a huge paragraph explaining how replaced works,
> I think the better option would be to drop that parameter and instead
> return a boolean indicating whether the blob was replaced or not.

Right. And again, good judgement.

> That's a bit more work, but imo functions which are exported need to pass
> a higher barrier wrt api polish.

Will fix these issues in v5.

> Thanks, Daniel

Cheers,
Peter

>>  {
>>  	struct drm_property_blob *old_blob = *blob;
>>  
>> @@ -432,9 +434,8 @@ drm_atomic_replace_property_blob(struct drm_property_blob **blob,
>>  		drm_property_blob_get(new_blob);
>>  	*blob = new_blob;
>>  	*replaced = true;
>> -
>> -	return;
>>  }
>> +EXPORT_SYMBOL(drm_atomic_replace_property_blob);
>>  
>>  static int
>>  drm_atomic_replace_property_blob_from_id(struct drm_device *dev,
>> diff --git a/include/drm/drm_atomic.h b/include/drm/drm_atomic.h
>> index dcc8e0c..8b32ea5 100644
>> --- a/include/drm/drm_atomic.h
>> +++ b/include/drm/drm_atomic.h
>> @@ -321,6 +321,10 @@ int drm_atomic_connector_set_property(struct drm_connector *connector,
>>  		struct drm_connector_state *state, struct drm_property *property,
>>  		uint64_t val);
>>  
>> +void drm_atomic_replace_property_blob(struct drm_property_blob **blob,
>> +				      struct drm_property_blob *new_blob,
>> +				      bool *replaced);
>> +
>>  void * __must_check
>>  drm_atomic_get_private_obj_state(struct drm_atomic_state *state,
>>  			      void *obj,
>> -- 
>> 2.1.4
>>
>> _______________________________________________
>> dri-devel mailing list
>> dri-devel@lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/dri-devel
>
diff mbox

Patch

diff --git a/drivers/gpu/drm/drm_atomic.c b/drivers/gpu/drm/drm_atomic.c
index 09ca662..b7d9696 100644
--- a/drivers/gpu/drm/drm_atomic.c
+++ b/drivers/gpu/drm/drm_atomic.c
@@ -414,13 +414,15 @@  EXPORT_SYMBOL(drm_atomic_set_mode_prop_for_crtc);
  * @new_blob: the new blob to replace with
  * @replaced: whether the blob has been replaced
  *
- * RETURNS:
- * Zero on success, error code on failure
+ * Note that you are required to initialize @replaced to false before the
+ * call, since it is only set to true when the blob property is changed and
+ * not set to false when the property is not changed. This enables a series
+ * of calls to be made where you are interested in if any property is
+ * replaced, but not care so much about exactly which of them was replaced.
  */
-static void
-drm_atomic_replace_property_blob(struct drm_property_blob **blob,
-				 struct drm_property_blob *new_blob,
-				 bool *replaced)
+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;
 
@@ -432,9 +434,8 @@  drm_atomic_replace_property_blob(struct drm_property_blob **blob,
 		drm_property_blob_get(new_blob);
 	*blob = new_blob;
 	*replaced = true;
-
-	return;
 }
+EXPORT_SYMBOL(drm_atomic_replace_property_blob);
 
 static int
 drm_atomic_replace_property_blob_from_id(struct drm_device *dev,
diff --git a/include/drm/drm_atomic.h b/include/drm/drm_atomic.h
index dcc8e0c..8b32ea5 100644
--- a/include/drm/drm_atomic.h
+++ b/include/drm/drm_atomic.h
@@ -321,6 +321,10 @@  int drm_atomic_connector_set_property(struct drm_connector *connector,
 		struct drm_connector_state *state, struct drm_property *property,
 		uint64_t val);
 
+void drm_atomic_replace_property_blob(struct drm_property_blob **blob,
+				      struct drm_property_blob *new_blob,
+				      bool *replaced);
+
 void * __must_check
 drm_atomic_get_private_obj_state(struct drm_atomic_state *state,
 			      void *obj,