Modetest gets the property name from user to set it. So the name must be converted to its id. Until now, this is done in the set_property(). But to support atomic modeset in modetest, this logic should be separated from the fuction, because atomic modeset and legacy modeset use different IOCTLs. Signed-off-by: Hyungwon Hwang <human.hwang@xxxxxxxxxxx> --- tests/modetest/modetest.c | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/tests/modetest/modetest.c b/tests/modetest/modetest.c index 43bd06f..b7f6d32 100644 --- a/tests/modetest/modetest.c +++ b/tests/modetest/modetest.c @@ -866,12 +866,11 @@ struct property_arg { uint64_t value; }; -static void set_property(struct device *dev, struct property_arg *p) +static int get_prop_info(struct resources *resources, struct property_arg *p, + char *obj_type) { drmModeObjectProperties *props = NULL; drmModePropertyRes **props_info = NULL; - const char *obj_type; - int ret; int i; p->obj_type = 0; @@ -884,27 +883,27 @@ static void set_property(struct device *dev, struct property_arg *p) if (obj->type->type##_id != p->obj_id) \ continue; \ p->obj_type = DRM_MODE_OBJECT_##Type; \ - obj_type = #Type; \ + obj_type = (char *)#Type; \ props = obj->props; \ props_info = obj->props_info; \ } \ } while(0) \ - find_object(dev->resources, res, crtc, CRTC); + find_object(resources, res, crtc, CRTC); if (p->obj_type == 0) - find_object(dev->resources, res, connector, CONNECTOR); + find_object(resources, res, connector, CONNECTOR); if (p->obj_type == 0) - find_object(dev->resources, plane_res, plane, PLANE); + find_object(resources, plane_res, plane, PLANE); if (p->obj_type == 0) { fprintf(stderr, "Object %i not found, can't set property\n", p->obj_id); - return; + return -1; } if (!props) { fprintf(stderr, "%s %i has no properties\n", obj_type, p->obj_id); - return; + return -1; } for (i = 0; i < (int)props->count_props; ++i) { @@ -917,11 +916,23 @@ static void set_property(struct device *dev, struct property_arg *p) if (i == (int)props->count_props) { fprintf(stderr, "%s %i has no %s property\n", obj_type, p->obj_id, p->name); - return; + return -1; } p->prop_id = props->props[i]; + return 0; +} + +static void set_property(struct device *dev, struct property_arg *p) +{ + int ret; + char *obj_type = NULL; + + ret = get_prop_info(dev->resources, p, obj_type); + if (ret < 0) + return; + ret = drmModeObjectSetProperty(dev->fd, p->obj_id, p->obj_type, p->prop_id, p->value); if (ret < 0) -- 2.4.3 _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel