]>
Commit | Line | Data |
---|---|---|
83d290c5 | 1 | // SPDX-License-Identifier: GPL-2.0+ |
7ce63709 GL |
2 | /* |
3 | * Copyright (C) 2008, Guennadi Liakhovetski <lg@denx.de> | |
7ce63709 GL |
4 | */ |
5 | ||
d678a59d | 6 | #include <common.h> |
7ce63709 GL |
7 | #include <rtc.h> |
8 | #include <spi.h> | |
c7336815 | 9 | #include <power/pmic.h> |
dfe5e14f | 10 | #include <fsl_pmic.h> |
d255bb0e | 11 | |
7ce63709 GL |
12 | int rtc_get(struct rtc_time *rtc) |
13 | { | |
14 | u32 day1, day2, time; | |
dfe5e14f | 15 | int tim, i = 0; |
c7336815 | 16 | struct pmic *p = pmic_get("FSL_PMIC"); |
4380075e | 17 | int ret; |
7ce63709 | 18 | |
c7336815 ŁM |
19 | if (!p) |
20 | return -1; | |
7ce63709 | 21 | do { |
4380075e SB |
22 | ret = pmic_reg_read(p, REG_RTC_DAY, &day1); |
23 | if (ret < 0) | |
dfe5e14f | 24 | return -1; |
7ce63709 | 25 | |
4380075e SB |
26 | ret = pmic_reg_read(p, REG_RTC_TIME, &time); |
27 | if (ret < 0) | |
dfe5e14f | 28 | return -1; |
7ce63709 | 29 | |
4380075e SB |
30 | ret = pmic_reg_read(p, REG_RTC_DAY, &day2); |
31 | if (ret < 0) | |
dfe5e14f | 32 | return -1; |
7ce63709 | 33 | |
7ce63709 GL |
34 | } while (day1 != day2 && i++ < 3); |
35 | ||
36 | tim = day1 * 86400 + time; | |
dfe5e14f | 37 | |
9f9276c3 | 38 | rtc_to_tm(tim, rtc); |
7ce63709 GL |
39 | |
40 | rtc->tm_yday = 0; | |
41 | rtc->tm_isdst = 0; | |
42 | ||
43 | return 0; | |
44 | } | |
45 | ||
d1e23194 | 46 | int rtc_set(struct rtc_time *rtc) |
7ce63709 | 47 | { |
dfe5e14f | 48 | u32 time, day; |
c7336815 ŁM |
49 | struct pmic *p = pmic_get("FSL_PMIC"); |
50 | if (!p) | |
51 | return -1; | |
d255bb0e | 52 | |
71420983 | 53 | time = rtc_mktime(rtc); |
7ce63709 GL |
54 | day = time / 86400; |
55 | time %= 86400; | |
56 | ||
4380075e SB |
57 | pmic_reg_write(p, REG_RTC_DAY, day); |
58 | pmic_reg_write(p, REG_RTC_TIME, time); | |
d1e23194 | 59 | |
f3a7bddc | 60 | return 0; |
7ce63709 GL |
61 | } |
62 | ||
63 | void rtc_reset(void) | |
64 | { | |
65 | } |