linux/drivers/comedi/drivers/ni_atmio16d.c

// SPDX-License-Identifier: GPL-2.0+
/*
 * Comedi driver for National Instruments AT-MIO16D board
 * Copyright (C) 2000 Chris R. Baugher <[email protected]>
 */

/*
 * Driver: ni_atmio16d
 * Description: National Instruments AT-MIO-16D
 * Author: Chris R. Baugher <[email protected]>
 * Status: unknown
 * Devices: [National Instruments] AT-MIO-16 (atmio16), AT-MIO-16D (atmio16d)
 *
 * Configuration options:
 *   [0] - I/O port
 *   [1] - MIO irq (0 == no irq; or 3,4,5,6,7,9,10,11,12,14,15)
 *   [2] - DIO irq (0 == no irq; or 3,4,5,6,7,9)
 *   [3] - DMA1 channel (0 == no DMA; or 5,6,7)
 *   [4] - DMA2 channel (0 == no DMA; or 5,6,7)
 *   [5] - a/d mux (0=differential; 1=single)
 *   [6] - a/d range (0=bipolar10; 1=bipolar5; 2=unipolar10)
 *   [7] - dac0 range (0=bipolar; 1=unipolar)
 *   [8] - dac0 reference (0=internal; 1=external)
 *   [9] - dac0 coding (0=2's comp; 1=straight binary)
 *   [10] - dac1 range (same as dac0 options)
 *   [11] - dac1 reference (same as dac0 options)
 *   [12] - dac1 coding (same as dac0 options)
 */

/*
 * I must give credit here to Michal Dobes <[email protected]> who
 * wrote the driver for Advantec's pcl812 boards. I used the interrupt
 * handling code from his driver as an example for this one.
 *
 * Chris Baugher
 * 5/1/2000
 *
 */

#include <linux/module.h>
#include <linux/interrupt.h>
#include <linux/comedi/comedidev.h>
#include <linux/comedi/comedi_8255.h>

/* Configuration and Status Registers */
#define COM_REG_1
#define STAT_REG
#define COM_REG_2
/* Event Strobe Registers */
#define START_CONVERT_REG
#define START_DAQ_REG
#define AD_CLEAR_REG
#define EXT_STROBE_REG
/* Analog Output Registers */
#define DAC0_REG
#define DAC1_REG
#define INT2CLR_REG
/* Analog Input Registers */
#define MUX_CNTR_REG
#define MUX_GAIN_REG
#define AD_FIFO_REG
#define DMA_TC_INT_CLR_REG
/* AM9513A Counter/Timer Registers */
#define AM9513A_DATA_REG
#define AM9513A_COM_REG
#define AM9513A_STAT_REG
/* MIO-16 Digital I/O Registers */
#define MIO_16_DIG_IN_REG
#define MIO_16_DIG_OUT_REG
/* RTSI Switch Registers */
#define RTSI_SW_SHIFT_REG
#define RTSI_SW_STROBE_REG
/* DIO-24 Registers */
#define DIO_24_PORTA_REG
#define DIO_24_PORTB_REG
#define DIO_24_PORTC_REG
#define DIO_24_CNFG_REG

/* Command Register bits */
#define COMREG1_2SCADC
#define COMREG1_1632CNT
#define COMREG1_SCANEN
#define COMREG1_DAQEN
#define COMREG1_DMAEN
#define COMREG1_CONVINTEN
#define COMREG2_SCN2
#define COMREG2_INTEN
#define COMREG2_DOUTEN0
#define COMREG2_DOUTEN1
/* Status Register bits */
#define STAT_AD_OVERRUN
#define STAT_AD_OVERFLOW
#define STAT_AD_DAQPROG
#define STAT_AD_CONVAVAIL
#define STAT_AD_DAQSTOPINT
/* AM9513A Counter/Timer defines */
#define CLOCK_1_MHZ
#define CLOCK_100_KHZ
#define CLOCK_10_KHZ
#define CLOCK_1_KHZ
#define CLOCK_100_HZ

struct atmio16_board_t {};

/* range structs */
static const struct comedi_lrange range_atmio16d_ai_10_bipolar =;

static const struct comedi_lrange range_atmio16d_ai_5_bipolar =;

static const struct comedi_lrange range_atmio16d_ai_unipolar =;

/* private data struct */
struct atmio16d_private {};

static void reset_counters(struct comedi_device *dev)
{}

static void reset_atmio16d(struct comedi_device *dev)
{}

static irqreturn_t atmio16d_interrupt(int irq, void *d)
{}

static int atmio16d_ai_cmdtest(struct comedi_device *dev,
			       struct comedi_subdevice *s,
			       struct comedi_cmd *cmd)
{}

static int atmio16d_ai_cmd(struct comedi_device *dev,
			   struct comedi_subdevice *s)
{}

/* This will cancel a running acquisition operation */
static int atmio16d_ai_cancel(struct comedi_device *dev,
			      struct comedi_subdevice *s)
{}

static int atmio16d_ai_eoc(struct comedi_device *dev,
			   struct comedi_subdevice *s,
			   struct comedi_insn *insn,
			   unsigned long context)
{}

static int atmio16d_ai_insn_read(struct comedi_device *dev,
				 struct comedi_subdevice *s,
				 struct comedi_insn *insn, unsigned int *data)
{}

static int atmio16d_ao_insn_write(struct comedi_device *dev,
				  struct comedi_subdevice *s,
				  struct comedi_insn *insn,
				  unsigned int *data)
{}

static int atmio16d_dio_insn_bits(struct comedi_device *dev,
				  struct comedi_subdevice *s,
				  struct comedi_insn *insn,
				  unsigned int *data)
{}

static int atmio16d_dio_insn_config(struct comedi_device *dev,
				    struct comedi_subdevice *s,
				    struct comedi_insn *insn,
				    unsigned int *data)
{}

static int atmio16d_attach(struct comedi_device *dev,
			   struct comedi_devconfig *it)
{}

static void atmio16d_detach(struct comedi_device *dev)
{}

static const struct atmio16_board_t atmio16_boards[] =;

static struct comedi_driver atmio16d_driver =;
module_comedi_driver();

MODULE_AUTHOR();
MODULE_DESCRIPTION();
MODULE_LICENSE();