linux/drivers/comedi/drivers/cb_pcidda.c

// SPDX-License-Identifier: GPL-2.0+
/*
 * comedi/drivers/cb_pcidda.c
 * Driver for the ComputerBoards / MeasurementComputing PCI-DDA series.
 *
 * Copyright (C) 2001 Ivan Martinez <[email protected]>
 * Copyright (C) 2001 Frank Mori Hess <[email protected]>
 *
 * COMEDI - Linux Control and Measurement Device Interface
 * Copyright (C) 1997-8 David A. Schleef <[email protected]>
 */

/*
 * Driver: cb_pcidda
 * Description: MeasurementComputing PCI-DDA series
 * Devices: [Measurement Computing] PCI-DDA08/12 (pci-dda08/12),
 *   PCI-DDA04/12 (pci-dda04/12), PCI-DDA02/12 (pci-dda02/12),
 *   PCI-DDA08/16 (pci-dda08/16), PCI-DDA04/16 (pci-dda04/16),
 *   PCI-DDA02/16 (pci-dda02/16)
 * Author: Ivan Martinez <[email protected]>
 *	   Frank Mori Hess <[email protected]>
 * Status: works
 *
 * Configuration options: not applicable, uses PCI auto config
 *
 * Only simple analog output writing is supported.
 */

#include <linux/module.h>
#include <linux/comedi/comedi_pci.h>
#include <linux/comedi/comedi_8255.h>

#define EEPROM_SIZE
/* maximum number of ao channels for supported boards */
#define MAX_AO_CHANNELS

/* Digital I/O registers */
#define CB_DDA_DIO0_8255_BASE
#define CB_DDA_DIO1_8255_BASE

/* DAC registers */
#define CB_DDA_DA_CTRL_REG
#define CB_DDA_DA_CTRL_SU
#define CB_DDA_DA_CTRL_EN
#define CB_DDA_DA_CTRL_DAC(x)
#define CB_DDA_DA_CTRL_RANGE2V5
#define CB_DDA_DA_CTRL_RANGE5V
#define CB_DDA_DA_CTRL_RANGE10V
#define CB_DDA_DA_CTRL_UNIP

#define DACALIBRATION1
/* write bits */
/* serial data input for eeprom, caldacs, reference dac */
#define SERIAL_IN_BIT
#define CAL_CHANNEL_MASK
#define CAL_CHANNEL_BITS(channel)
/* read bits */
#define CAL_COUNTER_MASK
/* calibration counter overflow status bit */
#define CAL_COUNTER_OVERFLOW_BIT
/* analog output is less than reference dac voltage */
#define AO_BELOW_REF_BIT
#define SERIAL_OUT_BIT

#define DACALIBRATION2
#define SELECT_EEPROM_BIT
/* don't send serial data to MAX542 reference dac */
#define DESELECT_REF_DAC_BIT
/* don't send serial data to caldac n */
#define DESELECT_CALDAC_BIT(n)
/* manual says to set this bit with no explanation */
#define DUMMY_BIT

#define CB_DDA_DA_DATA_REG(x)

/* Offsets for the caldac channels */
#define CB_DDA_CALDAC_FINE_GAIN
#define CB_DDA_CALDAC_COURSE_GAIN
#define CB_DDA_CALDAC_COURSE_OFFSET
#define CB_DDA_CALDAC_FINE_OFFSET

static const struct comedi_lrange cb_pcidda_ranges =;

enum cb_pcidda_boardid {};

struct cb_pcidda_board {};

static const struct cb_pcidda_board cb_pcidda_boards[] =;

struct cb_pcidda_private {};

/* lowlevel read from eeprom */
static unsigned int cb_pcidda_serial_in(struct comedi_device *dev)
{}

/* lowlevel write to eeprom/dac */
static void cb_pcidda_serial_out(struct comedi_device *dev, unsigned int value,
				 unsigned int num_bits)
{}

/* reads a 16 bit value from board's eeprom */
static unsigned int cb_pcidda_read_eeprom(struct comedi_device *dev,
					  unsigned int address)
{}

/* writes to 8 bit calibration dacs */
static void cb_pcidda_write_caldac(struct comedi_device *dev,
				   unsigned int caldac, unsigned int channel,
				   unsigned int value)
{}

/* set caldacs to eeprom values for given channel and range */
static void cb_pcidda_calibrate(struct comedi_device *dev, unsigned int channel,
				unsigned int range)
{}

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

static int cb_pcidda_auto_attach(struct comedi_device *dev,
				 unsigned long context)
{}

static struct comedi_driver cb_pcidda_driver =;

static int cb_pcidda_pci_probe(struct pci_dev *dev,
			       const struct pci_device_id *id)
{}

static const struct pci_device_id cb_pcidda_pci_table[] =;
MODULE_DEVICE_TABLE(pci, cb_pcidda_pci_table);

static struct pci_driver cb_pcidda_pci_driver =;
module_comedi_pci_driver();

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