Advertisement
moisespilco

kernel

Aug 12th, 2015
787
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
XBasic 1.71 KB | None | 0 0
  1. /*
  2.  * Copyright (C) 2008, Guennadi Liakhovetski <lg@denx.de>
  3.  *
  4.  * See file CREDITS for list of people who contributed to this
  5.  * project.
  6.  *
  7.  * This program is free software; you can redistribute it and/or
  8.  * modify it under the terms of the GNU General Public License as
  9.  * published by the Free Software Foundation; either version 2 of
  10.  * the License, or (at your option) any later version.
  11.  *
  12.  * This program is distributed in the hope that it will be useful,
  13.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15.  * GNU General Public License for more details.
  16.  *
  17.  * You should have received a copy of the GNU General Public License
  18.  * along with this program; if not, write to the Free Software
  19.  * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
  20.  * MA 02111-1307 USA
  21.  */
  22.  
  23. #include <common.h>
  24. #include <rtc.h>
  25. #include <spi.h>
  26. #include <fsl_pmic.h>
  27.  
  28. int rtc_get(struct rtc_time *rtc)
  29. {
  30.     u32 day1, day2, time;
  31.     int tim, i = 0;
  32.  
  33.     do {
  34.         day1 = pmic_reg_read(REG_RTC_DAY);
  35.         if (day1 < 0)
  36.             return -1;
  37.  
  38.         time = pmic_reg_read(REG_RTC_TIME);
  39.         if (time < 0)
  40.             return -1;
  41.  
  42.         day2 = pmic_reg_read(REG_RTC_DAY);
  43.         if (day2 < 0)
  44.             return -1;
  45.  
  46.     } while (day1 != day2 && i++ < 3);
  47.  
  48.     tim = day1 * 86400 + time;
  49.  
  50.     to_tm(tim, rtc);
  51.  
  52.     rtc->tm_yday = 0;
  53.     rtc->tm_isdst = 0;
  54.  
  55.     return 0;
  56. }
  57.  
  58. int rtc_set(struct rtc_time *rtc)
  59. {
  60.     u32 time, day;
  61.  
  62.     time = mktime(rtc->tm_year, rtc->tm_mon, rtc->tm_mday,
  63.               rtc->tm_hour, rtc->tm_min, rtc->tm_sec);
  64.     day = time / 86400;
  65.     time %= 86400;
  66.  
  67.     pmic_reg_write(REG_RTC_DAY, day);
  68.     pmic_reg_write(REG_RTC_TIME, time);
  69.  
  70.     return 0;
  71. }
  72.  
  73. void rtc_reset(void)
  74. {
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement