nidas v1.2.3
Macros | Functions | Variables
ncar_a2d.c File Reference
#include <linux/delay.h>
#include <linux/errno.h>
#include <linux/fs.h>
#include <linux/cdev.h>
#include <linux/ioport.h>
#include <linux/module.h>
#include <linux/poll.h>
#include <linux/unistd.h>
#include <linux/syscalls.h>
#include <linux/version.h>
#include <linux/sched.h>
#include <linux/slab.h>
#include <asm/byteorder.h>
#include <asm/io.h>
#include <linux/uaccess.h>
#include <nidas/linux/ver_macros.h>
#include <nidas/linux/util.h>
#include <nidas/linux/irigclock.h>
#include <nidas/linux/isa_bus.h>
#include <nidas/linux/Revision.h>
#include <nidas/linux/klog.h>
#include "ncar_a2d_priv.h"

Macros

#define REPO_REVISION   "unknown"
 
#define BOARD_INDEX(boardptr)   ((boardptr) - BoardInfo)
 
#define DEVNAME_A2D   "ncar_a2d"
 Info for A/D user devices.
 
#define X   -1
 
#define SHORT_START
 

Functions

 MODULE_AUTHOR ("Chris Burghart <burghart@ucar.edu>")
 
 MODULE_DESCRIPTION ("NCAR A/D driver")
 
 MODULE_LICENSE ("GPL")
 
 MODULE_VERSION (REPO_REVISION)
 
 MODULE_PARM_DESC (IoPort, "ISA port address of each board, e.g.: 0x3A0")
 
 MODULE_PARM_DESC (Master, "Master A/D for the board, default=first requested channel")
 
 MODULE_PARM_DESC (fifoReadFrac, "N: read 1/N of FIFO on each poll, N >= 4")
 
 MODULE_PARM_DESC (dtestnum, "Test to run: 0=no test, 1=16 bit write of 0x5555/0xaaaa in 1/2 second loop")
 
 MODULE_PARM_DESC (dtestchan, "Channel number for write test 0-7")
 
 MODULE_PARM_DESC (dtestcnt, "Number of tests to run")
 
 MODULE_PARM_DESC (a2dchans, "Active A2D channels, 0-7, separated by commas")
 
static unsigned long CHAN_ADDR16 (struct A2DBoard *brd, int channel)
 
static int stopBoard (struct A2DBoard *brd)
 Stop data collection on the selected board.
 
static ssize_t ncar_a2d_read (struct file *filp, char __user *buf, size_t count, loff_t *pos)
 User-space read on the A/D device.
 
static int ncar_a2d_open (struct inode *inode, struct file *filp)
 User-space open of the A/D device.
 
static int ncar_a2d_release (struct inode *inode, struct file *filp)
 User-space close of the A/D device.
 
static unsigned int ncar_a2d_poll (struct file *filp, poll_table *wait)
 Support for select/poll on the user device.
 
static long ncar_a2d_ioctl (struct file *filp, unsigned int cmd, unsigned long arg)
 
static void i2c_clock_hi (struct A2DBoard *brd)
 
static void i2c_clock_lo (struct A2DBoard *brd)
 
static void i2c_data_hi (struct A2DBoard *brd)
 
static void i2c_data_lo (struct A2DBoard *brd)
 
static void i2c_start_sequence (struct A2DBoard *brd)
 
static void i2c_stop_sequence (struct A2DBoard *brd)
 
static int i2c_getAck (struct A2DBoard *brd)
 
static void i2c_putNoAck (struct A2DBoard *brd)
 
static void i2c_putAck (struct A2DBoard *brd)
 
static unsigned char i2c_get_byte (struct A2DBoard *brd)
 
static int i2c_put_byte (struct A2DBoard *brd, unsigned char byte)
 
static short A2DTemp (struct A2DBoard *brd)
 Read on-board LM92 temperature sensor via i2c serial bus The signed short returned is (16 * temperature in deg C)
 
static int wait7725Int (struct A2DBoard *brd, int channel, int ncoef)
 
static unsigned short AD7725Status (struct A2DBoard *brd, int channel)
 
static void AD7725StatusAll (struct A2DBoard *brd)
 
static unsigned short AD7725StatusInstrBits (unsigned short instr)
 AD7725 sets some of the bits of the previous instruction in its status register.
 
static int A2DSetGain (struct A2DBoard *brd, int channel)
 
static int A2DSetMaster (struct A2DBoard *brd, int channel)
 
