mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
1.0 KiB
65 lines
1.0 KiB
// SPDX-License-Identifier: GPL-2.0+ |
|
/* |
|
* Copyright (C) 2008, Guennadi Liakhovetski <[email protected]> |
|
*/ |
|
|
|
#include <common.h> |
|
#include <rtc.h> |
|
#include <spi.h> |
|
#include <power/pmic.h> |
|
#include <fsl_pmic.h> |
|
|
|
int rtc_get(struct rtc_time *rtc) |
|
{ |
|
u32 day1, day2, time; |
|
int tim, i = 0; |
|
struct pmic *p = pmic_get("FSL_PMIC"); |
|
int ret; |
|
|
|
if (!p) |
|
return -1; |
|
do { |
|
ret = pmic_reg_read(p, REG_RTC_DAY, &day1); |
|
if (ret < 0) |
|
return -1; |
|
|
|
ret = pmic_reg_read(p, REG_RTC_TIME, &time); |
|
if (ret < 0) |
|
return -1; |
|
|
|
ret = pmic_reg_read(p, REG_RTC_DAY, &day2); |
|
if (ret < 0) |
|
return -1; |
|
|
|
} while (day1 != day2 && i++ < 3); |
|
|
|
tim = day1 * 86400 + time; |
|
|
|
rtc_to_tm(tim, rtc); |
|
|
|
rtc->tm_yday = 0; |
|
rtc->tm_isdst = 0; |
|
|
|
return 0; |
|
} |
|
|
|
int rtc_set(struct rtc_time *rtc) |
|
{ |
|
u32 time, day; |
|
struct pmic *p = pmic_get("FSL_PMIC"); |
|
if (!p) |
|
return -1; |
|
|
|
time = rtc_mktime(rtc); |
|
day = time / 86400; |
|
time %= 86400; |
|
|
|
pmic_reg_write(p, REG_RTC_DAY, day); |
|
pmic_reg_write(p, REG_RTC_TIME, time); |
|
|
|
return 0; |
|
} |
|
|
|
void rtc_reset(void) |
|
{ |
|
}
|
|
|