[RFC 05/11] drm: split property values out

2012-10-12 Thread Rob Clark
From: Rob Clark 

Split property values out into a different struct, so we can later
move property values into state structs.  This will allow the
property values to stay in sync w/ the state updates which are
either discarded or atomically committed.
---
 drivers/gpu/drm/drm_crtc.c |   29 -
 drivers/gpu/drm/drm_fb_helper.c|1 +
 drivers/staging/omapdrm/omap_drv.c |5 +++--
 include/drm/drm_crtc.h |   10 +-
 4 files changed, 33 insertions(+), 12 deletions(-)

diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
index 5308a34..b1ccfea 100644
--- a/drivers/gpu/drm/drm_crtc.c
+++ b/drivers/gpu/drm/drm_crtc.c
@@ -446,6 +446,7 @@ int drm_crtc_init(struct drm_device *dev, struct drm_crtc 
*crtc,
goto out;

crtc->base.properties = >properties;
+   crtc->base.propvals = >propvals;

list_add_tail(>head, >mode_config.crtc_list);
dev->mode_config.num_crtc++;
@@ -547,6 +548,7 @@ int drm_connector_init(struct drm_device *dev,
goto out;

connector->base.properties = >properties;
+   connector->base.propvals = >propvals;
connector->dev = dev;
connector->funcs = funcs;
connector->connector_type = connector_type;
@@ -670,6 +672,7 @@ int drm_plane_init(struct drm_device *dev, struct drm_plane 
*plane,
goto out;

plane->base.properties = >properties;
+   plane->base.propvals = >propvals;
plane->dev = dev;
plane->funcs = funcs;
plane->format_types = kmalloc(sizeof(uint32_t) * format_count,
@@ -1549,7 +1552,7 @@ int drm_mode_getconnector(struct drm_device *dev, void 
*data,
goto out;
}

-   if (put_user(connector->properties.values[i],
+   if (put_user(connector->propvals.values[i],
 prop_values + copied)) {
ret = -EFAULT;
goto out;
@@ -2951,19 +2954,20 @@ void drm_object_attach_property(struct drm_mode_object 
*obj,
}

obj->properties->ids[count] = property->base.id;
-   obj->properties->values[count] = init_val;
+   obj->propvals->values[count] = init_val;
obj->properties->count++;
 }
 EXPORT_SYMBOL(drm_object_attach_property);

 int drm_object_property_set_value(struct drm_mode_object *obj,
+ struct drm_object_property_values *propvals,
  struct drm_property *property, uint64_t val)
 {
int i;

for (i = 0; i < obj->properties->count; i++) {
if (obj->properties->ids[i] == property->base.id) {
-   obj->properties->values[i] = val;
+   propvals->values[i] = val;
return 0;
}
}
@@ -2979,7 +2983,7 @@ int drm_object_property_get_value(struct drm_mode_object 
*obj,

for (i = 0; i < obj->properties->count; i++) {
if (obj->properties->ids[i] == property->base.id) {
-   *val = obj->properties->values[i];
+   *val = obj->propvals->values[i];
return 0;
}
}
@@ -3172,7 +3176,9 @@ int drm_mode_connector_update_edid_property(struct 
drm_connector *connector,
/* Delete edid, when there is none. */
if (!edid) {
connector->edid_blob_ptr = NULL;
-   ret = drm_object_property_set_value(>base, 
dev->mode_config.edid_property, 0);
+   ret = drm_object_property_set_value(>base,
+   >propvals,
+   dev->mode_config.edid_property, 0);
return ret;
}

@@ -3181,6 +3187,7 @@ int drm_mode_connector_update_edid_property(struct 
drm_connector *connector,
size, edid);

ret = drm_object_property_set_value(>base,
+  >propvals,
   dev->mode_config.edid_property,
   
connector->edid_blob_ptr->base.id);

@@ -3254,7 +3261,9 @@ static int drm_mode_connector_set_obj_prop(struct 
drm_connector *connector,

/* store the property value if successful */
if (!ret)
-   drm_object_property_set_value(>base, property, 
value);
+   drm_object_property_set_value(>base,
+   >propvals, property, value);
+
return ret;
 }

@@ -3267,7 +3276,8 @@ static int drm_mode_crtc_set_obj_prop(struct drm_crtc 
*crtc,
if (crtc->funcs->set_property)
ret = crtc->funcs->set_property(crtc, state, property, value);
if (!ret)
-   drm_object_property_set_value(>base, property, value);
+   

[RFC 05/11] drm: split property values out

2012-09-13 Thread Rob Clark
From: Rob Clark r...@ti.com

Split property values out into a different struct, so we can later
move property values into state structs.  This will allow the
property values to stay in sync w/ the state updates which are
either discarded or atomically committed.
---
 drivers/gpu/drm/drm_crtc.c |   27 ++-
 include/drm/drm_crtc.h |   10 +-
 2 files changed, 27 insertions(+), 10 deletions(-)

diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
index e62ae6a..245c462 100644
--- a/drivers/gpu/drm/drm_crtc.c
+++ b/drivers/gpu/drm/drm_crtc.c
@@ -446,6 +446,7 @@ int drm_crtc_init(struct drm_device *dev, struct drm_crtc 
*crtc,
goto out;
 
crtc-base.properties = crtc-properties;
+   crtc-base.propvals = crtc-propvals;
 
list_add_tail(crtc-head, dev-mode_config.crtc_list);
dev-mode_config.num_crtc++;
@@ -547,6 +548,7 @@ int drm_connector_init(struct drm_device *dev,
goto out;
 
connector-base.properties = connector-properties;
+   connector-base.propvals = connector-propvals;
connector-dev = dev;
connector-funcs = funcs;
connector-connector_type = connector_type;
@@ -670,6 +672,7 @@ int drm_plane_init(struct drm_device *dev, struct drm_plane 
*plane,
goto out;
 
plane-base.properties = plane-properties;
+   plane-base.propvals = plane-propvals;
plane-dev = dev;
plane-funcs = funcs;
plane-format_types = kmalloc(sizeof(uint32_t) * format_count,
@@ -1549,7 +1552,7 @@ int drm_mode_getconnector(struct drm_device *dev, void 
*data,
goto out;
}
 
-   if (put_user(connector-properties.values[i],
+   if (put_user(connector-propvals.values[i],
 prop_values + copied)) {
ret = -EFAULT;
goto out;
@@ -2944,7 +2947,8 @@ EXPORT_SYMBOL(drm_connector_attach_property);
 int drm_connector_property_set_value(struct drm_connector *connector,
  struct drm_property *property, uint64_t value)
 {
-   return drm_object_property_set_value(connector-base, property, value);
+   return drm_object_property_set_value(connector-base,
+   connector-propvals, property, value);
 }
 EXPORT_SYMBOL(drm_connector_property_set_value);
 
@@ -2970,19 +2974,20 @@ void drm_object_attach_property(struct drm_mode_object 
*obj,
}
 
obj-properties-ids[count] = property-base.id;
-   obj-properties-values[count] = init_val;
+   obj-propvals-values[count] = init_val;
obj-properties-count++;
 }
 EXPORT_SYMBOL(drm_object_attach_property);
 
 int drm_object_property_set_value(struct drm_mode_object *obj,
+ struct drm_object_property_values *propvals,
  struct drm_property *property, uint64_t val)
 {
int i;
 
for (i = 0; i  obj-properties-count; i++) {
if (obj-properties-ids[i] == property-base.id) {
-   obj-properties-values[i] = val;
+   propvals-values[i] = val;
return 0;
}
}
@@ -2998,7 +3003,7 @@ int drm_object_property_get_value(struct drm_mode_object 
*obj,
 
for (i = 0; i  obj-properties-count; i++) {
if (obj-properties-ids[i] == property-base.id) {
-   *val = obj-properties-values[i];
+   *val = obj-propvals-values[i];
return 0;
}
}
@@ -3273,7 +3278,9 @@ static int drm_mode_connector_set_obj_prop(struct 
drm_connector *connector,
 
/* store the property value if successful */
if (!ret)
-   drm_object_property_set_value(connector-base, property, 
value);
+   drm_object_property_set_value(connector-base,
+   connector-propvals, property, value);
+
return ret;
 }
 
@@ -3286,7 +3293,8 @@ static int drm_mode_crtc_set_obj_prop(struct drm_crtc 
*crtc,
if (crtc-funcs-set_property)
ret = crtc-funcs-set_property(crtc, state, property, value);
if (!ret)
-   drm_object_property_set_value(crtc-base, property, value);
+   drm_object_property_set_value(crtc-base, crtc-propvals,
+   property, value);
 
return ret;
 }
@@ -3300,7 +3308,8 @@ static int drm_mode_plane_set_obj_prop(struct drm_plane 
*plane,
if (plane-funcs-set_property)
ret = plane-funcs-set_property(plane, state, property, value);
if (!ret)
-   drm_object_property_set_value(plane-base, property, value);
+   drm_object_property_set_value(plane-base, plane-propvals,
+   property, value);
 

[RFC 05/11] drm: split property values out

2012-09-12 Thread Rob Clark
From: Rob Clark 

Split property values out into a different struct, so we can later
move property values into state structs.  This will allow the
property values to stay in sync w/ the state updates which are
either discarded or atomically committed.
---
 drivers/gpu/drm/drm_crtc.c |   27 ++-
 include/drm/drm_crtc.h |   10 +-
 2 files changed, 27 insertions(+), 10 deletions(-)

diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
index e62ae6a..245c462 100644
--- a/drivers/gpu/drm/drm_crtc.c
+++ b/drivers/gpu/drm/drm_crtc.c
@@ -446,6 +446,7 @@ int drm_crtc_init(struct drm_device *dev, struct drm_crtc 
*crtc,
goto out;

crtc->base.properties = >properties;
+   crtc->base.propvals = >propvals;

list_add_tail(>head, >mode_config.crtc_list);
dev->mode_config.num_crtc++;
@@ -547,6 +548,7 @@ int drm_connector_init(struct drm_device *dev,
goto out;

connector->base.properties = >properties;
+   connector->base.propvals = >propvals;
connector->dev = dev;
connector->funcs = funcs;
connector->connector_type = connector_type;
@@ -670,6 +672,7 @@ int drm_plane_init(struct drm_device *dev, struct drm_plane 
*plane,
goto out;

plane->base.properties = >properties;
+   plane->base.propvals = >propvals;
plane->dev = dev;
plane->funcs = funcs;
plane->format_types = kmalloc(sizeof(uint32_t) * format_count,
@@ -1549,7 +1552,7 @@ int drm_mode_getconnector(struct drm_device *dev, void 
*data,
goto out;
}

-   if (put_user(connector->properties.values[i],
+   if (put_user(connector->propvals.values[i],
 prop_values + copied)) {
ret = -EFAULT;
goto out;
@@ -2944,7 +2947,8 @@ EXPORT_SYMBOL(drm_connector_attach_property);
 int drm_connector_property_set_value(struct drm_connector *connector,
  struct drm_property *property, uint64_t value)
 {
-   return drm_object_property_set_value(>base, property, value);
+   return drm_object_property_set_value(>base,
+   >propvals, property, value);
 }
 EXPORT_SYMBOL(drm_connector_property_set_value);

@@ -2970,19 +2974,20 @@ void drm_object_attach_property(struct drm_mode_object 
*obj,
}

obj->properties->ids[count] = property->base.id;
-   obj->properties->values[count] = init_val;
+   obj->propvals->values[count] = init_val;
obj->properties->count++;
 }
 EXPORT_SYMBOL(drm_object_attach_property);

 int drm_object_property_set_value(struct drm_mode_object *obj,
+ struct drm_object_property_values *propvals,
  struct drm_property *property, uint64_t val)
 {
int i;

for (i = 0; i < obj->properties->count; i++) {
if (obj->properties->ids[i] == property->base.id) {
-   obj->properties->values[i] = val;
+   propvals->values[i] = val;
return 0;
}
}
@@ -2998,7 +3003,7 @@ int drm_object_property_get_value(struct drm_mode_object 
*obj,

for (i = 0; i < obj->properties->count; i++) {
if (obj->properties->ids[i] == property->base.id) {
-   *val = obj->properties->values[i];
+   *val = obj->propvals->values[i];
return 0;
}
}
@@ -3273,7 +3278,9 @@ static int drm_mode_connector_set_obj_prop(struct 
drm_connector *connector,

/* store the property value if successful */
if (!ret)
-   drm_object_property_set_value(>base, property, 
value);
+   drm_object_property_set_value(>base,
+   >propvals, property, value);
+
return ret;
 }

@@ -3286,7 +3293,8 @@ static int drm_mode_crtc_set_obj_prop(struct drm_crtc 
*crtc,
if (crtc->funcs->set_property)
ret = crtc->funcs->set_property(crtc, state, property, value);
if (!ret)
-   drm_object_property_set_value(>base, property, value);
+   drm_object_property_set_value(>base, >propvals,
+   property, value);

return ret;
 }
@@ -3300,7 +3308,8 @@ static int drm_mode_plane_set_obj_prop(struct drm_plane 
*plane,
if (plane->funcs->set_property)
ret = plane->funcs->set_property(plane, state, property, value);
if (!ret)
-   drm_object_property_set_value(>base, property, value);
+   drm_object_property_set_value(>base, >propvals,
+   property, value);

return ret;
 }
@@ -3401,7 +3410,7 @@ int drm_mode_obj_get_properties_ioctl(struct