summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Widawsky <ben@bwidawsk.net>2012-07-18 11:47:42 -0700
committerBen Widawsky <ben@bwidawsk.net>2012-07-18 11:47:42 -0700
commit58cfeabb90a9bef742df53e2602966a2166e37b9 (patch)
tree428dc8a952d5ce07a8b81e4ff44ee82b04d4a4cf
parent4fe786953962d9603d15ea82c97ea5f6e57ba8be (diff)
reg_read: skip older kernels
Signed-off-by: Ben Widawsky <ben@bwidawsk.net>
-rw-r--r--tests/drm_reg_read.c33
1 files changed, 20 insertions, 13 deletions
diff --git a/tests/drm_reg_read.c b/tests/drm_reg_read.c
index 360deeab..9afaef34 100644
--- a/tests/drm_reg_read.c
+++ b/tests/drm_reg_read.c
@@ -50,34 +50,41 @@ static void handle_bad(int ret, int lerrno, int expected, const char *desc)
}
}
-int main(int argc, char *argv[])
+static uint64_t timer_query(int fd)
{
struct local_drm_i915_reg_read read;
- int ret, fd;
- __u64 val;
+ int ret;
read.offset = 0x2358;
-
- fd = drm_open_any();
-
ret = drmIoctl(fd, REG_READ_IOCTL, &read);
if (ret) {
- perror("positive test case failed\n");
+ perror("positive test case failed: ");
exit(EXIT_FAILURE);
}
- val = read.val;
+
+ return read.val;
+}
+
+int main(int argc, char *argv[])
+{
+ struct local_drm_i915_reg_read read;
+ int ret, fd;
+ uint64_t val;
+
+ fd = drm_open_any();
+
ret = drmIoctl(fd, REG_READ_IOCTL, &read);
- if (ret) {
- perror("positive test case 2 failed\n");
+ if (ret == EINVAL)
+ exit(77);
+ else if (ret)
exit(EXIT_FAILURE);
- }
- if (val == read.val) {
+ val = timer_query(fd);
+ if (timer_query(fd) == val) {
fprintf(stderr, "Timer isn't moving, probably busted\n");
exit(EXIT_FAILURE);
}
-
/* bad reg */
read.offset = 0x12345678;
ret = drmIoctl(fd, REG_READ_IOCTL, &read);