nidas v1.2.3
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