nidas  v1.2-1520
gpio_mm_regs.h
Go to the documentation of this file.
1 /* -*- mode: C; indent-tabs-mode: nil; c-basic-offset: 8; tab-width: 8; -*- */
2 /* vim: set shiftwidth=8 softtabstop=8 expandtab: */
3 /*
4  ********************************************************************
5  ** NIDAS: NCAR In-situ Data Acquistion Software
6  **
7  ** 2008, Copyright University Corporation for Atmospheric Research
8  **
9  ** This program is free software; you can redistribute it and/or modify
10  ** it under the terms of the GNU General Public License as published by
11  ** the Free Software Foundation; either version 2 of the License, or
12  ** (at your option) any later version.
13  **
14  ** This program is distributed in the hope that it will be useful,
15  ** but WITHOUT ANY WARRANTY; without even the implied warranty of
16  ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17  ** GNU General Public License for more details.
18  **
19  ** The LICENSE.txt file accompanying this software contains
20  ** a copy of the GNU General Public License. If it is not found,
21  ** write to the Free Software Foundation, Inc.,
22  ** 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
23  **
24  ********************************************************************
25 */
26 /*
27 
28  Defines for register and register settings on Diamond Systems
29  GPIO-MM Digital I/O Cards.
30 
31  Original Author: Gordon Maclean
32 
33 */
34 
35 #ifndef NIDAS_DIAMOND_GPIO_MM_REGS_H
36 #define NIDAS_DIAMOND_GPIO_MM_REGS_H
37 
38 /* How many counters on the board */
39 #define GPIO_MM_CNTR_PER_BOARD 10
40 
41 /* How many counters on a 9513 chip */
42 #define GPIO_MM_CNTR_PER_CHIP 5
43 
44 /* defines for GPIO-MM board clock */
45 #define GPIO_MM_9513_1_DATA 0x00
46 #define GPIO_MM_9513_1_PTR 0x01
47 #define GPIO_MM_DIO 0x02
48 #define GPIO_MM_9513_2_DATA 0x04
49 #define GPIO_MM_9513_2_PTR 0x05
50 #define GPIO_MM_IRQ_CTRL 0x06
51 #define GPIO_MM_EEPROM_DATA 0x08
52 #define GPIO_MM_EEPROM_ADDR 0x09
53 #define GPIO_MM_EEPROM_CTRL 0x0A
54 #define GPIO_MM_FPGA_REV 0x0B
55 #define GPIO_MM_IRQ_SRC 0x0C
56 #define GPIO_MM_IRQ_CTL_STATUS 0x0D
57 #define GPIO_MM_AUX_DIO 0x0E
58 #define GPIO_MM_RESET_ID 0x0F
59 
60 /* 9513 data register for chip x, x=0,1 */
61 #define GPIO_MM_9513_DATA(x) ((x)*4)
62 /* 9513 pointer register for chip x, x=0,1 */
63 #define GPIO_MM_9513_PTR(x) ((x)*4+1)
64 
65 #define GPIO_MM_8255_1_DIO_A 0x00
66 #define GPIO_MM_8255_1_DIO_B 0x01
67 #define GPIO_MM_8255_1_DIO_C 0x02
68 #define GPIO_MM_8255_1_CTRL 0x03
69 #define GPIO_MM_8255_2_DIO_A 0x04
70 #define GPIO_MM_8255_2_DIO_B 0x05
71 #define GPIO_MM_8255_2_DIO_C 0x06
72 #define GPIO_MM_8255_2_CTRL 0x07
73 
74 #define CTS9513_DPTR_CNTR1_MODE 0x01
75 #define CTS9513_DPTR_CNTR2_MODE 0x02
76 #define CTS9513_DPTR_CNTR3_MODE 0x03
77 #define CTS9513_DPTR_CNTR4_MODE 0x04
78 #define CTS9513_DPTR_CNTR5_MODE 0x05
79 
80 #define CTS9513_DPTR_ALARM_1 0x07
81 
82 #define CTS9513_DPTR_CNTR1_LOAD 0x09
83 #define CTS9513_DPTR_CNTR2_LOAD 0x0A
84 #define CTS9513_DPTR_CNTR3_LOAD 0x0B
85 #define CTS9513_DPTR_CNTR4_LOAD 0x0C
86 #define CTS9513_DPTR_CNTR5_LOAD 0x0D
87 
88 #define CTS9513_DPTR_ALARM_2 0x0F
89 
90 #define CTS9513_DPTR_CNTR1_HOLD 0x11
91 #define CTS9513_DPTR_CNTR2_HOLD 0x12
92 #define CTS9513_DPTR_CNTR3_HOLD 0x13
93 #define CTS9513_DPTR_CNTR4_HOLD 0x14
94 #define CTS9513_DPTR_CNTR5_HOLD 0x15
95 
96 #define CTS9513_DPTR_MASTER_MODE 0x17
97 
98 #define CTS9513_DPTR_HOLD_CYCL1 0x19
99 #define CTS9513_DPTR_HOLD_CYCL2 0x1A
100 #define CTS9513_DPTR_HOLD_CYCL3 0x1B
101 #define CTS9513_DPTR_HOLD_CYCL4 0x1C
102 #define CTS9513_DPTR_HOLD_CYCL5 0x1D
103 
104 #define CTS9513_DPTR_STATUS 0x1F
105 
106 #define CTS9513_ARM 0x20
107 #define CTS9513_LOAD 0x40
108 #define CTS9513_LOAD_ARM 0x60
109 #define CTS9513_DISARM_SAVE 0x80
110 #define CTS9513_SAVE_TO_HOLD 0xA0
111 #define CTS9513_DISARM 0xC0
112 
113 #define CTS9513_CLEAR_TOGGLE_OUT 0xE0
114 #define CTS9513_SET_TOGGLE_OUT 0xE8
115 #define CTS9513_STEP 0xF0
116 
117 /* master mode register */
118 #define CTS9513_MML_NO_TOD 0x00 /* time-of-day disabled */
119 #define CTS9513_MML_TOD5 0x01 /* time-of-day enabled, / 5 */
120 #define CTS9513_MML_TOD6 0x02 /* time-of-day enabled, / 6 */
121 #define CTS9513_MML_TOD10 0x03 /* time-of-day enabled, / 10 */
122 
123 #define CTS9513_MML_NO_COMP 0x00 /* comparators disabled */
124 #define CTS9513_MML_COMP1 0x04 /* comparator 1 on */
125 #define CTS9513_MML_COMP2 0x08 /* comparator 2 on */
126 #define CTS9513_MML_COMP12 0x0C /* comparator 1 & 2 on */
127 
128 #define CTS9513_MML_FOUT_F1X 0x00 /* FOUT source = F1 */
129 #define CTS9513_MML_FOUT_S1 0x10 /* FOUT source = source 1 */
130 #define CTS9513_MML_FOUT_S2 0x20
131 #define CTS9513_MML_FOUT_S3 0x30
132 #define CTS9513_MML_FOUT_S4 0x40
133 #define CTS9513_MML_FOUT_S5 0x50
134 #define CTS9513_MML_FOUT_G1 0x60 /* FOUT source = gate 1 */
135 #define CTS9513_MML_FOUT_G2 0x70
136 #define CTS9513_MML_FOUT_G3 0x80
137 #define CTS9513_MML_FOUT_G4 0x90
138 #define CTS9513_MML_FOUT_G5 0xA0
139 #define CTS9513_MML_FOUT_F1 0xB0 /* FOUT source = F1 */
140 #define CTS9513_MML_FOUT_F2 0xC0
141 #define CTS9513_MML_FOUT_F3 0xD0
142 #define CTS9513_MML_FOUT_F4 0xE0
143 #define CTS9513_MML_FOUT_F5 0xF0
144 
145 #define CTS9513_MMH_FOUT_DIV16 0x00
146 #define CTS9513_MMH_FOUT_DIV1 0x01
147 #define CTS9513_MMH_FOUT_DIV2 0x02
148 #define CTS9513_MMH_FOUT_DIV3 0x03
149 #define CTS9513_MMH_FOUT_DIV4 0x04
150 #define CTS9513_MMH_FOUT_DIV5 0x05
151 
152 #define CTS9513_MMH_FOUT_ON 0x00
153 #define CTS9513_MMH_FOUT_OFF 0x10
154 
155 #define CTS9513_MMH_WIDTH_8 0x00
156 #define CTS9513_MMH_WIDTH_16 0x20
157 
158 #define CTS9513_MMH_DP_ENABLE 0x00
159 #define CTS9513_MMH_DP_DISABLE 0x40
160 
161 #define CTS9513_MMH_BIN 0x00
162 #define CTS9513_MMH_BCD 0x80
163 
164 /* Counter mode definitions */
165 #define CTS9513_CML_OUT_LOW 0x00
166 #define CTS9513_CML_OUT_HIGH_ON_TC 0x01
167 #define CTS9513_CML_OUT_TC_TOGGLE 0x02
168 #define CTS9513_CML_OUT_HIGH 0x04
169 #define CTS9513_CML_OUT_LOW_ON_TC 0x05
170 
171 #define CTS9513_CML_CNT_DN 0x00
172 #define CTS9513_CML_CNT_UP 0x08
173 
174 #define CTS9513_CML_CNT_BIN 0x00
175 #define CTS9513_CML_CNT_BCD 0x10
176 
177 #define CTS9513_CML_ONCE 0x00
178 #define CTS9513_CML_REPEAT 0x20
179 
180 #define CTS9513_CML_RELOAD_LOAD 0x00 /* on TC, reload from load reg */
181 #define CTS9513_CML_RELOAD_BOTH 0x40 /* on TC, reload based on gate */
182 
183 #define CTS9513_CML_GATE_NORETRIG 0x00
184 #define CTS9513_CML_GATE_RETRIG 0x80
185 
186 #define CTS9513_CMH_SRC_TCNM1 0x00
187 #define CTS9513_CMH_SRC_S1 0x01
188 #define CTS9513_CMH_SRC_S2 0x02
189 #define CTS9513_CMH_SRC_S3 0x03
190 #define CTS9513_CMH_SRC_S4 0x04
191 #define CTS9513_CMH_SRC_S5 0x05
192 #define CTS9513_CMH_SRC_G1 0x06
193 #define CTS9513_CMH_SRC_G2 0x07
194 #define CTS9513_CMH_SRC_G3 0x08
195 #define CTS9513_CMH_SRC_G4 0x09
196 #define CTS9513_CMH_SRC_G5 0x0A
197 #define CTS9513_CMH_SRC_F1 0x0B
198 #define CTS9513_CMH_SRC_F2 0x0C
199 #define CTS9513_CMH_SRC_F3 0x0D
200 #define CTS9513_CMH_SRC_F4 0x0E
201 #define CTS9513_CMH_SRC_F5 0x0F
202 
203 #define CTS9513_CMH_EDGE_RISING 0x00
204 #define CTS9513_CMH_EDGE_FALLING 0x10
205 
206 #define CTS9513_CMH_NO_GATE 0x00
207 #define CTS9513_CMH_GATE_HI_TCNM1 0x20
208 #define CTS9513_CMH_GATE_HI_GNP1 0x40
209 #define CTS9513_CMH_GATE_HI_GNM1 0x60
210 #define CTS9513_CMH_GATE_HI_GN 0x80
211 #define CTS9513_CMH_GATE_LO_GN 0xA0
212 #define CTS9513_CMH_GATE_HI_EDGE_GN 0xC0
213 #define CTS9513_CMH_GATE_LO_EDGE_GN 0xE0
214 
215 #endif