Lines Matching +full:0 +full:x31
36 return (year / 100) & 0x3; in year2cb()
41 return 1900 + 100 * ((cb + 1) & 0x3); in cb2year()
48 #define RTC_SEC 0x0
49 #define RTC_MIN 0x1
50 #define RTC_HOUR 0x2
51 #define RTC_DAY 0x3
52 #define RTC_DATE 0x4
53 #define RTC_MONTH 0x5
54 #define RTC_YEAR 0x6
58 #define RTC_CTRL 0x7
65 if (i2c_read(CONFIG_SYS_I2C_RTC_ADDR, 0, 1, data, sizeof(data))) { in rtc_dump()
70 label, data[0], data[1], data[2], data[3], in rtc_dump()
85 static const uchar daysInMonth[0x13] = { in rtc_validate()
86 0x00, 0x31, 0x29, 0x31, 0x30, 0x31, 0x30, 0x31, in rtc_validate()
87 0x31, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, in rtc_validate()
88 0x31, 0x30, 0x31 in rtc_validate()
94 if (i2c_read(CONFIG_SYS_I2C_RTC_ADDR, 0, 1, data, sizeof(data))) { in rtc_validate()
96 return 0; in rtc_validate()
102 if (0x00 != (data[RTC_CTRL] & 0x80)) { in rtc_validate()
104 data[RTC_SEC] = 0x80; in rtc_validate()
107 return 0; in rtc_validate()
112 * OUT bit to "0", reset the date registers, and start the oscillator. in rtc_validate()
114 min = data[RTC_MIN] & 0x7F; in rtc_validate()
116 month = data[RTC_MONTH] & 0x3F; in rtc_validate()
118 if (0x59 < data[RTC_SEC] || 0x09 < (data[RTC_SEC] & 0x0F) || in rtc_validate()
119 0x59 < min || 0x09 < (min & 0x0F) || in rtc_validate()
120 0x23 < data[RTC_HOUR] || 0x09 < (data[RTC_HOUR] & 0x0F) || in rtc_validate()
121 0x07 < data[RTC_DAY] || 0x00 == data[RTC_DAY] || in rtc_validate()
122 0x12 < month || in rtc_validate()
123 0x99 < years || 0x09 < (years & 0x0F) || in rtc_validate()
124 daysInMonth[month] < date || 0x09 < (date & 0x0F) || 0x00 == date || in rtc_validate()
125 (0x29 == date && 0x02 == month && in rtc_validate()
126 ((0x00 != (years & 0x03)) || in rtc_validate()
127 (0x00 == years && 0x00 != (data[RTC_MONTH] & 0xC0))))) { in rtc_validate()
132 data[RTC_SEC] = 0x00; in rtc_validate()
133 data[RTC_MIN] &= 0x80; /* preserve OFIE bit */ in rtc_validate()
134 data[RTC_HOUR] = 0x00; in rtc_validate()
135 data[RTC_DAY] = 0x02; in rtc_validate()
136 data[RTC_DATE] = 0x01; in rtc_validate()
137 data[RTC_MONTH] = 0xC1; in rtc_validate()
138 data[RTC_YEAR] = 0x00; in rtc_validate()
139 data[RTC_CTRL] &= 0x7F; /* reset OUT bit */ in rtc_validate()
141 if (i2c_write(CONFIG_SYS_I2C_RTC_ADDR, 0, 1, data, sizeof(data))) { in rtc_validate()
143 return 0; in rtc_validate()
156 tmp->tm_sec = bcd2bin(data[RTC_SEC] & 0x7F); in rtc_get()
157 tmp->tm_min = bcd2bin(data[RTC_MIN] & 0x7F); in rtc_get()
158 tmp->tm_hour = bcd2bin(data[RTC_HOUR] & 0x3F); in rtc_get()
159 tmp->tm_mday = bcd2bin(data[RTC_DATE] & 0x3F); in rtc_get()
160 tmp->tm_mon = bcd2bin(data[RTC_MONTH] & 0x1F); in rtc_get()
162 tmp->tm_wday = bcd2bin(data[RTC_DAY] & 0x07) - 1; in rtc_get()
163 tmp->tm_yday = 0; in rtc_get()
164 tmp->tm_isdst = 0; in rtc_get()
170 return 0; in rtc_get()
184 data[RTC_SEC] = (data[RTC_SEC] & 0x80) | (bin2bcd(tmp->tm_sec) & 0x7F); in rtc_set()
185 data[RTC_MIN] = (data[RTC_MIN] & 0X80) | (bin2bcd(tmp->tm_min) & 0X7F); in rtc_set()
186 data[RTC_HOUR] = bin2bcd(tmp->tm_hour) & 0x3F; in rtc_set()
187 data[RTC_DATE] = bin2bcd(tmp->tm_mday) & 0x3F; in rtc_set()
188 data[RTC_MONTH] = bin2bcd(tmp->tm_mon) & 0x1F; in rtc_set()
191 data[RTC_DAY] = bin2bcd(tmp->tm_wday + 1) & 0x07; in rtc_set()
192 if (i2c_write(CONFIG_SYS_I2C_RTC_ADDR, 0, 1, data, RTC_REG_CNT)) { in rtc_set()
197 return 0; in rtc_set()
211 * between 0x00 and 0x3F, inclusive. The five least-significan bits in rtc_reset()
214 * register is updated. The value 0x00 imples no correction. Consult in rtc_reset()
218 unsigned long const l = simple_strtoul(s, 0, 16); in rtc_reset()
220 if (l <= 0x3F) { in rtc_reset()
221 if ((data[RTC_CTRL] & 0x3F) != l) { in rtc_reset()
222 printf("Setting RTC calibration to 0x%02lX\n", in rtc_reset()
224 data[RTC_CTRL] &= 0xC0; in rtc_reset()
234 data[RTC_CTRL] &= 0xBF; in rtc_reset()