Skip to content

Commit

Permalink
staging: comedi: adl_pci9111: analog input subdevice is fixed
Browse files Browse the repository at this point in the history
The analog input subdevice is the same for all boards supported by
this driver. Remove the boardinfo just open-code the values in the
attach function.

Note: the only other board that could be supported by this driver is
the ADLink PCI-9111DG board. This board has 12-bit analog inputs
instead of the 16-bit inputs of the PCI-9111HR board. Unfortunately
these boards share the same PCI vendor/device id.

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>
  • Loading branch information
H Hartley Sweeten authored and Greg Kroah-Hartman committed Sep 11, 2012
1 parent f212a37 commit 02baee8
Showing 1 changed file with 16 additions and 42 deletions.
58 changes: 16 additions & 42 deletions drivers/staging/comedi/drivers/adl_pci9111.c
Original file line number Diff line number Diff line change
Expand Up @@ -92,16 +92,6 @@ a multiple of chanlist_len*convert_arg.

#define PCI9111_FIFO_HALF_SIZE 512

#define PCI9111_AI_CHANNEL_NBR 16

#define PCI9111_AI_RESOLUTION 12
#define PCI9111_AI_RESOLUTION_MASK 0x0FFF
#define PCI9111_AI_RESOLUTION_2_CMP_BIT 0x0800

#define PCI9111_HR_AI_RESOLUTION 16
#define PCI9111_HR_AI_RESOLUTION_MASK 0xFFFF
#define PCI9111_HR_AI_RESOLUTION_2_CMP_BIT 0x8000

#define PCI9111_AI_ACQUISITION_PERIOD_MIN_NS 10000

#define PCI9111_RANGE_SETTING_DELAY 10
Expand Down Expand Up @@ -231,22 +221,13 @@ static const struct comedi_lrange pci9111_hr_ai_range = {
struct pci9111_board {
const char *name; /* driver name */
int device_id;
int ai_channel_nbr; /* num of A/D chans */
int ai_resolution; /* resolution of A/D */
int ai_resolution_mask;
const struct comedi_lrange *ai_range_list; /* rangelist for A/D */
unsigned int ai_acquisition_period_min_ns;
};

static const struct pci9111_board pci9111_boards[] = {
{
.name = "pci9111_hr",
.device_id = PCI9111_HR_DEVICE_ID,
.ai_channel_nbr = PCI9111_AI_CHANNEL_NBR,
.ai_resolution = PCI9111_HR_AI_RESOLUTION,
.ai_resolution_mask = PCI9111_HR_AI_RESOLUTION_MASK,
.ai_range_list = &pci9111_hr_ai_range,
.ai_acquisition_period_min_ns = PCI9111_AI_ACQUISITION_PERIOD_MIN_NS}
},
};

/* Private data structure */
Expand Down Expand Up @@ -467,7 +448,6 @@ pci9111_ai_do_cmd_test(struct comedi_device *dev,
int error = 0;
int range, reference;
int i;
struct pci9111_board *board = (struct pci9111_board *)dev->board_ptr;

/* Step 1 : check if trigger are trivialy valid */

Expand Down Expand Up @@ -520,8 +500,8 @@ pci9111_ai_do_cmd_test(struct comedi_device *dev,
}

if ((cmd->convert_src == TRIG_TIMER) &&
(cmd->convert_arg < board->ai_acquisition_period_min_ns)) {
cmd->convert_arg = board->ai_acquisition_period_min_ns;
(cmd->convert_arg < PCI9111_AI_ACQUISITION_PERIOD_MIN_NS)) {
cmd->convert_arg = PCI9111_AI_ACQUISITION_PERIOD_MIN_NS;
error++;
}
if ((cmd->convert_src == TRIG_EXT) && (cmd->convert_arg != 0)) {
Expand All @@ -530,8 +510,8 @@ pci9111_ai_do_cmd_test(struct comedi_device *dev,
}

if ((cmd->scan_begin_src == TRIG_TIMER) &&
(cmd->scan_begin_arg < board->ai_acquisition_period_min_ns)) {
cmd->scan_begin_arg = board->ai_acquisition_period_min_ns;
(cmd->scan_begin_arg < PCI9111_AI_ACQUISITION_PERIOD_MIN_NS)) {
cmd->scan_begin_arg = PCI9111_AI_ACQUISITION_PERIOD_MIN_NS;
error++;
}
if ((cmd->scan_begin_src == TRIG_FOLLOW)
Expand Down Expand Up @@ -1187,23 +1167,17 @@ static int pci9111_attach(struct comedi_device *dev,

s = &dev->subdevices[0];
dev->read_subdev = s;

s->type = COMEDI_SUBD_AI;
s->subdev_flags = SDF_READABLE | SDF_COMMON | SDF_CMD_READ;

/* TODO: Add external multiplexer data */
/* if (devpriv->usemux) { s->n_chan = devpriv->usemux; } */
/* else { s->n_chan = this_board->n_aichan; } */

s->n_chan = board->ai_channel_nbr;
s->maxdata = board->ai_resolution_mask;
s->len_chanlist = board->ai_channel_nbr;
s->range_table = board->ai_range_list;
s->cancel = pci9111_ai_cancel;
s->insn_read = pci9111_ai_insn_read;
s->do_cmdtest = pci9111_ai_do_cmd_test;
s->do_cmd = pci9111_ai_do_cmd;
s->munge = pci9111_ai_munge;
s->type = COMEDI_SUBD_AI;
s->subdev_flags = SDF_READABLE | SDF_COMMON | SDF_CMD_READ;
s->n_chan = 16;
s->maxdata = 0xffff;
s->len_chanlist = 16;
s->range_table = &pci9111_hr_ai_range;
s->cancel = pci9111_ai_cancel;
s->insn_read = pci9111_ai_insn_read;
s->do_cmdtest = pci9111_ai_do_cmd_test;
s->do_cmd = pci9111_ai_do_cmd;
s->munge = pci9111_ai_munge;

s = &dev->subdevices[1];
s->type = COMEDI_SUBD_AO;
Expand Down

0 comments on commit 02baee8

Please sign in to comment.