Annotation of sys/arch/hp300/hp300/clockreg.h, Revision 1.1.1.1
1.1 nbrk 1: /* $OpenBSD: clockreg.h,v 1.5 2005/01/14 22:39:27 miod Exp $ */
2: /* $NetBSD: clockreg.h,v 1.5 1994/10/26 07:25:26 cgd Exp $ */
3:
4: /*
5: * Copyright (c) 1988 University of Utah.
6: * Copyright (c) 1982, 1990, 1993
7: * The Regents of the University of California. All rights reserved.
8: *
9: * This code is derived from software contributed to Berkeley by
10: * the Systems Programming Group of the University of Utah Computer
11: * Science Department.
12: *
13: * Redistribution and use in source and binary forms, with or without
14: * modification, are permitted provided that the following conditions
15: * are met:
16: * 1. Redistributions of source code must retain the above copyright
17: * notice, this list of conditions and the following disclaimer.
18: * 2. Redistributions in binary form must reproduce the above copyright
19: * notice, this list of conditions and the following disclaimer in the
20: * documentation and/or other materials provided with the distribution.
21: * 3. Neither the name of the University nor the names of its contributors
22: * may be used to endorse or promote products derived from this software
23: * without specific prior written permission.
24: *
25: * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
26: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
28: * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
29: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
30: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
31: * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
32: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
33: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
34: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
35: * SUCH DAMAGE.
36: *
37: * from: Utah $Hdr: clockreg.h 1.14 91/01/18$
38: *
39: * @(#)clockreg.h 8.2 (Berkeley) 1/12/94
40: */
41:
42: /*
43: * HP300 "real time clock" (MC6840) registers
44: */
45:
46: struct clkreg {
47: u_char clk_dummy1;
48: u_char clk_cr3;
49: #define clk_cr1 clk_cr3
50: u_char clk_dummy2;
51: u_char clk_cr2;
52: #define clk_sr clk_cr2
53: u_char clk_dummy3;
54: u_char clk_msb1;
55: u_char clk_dummy4;
56: u_char clk_lsb1;
57: u_char clk_dummy5;
58: u_char clk_msb2;
59: u_char clk_dummy6;
60: u_char clk_lsb2;
61: u_char clk_dummy7;
62: u_char clk_msb3;
63: u_char clk_dummy8;
64: u_char clk_lsb3;
65: };
66:
67: /* base/offsets for register access (for locore.s) */
68: #define CLKBASE IIOPOFF(0x5F8000)
69: #define CLKCR1 0x1
70: #define CLKCR2 0x3
71: #define CLKCR3 CLKCR1
72: #define CLKSR CLKCR2
73: #define CLKMSB1 0x5
74: #define CLKMSB2 0x9
75: #define CLKMSB3 0xD
76:
77: /* output of counter 3 clocks counter 2 */
78:
79: #define CLK_OENAB 0x80 /* output enable */
80: #define CLK_IENAB 0x40 /* interrupt enable */
81: #define CLK_8BIT 0x04 /* 8 bit mode */
82: #define CLK_RESET 0x01 /* chip reset (CR1 only) */
83: #define CLK_CR1 0x01 /* select CR1 (CR2 only) */
84: #define CLK_CR3 0x00 /* select CR3 (CR2 only) */
85: #define CLK_INT1 0x01 /* interrupt flag for timer 1 (SR only) */
86: #define CLK_INT2 0x02 /* interrupt flag for timer 2 (SR only) */
87: #define CLK_INT3 0x04 /* interrupt flag for timer 3 (SR only) */
88: #define CLK_INTR 0x80 /* composite interrupt flag (SR only) */
89:
90: #define CLK_RESOLUTION 4 /* 4 usec resolution (250KHz) */
91: #define CLK_INTERVAL 2500 /* 10msec interval at 250KHz */
92: #ifdef NOTDEF
93: #define CLK_INTERVAL 5000 /* 20msec interval at 250KHz */
94: #endif
95:
96: /*
97: * HP300 battery-backed clock
98: */
99:
100: #define BBCADDR (u_int8_t *)(IIOV(0x420000))
101:
102: struct bbc_tm {
103: int tm_sec;
104: int tm_min;
105: int tm_hour;
106: int tm_mday;
107: int tm_mon;
108: int tm_year;
109: };
110:
111: #define FEBRUARY 2
112: #define STARTOFTIME 1970
113: #define SECDAY 86400L
114: #define SECYR (SECDAY * 365)
115:
116: #define BBC_SET_REG 0xe0
117: #define BBC_WRITE_REG 0xc2
118: #define BBC_READ_REG 0xc3
119: #define NUM_BBC_REGS 12
120:
121: #define leapyear(year) ((year) % 4 == 0)
122: #define range_test(n, l, h) if ((n) < (l) || (n) > (h)) return(0)
123: #define days_in_year(a) (leapyear(a) ? 366 : 365)
124: #define days_in_month(a) (month_days[(a) - 1])
125: #define bbc_to_decimal(a,b) (bbc_registers[a] * 10 + bbc_registers[b])
126: #define decimal_to_bbc(a,b,n) { \
127: bbc_registers[a] = (n) % 10; \
128: bbc_registers[b] = (n) / 10; \
129: }
CVSweb