static int CalVoltIsValid (int volt)
 
static int CalVoltToBits (int volt)
 
static void UnSetVcal (struct A2DBoard *brd)
 
static void SetVcal (struct A2DBoard *brd)
 
static void SetCal (struct A2DBoard *brd)
 
static void SetOffset (struct A2DBoard *brd)
 
static void A2DSetSYNC (struct A2DBoard *brd)
 
static void A2DClearSYNC (struct A2DBoard *brd)
 
static void A2DEnable1PPS (struct A2DBoard *brd)
 
static void A2DClearFIFO (struct A2DBoard *brd)
 
static unsigned short A2DBoardStatus (struct A2DBoard *brd)
 Return the status from the card.
 
static int getA2DFIFOLevel (struct A2DBoard *brd)
 Get the FIFO fill level:
 
static void A2DStopRead (struct A2DBoard *brd, int channel)
 
static void A2DStopReadAll (struct A2DBoard *brd)
 
static void A2DAuto (struct A2DBoard *brd)
 
static void A2DNotAuto (struct A2DBoard *brd)
 
static int A2DStart (struct A2DBoard *brd, int channel, unsigned int nloop)
 
static int A2DStartAll (struct A2DBoard *brd)
 
static int A2DConfig (struct A2DBoard *brd, int channel)
 
static int A2DConfigAll (struct A2DBoard *brd)
 
static int getSerialNumber (struct A2DBoard *brd)
 
static void ppsCallback1 (void *ptr)
 
static int waitFor1PPS (struct A2DBoard *brd, irig_callback_func *ppsfunc)
 
static int A2DSetGainAndOffset (struct A2DBoard *brd)
 
static int addSampleConfig (struct A2DBoard *brd, struct nidas_a2d_sample_config *cfg)
 
static void freeFilters (struct A2DBoard *brd)
 
static int configBoard (struct A2DBoard *brd, struct nidas_a2d_config *cfg)
 
int withinRange (int volt, int gain, int offset)
 
static void do_filters (struct A2DBoard *brd, dsm_sample_time_t tt, const short *dp)
 Invoke filters.
 
static void a2d_bottom_half (struct work_struct *work)
 
static void discardA2DFifo (struct A2DBoard *brd)
 
static void readA2DFifo (struct A2DBoard *brd)
 
static void ReadSampleCallback (void *ptr)
 
static void TemperatureCallback (void *ptr)
 
static int resetBoard (struct A2DBoard *brd)
 
static void resetBoardWorkFunc (struct work_struct *work)
 
static int startBoard (struct A2DBoard *brd)
 Start data collection on the selected board.
 
static int test_ISA_Writes (struct A2DBoard *brd, int ioport)
 
static void ncar_a2d_cleanup (void)
 
static int __init ncar_a2d_init (void)
 
 module_init (ncar_a2d_init)
 
 module_exit (ncar_a2d_cleanup)
 

Variables

static const int WAITING_FOR_RESET = 1
 
static int IoPort [MAX_A2D_BOARDS] = { 0x3a0, 0, 0, 0 }
 
static int Master [MAX_A2D_BOARDS] = { -1, -1, -1, -1 }
 
static int nIoPort
 
static int nMaster
 
static int dtestnum
 
static int dtestchan
 
static uint dtestcnt
 
static uint a2dchans [NUM_NCAR_A2D_CHANNELS] = { 0,1,2,3,4,5,6,7 }
 
static uint numa2ds = NUM_NCAR_A2D_CHANNELS
 
static int fifoReadFrac = 8
 
static int NumBoards = 0
 
static struct A2DBoardBoardInfo = 0
 
static struct workqueue_struct * work_queue = 0
 
static struct file_operations ncar_a2d_fops
 
static dev_t ncar_a2d_device = MKDEV(0, 0)
 
static struct cdev ncar_a2d_cdev
 
static struct class * ncar_a2d_class
 
static const unsigned long I2CSCL = 0x2
 
static const unsigned long I2CSDA = 0x1
 
int GainOffsetToEnum [5][2]
 

Macro Definition Documentation

◆ BOARD_INDEX

#define BOARD_INDEX ( boardptr)    ((boardptr) - BoardInfo)

Referenced by startBoard().

◆ DEVNAME_A2D

#define DEVNAME_A2D   "ncar_a2d"

Info for A/D user devices.

Referenced by ncar_a2d_init().

◆ REPO_REVISION

