aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/meilhaus/me6000_ao_reg.h
blob: eb8f46e1b75b3df1725ec8a9a3276d3343a6b610 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
/**
 * @file me6000_ao_reg.h
 *
 * @brief ME-6000 analog output subdevice register definitions.
 * @note Copyright (C) 2007 Meilhaus Electronic GmbH (support@meilhaus.de)
 * @author Guenter Gebhardt
 */

/*
 * Copyright (C) 2007 Meilhaus Electronic GmbH (support@meilhaus.de)
 *
 * This file is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */

#ifndef _ME6000_AO_REG_H_
#define _ME6000_AO_REG_H_

#ifdef __KERNEL__

// AO
#define ME6000_AO_00_CTRL_REG					0x00	// R/W
#define ME6000_AO_00_STATUS_REG					0x04	// R/_
#define ME6000_AO_00_FIFO_REG					0x08	// _/W
#define ME6000_AO_00_SINGLE_REG					0x0C	// R/W
#define ME6000_AO_00_TIMER_REG					0x10	// _/W

#define ME6000_AO_01_CTRL_REG					0x18	// R/W
#define ME6000_AO_01_STATUS_REG					0x1C	// R/_
#define ME6000_AO_01_FIFO_REG					0x20	// _/W
#define ME6000_AO_01_SINGLE_REG					0x24	// R/W
#define ME6000_AO_01_TIMER_REG					0x28	// _/W

#define ME6000_AO_02_CTRL_REG					0x30	// R/W
#define ME6000_AO_02_STATUS_REG					0x34	// R/_
#define ME6000_AO_02_FIFO_REG					0x38	// _/W
#define ME6000_AO_02_SINGLE_REG					0x3C	// R/W
#define ME6000_AO_02_TIMER_REG					0x40	// _/W

#define ME6000_AO_03_CTRL_REG					0x48	// R/W
#define ME6000_AO_03_STATUS_REG					0x4C	// R/_
#define ME6000_AO_03_FIFO_REG					0x50	// _/W
#define ME6000_AO_03_SINGLE_REG					0x54	// R/W
#define ME6000_AO_03_TIMER_REG					0x58	// _/W

#define ME6000_AO_SINGLE_STATUS_REG				0xA4	// R/_
#define ME6000_AO_SINGLE_STATUS_OFFSET			4	//The first single subdevice => bit 0 in ME6000_AO_SINGLE_STATUS_REG.

#define ME6000_AO_04_STATUS_REG					ME6000_AO_SINGLE_STATUS_REG
#define ME6000_AO_04_SINGLE_REG					0x74	// _/W

#define ME6000_AO_05_STATUS_REG					ME6000_AO_SINGLE_STATUS_REG
#define ME6000_AO_05_SINGLE_REG					0x78	// _/W

#define ME6000_AO_06_STATUS_REG					ME6000_AO_SINGLE_STATUS_REG
#define ME6000_AO_06_SINGLE_REG					0x7C	// _/W

#define ME6000_AO_07_STATUS_REG					ME6000_AO_SINGLE_STATUS_REG
#define ME6000_AO_07_SINGLE_REG					0x80	// _/W

#define ME6000_AO_08_STATUS_REG					ME6000_AO_SINGLE_STATUS_REG
#define ME6000_AO_08_SINGLE_REG					0x84	// _/W

#define ME6000_AO_09_STATUS_REG					ME6000_AO_SINGLE_STATUS_REG
#define ME6000_AO_09_SINGLE_REG					0x88	// _/W

#define ME6000_AO_10_STATUS_REG					ME6000_AO_SINGLE_STATUS_REG
#define ME6000_AO_10_SINGLE_REG					0x8C	// _/W

#define ME6000_AO_11_STATUS_REG					ME6000_AO_SINGLE_STATUS_REG
#define ME6000_AO_11_SINGLE_REG					0x90	// _/W

#define ME6000_AO_12_STATUS_REG					ME6000_AO_SINGLE_STATUS_REG
#define ME6000_AO_12_SINGLE_REG					0x94	// _/W

#define ME6000_AO_13_STATUS_REG					ME6000_AO_SINGLE_STATUS_REG
#define ME6000_AO_13_SINGLE_REG					0x98	// _/W

#define ME6000_AO_14_STATUS_REG					ME6000_AO_SINGLE_STATUS_REG
#define ME6000_AO_14_SINGLE_REG					0x9C	// _/W

#define ME6000_AO_15_STATUS_REG					ME6000_AO_SINGLE_STATUS_REG
#define ME6000_AO_15_SINGLE_REG					0xA0	// _/W

//ME6000_AO_CTRL_REG
#define ME6000_AO_MODE_SINGLE					0x00
#define ME6000_AO_MODE_WRAPAROUND				0x01
#define ME6000_AO_MODE_CONTINUOUS				0x02
#define ME6000_AO_CTRL_MODE_MASK				(ME6000_AO_MODE_WRAPAROUND | ME6000_AO_MODE_CONTINUOUS)

