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