staging: comedi: cb_pcimdas: remove boardinfo
This driver only supports a single "boardtype". Remove the unneeded boardinfo struct and its use in the driver. Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Cc: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
34702518a6
commit
0f90460479
1 changed files with 9 additions and 85 deletions
|
@ -80,44 +80,6 @@ See http://www.mccdaq.com/PDFs/Manuals/pcim-das1602-16.pdf for more details.
|
||||||
#define RESID_COUNT_H 13
|
#define RESID_COUNT_H 13
|
||||||
#define RESID_COUNT_L 14
|
#define RESID_COUNT_L 14
|
||||||
|
|
||||||
/* Board description */
|
|
||||||
struct cb_pcimdas_board {
|
|
||||||
const char *name;
|
|
||||||
unsigned short device_id;
|
|
||||||
int ai_se_chans; /* Inputs in single-ended mode */
|
|
||||||
int ai_diff_chans; /* Inputs in differential mode */
|
|
||||||
int ai_bits; /* analog input resolution */
|
|
||||||
int ai_speed; /* fastest conversion period in ns */
|
|
||||||
int ao_nchan; /* number of analog out channels */
|
|
||||||
int ao_bits; /* analogue output resolution */
|
|
||||||
int has_ao_fifo; /* analog output has fifo */
|
|
||||||
int ao_scan_speed; /* analog output speed for 1602 series (for a scan, not conversion) */
|
|
||||||
int fifo_size; /* number of samples fifo can hold */
|
|
||||||
int dio_bits; /* number of dio bits */
|
|
||||||
int has_dio; /* has DIO */
|
|
||||||
const struct comedi_lrange *ranges;
|
|
||||||
};
|
|
||||||
|
|
||||||
static const struct cb_pcimdas_board cb_pcimdas_boards[] = {
|
|
||||||
{
|
|
||||||
.name = "PCIM-DAS1602/16",
|
|
||||||
.device_id = 0x56,
|
|
||||||
.ai_se_chans = 16,
|
|
||||||
.ai_diff_chans = 8,
|
|
||||||
.ai_bits = 16,
|
|
||||||
.ai_speed = 10000, /* ?? */
|
|
||||||
.ao_nchan = 2,
|
|
||||||
.ao_bits = 12,
|
|
||||||
.has_ao_fifo = 0, /* ?? */
|
|
||||||
.ao_scan_speed = 10000,
|
|
||||||
/* ?? */
|
|
||||||
.fifo_size = 1024,
|
|
||||||
.dio_bits = 24,
|
|
||||||
.has_dio = 1,
|
|
||||||
/* .ranges = &cb_pcimdas_ranges, */
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* this structure is for data unique to this hardware driver. If
|
* this structure is for data unique to this hardware driver. If
|
||||||
* several hardware drivers keep similar information in this structure,
|
* several hardware drivers keep similar information in this structure,
|
||||||
|
@ -140,7 +102,6 @@ static int cb_pcimdas_ai_rinsn(struct comedi_device *dev,
|
||||||
struct comedi_subdevice *s,
|
struct comedi_subdevice *s,
|
||||||
struct comedi_insn *insn, unsigned int *data)
|
struct comedi_insn *insn, unsigned int *data)
|
||||||
{
|
{
|
||||||
const struct cb_pcimdas_board *thisboard = comedi_board(dev);
|
|
||||||
struct cb_pcimdas_private *devpriv = dev->private;
|
struct cb_pcimdas_private *devpriv = dev->private;
|
||||||
int n, i;
|
int n, i;
|
||||||
unsigned int d;
|
unsigned int d;
|
||||||
|
@ -153,9 +114,9 @@ static int cb_pcimdas_ai_rinsn(struct comedi_device *dev,
|
||||||
|
|
||||||
/* check channel number */
|
/* check channel number */
|
||||||
if ((inb(devpriv->BADR3 + 2) & 0x20) == 0) /* differential mode */
|
if ((inb(devpriv->BADR3 + 2) & 0x20) == 0) /* differential mode */
|
||||||
maxchans = thisboard->ai_diff_chans;
|
maxchans = s->n_chan / 2;
|
||||||
else
|
else
|
||||||
maxchans = thisboard->ai_se_chans;
|
maxchans = s->n_chan;
|
||||||
|
|
||||||
if (chan > (maxchans - 1))
|
if (chan > (maxchans - 1))
|
||||||
return -ETIMEDOUT; /* *** Wrong error code. Fixme. */
|
return -ETIMEDOUT; /* *** Wrong error code. Fixme. */
|
||||||
|
@ -195,12 +156,7 @@ static int cb_pcimdas_ai_rinsn(struct comedi_device *dev,
|
||||||
return -ETIMEDOUT;
|
return -ETIMEDOUT;
|
||||||
}
|
}
|
||||||
/* read data */
|
/* read data */
|
||||||
d = inw(dev->iobase + 0);
|
data[n] = inw(dev->iobase + 0);
|
||||||
|
|
||||||
/* mangle the data as necessary */
|
|
||||||
/* d ^= 1<<(thisboard->ai_bits-1); // 16 bit data from ADC, so no mangle needed. */
|
|
||||||
|
|
||||||
data[n] = d;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* return the number of samples read/written */
|
/* return the number of samples read/written */
|
||||||
|
@ -251,24 +207,9 @@ static int cb_pcimdas_ao_rinsn(struct comedi_device *dev,
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const void *cb_pcimdas_find_boardinfo(struct comedi_device *dev,
|
|
||||||
struct pci_dev *pcidev)
|
|
||||||
{
|
|
||||||
const struct cb_pcimdas_board *thisboard;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
for (i = 0; i < ARRAY_SIZE(cb_pcimdas_boards); i++) {
|
|
||||||
thisboard = &cb_pcimdas_boards[i];
|
|
||||||
if (thisboard->device_id == pcidev->device)
|
|
||||||
return thisboard;
|
|
||||||
}
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int cb_pcimdas_attach_pci(struct comedi_device *dev,
|
static int cb_pcimdas_attach_pci(struct comedi_device *dev,
|
||||||
struct pci_dev *pcidev)
|
struct pci_dev *pcidev)
|
||||||
{
|
{
|
||||||
const struct cb_pcimdas_board *thisboard;
|
|
||||||
struct cb_pcimdas_private *devpriv;
|
struct cb_pcimdas_private *devpriv;
|
||||||
struct comedi_subdevice *s;
|
struct comedi_subdevice *s;
|
||||||
unsigned long iobase_8255;
|
unsigned long iobase_8255;
|
||||||
|
@ -276,27 +217,13 @@ static int cb_pcimdas_attach_pci(struct comedi_device *dev,
|
||||||
|
|
||||||
comedi_set_hw_dev(dev, &pcidev->dev);
|
comedi_set_hw_dev(dev, &pcidev->dev);
|
||||||
|
|
||||||
thisboard = cb_pcimdas_find_boardinfo(dev, pcidev);
|
dev->board_name = dev->driver->driver_name;
|
||||||
if (!thisboard)
|
|
||||||
return -ENODEV;
|
|
||||||
dev->board_ptr = thisboard;
|
|
||||||
dev->board_name = thisboard->name;
|
|
||||||
|
|
||||||
ret = alloc_private(dev, sizeof(*devpriv));
|
ret = alloc_private(dev, sizeof(*devpriv));
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
devpriv = dev->private;
|
devpriv = dev->private;
|
||||||
|
|
||||||
/* Warn about non-tested features */
|
|
||||||
switch (thisboard->device_id) {
|
|
||||||
case 0x56:
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
dev_dbg(dev->class_dev, "THIS CARD IS UNSUPPORTED.\n");
|
|
||||||
dev_dbg(dev->class_dev,
|
|
||||||
"PLEASE REPORT USAGE TO <mocelet@sucs.org>\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
ret = comedi_pci_enable(pcidev, dev->board_name);
|
ret = comedi_pci_enable(pcidev, dev->board_name);
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -323,8 +250,8 @@ static int cb_pcimdas_attach_pci(struct comedi_device *dev,
|
||||||
/* analog input subdevice */
|
/* analog input subdevice */
|
||||||
s->type = COMEDI_SUBD_AI;
|
s->type = COMEDI_SUBD_AI;
|
||||||
s->subdev_flags = SDF_READABLE | SDF_GROUND;
|
s->subdev_flags = SDF_READABLE | SDF_GROUND;
|
||||||
s->n_chan = thisboard->ai_se_chans;
|
s->n_chan = 16;
|
||||||
s->maxdata = (1 << thisboard->ai_bits) - 1;
|
s->maxdata = 0xffff;
|
||||||
s->range_table = &range_unknown;
|
s->range_table = &range_unknown;
|
||||||
s->len_chanlist = 1; /* This is the maximum chanlist length that */
|
s->len_chanlist = 1; /* This is the maximum chanlist length that */
|
||||||
/* the board can handle */
|
/* the board can handle */
|
||||||
|
@ -334,8 +261,8 @@ static int cb_pcimdas_attach_pci(struct comedi_device *dev,
|
||||||
/* analog output subdevice */
|
/* analog output subdevice */
|
||||||
s->type = COMEDI_SUBD_AO;
|
s->type = COMEDI_SUBD_AO;
|
||||||
s->subdev_flags = SDF_WRITABLE;
|
s->subdev_flags = SDF_WRITABLE;
|
||||||
s->n_chan = thisboard->ao_nchan;
|
s->n_chan = 2;
|
||||||
s->maxdata = 1 << thisboard->ao_bits;
|
s->maxdata = 0xfff;
|
||||||
/* ranges are hardware settable, but not software readable. */
|
/* ranges are hardware settable, but not software readable. */
|
||||||
s->range_table = &range_unknown;
|
s->range_table = &range_unknown;
|
||||||
s->insn_write = &cb_pcimdas_ao_winsn;
|
s->insn_write = &cb_pcimdas_ao_winsn;
|
||||||
|
@ -343,10 +270,7 @@ static int cb_pcimdas_attach_pci(struct comedi_device *dev,
|
||||||
|
|
||||||
s = &dev->subdevices[2];
|
s = &dev->subdevices[2];
|
||||||
/* digital i/o subdevice */
|
/* digital i/o subdevice */
|
||||||
if (thisboard->has_dio)
|
subdev_8255_init(dev, s, NULL, iobase_8255);
|
||||||
subdev_8255_init(dev, s, NULL, iobase_8255);
|
|
||||||
else
|
|
||||||
s->type = COMEDI_SUBD_UNUSED;
|
|
||||||
|
|
||||||
dev_info(dev->class_dev, "%s attached\n", dev->board_name);
|
dev_info(dev->class_dev, "%s attached\n", dev->board_name);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue