selftests: move RTC tests to rtc subfolder
authorAlexandre Belloni <alexandre.belloni@bootlin.com>
Thu, 19 Apr 2018 12:50:29 +0000 (14:50 +0200)
committerShuah Khan (Samsung OSG) <shuah@kernel.org>
Wed, 30 May 2018 21:21:51 +0000 (15:21 -0600)
Move the RTC tests out of the timers folder as they are mostly unrelated.
Keep rtcpie in timers as it only test hrtimers.

Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Shuah Khan (Samsung OSG) <shuah@kernel.org>
MAINTAINERS
tools/testing/selftests/Makefile
tools/testing/selftests/rtc/.gitignore [new file with mode: 0644]
tools/testing/selftests/rtc/Makefile [new file with mode: 0644]
tools/testing/selftests/rtc/rtctest.c [new file with mode: 0644]
tools/testing/selftests/rtc/setdate.c [new file with mode: 0644]
tools/testing/selftests/timers/.gitignore
tools/testing/selftests/timers/Makefile
tools/testing/selftests/timers/rtctest.c [deleted file]
tools/testing/selftests/timers/rtctest_setdate.c [deleted file]

index ca4afd68530ca7e83f403b9bb1f5025f6579cd01..a376a4adc6755f6f3f93dcb393e9752eabe29e99 100644 (file)
@@ -11878,7 +11878,7 @@ F:      include/linux/rtc.h
 F:     include/uapi/linux/rtc.h
 F:     include/linux/rtc/
 F:     include/linux/platform_data/rtc-*
-F:     tools/testing/selftests/timers/rtctest.c
+F:     tools/testing/selftests/rtc/
 
 REALTEK AUDIO CODECS
 M:     Bard Liao <bardliao@realtek.com>
index 32aafa92074c5049fa5bd5fbc08432d3603278dc..a368279301b7faa720bda0bf0b082b13407e3cfd 100644 (file)
@@ -28,6 +28,7 @@ TARGETS += powerpc
 TARGETS += proc
 TARGETS += pstore
 TARGETS += ptrace
+TARGETS += rtc
 TARGETS += seccomp
 TARGETS += sigaltstack
 TARGETS += size
