]>
Commit | Line | Data |
---|---|---|
a6840a6e WD |
1 | /* |
2 | * (C) Copyright 2001 | |
3 | * Wolfgang Denk, DENX Software Engineering, wd@denx.de. | |
4 | * | |
1a459660 | 5 | * SPDX-License-Identifier: GPL-2.0+ |
a6840a6e WD |
6 | */ |
7 | ||
8 | /* | |
9 | * Generic RTC interface. | |
10 | */ | |
11 | #ifndef _RTC_H_ | |
12 | #define _RTC_H_ | |
13 | ||
885fc78c AT |
14 | /* bcd<->bin functions are needed by almost all the RTC drivers, let's include |
15 | * it there instead of in evey single driver */ | |
16 | ||
17 | #include <bcd.h> | |
aac51198 | 18 | #include <rtc_def.h> |
a6840a6e | 19 | |
b73a19e1 | 20 | int rtc_get (struct rtc_time *); |
d1e23194 | 21 | int rtc_set (struct rtc_time *); |
a6840a6e WD |
22 | void rtc_reset (void); |
23 | ||
fc4860c0 SG |
24 | /** |
25 | * rtc_read8() - Read an 8-bit register | |
26 | * | |
27 | * @reg: Register to read | |
28 | * @return value read | |
29 | */ | |
30 | int rtc_read8(int reg); | |
31 | ||
32 | /** | |
33 | * rtc_write8() - Write an 8-bit register | |
34 | * | |
35 | * @reg: Register to write | |
36 | * @value: Value to write | |
37 | */ | |
38 | void rtc_write8(int reg, uchar val); | |
39 | ||
40 | /** | |
41 | * rtc_read32() - Read a 32-bit value from the RTC | |
42 | * | |
43 | * @reg: Offset to start reading from | |
44 | * @return value read | |
45 | */ | |
46 | u32 rtc_read32(int reg); | |
47 | ||
48 | /** | |
49 | * rtc_write32() - Write a 32-bit value to the RTC | |
50 | * | |
51 | * @reg: Register to start writing to | |
52 | * @value: Value to write | |
53 | */ | |
54 | void rtc_write32(int reg, u32 value); | |
55 | ||
c6577f72 SG |
56 | /** |
57 | * rtc_init() - Set up the real time clock ready for use | |
58 | */ | |
59 | void rtc_init(void); | |
60 | ||
199e87c3 SG |
61 | /** |
62 | * rtc_calc_weekday() - Work out the weekday from a time | |
63 | * | |
64 | * This only works for the Gregorian calendar - i.e. after 1752 (in the UK). | |
65 | * It sets time->tm_wdaay to the correct day of the week. | |
66 | * | |
67 | * @time: Time to inspect. tm_wday is updated | |
68 | * @return 0 if OK, -EINVAL if the weekday could not be determined | |
69 | */ | |
70 | int rtc_calc_weekday(struct rtc_time *time); | |
71 | ||
9f9276c3 SG |
72 | /** |
73 | * rtc_to_tm() - Convert a time_t value into a broken-out time | |
74 | * | |
75 | * The following fields are set up by this function: | |
76 | * tm_sec, tm_min, tm_hour, tm_mday, tm_mon, tm_year, tm_wday | |
77 | * | |
78 | * Note that tm_yday and tm_isdst are set to 0. | |
79 | * | |
80 | * @time_t: Number of seconds since 1970-01-01 00:00:00 | |
81 | * @time: Place to put the broken-out time | |
82 | * @return 0 if OK, -EINVAL if the weekday could not be determined | |
83 | */ | |
84 | int rtc_to_tm(int time_t, struct rtc_time *time); | |
85 | ||
71420983 SG |
86 | /** |
87 | * rtc_mktime() - Convert a broken-out time into a time_t value | |
88 | * | |
89 | * The following fields need to be valid for this function to work: | |
90 | * tm_sec, tm_min, tm_hour, tm_mday, tm_mon, tm_year | |
91 | * | |
92 | * Note that tm_wday and tm_yday are ignored. | |
93 | * | |
94 | * @time: Broken-out time to convert | |
95 | * @return corresponding time_t value, seconds since 1970-01-01 00:00:00 | |
96 | */ | |
97 | unsigned long rtc_mktime(const struct rtc_time *time); | |
98 | ||
a6840a6e | 99 | #endif /* _RTC_H_ */ |