Lines Matching +full:0 +full:- +full:mon

1 // SPDX-License-Identifier: GPL-2.0
3 * linux/arch/sh/boards/sh03/rtc.c -- CTP/PCI-SH03 on-chip RTC support
19 #define RTC_BASE 0xb0000000
20 #define RTC_SEC1 (RTC_BASE + 0)
43 unsigned int year, mon, day, hour, min, sec; in sh03_rtc_gettimeofday() local
48 sec = (__raw_readb(RTC_SEC1) & 0xf) + (__raw_readb(RTC_SEC10) & 0x7) * 10; in sh03_rtc_gettimeofday()
49 min = (__raw_readb(RTC_MIN1) & 0xf) + (__raw_readb(RTC_MIN10) & 0xf) * 10; in sh03_rtc_gettimeofday()
50 hour = (__raw_readb(RTC_HOU1) & 0xf) + (__raw_readb(RTC_HOU10) & 0xf) * 10; in sh03_rtc_gettimeofday()
51 day = (__raw_readb(RTC_DAY1) & 0xf) + (__raw_readb(RTC_DAY10) & 0xf) * 10; in sh03_rtc_gettimeofday()
52 mon = (__raw_readb(RTC_MON1) & 0xf) + (__raw_readb(RTC_MON10) & 0xf) * 10; in sh03_rtc_gettimeofday()
53 year = (__raw_readb(RTC_YEA1) & 0xf) + (__raw_readb(RTC_YEA10) & 0xf) * 10 in sh03_rtc_gettimeofday()
54 + (__raw_readb(RTC_YEA100 ) & 0xf) * 100 in sh03_rtc_gettimeofday()
55 + (__raw_readb(RTC_YEA1000) & 0xf) * 1000; in sh03_rtc_gettimeofday()
56 } while (sec != (__raw_readb(RTC_SEC1) & 0xf) + (__raw_readb(RTC_SEC10) & 0x7) * 10); in sh03_rtc_gettimeofday()
57 if (year == 0 || mon < 1 || mon > 12 || day > 31 || day < 1 || in sh03_rtc_gettimeofday()
60 "SH-03 RTC: invalid value, resetting to 1 Jan 2000\n"); in sh03_rtc_gettimeofday()
61 printk("year=%d, mon=%d, day=%d, hour=%d, min=%d, sec=%d\n", in sh03_rtc_gettimeofday()
62 year, mon, day, hour, min, sec); in sh03_rtc_gettimeofday()
64 __raw_writeb(0, RTC_SEC1); __raw_writeb(0, RTC_SEC10); in sh03_rtc_gettimeofday()
65 __raw_writeb(0, RTC_MIN1); __raw_writeb(0, RTC_MIN10); in sh03_rtc_gettimeofday()
66 __raw_writeb(0, RTC_HOU1); __raw_writeb(0, RTC_HOU10); in sh03_rtc_gettimeofday()
68 __raw_writeb(1, RTC_DAY1); __raw_writeb(0, RTC_DAY10); in sh03_rtc_gettimeofday()
69 __raw_writeb(1, RTC_MON1); __raw_writeb(0, RTC_MON10); in sh03_rtc_gettimeofday()
70 __raw_writeb(0, RTC_YEA1); __raw_writeb(0, RTC_YEA10); in sh03_rtc_gettimeofday()
71 __raw_writeb(0, RTC_YEA100); in sh03_rtc_gettimeofday()
73 __raw_writeb(0, RTC_CTL); in sh03_rtc_gettimeofday()
79 tm->tm_sec = sec; in sh03_rtc_gettimeofday()
80 tm->tm_min = min; in sh03_rtc_gettimeofday()
81 tm->tm_hour = hour; in sh03_rtc_gettimeofday()
82 tm->tm_mday = day; in sh03_rtc_gettimeofday()
83 tm->tm_mon = mon; in sh03_rtc_gettimeofday()
84 tm->tm_year = year - 1900; in sh03_rtc_gettimeofday()
86 return 0; in sh03_rtc_gettimeofday()
91 int retval = 0; in set_rtc_mmss()
97 for (i = 0 ; i < 1000000 ; i++) /* may take up to 1 second... */ in set_rtc_mmss()
100 cmos_minutes = (__raw_readb(RTC_MIN1) & 0xf) + (__raw_readb(RTC_MIN10) & 0xf) * 10; in set_rtc_mmss()
101 real_seconds = tm->tm_sec; in set_rtc_mmss()
102 real_minutes = tm->tm_min; in set_rtc_mmss()
103 if (((abs(real_minutes - cmos_minutes) + 15)/30) & 1) in set_rtc_mmss()
107 if (abs(real_minutes - cmos_minutes) < 30) { in set_rtc_mmss()
116 retval = -EINVAL; in set_rtc_mmss()
137 pdev = platform_device_register_data(NULL, "rtc-generic", -1, in sh03_time_init()