Hi

Am 10.12.25 um 20:42 schrieb Dmitry Baryshkov:
We have a helper to get property values for non-atomic drivers and
another one default property values for atomic drivers. In some cases we
need the ability to get value of immutable property, no matter what kind
of driver it is. Implement new property-related helper,
drm_object_immutable_property_get_value(), which lets the caller to get
the value of the immutable property.

Signed-off-by: Dmitry Baryshkov <[email protected]>
---
  drivers/gpu/drm/drm_mode_object.c | 25 +++++++++++++++++++++++++
  include/drm/drm_mode_object.h     |  3 +++
  2 files changed, 28 insertions(+)

diff --git a/drivers/gpu/drm/drm_mode_object.c 
b/drivers/gpu/drm/drm_mode_object.c
index e943205a2394..ead8eeafd012 100644
--- a/drivers/gpu/drm/drm_mode_object.c
+++ b/drivers/gpu/drm/drm_mode_object.c
@@ -384,6 +384,31 @@ int drm_object_property_get_default_value(struct 
drm_mode_object *obj,
  }
  EXPORT_SYMBOL(drm_object_property_get_default_value);
+/**
+ * drm_object_immutable_property_get_value - retrieve the value of a property
+ * @obj: drm mode object to get property value from
+ * @property: property to retrieve
+ * @val: storage for the property value
+ *
+ * This function retrieves the softare state of the given immutable property 
for the given
+ * property.

Sounds odd. Rather for "for the given mode object" ?

+ *
+ * This function can be called directtly by both atomic and non-atomic drivers.

'directly' or just remove the word from the sentence.

+ *
+ * Returns:
+ * Zero on success, error code on failure.
+ */
+int drm_object_immutable_property_get_value(struct drm_mode_object *obj,
+                                           struct drm_property *property,
+                                           uint64_t *val)
+{
+       if (WARN_ON(!(property->flags & DRM_MODE_PROP_IMMUTABLE)))

Rather use drm_WARN_ON(property->dev, ...) here.

Best regards
Thomas

+               return -EINVAL;
+
+       return __drm_object_property_get_prop_value(obj, property, val);
+}
+EXPORT_SYMBOL(drm_object_immutable_property_get_value);
+
  /* helper for getconnector and getproperties ioctls */
  int drm_mode_object_get_properties(struct drm_mode_object *obj, bool atomic,
                                   uint32_t __user *prop_ptr,
diff --git a/include/drm/drm_mode_object.h b/include/drm/drm_mode_object.h
index c68edbd126d0..44a0d6f8d01f 100644
--- a/include/drm/drm_mode_object.h
+++ b/include/drm/drm_mode_object.h
@@ -133,6 +133,9 @@ int drm_object_property_get_value(struct drm_mode_object 
*obj,
  int drm_object_property_get_default_value(struct drm_mode_object *obj,
                                          struct drm_property *property,
                                          uint64_t *val);
+int drm_object_immutable_property_get_value(struct drm_mode_object *obj,
+                                           struct drm_property *property,
+                                           uint64_t *val);
void drm_object_attach_property(struct drm_mode_object *obj,
                                struct drm_property *property,


--
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstr. 146, 90461 Nürnberg, Germany, www.suse.com
GF: Jochen Jaser, Andrew McDonald, Werner Knoblich, (HRB 36809, AG Nürnberg)


Reply via email to