xref: /netbsd-src/sys/dev/i2c/pcf8583reg.h (revision c5606116b46490c005dd7c089d8e7d65a338cdc6)
1 /*	$NetBSD: pcf8583reg.h,v 1.3 2013/08/07 19:38:45 soren Exp $	*/
2 
3 /*
4  * Ben Harris, 2000
5  *
6  * This file is in the public domain
7  */
8 
9 /*
10  * Philips PCF8583 RTC registers
11  */
12 
13 /* We only have clock mode registers here */
14 
15 #ifndef _PCF8583REG_H
16 #define _PCF8583REG_H
17 
18 /*
19  * PCF8583 RTC I2C address:
20  *
21  *	101 0000
22  */
23 #define PCF8583_ADDRMASK	0x3ff
24 #define PCF8583_ADDR		0x50
25 
26 #define PCF8583_REG_CSR		0x00
27 #define PCF8583_REG_CENTI	0x01
28 #define PCF8583_REG_SEC		0x02
29 #define PCF8583_REG_MIN		0x03
30 #define PCF8583_REG_HOUR	0x04
31 #define PCF8583_REG_YEARDATE	0x05
32 #define PCF8583_REG_WKDYMON	0x06
33 #define PCF8583_REG_TIMER	0x07
34 #define PCF8583_REG_ALMCTL	0x08
35 #define PCF8583_REG_ALMCENTI	0x09
36 #define PCF8583_REG_ALMSEC	0x0a
37 #define PCF8583_REG_ALMMIN	0x0b
38 #define PCF8583_REG_ALMHOUR	0x0c
39 #define PCF8583_REG_ALMDAY	0x0d
40 #define PCF8583_REG_ALMMON	0x0e
41 #define PCF8583_REG_ALMTIMER	0x0f
42 
43 #define	PCF8583_NVRAM_START	0x10
44 #define	PCF8583_NVRAM_SIZE	240
45 
46 #define PCF8583_CSR_TIMER	0x01
47 #define PCF8583_CSR_SECTICK	0x01
48 #define PCF8583_CSR_ALARM	0x02
49 #define PCF8583_CSR_MINTICK	0x02
50 #define PCF8583_CSR_ALARMENABLE	0x04
51 #define PCF8583_CSR_MASK	0x08
52 #define PCF8583_CSR_FN_MASK	0x30
53 #define PCF8583_CSR_FN_32768HZ	0x00
54 #define PCF8583_CSR_FN_50HZ	0x10
55 #define PCF8583_CSR_FN_EVENT	0x20
56 #define PCF8583_CSR_FN_TEST	0x30
57 #define PCF8583_CSR_HOLD	0x40
58 #define PCF8583_CSR_STOP	0x80
59 
60 #define PCF8583_HOUR_MASK	0x3f
61 #define PCF8583_HOUR_PM		0x40
62 #define PCF8583_HOUR_12H	0x80
63 
64 #define PCF8583_DATE_MASK	0x3f
65 #define PCF8583_YEAR_MASK	0xc0
66 #define PCF8583_YEAR_SHIFT	6
67 
68 #define PCF8583_MON_MASK	0x1f
69 #define PCF8583_WKDY_MASK	0xe0
70 #define PCF8583_WKDY_SHIFT	5
71 
72 #define PCF8583_ALMCTL_TIMER_MASK	0x07
73 #define PCF8583_ALMCTL_TIMER_OFF	0x00
74 #define PCF8583_ALMCTL_TIMER_CENTI	0x01
75 #define PCF8583_ALMCTL_TIMER_SEC	0x02
76 #define PCF8583_ALMCTL_TIMER_MIN	0x03
77 #define PCF8583_ALMCTL_TIMER_HOUR	0x04
78 #define PCF8583_ALMCTL_TIMER_DAY	0x05
79 #define PCF8583_ALMCTL_TIMER_TEST	0x07
80 #define PCF8583_ALMCTL_TIMERINT		0x08
81 #define PCF8583_ALMCTL_CLKALM_MASK	0x30
82 #define PCF8583_ALMCTL_CLKALM_NONE	0x00
83 #define PCF8583_ALMCTL_CLKALM_DAILY	0x10
84 #define PCF8583_ALMCTL_CLKALM_WKDY	0x20
85 #define PCF8583_ALMCTL_CLKALM_DATED	0x30
86 #define PCF8583_ALMCTL_TIMERALM		0x40
87 #define PCF8583_ALMCTL_ALMINT		0x80
88 
89 #endif	/* _PCF8583REG_H */
90