diff --git a/tools/testing/selftests/rtc/.gitignore b/tools/testing/selftests/rtc/.gitignore
new file mode 100644 (file)
index 0000000..d0ad44f
--- /dev/null
@@ -0,0 +1,2 @@
+rtctest
+setdate
diff --git a/tools/testing/selftests/rtc/Makefile b/tools/testing/selftests/rtc/Makefile
new file mode 100644 (file)
index 0000000..de9c856
--- /dev/null
@@ -0,0 +1,9 @@
+# SPDX-License-Identifier: GPL-2.0
+CFLAGS += -O3 -Wl,-no-as-needed -Wall
+LDFLAGS += -lrt -lpthread -lm
+
+TEST_GEN_PROGS = rtctest
+
+TEST_GEN_PROGS_EXTENDED = setdate
+
+include ../lib.mk
diff --git a/tools/testing/selftests/rtc/rtctest.c b/tools/testing/selftests/rtc/rtctest.c
new file mode 100644 (file)
index 0000000..6e17b96
--- /dev/null
@@ -0,0 +1,328 @@
+/*
+ *      Real Time Clock Driver Test/Example Program
+ *
+ *      Compile with:
+ *                  gcc -s -Wall -Wstrict-prototypes rtctest.c -o rtctest
+ *
+ *      Copyright (C) 1996, Paul Gortmaker.
+ *
+ *      Released under the GNU General Public License, version 2,
+ *      included herein by reference.
+ *
+ */
+
+#include <stdio.h>
+#include <linux/rtc.h>
+#include <sys/ioctl.h>
+#include <sys/time.h>
+#include <sys/types.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <errno.h>
+
+#ifndef ARRAY_SIZE
+# define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
+#endif
+
+/*
+ * This expects the new RTC class driver framework, working with
+ * clocks that will often not be clones of what the PC-AT had.
+ * Use the command line to specify another RTC if you need one.
+ */
+static const char default_rtc[] = "/dev/rtc0";
+
+static struct rtc_time cutoff_dates[] = {
+       {
+               .tm_year = 70, /* 1970 -1900 */
+               .tm_mday = 1,
+       },
+       /* signed time_t 19/01/2038 3:14:08 */
+       {
+               .tm_year = 138,
+               .tm_mday = 19,
+       },
+       {
+               .tm_year = 138,
+               .tm_mday = 20,
+       },
+       {
+               .tm_year = 199, /* 2099 -1900 */
+               .tm_mday = 1,
+       },
+       {
+               .tm_year = 200, /* 2100 -1900 */
+               .tm_mday = 1,
+       },
+       /* unsigned time_t 07/02/2106 7:28:15*/
+       {
+               .tm_year = 205,
+               .tm_mon = 1,
+               .tm_mday = 7,
+       },
+       {
+               .tm_year = 206,
+               .tm_mon = 1,
+               .tm_mday = 8,
+       },
+       /* signed time on 64bit in nanoseconds 12/04/2262 01:47:16*/
+       {
+               .tm_year = 362,
+               .tm_mon = 3,
+               .tm_mday = 12,
+       },
+       {
+               .tm_year = 362, /* 2262 -1900 */
+               .tm_mon = 3,
+               .tm_mday = 13,
+       },
+};
+
+static int compare_dates(struct rtc_time *a, struct rtc_time *b)
+{
+       if (a->tm_year != b->tm_year ||
+           a->tm_mon != b->tm_mon ||
+           a->tm_mday != b->tm_mday ||
+           a->tm_hour != b->tm_hour ||
+           a->tm_min != b->tm_min ||
+           ((b->tm_sec - a->tm_sec) > 1))
+               return 1;
+
+       return 0;
+}
+
+int main(int argc, char **argv)
+{
+       int i, fd, retval, irqcount = 0, dangerous = 0;
+       unsigned long data;
+       struct rtc_time rtc_tm;
+       const char *rtc = default_rtc;
+
+       switch (argc) {
+       case 3:
+               if (*argv[2] == 'd')
+                       dangerous = 1;
+       case 2:
+               rtc = argv[1];
+               /* FALLTHROUGH */
+       case 1:
+               break;
+       default:
+               fprintf(stderr, "usage:  rtctest [rtcdev] [d]\n");
+               return 1;
+       }
+
+       fd = open(rtc, O_RDONLY);
+
+       if (fd ==  -1) {
+               perror(rtc);
+               exit(errno);
+       }
+
+       fprintf(stderr, "\n\t\t\tRTC Driver Test Example.\n\n");
+
+       /* Turn on update interrupts (one per second) */
+       retval = ioctl(fd, RTC_UIE_ON, 0);
+       if (retval == -1) {
+               if (errno == EINVAL) {
+                       fprintf(stderr,
+                               "\n...Update IRQs not supported.\n");
+                       goto test_READ;
+               }
+               perror("RTC_UIE_ON ioctl");
+               exit(errno);
+       }
+
+       fprintf(stderr, "Counting 5 update (1/sec) interrupts from reading %s:",
+                       rtc);
+       fflush(stderr);
+       for (i=1; i<6; i++) {
+               /* This read will block */
+               retval = read(fd, &data, sizeof(unsigned long));
+               if (retval == -1) {
+                       perror("read");
+                       exit(errno);
+               }
+               fprintf(stderr, " %d",i);
+               fflush(stderr);
+               irqcount++;
+       }
+
+       fprintf(stderr, "\nAgain, from using select(2) on /dev/rtc:");
+       fflush(stderr);
+       for (i=1; i<6; i++) {
+               struct timeval tv = {5, 0};     /* 5 second timeout on select */
+               fd_set readfds;
+
+               FD_ZERO(&readfds);
+               FD_SET(fd, &readfds);
+               /* The select will wait until an RTC interrupt happens. */
+               retval = select(fd+1, &readfds, NULL, NULL, &tv);
+               if (retval == -1) {
+                       perror("select");
+                       exit(errno);
+               }
+               /* This read won't block unlike the select-less case above. */
+               retval = read(fd, &data, sizeof(unsigned long));
+               if (retval == -1) {
+                       perror("read");
+                       exit(errno);
+               }
+               fprintf(stderr, " %d",i);
+               fflush(stderr);
+               irqcount++;
+       }
+
+       /* Turn off update interrupts */
+       retval = ioctl(fd, RTC_UIE_OFF, 0);
+       if (retval == -1) {
+               perror("RTC_UIE_OFF ioctl");
+               exit(errno);
+       }
+
+test_READ:
+       /* Read the RTC time/date */
+       retval = ioctl(fd, RTC_RD_TIME, &rtc_tm);
+       if (retval == -1) {
+               perror("RTC_RD_TIME ioctl");
+               exit(errno);
+       }
+
+       fprintf(stderr, "\n\nCurrent RTC date/time is %d-%d-%d, %02d:%02d:%02d.\n",
+               rtc_tm.tm_mday, rtc_tm.tm_mon + 1, rtc_tm.tm_year + 1900,
+               rtc_tm.tm_hour, rtc_tm.tm_min, rtc_tm.tm_sec);
+
+       /* Set the alarm to 5 sec in the future, and check for rollover */
+       rtc_tm.tm_sec += 5;
+       if (rtc_tm.tm_sec >= 60) {
+               rtc_tm.tm_sec %= 60;
+               rtc_tm.tm_min++;
+       }
+       if (rtc_tm.tm_min == 60) {
+               rtc_tm.tm_min = 0;
+               rtc_tm.tm_hour++;
+       }
+       if (rtc_tm.tm_hour == 24)
+               rtc_tm.tm_hour = 0;
+
+       retval = ioctl(fd, RTC_ALM_SET, &rtc_tm);
+       if (retval == -1) {
+               if (errno == EINVAL) {
+                       fprintf(stderr,
+                               "\n...Alarm IRQs not supported.\n");
+                       goto test_DATE;
+               }
+
+               perror("RTC_ALM_SET ioctl");
+               exit(errno);
+       }
+
+       /* Read the current alarm settings */
+       retval = ioctl(fd, RTC_ALM_READ, &rtc_tm);
+       if (retval == -1) {
+               if (errno == EINVAL) {
+                       fprintf(stderr,
+                                       "\n...EINVAL reading current alarm setting.\n");
+                       goto test_DATE;
+               }
+               perror("RTC_ALM_READ ioctl");
+               exit(errno);
+       }
+
+       fprintf(stderr, "Alarm time now set to %02d:%02d:%02d.\n",
+               rtc_tm.tm_hour, rtc_tm.tm_min, rtc_tm.tm_sec);
+
+       /* Enable alarm interrupts */
+       retval = ioctl(fd, RTC_AIE_ON, 0);
+       if (retval == -1) {
+               if (errno == EINVAL || errno == EIO) {
+                       fprintf(stderr,
+                               "\n...Alarm IRQs not supported.\n");
+                       goto test_DATE;
+               }
+
+               perror("RTC_AIE_ON ioctl");
+               exit(errno);
+       }
+
+       fprintf(stderr, "Waiting 5 seconds for alarm...");
+       fflush(stderr);
+       /* This blocks until the alarm ring causes an interrupt */
+       retval = read(fd, &data, sizeof(unsigned long));
+       if (retval == -1) {
+               perror("read");
+               exit(errno);
+       }
+       irqcount++;
+       fprintf(stderr, " okay. Alarm rang.\n");
+
+       /* Disable alarm interrupts */
+       retval = ioctl(fd, RTC_AIE_OFF, 0);
+       if (retval == -1) {
+               perror("RTC_AIE_OFF ioctl");
+               exit(errno);
+       }
+
+test_DATE:
+       if (!dangerous)
+               goto done;
+
+       fprintf(stderr, "\nTesting problematic dates\n");
+
+       for (i = 0; i < ARRAY_SIZE(cutoff_dates); i++) {
+               struct rtc_time current;
+
+               /* Write the new date in RTC */
+               retval = ioctl(fd, RTC_SET_TIME, &cutoff_dates[i]);
+               if (retval == -1) {
+                       perror("RTC_SET_TIME ioctl");
+                       close(fd);
+                       exit(errno);
+               }
+
+               /* Read back */
+               retval = ioctl(fd, RTC_RD_TIME, &current);
+               if (retval == -1) {
+                       perror("RTC_RD_TIME ioctl");
+                       exit(errno);
+               }
+
+               if(compare_dates(&cutoff_dates[i], &current)) {
+                       fprintf(stderr,"Setting date %d failed\n",
+                               cutoff_dates[i].tm_year + 1900);
+                       goto done;
+               }
+
+               cutoff_dates[i].tm_sec += 5;
+
+               /* Write the new alarm in RTC */
+               retval = ioctl(fd, RTC_ALM_SET, &cutoff_dates[i]);
+               if (retval == -1) {
+                       perror("RTC_ALM_SET ioctl");
+                       close(fd);
+                       exit(errno);
+               }
+
+               /* Read back */
+               retval = ioctl(fd, RTC_ALM_READ, &current);
+               if (retval == -1) {
+                       perror("RTC_ALM_READ ioctl");
+                       exit(errno);
+               }
+
+               if(compare_dates(&cutoff_dates[i], &current)) {
+                       fprintf(stderr,"Setting alarm %d failed\n",
+                               cutoff_dates[i].tm_year + 1900);
+                       goto done;
+               }
+
+               fprintf(stderr, "Setting year %d is OK \n",
+                       cutoff_dates[i].tm_year + 1900);
+       }
+done:
+       fprintf(stderr, "\n\n\t\t\t *** Test complete ***\n");
+
+       close(fd);
+
+       return 0;
+}
diff --git a/tools/testing/selftests/rtc/setdate.c b/tools/testing/selftests/rtc/setdate.c
new file mode 100644 (file)
index 0000000..2cb7848
--- /dev/null
@@ -0,0 +1,86 @@
+/* Real Time Clock Driver Test
+ *     by: Benjamin Gaignard (benjamin.gaignard@linaro.org)
+ *
+ * To build
+ *     gcc rtctest_setdate.c -o rtctest_setdate
+ *
+ *   This program is free software: you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation, either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ */
+
+#include <stdio.h>
+#include <linux/rtc.h>
+#include <sys/ioctl.h>
+#include <sys/time.h>
+#include <sys/types.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <errno.h>
+
+static const char default_time[] = "00:00:00";
+
+int main(int argc, char **argv)
+{
+       int fd, retval;
+       struct rtc_time new, current;
+       const char *rtc, *date;
+       const char *time = default_time;
+
+       switch (argc) {
+       case 4:
+               time = argv[3];
+               /* FALLTHROUGH */
+       case 3:
+               date = argv[2];
+               rtc = argv[1];
+               break;
+       default:
+               fprintf(stderr, "usage: rtctest_setdate <rtcdev> <DD-MM-YYYY> [HH:MM:SS]\n");
+               return 1;
+       }
+
+       fd = open(rtc, O_RDONLY);
+       if (fd == -1) {
+               perror(rtc);
+               exit(errno);
+       }
+
+       sscanf(date, "%d-%d-%d", &new.tm_mday, &new.tm_mon, &new.tm_year);
+       new.tm_mon -= 1;
+       new.tm_year -= 1900;
+       sscanf(time, "%d:%d:%d", &new.tm_hour, &new.tm_min, &new.tm_sec);
+
+       fprintf(stderr, "Test will set RTC date/time to %d-%d-%d, %02d:%02d:%02d.\n",
+               new.tm_mday, new.tm_mon + 1, new.tm_year + 1900,
+               new.tm_hour, new.tm_min, new.tm_sec);
+
+       /* Write the new date in RTC */
+       retval = ioctl(fd, RTC_SET_TIME, &new);
+       if (retval == -1) {
+               perror("RTC_SET_TIME ioctl");
+               close(fd);
+               exit(errno);
+       }
+
+       /* Read back */
+       retval = ioctl(fd, RTC_RD_TIME, &current);
+       if (retval == -1) {
+               perror("RTC_RD_TIME ioctl");
+               exit(errno);
+       }
+
+       fprintf(stderr, "\n\nCurrent RTC date/time is %d-%d-%d, %02d:%02d:%02d.\n",
+               current.tm_mday, current.tm_mon + 1, current.tm_year + 1900,
+               current.tm_hour, current.tm_min, current.tm_sec);
+
+       close(fd);
+       return 0;
+}
index 353ae15daa1e5c2bc52e5aedd8c6bf6f160ea68e..32a9eadb2d4ebcca81b05291521c52cf1b999681 100644 (file)
@@ -10,7 +10,6 @@ nsleep-lat
 posix_timers
 raw_skew
 rtcpie
