Lines Matching +full:name +full:- +full:cap

1 // SPDX-License-Identifier: GPL-2.0-or-later
3 * rtc-efi: RTC Class Driver for EFI-based systems
5 * Copyright (C) 2009 Hewlett-Packard Development Company, L.P.
24 * returns day of the year [0-365]
29 /* efi_time_t.month is in the [1-12] so, we need -1 */ in compute_yday()
30 return rtc_year_days(eft->day, eft->month - 1, eft->year); in compute_yday()
34 * returns day of the week [0-6] 0=Sunday
39 int ndays = eft->year * (365 % 7) in compute_wday()
40 + (eft->year - 1) / 4 in compute_wday()
41 - (eft->year - 1) / 100 in compute_wday()
42 + (eft->year - 1) / 400 in compute_wday()
55 eft->year = wtime->tm_year + 1900; in convert_to_efi_time()
56 eft->month = wtime->tm_mon + 1; in convert_to_efi_time()
57 eft->day = wtime->tm_mday; in convert_to_efi_time()
58 eft->hour = wtime->tm_hour; in convert_to_efi_time()
59 eft->minute = wtime->tm_min; in convert_to_efi_time()
60 eft->second = wtime->tm_sec; in convert_to_efi_time()
61 eft->nanosecond = 0; in convert_to_efi_time()
62 eft->daylight = wtime->tm_isdst ? EFI_ISDST : 0; in convert_to_efi_time()
63 eft->timezone = EFI_UNSPECIFIED_TIMEZONE; in convert_to_efi_time()
71 if (eft->second >= 60) in convert_from_efi_time()
73 wtime->tm_sec = eft->second; in convert_from_efi_time()
75 if (eft->minute >= 60) in convert_from_efi_time()
77 wtime->tm_min = eft->minute; in convert_from_efi_time()
79 if (eft->hour >= 24) in convert_from_efi_time()
81 wtime->tm_hour = eft->hour; in convert_from_efi_time()
83 if (!eft->day || eft->day > 31) in convert_from_efi_time()
85 wtime->tm_mday = eft->day; in convert_from_efi_time()
87 if (!eft->month || eft->month > 12) in convert_from_efi_time()
89 wtime->tm_mon = eft->month - 1; in convert_from_efi_time()
91 if (eft->year < 1900 || eft->year > 9999) in convert_from_efi_time()
93 wtime->tm_year = eft->year - 1900; in convert_from_efi_time()
95 /* day in the year [1-365]*/ in convert_from_efi_time()
96 wtime->tm_yday = compute_yday(eft); in convert_from_efi_time()
98 /* day of the week [0-6], Sunday=0 */ in convert_from_efi_time()
99 wtime->tm_wday = compute_wday(eft, wtime->tm_yday); in convert_from_efi_time()
101 switch (eft->daylight & EFI_ISDST) { in convert_from_efi_time()
103 wtime->tm_isdst = 1; in convert_from_efi_time()
106 wtime->tm_isdst = 0; in convert_from_efi_time()
109 wtime->tm_isdst = -1; in convert_from_efi_time()
119 efi_time_cap_t cap; in efi_read_time() local
121 status = efi.get_time(&eft, &cap); in efi_read_time()
126 return -EINVAL; in efi_read_time()
130 return -EIO; in efi_read_time()
144 return status == EFI_SUCCESS ? 0 : -EINVAL; in efi_set_time()
150 efi_time_cap_t cap; in efi_procfs() local
153 memset(&cap, 0, sizeof(cap)); in efi_procfs()
155 efi.get_time(&eft, &cap); in efi_procfs()
159 "Date\t\t: %u-%u-%u\n" in efi_procfs()
178 cap.resolution, cap.accuracy, cap.sets_to_zero); in efi_procfs()
193 efi_time_cap_t cap; in efi_rtc_probe() local
196 if (efi.get_time(&eft, &cap) != EFI_SUCCESS) in efi_rtc_probe()
197 return -ENODEV; in efi_rtc_probe()
199 rtc = devm_rtc_allocate_device(&dev->dev); in efi_rtc_probe()
205 rtc->ops = &efi_rtc_ops; in efi_rtc_probe()
206 clear_bit(RTC_FEATURE_ALARM, rtc->features); in efi_rtc_probe()
208 device_init_wakeup(&dev->dev, true); in efi_rtc_probe()
215 .name = "rtc-efi",
224 MODULE_ALIAS("platform:rtc-efi");