aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/linux/mfd/wm8350/rtc.h260
1 files changed, 260 insertions, 0 deletions
diff --git a/include/linux/mfd/wm8350/rtc.h b/include/linux/mfd/wm8350/rtc.h
new file mode 100644
index 000000000000..cb337ea8082f
--- /dev/null
+++ b/include/linux/mfd/wm8350/rtc.h
@@ -0,0 +1,260 @@
1/*
2 * rtc.h -- RTC driver for Wolfson WM8350 PMIC
3 *
4 * Copyright 2007 Wolfson Microelectronics PLC
5 *
6 * This program is free software; you can redistribute it and/or modify it
7 * under the terms of the GNU General Public License as published by the
8 * Free Software Foundation; either version 2 of the License, or (at your
9 * option) any later version.
10 */
11
12#ifndef __LINUX_MFD_WM8350_RTC_H
13#define __LINUX_MFD_WM8350_RTC_H
14
15/*
16 * Register values.
17 */
18#define WM8350_RTC_SECONDS_MINUTES 0x10
19#define WM8350_RTC_HOURS_DAY 0x11
20#define WM8350_RTC_DATE_MONTH 0x12
21#define WM8350_RTC_YEAR 0x13
22#define WM8350_ALARM_SECONDS_MINUTES 0x14
23#define WM8350_ALARM_HOURS_DAY 0x15
24#define WM8350_ALARM_DATE_MONTH 0x16
25#define WM8350_RTC_TIME_CONTROL 0x17
26
27/*
28 * R16 (0x10) - RTC Seconds/Minutes
29 */
30#define WM8350_RTC_MINS_MASK 0x7F00
31#define WM8350_RTC_MINS_SHIFT 8
32#define WM8350_RTC_SECS_MASK 0x007F
33#define WM8350_RTC_SECS_SHIFT 0
34
35/*
36 * R17 (0x11) - RTC Hours/Day
37 */
38#define WM8350_RTC_DAY_MASK 0x0700
39#define WM8350_RTC_DAY_SHIFT 8
40#define WM8350_RTC_HPM_MASK 0x0020
41#define WM8350_RTC_HPM_SHIFT 5
42#define WM8350_RTC_HRS_MASK 0x001F
43#define WM8350_RTC_HRS_SHIFT 0
44
45/* Bit values for R21 (0x15) */
46#define WM8350_RTC_DAY_SUN 1
47#define WM8350_RTC_DAY_MON 2
48#define WM8350_RTC_DAY_TUE 3
49#define WM8350_RTC_DAY_WED 4
50#define WM8350_RTC_DAY_THU 5
51#define WM8350_RTC_DAY_FRI 6
52#define WM8350_RTC_DAY_SAT 7
53
54#define WM8350_RTC_HPM_AM 0
55#define WM8350_RTC_HPM_PM 1
56
57/*
58 * R18 (0x12) - RTC Date/Month
59 */
60#define WM8350_RTC_MTH_MASK 0x1F00
61#define WM8350_RTC_MTH_SHIFT 8
62#define WM8350_RTC_DATE_MASK 0x003F
63#define WM8350_RTC_DATE_SHIFT 0
64
65/* Bit values for R22 (0x16) */
66#define WM8350_RTC_MTH_JAN 1
67#define WM8350_RTC_MTH_FEB 2
68#define WM8350_RTC_MTH_MAR 3
69#define WM8350_RTC_MTH_APR 4
70#define WM8350_RTC_MTH_MAY 5
71#define WM8350_RTC_MTH_JUN 6
72#define WM8350_RTC_MTH_JUL 7
73#define WM8350_RTC_MTH_AUG 8
74#define WM8350_RTC_MTH_SEP 9
75#define WM8350_RTC_MTH_OCT 10
76#define WM8350_RTC_MTH_NOV 11
77#define WM8350_RTC_MTH_DEC 12
78#define WM8350_RTC_MTH_JAN_BCD 0x01
79#define WM8350_RTC_MTH_FEB_BCD 0x02
80#define WM8350_RTC_MTH_MAR_BCD 0x03
81#define WM8350_RTC_MTH_APR_BCD 0x04
82#define WM8350_RTC_MTH_MAY_BCD 0x05
83#define WM8350_RTC_MTH_JUN_BCD 0x06
84#define WM8350_RTC_MTH_JUL_BCD 0x07
85#define WM8350_RTC_MTH_AUG_BCD 0x08
86#define WM8350_RTC_MTH_SEP_BCD 0x09
87#define WM8350_RTC_MTH_OCT_BCD 0x10
88#define WM8350_RTC_MTH_NOV_BCD 0x11
89#define WM8350_RTC_MTH_DEC_BCD 0x12
90
91/*
92 * R19 (0x13) - RTC Year
93 */
94#define WM8350_RTC_YHUNDREDS_MASK 0x3F00
95#define WM8350_RTC_YHUNDREDS_SHIFT 8
96#define WM8350_RTC_YUNITS_MASK 0x00FF
97#define WM8350_RTC_YUNITS_SHIFT 0
98
99/*
100 * R20 (0x14) - Alarm Seconds/Minutes
101 */
102#define WM8350_RTC_ALMMINS_MASK 0x7F00
103#define WM8350_RTC_ALMMINS_SHIFT 8
104#define WM8350_RTC_ALMSECS_MASK 0x007F
105#define WM8350_RTC_ALMSECS_SHIFT 0
106
107/* Bit values for R20 (0x14) */
108#define WM8350_RTC_ALMMINS_DONT_CARE -1
109#define WM8350_RTC_ALMSECS_DONT_CARE -1
110
111/*
112 * R21 (0x15) - Alarm Hours/Day
113 */
114#define WM8350_RTC_ALMDAY_MASK 0x0F00
115#define WM8350_RTC_ALMDAY_SHIFT 8
116#define WM8350_RTC_ALMHPM_MASK 0x0020
117#define WM8350_RTC_ALMHPM_SHIFT 5
118#define WM8350_RTC_ALMHRS_MASK 0x001F
119#define WM8350_RTC_ALMHRS_SHIFT 0
120
121/* Bit values for R21 (0x15) */
122#define WM8350_RTC_ALMDAY_DONT_CARE -1
123#define WM8350_RTC_ALMDAY_SUN 1
124#define WM8350_RTC_ALMDAY_MON 2
125#define WM8350_RTC_ALMDAY_TUE 3
126#define WM8350_RTC_ALMDAY_WED 4
127#define WM8350_RTC_ALMDAY_THU 5
128#define WM8350_RTC_ALMDAY_FRI 6
129#define WM8350_RTC_ALMDAY_SAT 7
130
131#define WM8350_RTC_ALMHPM_AM 0
132#define WM8350_RTC_ALMHPM_PM 1
133
134#define WM8350_RTC_ALMHRS_DONT_CARE -1
135
136/*
137 * R22 (0x16) - Alarm Date/Month
138 */
139#define WM8350_RTC_ALMMTH_MASK 0x1F00
140#define WM8350_RTC_ALMMTH_SHIFT 8
141#define WM8350_RTC_ALMDATE_MASK 0x003F
142#define WM8350_RTC_ALMDATE_SHIFT 0
143
144/* Bit values for R22 (0x16) */
145#define WM8350_RTC_ALMDATE_DONT_CARE -1
146
147#define WM8350_RTC_ALMMTH_DONT_CARE -1
148#define WM8350_RTC_ALMMTH_JAN 1
149#define WM8350_RTC_ALMMTH_FEB 2
150#define WM8350_RTC_ALMMTH_MAR 3
151#define WM8350_RTC_ALMMTH_APR 4
152#define WM8350_RTC_ALMMTH_MAY 5
153#define WM8350_RTC_ALMMTH_JUN 6
154#define WM8350_RTC_ALMMTH_JUL 7
155#define WM8350_RTC_ALMMTH_AUG 8
156#define WM8350_RTC_ALMMTH_SEP 9
157#define WM8350_RTC_ALMMTH_OCT 10
158#define WM8350_RTC_ALMMTH_NOV 11
159#define WM8350_RTC_ALMMTH_DEC 12
160#define WM8350_RTC_ALMMTH_JAN_BCD 0x01
161#define WM8350_RTC_ALMMTH_FEB_BCD 0x02
162#define WM8350_RTC_ALMMTH_MAR_BCD 0x03
163#define WM8350_RTC_ALMMTH_APR_BCD 0x04
164#define WM8350_RTC_ALMMTH_MAY_BCD 0x05
165#define WM8350_RTC_ALMMTH_JUN_BCD 0x06
166#define WM8350_RTC_ALMMTH_JUL_BCD 0x07
167#define WM8350_RTC_ALMMTH_AUG_BCD 0x08
168#define WM8350_RTC_ALMMTH_SEP_BCD 0x09
169#define WM8350_RTC_ALMMTH_OCT_BCD 0x10
170#define WM8350_RTC_ALMMTH_NOV_BCD 0x11
171#define WM8350_RTC_ALMMTH_DEC_BCD 0x12
172
173/*
174 * R23 (0x17) - RTC Time Control
175 */
176#define WM8350_RTC_BCD 0x8000
177#define WM8350_RTC_BCD_MASK 0x8000
178#define WM8350_RTC_BCD_SHIFT 15
179#define WM8350_RTC_12HR 0x4000
180#define WM8350_RTC_12HR_MASK 0x4000
181#define WM8350_RTC_12HR_SHIFT 14
182#define WM8350_RTC_DST 0x2000
183#define WM8350_RTC_DST_MASK 0x2000
184#define WM8350_RTC_DST_SHIFT 13
185#define WM8350_RTC_SET 0x0800
186#define WM8350_RTC_SET_MASK 0x0800
187#define WM8350_RTC_SET_SHIFT 11
188#define WM8350_RTC_STS 0x0400
189#define WM8350_RTC_STS_MASK 0x0400
190#define WM8350_RTC_STS_SHIFT 10
191#define WM8350_RTC_ALMSET 0x0200
192#define WM8350_RTC_ALMSET_MASK 0x0200
193#define WM8350_RTC_ALMSET_SHIFT 9
194#define WM8350_RTC_ALMSTS 0x0100
195#define WM8350_RTC_ALMSTS_MASK 0x0100
196#define WM8350_RTC_ALMSTS_SHIFT 8
197#define WM8350_RTC_PINT 0x0070
198#define WM8350_RTC_PINT_MASK 0x0070
199#define WM8350_RTC_PINT_SHIFT 4
200#define WM8350_RTC_DSW 0x000F
201#define WM8350_RTC_DSW_MASK 0x000F
202#define WM8350_RTC_DSW_SHIFT 0
203
204/* Bit values for R23 (0x17) */
205#define WM8350_RTC_BCD_BINARY 0
206#define WM8350_RTC_BCD_BCD 1
207
208#define WM8350_RTC_12HR_24HR 0
209#define WM8350_RTC_12HR_12HR 1
210
211#define WM8350_RTC_DST_DISABLED 0
212#define WM8350_RTC_DST_ENABLED 1
213
214#define WM8350_RTC_SET_RUN 0
215#define WM8350_RTC_SET_SET 1
216
217#define WM8350_RTC_STS_RUNNING 0
218#define WM8350_RTC_STS_STOPPED 1
219
220#define WM8350_RTC_ALMSET_RUN 0
221#define WM8350_RTC_ALMSET_SET 1
222
223#define WM8350_RTC_ALMSTS_RUNNING 0
224#define WM8350_RTC_ALMSTS_STOPPED 1
225
226#define WM8350_RTC_PINT_DISABLED 0
227#define WM8350_RTC_PINT_SECS 1
228#define WM8350_RTC_PINT_MINS 2
229#define WM8350_RTC_PINT_HRS 3
230#define WM8350_RTC_PINT_DAYS 4
231#define WM8350_RTC_PINT_MTHS 5
232
233#define WM8350_RTC_DSW_DISABLED 0
234#define WM8350_RTC_DSW_1HZ 1
235#define WM8350_RTC_DSW_2HZ 2
236#define WM8350_RTC_DSW_4HZ 3
237#define WM8350_RTC_DSW_8HZ 4
238#define WM8350_RTC_DSW_16HZ 5
239#define WM8350_RTC_DSW_32HZ 6
240#define WM8350_RTC_DSW_64HZ 7
241#define WM8350_RTC_DSW_128HZ 8
242#define WM8350_RTC_DSW_256HZ 9
243#define WM8350_RTC_DSW_512HZ 10
244#define WM8350_RTC_DSW_1024HZ 11
245
246/*
247 * R218 (0xDA) - RTC Tick Control
248 */
249#define WM8350_RTC_TICKSTS 0x4000
250#define WM8350_RTC_CLKSRC 0x2000
251#define WM8350_RTC_TRIM_MASK 0x03FF
252
253/*
254 * RTC Interrupts.
255 */
256#define WM8350_IRQ_RTC_PER 7
257#define WM8350_IRQ_RTC_SEC 8
258#define WM8350_IRQ_RTC_ALM 9
259
260#endif