-rtctest
 set-2038
 set-tai
 set-timer-lat
@@ -20,4 +19,3 @@ valid-adjtimex
 adjtick
 set-tz
 freq-step
-rtctest_setdate
index 8be7895ff918964c9dc9853b362c01c279b4cf6a..c02683cfb6c9a9f403bbc330fc124d8f8c8e9751 100644 (file)
@@ -5,13 +5,13 @@ LDFLAGS += -lrt -lpthread -lm
 # these are all "safe" tests that don't modify
 # system time or require escalated privileges
 TEST_GEN_PROGS = posix_timers nanosleep nsleep-lat set-timer-lat mqueue-lat \
-            inconsistency-check raw_skew threadtest rtctest rtcpie
+            inconsistency-check raw_skew threadtest rtcpie
 
 DESTRUCTIVE_TESTS = alarmtimer-suspend valid-adjtimex adjtick change_skew \
                      skew_consistency clocksource-switch freq-step leap-a-day \
                      leapcrash set-tai set-2038 set-tz
 
-TEST_GEN_PROGS_EXTENDED = $(DESTRUCTIVE_TESTS) rtctest_setdate
+TEST_GEN_PROGS_EXTENDED = $(DESTRUCTIVE_TESTS)
 
 
 include ../lib.mk
diff --git a/tools/testing/selftests/timers/rtctest.c b/tools/testing/selftests/timers/rtctest.c
deleted file mode 100644 (file)
index 6e17b96..0000000
+++ /dev/null
@@ -1,328 +0,0 @@
-/*
- *      Real Time Clock Driver Test/Example Program
- *
- *      Compile with:
- *                  gcc -s -Wall -Wstrict-prototypes rtctest.c -o rtctest
- *
- *      Copyright (C) 1996, Paul Gortmaker.
- *
- *      Released under the GNU General Public License, version 2,
- *      included herein by reference.
- *
- */
-
-#include <stdio.h>
-#include <linux/rtc.h>
-#include <sys/ioctl.h>
-#include <sys/time.h>
-#include <sys/types.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <errno.h>
-
-#ifndef ARRAY_SIZE
-# define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
-#endif
-
-/*
- * This expects the new RTC class driver framework, working with
- * clocks that will often not be clones of what the PC-AT had.
- * Use the command line to specify another RTC if you need one.
- */
-static const char default_rtc[] = "/dev/rtc0";
-
-static struct rtc_time cutoff_dates[] = {
-       {
-               .tm_year = 70, /* 1970 -1900 */
-               .tm_mday = 1,
-       },
-       /* signed time_t 19/01/2038 3:14:08 */
-       {
-               .tm_year = 138,
-               .tm_mday = 19,
-       },
-       {
-               .tm_year = 138,
-               .tm_mday = 20,
-       },
-       {
-               .tm_year = 199, /* 2099 -1900 */
-               .tm_mday = 1,
-       },
-       {
-               .tm_year = 200, /* 2100 -1900 */
-               .tm_mday = 1,
-       },
-       /* unsigned time_t 07/02/2106 7:28:15*/
-       {
-               .tm_year = 205,
-               .tm_mon = 1,
-               .tm_mday = 7,
-       },
-       {
-               .tm_year = 206,
-               .tm_mon = 1,
-               .tm_mday = 8,
-       },
-       /* signed time on 64bit in nanoseconds 12/04/2262 01:47:16*/
-       {
-               .tm_year = 362,
-               .tm_mon = 3,
-               .tm_mday = 12,
-       },
-       {
-               .tm_year = 362, /* 2262 -1900 */
-               .tm_mon = 3,
-               .tm_mday = 13,
-       },
-};
-
-static int compare_dates(struct rtc_time *a, struct rtc_time *b)
-{
-       if (a->tm_year != b->tm_year ||
-           a->tm_mon != b->tm_mon ||
-           a->tm_mday != b->tm_mday ||
-           a->tm_hour != b->tm_hour ||
-           a->tm_min != b->tm_min ||
-           ((b->tm_sec - a->tm_sec) > 1))
-               return 1;
-
-       return 0;
-}
-
-int main(int argc, char **argv)
-{
-       int i, fd, retval, irqcount = 0, dangerous = 0;
-       unsigned long data;
-       struct rtc_time rtc_tm;
-       const char *rtc = default_rtc;
-
-       switch (argc) {
-       case 3:
-               if (*argv[2] == 'd')
-                       dangerous = 1;
-       case 2:
-               rtc = argv[1];
-               /* FALLTHROUGH */
-       case 1:
-               break;
-       default:
-               fprintf(stderr, "usage:  rtctest [rtcdev] [d]\n");
-               return 1;
-       }
-
-       fd = open(rtc, O_RDONLY);
-
-       if (fd ==  -1) {
-               perror(rtc);
-               exit(errno);
-       }
-
-       fprintf(stderr, "\n\t\t\tRTC Driver Test Example.\n\n");
-
-       /* Turn on update interrupts (one per second) */
-       retval = ioctl(fd, RTC_UIE_ON, 0);
-       if (retval == -1) {
-               if (errno == EINVAL) {
-                       fprintf(stderr,
-                               "\n...Update IRQs not supported.\n");
-                       goto test_READ;
-               }
-               perror("RTC_UIE_ON ioctl");
-               exit(errno);
-       }
-
-       fprintf(stderr, "Counting 5 update (1/sec) interrupts from reading %s:",
-                       rtc);
-       fflush(stderr);
-       for (i=1; i<6; i++) {
-               /* This read will block */
-               retval = read(fd, &data, sizeof(unsigned long));
-               if (retval == -1) {
-                       perror("read");
-                       exit(errno);
-               }
-               fprintf(stderr, " %d",i);
-               fflush(stderr);
-               irqcount++;
-       }
-
-       fprintf(stderr, "\nAgain, from using select(2) on /dev/rtc:");
-       fflush(stderr);
-       for (i=1; i<6; i++) {
-               struct timeval tv = {5, 0};     /* 5 second timeout on select */
-               fd_set readfds;
-
-               FD_ZERO(&readfds);
-               FD_SET(fd, &readfds);
-               /* The select will wait until an RTC interrupt happens. */
-               retval = select(fd+1, &readfds, NULL, NULL, &tv);
-               if (retval == -1) {
-                       perror("select");
-                       exit(errno);
-               }
-               /* This read won't block unlike the select-less case above. */
-               retval = read(fd, &data, sizeof(unsigned long));
-               if (retval == -1) {
-                       perror("read");
-                       exit(errno);
-               }
-               fprintf(stderr, " %d",i);
-               fflush(stderr);
-               irqcount++;
-       }
-
-       /* Turn off update interrupts */
-       retval = ioctl(fd, RTC_UIE_OFF, 0);
-       if (retval == -1) {
-               perror("RTC_UIE_OFF ioctl");
-               exit(errno);
-       }
-
-test_READ:
-       /* Read the RTC time/date */
-       retval = ioctl(fd, RTC_RD_TIME, &rtc_tm);
-       if (retval == -1) {
-               perror("RTC_RD_TIME ioctl");
-               exit(errno);
-       }
-
-       fprintf(stderr, "\n\nCurrent RTC date/time is %d-%d-%d, %02d:%02d:%02d.\n",
-               rtc_tm.tm_mday, rtc_tm.tm_mon + 1, rtc_tm.tm_year + 1900,
-               rtc_tm.tm_hour, rtc_tm.tm_min, rtc_tm.tm_sec);
-
-       /* Set the alarm to 5 sec in the future, and check for rollover */
-       rtc_tm.tm_sec += 5;
-       if (rtc_tm.tm_sec >= 60) {
-               rtc_tm.tm_sec %= 60;
-               rtc_tm.tm_min++;
-       }
-       if (rtc_tm.tm_min == 60) {
-               rtc_tm.tm_min = 0;
-               rtc_tm.tm_hour++;
-       }
-       if (rtc_tm.tm_hour == 24)
-               rtc_tm.tm_hour = 0;
-
-       retval = ioctl(fd, RTC_ALM_SET, &rtc_tm);
-       if (retval == -1) {
-               if (errno == EINVAL) {
-                       fprintf(stderr,
-                               "\n...Alarm IRQs not supported.\n");
-                       goto test_DATE;
-               }
-
-               perror("RTC_ALM_SET ioctl");
-               exit(errno);
-       }
-
-       /* Read the current alarm settings */
-       retval = ioctl(fd, RTC_ALM_READ, &rtc_tm);
-       if (retval == -1) {
-               if (errno == EINVAL) {
-                       fprintf(stderr,
-                                       "\n...EINVAL reading current alarm setting.\n");
-                       goto test_DATE;
-               }
-               perror("RTC_ALM_READ ioctl");
-               exit(errno);
-       }
-
-       fprintf(stderr, "Alarm time now set to %02d:%02d:%02d.\n",
-               rtc_tm.tm_hour, rtc_tm.tm_min, rtc_tm.tm_sec);
-
-       /* Enable alarm interrupts */
-       retval = ioctl(fd, RTC_AIE_ON, 0);
-       if (retval == -1) {
-               if (errno == EINVAL || errno == EIO) {
-                       fprintf(stderr,
-                               "\n...Alarm IRQs not supported.\n");
-                       goto test_DATE;
-               }
-
-               perror("RTC_AIE_ON ioctl");
-               exit(errno);
-       }
-
-       fprintf(stderr, "Waiting 5 seconds for alarm...");
-       fflush(stderr);
-       /* This blocks until the alarm ring causes an interrupt */
-       retval = read(fd, &data, sizeof(unsigned long));
-       if (retval == -1) {
-               perror("read");
-               exit(errno);
-       }
-       irqcount++;
-       fprintf(stderr, " okay. Alarm rang.\n");
-
-       /* Disable alarm interrupts */
-       retval = ioctl(fd, RTC_AIE_OFF, 0);
-       if (retval == -1) {
-               perror("RTC_AIE_OFF ioctl");
-               exit(errno);
-       }
-
-test_DATE:
-       if (!dangerous)
-               goto done;
-
-       fprintf(stderr, "\nTesting problematic dates\n");
-
-       for (i = 0; i < ARRAY_SIZE(cutoff_dates); i++) {
-               struct rtc_time current;
-
-               /* Write the new date in RTC */
-               retval = ioctl(fd, RTC_SET_TIME, &cutoff_dates[i]);
-               if (retval == -1) {
-                       perror("RTC_SET_TIME ioctl");
-                       close(fd);
-                       exit(errno);
-               }
-
-               /* Read back */
-               retval = ioctl(fd, RTC_RD_TIME, &current);
-               if (retval == -1) {
-                       perror("RTC_RD_TIME ioctl");
-                       exit(errno);
-               }
-
-               if(compare_dates(&cutoff_dates[i], &current)) {
-                       fprintf(stderr,"Setting date %d failed\n",
-                               cutoff_dates[i].tm_year + 1900);
-                       goto done;
-               }
-
-               cutoff_dates[i].tm_sec += 5;
-
-               /* Write the new alarm in RTC */
-               retval = ioctl(fd, RTC_ALM_SET, &cutoff_dates[i]);
-               if (retval == -1) {
-                       perror("RTC_ALM_SET ioctl");
-                       close(fd);
-                       exit(errno);
-               }
-
-               /* Read back */
-               retval = ioctl(fd, RTC_ALM_READ, &current);
-               if (retval == -1) {
-                       perror("RTC_ALM_READ ioctl");
-                       exit(errno);
-               }
-
-               if(compare_dates(&cutoff_dates[i], &current)) {
-                       fprintf(stderr,"Setting alarm %d failed\n",
-                               cutoff_dates[i].tm_year + 1900);
-                       goto done;
-               }
-
-               fprintf(stderr, "Setting year %d is OK \n",
-                       cutoff_dates[i].tm_year + 1900);
-       }
-done:
-       fprintf(stderr, "\n\n\t\t\t *** Test complete ***\n");
-
-       close(fd);
-
-       return 0;
-}
diff --git a/tools/testing/selftests/timers/rtctest_setdate.c b/tools/testing/selftests/timers/rtctest_setdate.c
deleted file mode 100644 (file)
index 2cb7848..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-/* Real Time Clock Driver Test
- *     by: Benjamin Gaignard (benjamin.gaignard@linaro.org)
- *
- * To build
- *     gcc rtctest_setdate.c -o rtctest_setdate
- *
- *   This program is free software: you can redistribute it and/or modify
- *   it under the terms of the GNU General Public License as published by
- *   the Free Software Foundation, either version 2 of the License, or
- *   (at your option) any later version.
- *
- *   This program is distributed in the hope that it will be useful,
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *   GNU General Public License for more details.
- */
-
-#include <stdio.h>
-#include <linux/rtc.h>
-#include <sys/ioctl.h>
-#include <sys/time.h>
-#include <sys/types.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <errno.h>
-
-static const char default_time[] = "00:00:00";
-
-int main(int argc, char **argv)
-{
-       int fd, retval;
-       struct rtc_time new, current;
-       const char *rtc, *date;
-       const char *time = default_time;
-
-       switch (argc) {
-       case 4:
-               time = argv[3];
-               /* FALLTHROUGH */
-       case 3:
-               date = argv[2];
-               rtc = argv[1];
-               break;
-       default:
-               fprintf(stderr, "usage: rtctest_setdate <rtcdev> <DD-MM-YYYY> [HH:MM:SS]\n");
-               return 1;
-       }
-
-       fd = open(rtc, O_RDONLY);
-       if (fd == -1) {
-               perror(rtc);
-               exit(errno);
-       }
-
-       sscanf(date, "%d-%d-%d", &new.tm_mday, &new.tm_mon, &new.tm_year);
-       new.tm_mon -= 1;
-       new.tm_year -= 1900;
-       sscanf(time, "%d:%d:%d", &new.tm_hour, &new.tm_min, &new.tm_sec);
-
-       fprintf(stderr, "Test will set RTC date/time to %d-%d-%d, %02d:%02d:%02d.\n",
-               new.tm_mday, new.tm_mon + 1, new.tm_year + 1900,
-               new.tm_hour, new.tm_min, new.tm_sec);
-
-       /* Write the new date in RTC */
-       retval = ioctl(fd, RTC_SET_TIME, &new);
-       if (retval == -1) {
-               perror("RTC_SET_TIME ioctl");
-               close(fd);
-               exit(errno);
-       }
-
-       /* Read back */
-       retval = ioctl(fd, RTC_RD_TIME, &current);
-       if (retval == -1) {
-               perror("RTC_RD_TIME ioctl");
-               exit(errno);
-       }
-
-       fprintf(stderr, "\n\nCurrent RTC date/time is %d-%d-%d, %02d:%02d:%02d.\n",
-               current.tm_mday, current.tm_mon + 1, current.tm_year + 1900,
-               current.tm_hour, current.tm_min, current.tm_sec);
-
-       close(fd);
-       return 0;
-}