#define REPO_REVISION   "unknown"

Referenced by ncar_a2d_init().

◆ SHORT_START

#define SHORT_START

◆ X

#define X   -1

Function Documentation

◆ a2d_bottom_half()

static void a2d_bottom_half ( struct work_struct * work)
static

◆ A2DAuto()

static void A2DAuto ( struct A2DBoard * brd)
static

References A2DAUTO, and A2DIO_FIFO.

Referenced by resetBoard().

◆ A2DBoardStatus()

static unsigned short A2DBoardStatus ( struct A2DBoard * brd)
inlinestatic

Return the status from the card.

The upper 10 bits of the status are the card serial number, and the lower six bits are:

0x20: PRESYNC Presync bit (NOT USED) 0x10: INV1PPS Inverted 1 PPS pulse 0x08: FIFONOTFULL FIFO not full 0x04: FIFONOTEMPTY FIFO not empty 0x02: FIFOAFAE FIFO contains < 1024 words or > 3072 words 0x01: FIFOHF FIFO half full

References A2DIO_FIFOSTAT.

Referenced by getA2DFIFOLevel(), getSerialNumber(), and ppsCallback1().

◆ A2DClearFIFO()

static void A2DClearFIFO ( struct A2DBoard * brd)
static

References A2DIO_FIFO, and FIFOCLR.

Referenced by resetBoard(), and startBoard().

◆ A2DClearSYNC()

static void A2DClearSYNC ( struct A2DBoard * brd)
static

References A2DIO_FIFO, and A2DSYNCCK.

Referenced by startBoard().

◆ A2DConfig()

static int A2DConfig ( struct A2DBoard * brd,
int channel )
static

◆ A2DConfigAll()

static int A2DConfigAll ( struct A2DBoard * brd)
static

References a2dchans, A2DConfig(), and numa2ds.

Referenced by startBoard().

◆ A2DEnable1PPS()

static void A2DEnable1PPS ( struct A2DBoard * brd)
static

References A2D1PPSEBL, and A2DIO_FIFO.

Referenced by resetBoard().

◆ A2DNotAuto()

static void A2DNotAuto ( struct A2DBoard * brd)
static

References A2DIO_FIFO.

Referenced by ncar_a2d_init(), resetBoard(), and stopBoard().

◆ A2DSetGain()

static int A2DSetGain ( struct A2DBoard * brd,
int channel )
static

◆ A2DSetGainAndOffset()

static int A2DSetGainAndOffset ( struct A2DBoard * brd)
static

References a2dchans, A2DIO_D2A1, A2DSetGain(), numa2ds, and SetOffset().

Referenced by startBoard().

◆ A2DSetMaster()

static int A2DSetMaster ( struct A2DBoard * brd,
int channel )
static

◆ A2DSetSYNC()

static void A2DSetSYNC ( struct A2DBoard * brd)
static

References A2DIO_FIFO, A2DSYNC, and A2DSYNCCK.

Referenced by resetBoard().

◆ A2DStart()

static int A2DStart ( struct A2DBoard * brd,
int channel,
unsigned int nloop )
static

◆ A2DStartAll()

static int A2DStartAll ( struct A2DBoard * brd)
static

References a2dchans, A2DStart(), dtestcnt, dtestnum, and numa2ds.

Referenced by resetBoard(), and startBoard().

◆ A2DStopRead()

static void A2DStopRead ( struct A2DBoard * brd,
int channel )
static

◆ A2DStopReadAll()

static void A2DStopReadAll ( struct A2DBoard * brd)
static

References a2dchans, A2DStopRead(), and numa2ds.

Referenced by resetBoard(), startBoard(), and stopBoard().

◆ A2DTemp()

static short A2DTemp ( struct A2DBoard * brd)
static

Read on-board LM92 temperature sensor via i2c serial bus The signed short returned is (16 * temperature in deg C)

References A2DIO_FIFO, A2DIO_I2C, i2c_get_byte(), i2c_put_byte(), i2c_putAck(), i2c_putNoAck(), i2c_start_sequence(), and i2c_stop_sequence().

Referenced by TemperatureCallback().

◆ AD7725Status()

static unsigned short AD7725Status ( struct A2DBoard * brd,
int channel )
static

References A2DIO_CS_CMD_RD, and CHAN_ADDR16().

Referenced by A2DConfig(), and AD7725StatusAll().

◆ AD7725StatusAll()

