staticint da9052_read_alarm(struct da9052_rtc *rtc, struct rtc_time *rtc_tm)
{ int ret;
uint8_t v[2][5]; int idx = 1; int timeout = DA9052_GET_TIME_RETRIES;
ret = da9052_group_read(rtc->da9052, DA9052_ALARM_MI_REG, 5, &v[0][0]); if (ret) {
rtc_err(rtc, "Failed to group read ALM: %d\n", ret); return ret;
}
do {
ret = da9052_group_read(rtc->da9052,
DA9052_ALARM_MI_REG, 5, &v[idx][0]); if (ret) {
rtc_err(rtc, "Failed to group read ALM: %d\n", ret); return ret;
}
if (rtc_tm->tm_sec > 0) {
alm_time += 60 - rtc_tm->tm_sec;
rtc_time64_to_tm(alm_time, rtc_tm);
}
BUG_ON(rtc_tm->tm_sec); /* it will cause repeated irqs if not zero */
rtc_tm->tm_year -= 100;
rtc_tm->tm_mon += 1;
ret = da9052_reg_update(da9052, DA9052_ALARM_MI_REG,
DA9052_RTC_MIN, rtc_tm->tm_min); if (ret != 0) {
rtc_err(rtc, "Failed to write ALRM MIN: %d\n", ret); return ret;
}
ret = da9052_group_write(da9052, DA9052_ALARM_H_REG, 3, v); if (ret < 0) return ret;
ret = da9052_reg_update(da9052, DA9052_ALARM_Y_REG,
DA9052_RTC_YEAR, rtc_tm->tm_year); if (ret != 0)
rtc_err(rtc, "Failed to write ALRM YEAR: %d\n", ret);
return ret;
}
staticint da9052_rtc_get_alarm_status(struct da9052_rtc *rtc)
{ int ret;
ret = da9052_reg_read(rtc->da9052, DA9052_ALARM_Y_REG); if (ret < 0) {
rtc_err(rtc, "Failed to read ALM: %d\n", ret); return ret;
}
return !!(ret&DA9052_ALARM_Y_ALARM_ON);
}
staticint da9052_rtc_read_time(struct device *dev, struct rtc_time *rtc_tm)
{ struct da9052_rtc *rtc = dev_get_drvdata(dev); int ret;
uint8_t v[2][6]; int idx = 1; int timeout = DA9052_GET_TIME_RETRIES;
ret = da9052_group_read(rtc->da9052, DA9052_COUNT_S_REG, 6, &v[0][0]); if (ret) {
rtc_err(rtc, "Failed to read RTC time : %d\n", ret); return ret;
}
do {
ret = da9052_group_read(rtc->da9052,
DA9052_COUNT_S_REG, 6, &v[idx][0]); if (ret) {
rtc_err(rtc, "Failed to read RTC time : %d\n", ret); return ret;
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.