Copyright clean-up (part 1):
[AROS.git] / arch / m68k-amiga / battclock / battclock_intern.c
blob70ccff39bbd98ce2ce77a869bbad96ab157e413b
1 /*
2 Copyright © 1995-2014, The AROS Development Team. All rights reserved.
3 $Id$
4 */
6 #define DEBUG 0
8 #include <aros/debug.h>
9 #include <aros/libcall.h>
11 #include "battclock_intern.h"
13 UBYTE getreg(volatile UBYTE *p, UBYTE regnum)
15 return p[regnum * 4 + 3] & 15;
17 void putreg(volatile UBYTE *p, UBYTE regnum, UBYTE v)
19 p[regnum * 4 + 3] = v;
21 UBYTE getbcd(volatile UBYTE *p, UBYTE regnum)
23 return getreg(p, regnum + 1) * 10 + getreg(p, regnum);
25 void putbcd(volatile UBYTE *p, UBYTE regnum, UBYTE v)
27 putreg(p, regnum + 1, v / 10);
28 putreg(p, regnum, v % 10);
31 void stopclock(struct BattClockBase *Battclock)
33 volatile UBYTE *p = Battclock->clockptr;
34 if (Battclock->clocktype == MSM6242B) {
35 putreg(p, 0xf, 4 + 2);
36 } else if (Battclock->clocktype == RF5C01A) {
37 putreg(p, 0xd, 0);
40 void startclock(struct BattClockBase *Battclock)
42 volatile UBYTE *p = Battclock->clockptr;
43 if (Battclock->clocktype == MSM6242B) {
44 putreg(p, 0xf, 4);
45 } else if (Battclock->clocktype == RF5C01A) {
46 putreg(p, 0xd, 8);
50 void resetbattclock(struct BattClockBase *Battclock)
52 volatile UBYTE *p = Battclock->clockptr;
53 UBYTE i, j;
55 if (!p)
56 return;
58 if (Battclock->clocktype == MSM6242B) {
59 putreg(p, 0xd, 0);
60 putreg(p, 0xe, 0);
61 putreg(p, 0xf, 2);
62 for (i = 0; i < 12; i++)
63 putreg(p, i, 0);
64 putreg(p, 0xf, 7); // reset
65 putreg(p, 0xf, 4); // leave 24h on
66 } else if (Battclock->clocktype == RF5C01A) {
67 putreg(p, 0xd, 0); // stop
68 putreg(p, 0xe, 0);
69 for (j = 0; j < 4; j++) {
70 putreg(p, 0xd, j);
71 for (i = 0; i < 12; i++)
72 putreg(p, i, 0);
74 putreg(p, 0xd, 0);
75 putreg(p, 0xf, 3); // reset
76 putreg(p, 0xf, 0); // reset off
77 putreg(p, 0xd, 8); // timer en