diff options
author | H Hartley Sweeten | 2015-10-08 19:48:24 +0200 |
---|---|---|
committer | Greg Kroah-Hartman | 2015-10-13 07:59:26 +0200 |
commit | 78c2f455e2efcb079f719e328133b40ee9110e6c (patch) | |
tree | b85176fde8f6750e6792dcfc2d07ea5373c0069c /drivers/staging/comedi/drivers/dt3000.c | |
parent | staging: comedi: dt3000: refactor 'adbits' boardinfo (diff) | |
download | kernel-qcow2-linux-78c2f455e2efcb079f719e328133b40ee9110e6c.tar.gz kernel-qcow2-linux-78c2f455e2efcb079f719e328133b40ee9110e6c.tar.xz kernel-qcow2-linux-78c2f455e2efcb079f719e328133b40ee9110e6c.zip |
staging: comedi: dt3000: the dt3002 board does not have analog outputs
According to the boardinfo, the dt3002 board does not have analog outputs.
The rest of the board have two 12-bit analog output channels.
Replace the 'dachan' and 'dabits' members of the boardinfo with a bit-
field flag 'has_ao'. Use the new member to conditionally initialize
the analog output subdevice.
Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Reviewed-by: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging/comedi/drivers/dt3000.c')
-rw-r--r-- | drivers/staging/comedi/drivers/dt3000.c | 49 |
1 files changed, 23 insertions, 26 deletions
diff --git a/drivers/staging/comedi/drivers/dt3000.c b/drivers/staging/comedi/drivers/dt3000.c index 8d6d34487f56..1ee3db60ab28 100644 --- a/drivers/staging/comedi/drivers/dt3000.c +++ b/drivers/staging/comedi/drivers/dt3000.c @@ -170,9 +170,8 @@ struct dt3k_boardtype { int adchan; int ai_speed; const struct comedi_lrange *adrange; - int dachan; - int dabits; unsigned int ai_is_16bit:1; + unsigned int has_ao:1; }; static const struct dt3k_boardtype dt3k_boardtypes[] = { @@ -181,16 +180,14 @@ static const struct dt3k_boardtype dt3k_boardtypes[] = { .adchan = 16, .adrange = &range_dt3000_ai, .ai_speed = 3000, - .dachan = 2, - .dabits = 12, + .has_ao = 1, }, [BOARD_DT3001_PGL] = { .name = "dt3001-pgl", .adchan = 16, .adrange = &range_dt3000_ai_pgl, .ai_speed = 3000, - .dachan = 2, - .dabits = 12, + .has_ao = 1, }, [BOARD_DT3002] = { .name = "dt3002", @@ -203,34 +200,30 @@ static const struct dt3k_boardtype dt3k_boardtypes[] = { .adchan = 64, .adrange = &range_dt3000_ai, .ai_speed = 3000, - .dachan = 2, - .dabits = 12, + .has_ao = 1, }, [BOARD_DT3003_PGL] = { .name = "dt3003-pgl", .adchan = 64, .adrange = &range_dt3000_ai_pgl, .ai_speed = 3000, - .dachan = 2, - .dabits = 12, + .has_ao = 1, }, [BOARD_DT3004] = { .name = "dt3004", .adchan = 16, .adrange = &range_dt3000_ai, .ai_speed = 10000, - .dachan = 2, - .dabits = 12, .ai_is_16bit = 1, + .has_ao = 1, }, [BOARD_DT3005] = { .name = "dt3005", /* a.k.a. 3004-200 */ .adchan = 16, .adrange = &range_dt3000_ai, .ai_speed = 5000, - .dachan = 2, - .dabits = 12, .ai_is_16bit = 1, + .has_ao = 1, }, }; @@ -681,19 +674,23 @@ static int dt3000_auto_attach(struct comedi_device *dev, s->cancel = dt3k_ai_cancel; } + /* Analog Output subdevice */ s = &dev->subdevices[1]; - /* ao subsystem */ - s->type = COMEDI_SUBD_AO; - s->subdev_flags = SDF_WRITABLE; - s->n_chan = 2; - s->maxdata = (1 << board->dabits) - 1; - s->len_chanlist = 1; - s->range_table = &range_bipolar10; - s->insn_write = dt3k_ao_insn_write; - - ret = comedi_alloc_subdev_readback(s); - if (ret) - return ret; + if (board->has_ao) { + s->type = COMEDI_SUBD_AO; + s->subdev_flags = SDF_WRITABLE; + s->n_chan = 2; + s->maxdata = 0x0fff; + s->range_table = &range_bipolar10; + s->insn_write = dt3k_ao_insn_write; + + ret = comedi_alloc_subdev_readback(s); + if (ret) + return ret; + + } else { + s->type = COMEDI_SUBD_UNUSED; + } s = &dev->subdevices[2]; /* dio subsystem */ |