diff options
author | Radhakrishna Sripada <radhakrishna.sripada@intel.com> | 2018-10-12 00:18:45 -0700 |
---|---|---|
committer | Rodrigo Vivi <rodrigo.vivi@intel.com> | 2018-11-02 09:14:06 -0700 |
commit | d39c1b14ebd577b21ad551e3af477f53f1f4e701 (patch) | |
tree | 927e3eb4931e6f9dc19c856d2ae9016b38004af7 /tests/kms_properties.c | |
parent | ace031dcb1e8bf2b32b4b0d54a55eb30e8f41d6f (diff) |
tests/kms_properties: Add additional prperty test infrastructure
We currently test the existimg properties by setting them with default value.
Add infrastructure to perform additional test on a desired property.
v2: Fix the strcmp logic
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Radhakrishna Sripada <radhakrishna.sripada@intel.com>
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Diffstat (limited to 'tests/kms_properties.c')
-rw-r--r-- | tests/kms_properties.c | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/tests/kms_properties.c b/tests/kms_properties.c index 9548cf44..f5a86236 100644 --- a/tests/kms_properties.c +++ b/tests/kms_properties.c @@ -29,6 +29,13 @@ #include <string.h> #include <time.h> +struct additional_test { + char *name; + uint32_t obj_type; + void (*prop_test)(int fd, uint32_t id, uint32_t type, drmModePropertyPtr prop, + uint32_t prop_id, uint64_t prop_value, bool atomic); +}; + static void prepare_pipe(igt_display_t *display, enum pipe pipe, igt_output_t *output, struct igt_fb *fb) { drmModeModeInfo *mode = igt_output_get_mode(output); @@ -75,11 +82,27 @@ static bool ignore_property(uint32_t obj_type, uint32_t prop_flags, return false; } +static const struct additional_test property_functional_test[] = {}; + +static bool has_additional_test_lookup(uint32_t obj_type, const char *name, + bool atomic, int *index) +{ + int i; + + for (i = 0; i < ARRAY_SIZE(property_functional_test); i++) + if (property_functional_test[i].obj_type == obj_type && + !strcmp(name, property_functional_test[i].name)) { + *index = i; + return true; + } + + return false; +} static void test_properties(int fd, uint32_t type, uint32_t id, bool atomic) { drmModeObjectPropertiesPtr props = drmModeObjectGetProperties(fd, id, type); - int i, ret; + int i, j, ret; drmModeAtomicReqPtr req = NULL; igt_assert(props); @@ -114,6 +137,9 @@ static void test_properties(int fd, uint32_t type, uint32_t id, bool atomic) igt_assert_eq(ret, 0); } + if (has_additional_test_lookup(type, prop->name, atomic, &j)) + property_functional_test[j].prop_test(fd, id, type, prop, prop_id, prop_value, atomic); + drmModeFreeProperty(prop); } |