@@ -28,6 +28,7 @@ static char *rtc_file = "/dev/rtc0";
enum rtc_alarm_state {
RTC_ALARM_UNKNOWN,
RTC_ALARM_ENABLED,
+ RTC_ALARM_MINUTE,
RTC_ALARM_DISABLED,
};
@@ -100,6 +101,9 @@ static enum rtc_alarm_state get_rtc_alarm_state(int fd)
if (rc < 0)
return RTC_ALARM_UNKNOWN;
+ if (param.uvalue & _BITUL(RTC_FEATURE_ALARM_RES_MINUTE))
+ return RTC_ALARM_MINUTE;
+
if ((param.uvalue & _BITUL(RTC_FEATURE_ALARM)) == 0)
return RTC_ALARM_DISABLED;
@@ -230,6 +234,8 @@ TEST_F(rtc, alarm_alm_set) {
alarm_state = get_rtc_alarm_state(self->fd);
if (alarm_state == RTC_ALARM_DISABLED)
SKIP(return, "Skipping test since alarms are not supported.");
+ if (alarm_state == RTC_ALARM_MINUTE)
+ SKIP(return, "Skipping test since alarms have minute resolution.");
rc = ioctl(self->fd, RTC_RD_TIME, &tm);
ASSERT_NE(-1, rc);
@@ -298,6 +304,8 @@ TEST_F(rtc, alarm_wkalm_set) {
alarm_state = get_rtc_alarm_state(self->fd);
if (alarm_state == RTC_ALARM_DISABLED)
SKIP(return, "Skipping test since alarms are not supported.");
+ if (alarm_state == RTC_ALARM_MINUTE)
+ SKIP(return, "Skipping test since alarms have minute resolution.");
rc = ioctl(self->fd, RTC_RD_TIME, &alarm.time);
ASSERT_NE(-1, rc);
Skip second resolution alarm test if RTC is minute resolution. Signed-off-by: Weizhao Ouyang <o451686892@gmail.com> --- tools/testing/selftests/rtc/rtctest.c | 8 ++++++++ 1 file changed, 8 insertions(+)