static void AD7725StatusAll ( struct A2DBoard * brd)
static

◆ AD7725StatusInstrBits()

static unsigned short AD7725StatusInstrBits ( unsigned short instr)
inlinestatic

AD7725 sets some of the bits of the previous instruction in its status register.

For a given instruction, return the value of those status bits, which gives some indication of the success of the previous operation.

References A2DINSTREG00, A2DINSTREG01, A2DINSTREG04, A2DINSTREG05, A2DINSTREG06, A2DINSTREG11, A2DINSTREG12, A2DINSTREG13, and A2DINSTREG15.

Referenced by A2DConfig(), A2DStart(), and ncar_a2d_init().

◆ addSampleConfig()

static int addSampleConfig ( struct A2DBoard * brd,
struct nidas_a2d_sample_config * cfg )
static

◆ CalVoltIsValid()

static int CalVoltIsValid ( int volt)
static

Referenced by withinRange().

◆ CalVoltToBits()

static int CalVoltToBits ( int volt)
static

Referenced by SetVcal().

◆ CHAN_ADDR16()

static unsigned long CHAN_ADDR16 ( struct A2DBoard * brd,
int channel )
inlinestatic

◆ configBoard()

static int configBoard ( struct A2DBoard * brd,
struct nidas_a2d_config * cfg )
static

◆ discardA2DFifo()

static void discardA2DFifo ( struct A2DBoard * brd)
static

Referenced by readA2DFifo().

◆ do_filters()

static void do_filters ( struct A2DBoard * brd,
dsm_sample_time_t tt,
const short * dp )
static

Invoke filters.

References NUM_NCAR_A2D_CHANNELS, and SIZEOF_DSM_SAMPLE_HEADER.

Referenced by a2d_bottom_half().

◆ freeFilters()

static void freeFilters ( struct A2DBoard * brd)
static

Referenced by ncar_a2d_cleanup(), and stopBoard().

◆ getA2DFIFOLevel()

static int getA2DFIFOLevel ( struct A2DBoard * brd)
inlinestatic

Get the FIFO fill level:

Returns
0: empty 1: not empty but less than or = 1/4 full 2: more than 1/4 but less than 1/2 3: more than or = 1/2 but less than 3/4 4: more than or = 3/4 but not totally full 5: full

References A2DBoardStatus(), FIFONOTEMPTY, and FIFONOTFULL.

Referenced by ReadSampleCallback(), and resetBoard().

◆ getSerialNumber()

static int getSerialNumber ( struct A2DBoard * brd)
static

References A2DBoardStatus().

Referenced by ncar_a2d_init().

◆ i2c_clock_hi()

static void i2c_clock_hi ( struct A2DBoard * brd)
inlinestatic

◆ i2c_clock_lo()

static void i2c_clock_lo ( struct A2DBoard * brd)
inlinestatic

◆ i2c_data_hi()

static void i2c_data_hi ( struct A2DBoard * brd)
inlinestatic

◆ i2c_data_lo()

static void i2c_data_lo ( struct A2DBoard * brd)
inlinestatic

◆ i2c_get_byte()

static unsigned char i2c_get_byte ( struct A2DBoard * brd)
inlinestatic

References i2c_clock_hi(), and i2c_clock_lo().

Referenced by A2DTemp().

◆ i2c_getAck()

static int i2c_getAck ( struct A2DBoard * brd)
inlinestatic

References i2c_clock_hi(), and i2c_clock_lo().

Referenced by i2c_put_byte().

◆ i2c_put_byte()

static int i2c_put_byte ( struct A2DBoard * brd,
unsigned char byte )
inlinestatic

◆ i2c_putAck()

static void i2c_putAck ( struct A2DBoard * brd)
inlinestatic

◆ i2c_putNoAck()

static void i2c_putNoAck ( struct A2DBoard * brd)
inlinestatic

References i2c_clock_hi(), i2c_clock_lo(), and i2c_data_hi().

Referenced by A2DTemp().

◆ i2c_start_sequence()

static void i2c_start_sequence ( struct A2DBoard * brd)
inlinestatic

◆ i2c_stop_sequence()

static void i2c_stop_sequence ( struct A2DBoard * brd)
inlinestatic

References i2c_clock_hi(), i2c_data_hi(), and i2c_data_lo().

Referenced by A2DTemp().

◆ MODULE_AUTHOR()

MODULE_AUTHOR ( "Chris Burghart <burghart@ucar.edu>" )

