1 // SPDX-License-Identifier: GPL-2.0-or-later
2 /* Real Time Clock Driver Test
3 * by: Benjamin Gaignard (benjamin.gaignard@linaro.org)
6 * gcc rtctest_setdate.c -o rtctest_setdate
10 #include <linux/rtc.h>
11 #include <sys/ioctl.h>
13 #include <sys/types.h>
19 static const char default_time
[] = "00:00:00";
21 int main(int argc
, char **argv
)
24 struct rtc_time
new, current
;
25 const char *rtc
, *date
;
26 const char *time
= default_time
;
37 fprintf(stderr
, "usage: rtctest_setdate <rtcdev> <DD-MM-YYYY> [HH:MM:SS]\n");
41 fd
= open(rtc
, O_RDONLY
);
47 sscanf(date
, "%d-%d-%d", &new.tm_mday
, &new.tm_mon
, &new.tm_year
);
50 sscanf(time
, "%d:%d:%d", &new.tm_hour
, &new.tm_min
, &new.tm_sec
);
52 fprintf(stderr
, "Test will set RTC date/time to %d-%d-%d, %02d:%02d:%02d.\n",
53 new.tm_mday
, new.tm_mon
+ 1, new.tm_year
+ 1900,
54 new.tm_hour
, new.tm_min
, new.tm_sec
);
56 /* Write the new date in RTC */
57 retval
= ioctl(fd
, RTC_SET_TIME
, &new);
59 perror("RTC_SET_TIME ioctl");
65 retval
= ioctl(fd
, RTC_RD_TIME
, ¤t
);
67 perror("RTC_RD_TIME ioctl");
71 fprintf(stderr
, "\n\nCurrent RTC date/time is %d-%d-%d, %02d:%02d:%02d.\n",
72 current
.tm_mday
, current
.tm_mon
+ 1, current
.tm_year
+ 1900,
73 current
.tm_hour
, current
.tm_min
, current
.tm_sec
);