#define ME6000_AO_CTRL_BIT_MODE_WRAPAROUND		0x001
#define ME6000_AO_CTRL_BIT_MODE_CONTINUOUS		0x002
#define ME6000_AO_CTRL_BIT_STOP					0x004
#define ME6000_AO_CTRL_BIT_ENABLE_FIFO			0x008
#define ME6000_AO_CTRL_BIT_ENABLE_EX_TRIG		0x010
#define ME6000_AO_CTRL_BIT_EX_TRIG_EDGE			0x020
#define ME6000_AO_CTRL_BIT_ENABLE_IRQ			0x040
#define ME6000_AO_CTRL_BIT_IMMEDIATE_STOP		0x080
#define ME6000_AO_CTRL_BIT_EX_TRIG_EDGE_BOTH 	0x800

//ME6000_AO_STATUS_REG
#define ME6000_AO_STATUS_BIT_FSM				0x01
#define ME6000_AO_STATUS_BIT_FF					0x02
#define ME6000_AO_STATUS_BIT_HF					0x04
#define ME6000_AO_STATUS_BIT_EF					0x08

#define ME6000_AO_PRELOAD_REG					0xA8	// R/W    ///ME6000_AO_SYNC_REG <==> ME6000_AO_PRELOAD_REG
/*
#define ME6000_AO_SYNC_HOLD_0					0x00000001
#define ME6000_AO_SYNC_HOLD_1					0x00000002
#define ME6000_AO_SYNC_HOLD_2					0x00000004
#define ME6000_AO_SYNC_HOLD_3					0x00000008
#define ME6000_AO_SYNC_HOLD_4					0x00000010
#define ME6000_AO_SYNC_HOLD_5					0x00000020
#define ME6000_AO_SYNC_HOLD_6					0x00000040
#define ME6000_AO_SYNC_HOLD_7					0x00000080
#define ME6000_AO_SYNC_HOLD_8					0x00000100
#define ME6000_AO_SYNC_HOLD_9					0x00000200
#define ME6000_AO_SYNC_HOLD_10					0x00000400
#define ME6000_AO_SYNC_HOLD_11					0x00000800
#define ME6000_AO_SYNC_HOLD_12					0x00001000
#define ME6000_AO_SYNC_HOLD_13					0x00002000
#define ME6000_AO_SYNC_HOLD_14					0x00004000
#define ME6000_AO_SYNC_HOLD_15					0x00008000
*/
#define ME6000_AO_SYNC_HOLD						0x00000001
/*
#define ME6000_AO_SYNC_EXT_TRIG_0				0x00010000
#define ME6000_AO_SYNC_EXT_TRIG_1				0x00020000
#define ME6000_AO_SYNC_EXT_TRIG_2				0x00040000
#define ME6000_AO_SYNC_EXT_TRIG_3				0x00080000
#define ME6000_AO_SYNC_EXT_TRIG_4				0x00100000
#define ME6000_AO_SYNC_EXT_TRIG_5				0x00200000
#define ME6000_AO_SYNC_EXT_TRIG_6				0x00400000
#define ME6000_AO_SYNC_EXT_TRIG_7				0x00800000
#define ME6000_AO_SYNC_EXT_TRIG_8				0x01000000
#define ME6000_AO_SYNC_EXT_TRIG_9				0x02000000
#define ME6000_AO_SYNC_EXT_TRIG_10				0x04000000
#define ME6000_AO_SYNC_EXT_TRIG_11				0x08000000
#define ME6000_AO_SYNC_EXT_TRIG_12				0x10000000
#define ME6000_AO_SYNC_EXT_TRIG_13				0x20000000
#define ME6000_AO_SYNC_EXT_TRIG_14				0x40000000
#define ME6000_AO_SYNC_EXT_TRIG_15				0x80000000
*/
#define ME6000_AO_SYNC_EXT_TRIG					0x00010000

#define ME6000_AO_EXT_TRIG						0x80000000

// AO-IRQ
#define ME6000_AO_IRQ_STATUS_REG				0x60	// R/_
#define ME6000_AO_00_IRQ_RESET_REG				0x64	// R/_
#define ME6000_AO_01_IRQ_RESET_REG				0x68	// R/_
#define ME6000_AO_02_IRQ_RESET_REG				0x6C	// R/_
#define ME6000_AO_03_IRQ_RESET_REG				0x70	// R/_

#define ME6000_IRQ_STATUS_BIT_0					0x01
#define ME6000_IRQ_STATUS_BIT_1					0x02
#define ME6000_IRQ_STATUS_BIT_2					0x04
#define ME6000_IRQ_STATUS_BIT_3					0x08

#define ME6000_IRQ_STATUS_BIT_AO_HF				ME6000_IRQ_STATUS_BIT_0

//DUMY register
#define ME6000_AO_DUMY									0xFC
#endif
#endif