◆ MODULE_DESCRIPTION()

MODULE_DESCRIPTION ( "NCAR A/D driver" )

◆ module_exit()

module_exit ( ncar_a2d_cleanup )

◆ module_init()

module_init ( ncar_a2d_init )

◆ MODULE_LICENSE()

MODULE_LICENSE ( "GPL" )

◆ MODULE_PARM_DESC() [1/7]

MODULE_PARM_DESC ( a2dchans ,
"Active A2D channels,
0- 7,
separated by commas"  )

◆ MODULE_PARM_DESC() [2/7]

MODULE_PARM_DESC ( dtestchan ,
"Channel number for write test 0-7"  )

◆ MODULE_PARM_DESC() [3/7]

MODULE_PARM_DESC ( dtestcnt ,
"Number of tests to run"  )

◆ MODULE_PARM_DESC() [4/7]

MODULE_PARM_DESC ( dtestnum ,
"Test to run: 0 = no test )

◆ MODULE_PARM_DESC() [5/7]

MODULE_PARM_DESC ( fifoReadFrac ,
"N: read 1/N of FIFO on each poll,
N >=4"  )

◆ MODULE_PARM_DESC() [6/7]

MODULE_PARM_DESC ( IoPort ,
"ISA port address of each board,
e.g.:0x3A0"  )

◆ MODULE_PARM_DESC() [7/7]

MODULE_PARM_DESC ( Master ,
"Master A/D for the board )

◆ MODULE_VERSION()

MODULE_VERSION ( REPO_REVISION )

◆ ncar_a2d_cleanup()

static void ncar_a2d_cleanup ( void )
static

◆ ncar_a2d_init()

static int __init ncar_a2d_init ( void )
static

◆ ncar_a2d_ioctl()

static long ncar_a2d_ioctl ( struct file * filp,
unsigned int cmd,
unsigned long arg )
static

◆ ncar_a2d_open()

static int ncar_a2d_open ( struct inode * inode,
struct file * filp )
static

User-space open of the A/D device.

References BoardInfo, I2CSCL, I2CSDA, IRIG_NUM_RATES, and NUM_NCAR_A2D_CHANNELS.

◆ ncar_a2d_poll()

static unsigned int ncar_a2d_poll ( struct file * filp,
poll_table * wait )
static

Support for select/poll on the user device.

References WAITING_FOR_RESET.

◆ ncar_a2d_read()

static ssize_t ncar_a2d_read ( struct file * filp,
char __user * buf,
size_t count,
loff_t * f_pos )
static

User-space read on the A/D device.

References nidas_circbuf_read(), and WAITING_FOR_RESET.

◆ ncar_a2d_release()

static int ncar_a2d_release ( struct inode * inode,
struct file * filp )
static

User-space close of the A/D device.

References stopBoard().

◆ ppsCallback1()

static void ppsCallback1 ( void * ptr)
static

References A2DBoardStatus(), and INV1PPS.

Referenced by resetBoard().

◆ readA2DFifo()

static void readA2DFifo ( struct A2DBoard * brd)
static

◆ ReadSampleCallback()

static void ReadSampleCallback ( void * ptr)
static

◆ resetBoard()

static int resetBoard ( struct A2DBoard * brd)
static

◆ resetBoardWorkFunc()

static void resetBoardWorkFunc ( struct work_struct * work)
static

References resetBoard(), and A2DBoard::resetWorker.

Referenced by ncar_a2d_init().

◆ SetCal()

static void SetCal ( struct A2DBoard * brd)
static

References a2dchans, A2DIO_SYSCTL, and numa2ds.

Referenced by ncar_a2d_ioctl().

◆ SetOffset()

static void SetOffset ( struct A2DBoard * brd)
static

References a2dchans, A2DIO_SYSCTL, and numa2ds.

Referenced by A2DSetGainAndOffset().

◆ SetVcal()

static void SetVcal ( struct A2DBoard * brd)
static

References A2DIO_CALV, CalVoltToBits(), and UnSetVcal().

Referenced by ncar_a2d_ioctl().

◆ startBoard()

static int startBoard ( struct A2DBoard * brd)
static

◆ stopBoard()

static int stopBoard ( struct A2DBoard * brd)
static

◆ TemperatureCallback()

static void TemperatureCallback ( void * ptr)
static

References A2DTemp(), and NCAR_A2D_TEMPERATURE_INDEX.

Referenced by resetBoard().

◆ test_ISA_Writes()

static int test_ISA_Writes ( struct A2DBoard * brd,
int ioport )
static

◆ UnSetVcal()

static void UnSetVcal ( struct A2DBoard * brd)
static

References A2DIO_CALV.

Referenced by ncar_a2d_init(), ncar_a2d_ioctl(), and SetVcal().

◆ wait7725Int()

static int wait7725Int ( struct A2DBoard * brd,
int channel,
int ncoef )
inlinestatic

References A2DIO_SYSCTL.

Referenced by A2DConfig().

◆ waitFor1PPS()

static int waitFor1PPS ( struct A2DBoard * brd,
irig_callback_func * ppsfunc )
static

◆ withinRange()

int withinRange ( int volt,
int gain,
int offset )

References CalVoltIsValid(), and GainOffsetToEnum.

Referenced by ncar_a2d_ioctl().

Variable Documentation

◆ a2dchans

uint a2dchans[NUM_NCAR_A2D_CHANNELS] = { 0,1,2,3,4,5,6,7 }
static

◆ BoardInfo

struct A2DBoard* BoardInfo = 0
static

◆ dtestchan

int dtestchan
static

Referenced by test_ISA_Writes().

◆ dtestcnt

uint dtestcnt
static

Referenced by A2DStartAll(), and test_ISA_Writes().

◆ dtestnum

int dtestnum
static

◆ fifoReadFrac

int fifoReadFrac = 8
static

Referenced by ncar_a2d_init(), and startBoard().

◆ GainOffsetToEnum

int GainOffsetToEnum[5][2]
Initial value:
= {
{ X, X},
{ X, 0},
{ 1, 2},
{ X, X},
{ 3, X},
}
#define X
Definition ncar_a2d.c:1421

Referenced by withinRange().

◆ I2CSCL

const unsigned long I2CSCL = 0x2
static

Referenced by i2c_clock_hi(), and ncar_a2d_open().

◆ I2CSDA

const unsigned long I2CSDA = 0x1
static

Referenced by i2c_data_hi(), and ncar_a2d_open().

◆ IoPort

int IoPort[MAX_A2D_BOARDS] = { 0x3a0, 0, 0, 0 }
static

Referenced by ncar_a2d_init().

◆ Master

int Master[MAX_A2D_BOARDS] = { -1, -1, -1, -1 }
static

Referenced by startBoard().

◆ ncar_a2d_cdev

struct cdev ncar_a2d_cdev
static

Referenced by ncar_a2d_cleanup(), and ncar_a2d_init().

◆ ncar_a2d_class

struct class* ncar_a2d_class
static

Referenced by ncar_a2d_cleanup(), and ncar_a2d_init().

◆ ncar_a2d_device

dev_t ncar_a2d_device = MKDEV(0, 0)
static

Referenced by ncar_a2d_cleanup(), and ncar_a2d_init().

◆ ncar_a2d_fops

struct file_operations ncar_a2d_fops
static
Initial value:
= {
.owner = THIS_MODULE,
.read = ncar_a2d_read,
.open = ncar_a2d_open,
.unlocked_ioctl = ncar_a2d_ioctl,
.release = ncar_a2d_release,
.poll = ncar_a2d_poll,
.llseek = no_llseek,
}
static int ncar_a2d_open(struct inode *inode, struct file *filp)
User-space open of the A/D device.
Definition ncar_a2d.c:2159
static int ncar_a2d_release(struct inode *inode, struct file *filp)
User-space close of the A/D device.
Definition ncar_a2d.c:2181
static ssize_t ncar_a2d_read(struct file *filp, char __user *buf, size_t count, loff_t *f_pos)
User-space read on the A/D device.
Definition ncar_a2d.c:2225
static long ncar_a2d_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
Definition ncar_a2d.c:2251
static unsigned int ncar_a2d_poll(struct file *filp, poll_table *wait)
Support for select/poll on the user device.
Definition ncar_a2d.c:2199

Referenced by ncar_a2d_init().

◆ nIoPort

int nIoPort
static

◆ nMaster

int nMaster
static

◆ numa2ds

uint numa2ds = NUM_NCAR_A2D_CHANNELS
static

◆ NumBoards

int NumBoards = 0
static

Referenced by ncar_a2d_cleanup(), and ncar_a2d_init().

◆ WAITING_FOR_RESET

const int WAITING_FOR_RESET = 1
static

◆ work_queue

struct workqueue_struct* work_queue = 0
static