3 Header file for NI general purpose counter support code (ni_tio.c)
5 COMEDI - Linux Control and Measurement Device Interface
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2 of the License, or
10 (at your option) any later version.
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
18 #ifndef _COMEDI_NI_TIO_H
19 #define _COMEDI_NI_TIO_H
21 #include "../comedidev.h"
23 /* forward declarations */
25 struct ni_gpct_device
;
27 enum ni_gpct_register
{
101 enum ni_gpct_variant
{
102 ni_gpct_variant_e_series
,
103 ni_gpct_variant_m_series
,
108 struct ni_gpct_device
*counter_dev
;
109 unsigned counter_index
;
111 uint64_t clock_period_ps
; /* clock period in picoseconds */
112 struct mite_channel
*mite_chan
;
116 struct ni_gpct_device
{
117 struct comedi_device
*dev
;
118 void (*write_register
)(struct ni_gpct
*counter
, unsigned bits
,
119 enum ni_gpct_register reg
);
120 unsigned (*read_register
)(struct ni_gpct
*counter
,
121 enum ni_gpct_register reg
);
122 enum ni_gpct_variant variant
;
123 struct ni_gpct
*counters
;
124 unsigned num_counters
;
125 unsigned regs
[NITIO_NUM_REGS
];
126 spinlock_t regs_lock
;
129 struct ni_gpct_device
*
130 ni_gpct_device_construct(struct comedi_device
*,
131 void (*write_register
)(struct ni_gpct
*,
133 enum ni_gpct_register
),
134 unsigned (*read_register
)(struct ni_gpct
*,
135 enum ni_gpct_register
),
136 enum ni_gpct_variant
,
137 unsigned num_counters
);
138 void ni_gpct_device_destroy(struct ni_gpct_device
*);
139 void ni_tio_init_counter(struct ni_gpct
*);
140 int ni_tio_insn_read(struct comedi_device
*, struct comedi_subdevice
*,
141 struct comedi_insn
*, unsigned int *data
);
142 int ni_tio_insn_config(struct comedi_device
*, struct comedi_subdevice
*,
143 struct comedi_insn
*, unsigned int *data
);
144 int ni_tio_insn_write(struct comedi_device
*, struct comedi_subdevice
*,
145 struct comedi_insn
*, unsigned int *data
);
146 int ni_tio_cmd(struct comedi_device
*, struct comedi_subdevice
*);
147 int ni_tio_cmdtest(struct comedi_device
*, struct comedi_subdevice
*,
148 struct comedi_cmd
*);
149 int ni_tio_cancel(struct ni_gpct
*);
150 void ni_tio_handle_interrupt(struct ni_gpct
*, struct comedi_subdevice
*);
151 void ni_tio_set_mite_channel(struct ni_gpct
*, struct mite_channel
*);
152 void ni_tio_acknowledge(struct ni_gpct
*);
154 #endif /* _COMEDI_NI_TIO_H */
This page took 0.035817 seconds and 5 git commands to generate.