• Home
  • Raw
  • Download

Lines Matching +full:no +full:- +full:read +full:- +full:rollover

31 #include <asm/bootinfo-vme.h>
50 if (be16_to_cpu(bi->tag) == BI_VME_TYPE) in bvme6000_parse_bootinfo()
66 pit->pcddr |= 0x10; /* WDOG enable */ in bvme6000_reset()
118 pit->pgcr = 0x00; /* Unidirectional 8 bit, no handshake for now */ in config_bvme6000()
119 pit->psrr = 0x18; /* PIACK and PIRQ functions enabled */ in config_bvme6000()
120 pit->pacr = 0x00; /* Sub Mode 00, H2 i/p, no DMA */ in config_bvme6000()
121 pit->padr = 0x00; /* Just to be tidy! */ in config_bvme6000()
122 pit->paddr = 0x00; /* All inputs for now (safest) */ in config_bvme6000()
123 pit->pbcr = 0x80; /* Sub Mode 1x, H4 i/p, no DMA */ in config_bvme6000()
124 pit->pbdr = 0xbc | (*config_reg_ptr & BVME_CONFIG_SW1 ? 0 : 0x40); in config_bvme6000()
126 pit->pbddr = 0xf3; /* Mostly outputs */ in config_bvme6000()
127 pit->pcdr = 0x01; /* PA transceiver disabled */ in config_bvme6000()
128 pit->pcddr = 0x03; /* WDOG disable */ in config_bvme6000()
161 msr = rtc->msr & 0xc0; in bvme6000_timer_int()
162 rtc->msr = msr | 0x20; /* Ack the interrupt */ in bvme6000_timer_int()
172 * So, when reading the elapsed time, you should read timer1,
181 unsigned char msr = rtc->msr & 0xc0; in bvme6000_sched_init()
183 rtc->msr = 0; /* Ensure timer registers accessible */ in bvme6000_sched_init()
189 rtc->t1cr_omr = 0x04; /* Mode 2, ext clk */ in bvme6000_sched_init()
190 rtc->t1msb = 39999 >> 8; in bvme6000_sched_init()
191 rtc->t1lsb = 39999 & 0xff; in bvme6000_sched_init()
192 rtc->irr_icr1 &= 0xef; /* Route timer 1 to INTR pin */ in bvme6000_sched_init()
193 rtc->msr = 0x40; /* Access int.cntrl, etc */ in bvme6000_sched_init()
194 rtc->pfr_icr0 = 0x80; /* Just timer 1 ints enabled */ in bvme6000_sched_init()
195 rtc->irr_icr1 = 0; in bvme6000_sched_init()
196 rtc->t1cr_omr = 0x0a; /* INTR+T1 active lo, push-pull */ in bvme6000_sched_init()
197 rtc->t0cr_rtmr &= 0xdf; /* Stop timers in standby */ in bvme6000_sched_init()
198 rtc->msr = 0; /* Access timer 1 control */ in bvme6000_sched_init()
199 rtc->t1cr_omr = 0x05; /* Mode 2, ext clk, GO */ in bvme6000_sched_init()
201 rtc->msr = msr; in bvme6000_sched_init()
212 * NOTE: Don't accept any readings within 5us of rollover, as
222 unsigned char msr = rtc->msr & 0xc0; in bvme6000_gettimeoffset()
226 rtc->msr = 0; /* Ensure timer registers accessible */ in bvme6000_gettimeoffset()
230 t1int = rtc->msr & 0x20; in bvme6000_gettimeoffset()
231 t1op = pit->pcdr & 0x04; in bvme6000_gettimeoffset()
232 rtc->t1cr_omr |= 0x40; /* Latch timer1 */ in bvme6000_gettimeoffset()
233 v = rtc->t1msb << 8; /* Read timer1 */ in bvme6000_gettimeoffset()
234 v |= rtc->t1lsb; /* Read timer1 */ in bvme6000_gettimeoffset()
235 } while (t1int != (rtc->msr & 0x20) || in bvme6000_gettimeoffset()
236 t1op != (pit->pcdr & 0x04) || in bvme6000_gettimeoffset()
237 abs(ov-v) > 80 || in bvme6000_gettimeoffset()
240 v = 39999 - v; in bvme6000_gettimeoffset()
246 rtc->msr = msr; in bvme6000_gettimeoffset()
252 * Looks like op is non-zero for setting the clock, and zero for
262 * int wday; 0..6, 0 is Sunday, -1 means unknown/don't set
269 unsigned char msr = rtc->msr & 0xc0; in bvme6000_hwclk()
271 rtc->msr = 0x40; /* Ensure clock and real-time-mode-register in bvme6000_hwclk()
275 rtc->t0cr_rtmr = t->tm_year%4; in bvme6000_hwclk()
276 rtc->bcd_tenms = 0; in bvme6000_hwclk()
277 rtc->bcd_sec = bin2bcd(t->tm_sec); in bvme6000_hwclk()
278 rtc->bcd_min = bin2bcd(t->tm_min); in bvme6000_hwclk()
279 rtc->bcd_hr = bin2bcd(t->tm_hour); in bvme6000_hwclk()
280 rtc->bcd_dom = bin2bcd(t->tm_mday); in bvme6000_hwclk()
281 rtc->bcd_mth = bin2bcd(t->tm_mon + 1); in bvme6000_hwclk()
282 rtc->bcd_year = bin2bcd(t->tm_year%100); in bvme6000_hwclk()
283 if (t->tm_wday >= 0) in bvme6000_hwclk()
284 rtc->bcd_dow = bin2bcd(t->tm_wday+1); in bvme6000_hwclk()
285 rtc->t0cr_rtmr = t->tm_year%4 | 0x08; in bvme6000_hwclk()
288 { /* Read.... */ in bvme6000_hwclk()
290 t->tm_sec = bcd2bin(rtc->bcd_sec); in bvme6000_hwclk()
291 t->tm_min = bcd2bin(rtc->bcd_min); in bvme6000_hwclk()
292 t->tm_hour = bcd2bin(rtc->bcd_hr); in bvme6000_hwclk()
293 t->tm_mday = bcd2bin(rtc->bcd_dom); in bvme6000_hwclk()
294 t->tm_mon = bcd2bin(rtc->bcd_mth)-1; in bvme6000_hwclk()
295 t->tm_year = bcd2bin(rtc->bcd_year); in bvme6000_hwclk()
296 if (t->tm_year < 70) in bvme6000_hwclk()
297 t->tm_year += 100; in bvme6000_hwclk()
298 t->tm_wday = bcd2bin(rtc->bcd_dow)-1; in bvme6000_hwclk()
299 } while (t->tm_sec != bcd2bin(rtc->bcd_sec)); in bvme6000_hwclk()
302 rtc->msr = msr; in bvme6000_hwclk()