2017-11-07 13:58:43 +00:00
|
|
|
// SPDX-License-Identifier: GPL-2.0+
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
/*
|
2015-06-05 17:30:27 +00:00
|
|
|
* comedi/drivers/das08.c
|
|
|
|
* comedi module for common DAS08 support (used by ISA/PCI/PCMCIA drivers)
|
2010-04-19 06:21:10 +00:00
|
|
|
*
|
2015-06-05 17:30:27 +00:00
|
|
|
* COMEDI - Linux Control and Measurement Device Interface
|
|
|
|
* Copyright (C) 2000 David A. Schleef <ds@schleef.org>
|
|
|
|
* Copyright (C) 2001,2002,2003 Frank Mori Hess <fmhess@users.sourceforge.net>
|
|
|
|
* Copyright (C) 2004 Salvador E. Tropea <set@users.sf.net> <set@ieee.org>
|
2010-04-19 06:21:10 +00:00
|
|
|
*/
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
|
2013-06-25 00:04:43 +00:00
|
|
|
#include <linux/module.h>
|
2021-11-17 12:05:59 +00:00
|
|
|
#include <linux/comedi/comedidev.h>
|
2021-11-17 12:06:01 +00:00
|
|
|
#include <linux/comedi/comedi_8255.h>
|
2021-11-17 12:06:02 +00:00
|
|
|
#include <linux/comedi/comedi_8254.h>
|
2013-01-30 22:22:21 +00:00
|
|
|
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
#include "das08.h"
|
|
|
|
|
2015-06-05 17:30:10 +00:00
|
|
|
/*
|
|
|
|
* Data format of DAS08_AI_LSB_REG and DAS08_AI_MSB_REG depends on
|
|
|
|
* 'ai_encoding' member of board structure:
|
|
|
|
*
|
|
|
|
* das08_encode12 : DATA[11..4] = MSB[7..0], DATA[3..0] = LSB[7..4].
|
|
|
|
* das08_pcm_encode12 : DATA[11..8] = MSB[3..0], DATA[7..9] = LSB[7..0].
|
|
|
|
* das08_encode16 : SIGN = MSB[7], MAGNITUDE[14..8] = MSB[6..0],
|
|
|
|
* MAGNITUDE[7..0] = LSB[7..0].
|
|
|
|
* SIGN==0 for negative input, SIGN==1 for positive input.
|
|
|
|
* Note: when read a second time after conversion
|
|
|
|
* complete, MSB[7] is an "over-range" bit.
|
|
|
|
*/
|
|
|
|
#define DAS08_AI_LSB_REG 0x00 /* (R) AI least significant bits */
|
|
|
|
#define DAS08_AI_MSB_REG 0x01 /* (R) AI most significant bits */
|
2015-06-05 17:30:11 +00:00
|
|
|
#define DAS08_AI_TRIG_REG 0x01 /* (W) AI software trigger */
|
2015-06-05 17:30:12 +00:00
|
|
|
#define DAS08_STATUS_REG 0x02 /* (R) status */
|
2015-06-05 17:30:13 +00:00
|
|
|
#define DAS08_STATUS_AI_BUSY BIT(7) /* AI conversion in progress */
|
2015-06-05 17:30:14 +00:00
|
|
|
/*
|
|
|
|
* The IRQ status bit is set to 1 by a rising edge on the external interrupt
|
|
|
|
* input (which may be jumpered to the pacer output). It is cleared by
|
|
|
|
* setting the INTE control bit to 0. Not present on "JR" boards.
|
|
|
|
*/
|
|
|
|
#define DAS08_STATUS_IRQ BIT(3) /* latched interrupt input */
|
2015-06-05 17:30:15 +00:00
|
|
|
/* digital inputs (not "JR" boards) */
|
|
|
|
#define DAS08_STATUS_DI(x) (((x) & 0x70) >> 4)
|
2015-06-05 17:30:16 +00:00
|
|
|
#define DAS08_CONTROL_REG 0x02 /* (W) control */
|
2015-06-05 17:30:17 +00:00
|
|
|
/*
|
|
|
|
* Note: The AI multiplexor channel can also be read from status register using
|
|
|
|
* the same mask.
|
|
|
|
*/
|
|
|
|
#define DAS08_CONTROL_MUX_MASK 0x7 /* multiplexor channel mask */
|
|
|
|
#define DAS08_CONTROL_MUX(x) ((x) & DAS08_CONTROL_MUX_MASK) /* mux channel */
|
2015-06-05 17:30:18 +00:00
|
|
|
#define DAS08_CONTROL_INTE BIT(3) /* interrupt enable (not "JR" boards) */
|
2015-06-05 17:30:19 +00:00
|
|
|
#define DAS08_CONTROL_DO_MASK 0xf0 /* digital outputs mask (not "JR") */
|
|
|
|
/* digital outputs (not "JR" boards) */
|
|
|
|
#define DAS08_CONTROL_DO(x) (((x) << 4) & DAS08_CONTROL_DO_MASK)
|
2015-06-05 17:30:23 +00:00
|
|
|
/*
|
|
|
|
* (R/W) programmable AI gain ("PGx" and "AOx" boards):
|
|
|
|
* + bits 3..0 (R/W) show/set the gain for the current AI mux channel
|
|
|
|
* + bits 6..4 (R) show the current AI mux channel
|
|
|
|
* + bit 7 (R) not unused
|
|
|
|
*/
|
|
|
|
#define DAS08_GAIN_REG 0x03
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
|
2015-06-05 17:30:20 +00:00
|
|
|
#define DAS08JR_DI_REG 0x03 /* (R) digital inputs ("JR" boards) */
|
|
|
|
#define DAS08JR_DO_REG 0x03 /* (W) digital outputs ("JR" boards) */
|
2015-06-05 17:30:21 +00:00
|
|
|
/* (W) analog output l.s.b. registers for 2 channels ("JR" boards) */
|
|
|
|
#define DAS08JR_AO_LSB_REG(x) ((x) ? 0x06 : 0x04)
|
|
|
|
/* (W) analog output m.s.b. registers for 2 channels ("JR" boards) */
|
|
|
|
#define DAS08JR_AO_MSB_REG(x) ((x) ? 0x07 : 0x05)
|
2015-06-05 17:30:22 +00:00
|
|
|
/*
|
|
|
|
* (R) update analog outputs ("JR" boards set for simultaneous output)
|
|
|
|
* (same register as digital inputs)
|
|
|
|
*/
|
|
|
|
#define DAS08JR_AO_UPDATE_REG 0x03
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
|
2015-06-05 17:30:24 +00:00
|
|
|
/* (W) analog output l.s.b. registers for 2 channels ("AOx" boards) */
|
|
|
|
#define DAS08AOX_AO_LSB_REG(x) ((x) ? 0x0a : 0x08)
|
|
|
|
/* (W) analog output m.s.b. registers for 2 channels ("AOx" boards) */
|
|
|
|
#define DAS08AOX_AO_MSB_REG(x) ((x) ? 0x0b : 0x09)
|
staging: comedi: das08: rename DAS08AO_AO_UPDATE
"AOL", "AOM", and "AOH" boards have a jumper that controls whether
analog output channels are updated simultaneously or individually. When
set to update individually, individual channels are updated when the
high byte register is written. When set to update simultaneously,
channels are not updated until any of the analog output registers are
read. The driver doesn't know the jumper setting and is not interested
in the simultaneous update feature, so it updates a channel by writing
the low byte register, the high byte register, and then reading channel
0's low byte register.
The `DAS08AO_AO_UPDATE` macro contains the offset to the low byte
register for analog output channel 0 on the "AOL", "AOM", and "AOH"
boards, which the driver reads to update the analog outputs. Rename the
macro to `DAS08AOX_AO_UPDATE_REG` and add a comment.
Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
Reviewed-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2015-06-05 17:30:25 +00:00
|
|
|
/*
|
|
|
|
* (R) update analog outputs ("AOx" boards set for simultaneous output)
|
|
|
|
* (any of the analog output registers could be used for this)
|
|
|
|
*/
|
|
|
|
#define DAS08AOX_AO_UPDATE_REG 0x08
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
|
|
|
|
/* gainlist same as _pgx_ below */
|
|
|
|
|
2015-06-05 17:30:29 +00:00
|
|
|
static const struct comedi_lrange das08_pgl_ai_range = {
|
2013-12-10 00:31:03 +00:00
|
|
|
9, {
|
|
|
|
BIP_RANGE(10),
|
|
|
|
BIP_RANGE(5),
|
|
|
|
BIP_RANGE(2.5),
|
|
|
|
BIP_RANGE(1.25),
|
|
|
|
BIP_RANGE(0.625),
|
|
|
|
UNI_RANGE(10),
|
|
|
|
UNI_RANGE(5),
|
|
|
|
UNI_RANGE(2.5),
|
|
|
|
UNI_RANGE(1.25)
|
|
|
|
}
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
};
|
2009-06-08 15:34:41 +00:00
|
|
|
|
2015-06-05 17:30:29 +00:00
|
|
|
static const struct comedi_lrange das08_pgh_ai_range = {
|
2013-12-10 00:31:03 +00:00
|
|
|
12, {
|
|
|
|
BIP_RANGE(10),
|
|
|
|
BIP_RANGE(5),
|
|
|
|
BIP_RANGE(1),
|
|
|
|
BIP_RANGE(0.5),
|
|
|
|
BIP_RANGE(0.1),
|
|
|
|
BIP_RANGE(0.05),
|
|
|
|
BIP_RANGE(0.01),
|
|
|
|
BIP_RANGE(0.005),
|
|
|
|
UNI_RANGE(10),
|
|
|
|
UNI_RANGE(1),
|
|
|
|
UNI_RANGE(0.1),
|
|
|
|
UNI_RANGE(0.01)
|
|
|
|
}
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
};
|
2009-06-08 15:34:41 +00:00
|
|
|
|
2015-06-05 17:30:29 +00:00
|
|
|
static const struct comedi_lrange das08_pgm_ai_range = {
|
2013-12-10 00:31:03 +00:00
|
|
|
9, {
|
|
|
|
BIP_RANGE(10),
|
|
|
|
BIP_RANGE(5),
|
|
|
|
BIP_RANGE(0.5),
|
|
|
|
BIP_RANGE(0.05),
|
|
|
|
BIP_RANGE(0.01),
|
|
|
|
UNI_RANGE(10),
|
|
|
|
UNI_RANGE(1),
|
|
|
|
UNI_RANGE(0.1),
|
|
|
|
UNI_RANGE(0.01)
|
|
|
|
}
|
2015-06-05 17:30:26 +00:00
|
|
|
};
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
|
2009-03-17 02:05:31 +00:00
|
|
|
static const struct comedi_lrange *const das08_ai_lranges[] = {
|
2015-06-05 17:30:07 +00:00
|
|
|
[das08_pg_none] = &range_unknown,
|
|
|
|
[das08_bipolar5] = &range_bipolar5,
|
2015-06-05 17:30:29 +00:00
|
|
|
[das08_pgh] = &das08_pgh_ai_range,
|
|
|
|
[das08_pgl] = &das08_pgl_ai_range,
|
|
|
|
[das08_pgm] = &das08_pgm_ai_range,
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
};
|
|
|
|
|
2015-06-05 17:30:30 +00:00
|
|
|
static const int das08_pgh_ai_gainlist[] = {
|
2010-04-19 06:21:10 +00:00
|
|
|
8, 0, 10, 2, 12, 4, 14, 6, 1, 3, 5, 7
|
|
|
|
};
|
2015-06-05 17:30:30 +00:00
|
|
|
static const int das08_pgl_ai_gainlist[] = { 8, 0, 2, 4, 6, 1, 3, 5, 7 };
|
|
|
|
static const int das08_pgm_ai_gainlist[] = { 8, 0, 10, 12, 14, 9, 11, 13, 15 };
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
|
2015-06-05 17:30:30 +00:00
|
|
|
static const int *const das08_ai_gainlists[] = {
|
2015-06-05 17:30:07 +00:00
|
|
|
[das08_pg_none] = NULL,
|
|
|
|
[das08_bipolar5] = NULL,
|
2015-06-05 17:30:30 +00:00
|
|
|
[das08_pgh] = das08_pgh_ai_gainlist,
|
|
|
|
[das08_pgl] = das08_pgl_ai_gainlist,
|
|
|
|
[das08_pgm] = das08_pgm_ai_gainlist,
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
};
|
|
|
|
|
2014-02-10 18:49:18 +00:00
|
|
|
static int das08_ai_eoc(struct comedi_device *dev,
|
|
|
|
struct comedi_subdevice *s,
|
|
|
|
struct comedi_insn *insn,
|
|
|
|
unsigned long context)
|
|
|
|
{
|
|
|
|
unsigned int status;
|
|
|
|
|
2015-06-05 17:30:12 +00:00
|
|
|
status = inb(dev->iobase + DAS08_STATUS_REG);
|
2015-06-05 17:30:13 +00:00
|
|
|
if ((status & DAS08_STATUS_AI_BUSY) == 0)
|
2014-02-10 18:49:18 +00:00
|
|
|
return 0;
|
|
|
|
return -EBUSY;
|
|
|
|
}
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
|
2015-06-05 17:30:31 +00:00
|
|
|
static int das08_ai_insn_read(struct comedi_device *dev,
|
|
|
|
struct comedi_subdevice *s,
|
|
|
|
struct comedi_insn *insn, unsigned int *data)
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
{
|
2015-06-18 17:54:46 +00:00
|
|
|
const struct das08_board_struct *board = dev->board_ptr;
|
2012-05-24 16:27:16 +00:00
|
|
|
struct das08_private_struct *devpriv = dev->private;
|
2014-02-10 18:49:18 +00:00
|
|
|
int n;
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
int chan;
|
|
|
|
int range;
|
|
|
|
int lsb, msb;
|
2014-02-10 18:49:18 +00:00
|
|
|
int ret;
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
|
|
|
|
chan = CR_CHAN(insn->chanspec);
|
|
|
|
range = CR_RANGE(insn->chanspec);
|
|
|
|
|
|
|
|
/* clear crap */
|
2015-06-05 17:30:10 +00:00
|
|
|
inb(dev->iobase + DAS08_AI_LSB_REG);
|
|
|
|
inb(dev->iobase + DAS08_AI_MSB_REG);
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
|
|
|
|
/* set multiplexer */
|
2015-06-05 17:30:28 +00:00
|
|
|
/* lock to prevent race with digital output */
|
2010-04-19 06:21:10 +00:00
|
|
|
spin_lock(&dev->spinlock);
|
2015-06-05 17:30:17 +00:00
|
|
|
devpriv->do_mux_bits &= ~DAS08_CONTROL_MUX_MASK;
|
|
|
|
devpriv->do_mux_bits |= DAS08_CONTROL_MUX(chan);
|
2015-06-05 17:30:16 +00:00
|
|
|
outb(devpriv->do_mux_bits, dev->iobase + DAS08_CONTROL_REG);
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
spin_unlock(&dev->spinlock);
|
|
|
|
|
2015-06-05 17:30:08 +00:00
|
|
|
if (devpriv->pg_gainlist) {
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
/* set gain/range */
|
|
|
|
range = CR_RANGE(insn->chanspec);
|
|
|
|
outb(devpriv->pg_gainlist[range],
|
2015-06-05 17:30:23 +00:00
|
|
|
dev->iobase + DAS08_GAIN_REG);
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
for (n = 0; n < insn->n; n++) {
|
|
|
|
/* clear over-range bits for 16-bit boards */
|
2015-06-18 17:54:46 +00:00
|
|
|
if (board->ai_nbits == 16)
|
2015-06-05 17:30:10 +00:00
|
|
|
if (inb(dev->iobase + DAS08_AI_MSB_REG) & 0x80)
|
2012-05-24 16:27:15 +00:00
|
|
|
dev_info(dev->class_dev, "over-range\n");
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
|
|
|
|
/* trigger conversion */
|
2015-06-05 17:30:11 +00:00
|
|
|
outb_p(0, dev->iobase + DAS08_AI_TRIG_REG);
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
|
2014-02-10 18:49:18 +00:00
|
|
|
ret = comedi_timeout(dev, s, insn, das08_ai_eoc, 0);
|
2014-02-10 18:49:45 +00:00
|
|
|
if (ret)
|
2014-02-10 18:49:18 +00:00
|
|
|
return ret;
|
|
|
|
|
2015-06-05 17:30:10 +00:00
|
|
|
msb = inb(dev->iobase + DAS08_AI_MSB_REG);
|
|
|
|
lsb = inb(dev->iobase + DAS08_AI_LSB_REG);
|
2015-06-18 17:54:46 +00:00
|
|
|
if (board->ai_encoding == das08_encode12) {
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
data[n] = (lsb >> 4) | (msb << 4);
|
2015-06-18 17:54:46 +00:00
|
|
|
} else if (board->ai_encoding == das08_pcm_encode12) {
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
data[n] = (msb << 8) + lsb;
|
2015-06-18 17:54:46 +00:00
|
|
|
} else if (board->ai_encoding == das08_encode16) {
|
2015-06-05 17:30:34 +00:00
|
|
|
/*
|
|
|
|
* "JR" 16-bit boards are sign-magnitude.
|
|
|
|
*
|
|
|
|
* XXX The manual seems to imply that 0 is full-scale
|
|
|
|
* negative and 65535 is full-scale positive, but the
|
|
|
|
* original COMEDI patch to add support for the
|
|
|
|
* DAS08/JR/16 and DAS08/JR/16-AO boards have it
|
|
|
|
* encoded as sign-magnitude. Assume the original
|
|
|
|
* COMEDI code is correct for now.
|
|
|
|
*/
|
|
|
|
unsigned int magnitude = lsb | ((msb & 0x7f) << 8);
|
|
|
|
|
|
|
|
/*
|
|
|
|
* MSB bit 7 is 0 for negative, 1 for positive voltage.
|
|
|
|
* COMEDI 16-bit bipolar data value for 0V is 0x8000.
|
|
|
|
*/
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
if (msb & 0x80)
|
2019-03-31 10:47:30 +00:00
|
|
|
data[n] = BIT(15) + magnitude;
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
else
|
2019-03-31 10:47:30 +00:00
|
|
|
data[n] = BIT(15) - magnitude;
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
} else {
|
2014-07-17 18:57:44 +00:00
|
|
|
dev_err(dev->class_dev, "bug! unknown ai encoding\n");
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
return -1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return n;
|
|
|
|
}
|
|
|
|
|
2015-06-05 17:30:32 +00:00
|
|
|
static int das08_di_insn_bits(struct comedi_device *dev,
|
|
|
|
struct comedi_subdevice *s,
|
|
|
|
struct comedi_insn *insn, unsigned int *data)
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
{
|
|
|
|
data[0] = 0;
|
2015-06-05 17:30:15 +00:00
|
|
|
data[1] = DAS08_STATUS_DI(inb(dev->iobase + DAS08_STATUS_REG));
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
|
2012-06-18 20:16:35 +00:00
|
|
|
return insn->n;
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
}
|
|
|
|
|
2015-06-05 17:30:33 +00:00
|
|
|
static int das08_do_insn_bits(struct comedi_device *dev,
|
|
|
|
struct comedi_subdevice *s,
|
|
|
|
struct comedi_insn *insn, unsigned int *data)
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
{
|
2012-05-24 16:27:16 +00:00
|
|
|
struct das08_private_struct *devpriv = dev->private;
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
|
2013-08-30 18:07:35 +00:00
|
|
|
if (comedi_dio_update_state(s, data)) {
|
|
|
|
/* prevent race with setting of analog input mux */
|
|
|
|
spin_lock(&dev->spinlock);
|
2015-06-05 17:30:19 +00:00
|
|
|
devpriv->do_mux_bits &= ~DAS08_CONTROL_DO_MASK;
|
|
|
|
devpriv->do_mux_bits |= DAS08_CONTROL_DO(s->state);
|
2015-06-05 17:30:16 +00:00
|
|
|
outb(devpriv->do_mux_bits, dev->iobase + DAS08_CONTROL_REG);
|
2013-08-30 18:07:35 +00:00
|
|
|
spin_unlock(&dev->spinlock);
|
|
|
|
}
|
|
|
|
|
|
|
|
data[1] = s->state;
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
|
2012-06-18 20:16:35 +00:00
|
|
|
return insn->n;
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
}
|
|
|
|
|
2015-06-05 17:30:32 +00:00
|
|
|
static int das08jr_di_insn_bits(struct comedi_device *dev,
|
|
|
|
struct comedi_subdevice *s,
|
|
|
|
struct comedi_insn *insn, unsigned int *data)
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
{
|
|
|
|
data[0] = 0;
|
2015-06-05 17:30:20 +00:00
|
|
|
data[1] = inb(dev->iobase + DAS08JR_DI_REG);
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
|
2012-06-18 20:16:35 +00:00
|
|
|
return insn->n;
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
}
|
|
|
|
|
2015-06-05 17:30:33 +00:00
|
|
|
static int das08jr_do_insn_bits(struct comedi_device *dev,
|
|
|
|
struct comedi_subdevice *s,
|
|
|
|
struct comedi_insn *insn, unsigned int *data)
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
{
|
2013-08-30 18:07:17 +00:00
|
|
|
if (comedi_dio_update_state(s, data))
|
2015-06-05 17:30:20 +00:00
|
|
|
outb(s->state, dev->iobase + DAS08JR_DO_REG);
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
|
2013-08-30 18:07:17 +00:00
|
|
|
data[1] = s->state;
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
|
2012-06-18 20:16:35 +00:00
|
|
|
return insn->n;
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
}
|
|
|
|
|
2012-08-31 19:41:42 +00:00
|
|
|
static void das08_ao_set_data(struct comedi_device *dev,
|
|
|
|
unsigned int chan, unsigned int data)
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
{
|
2015-06-18 17:54:46 +00:00
|
|
|
const struct das08_board_struct *board = dev->board_ptr;
|
2012-08-31 19:41:42 +00:00
|
|
|
unsigned char lsb;
|
|
|
|
unsigned char msb;
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
|
2012-08-31 19:41:42 +00:00
|
|
|
lsb = data & 0xff;
|
|
|
|
msb = (data >> 8) & 0xff;
|
2015-06-18 17:54:46 +00:00
|
|
|
if (board->is_jr) {
|
2015-06-05 17:30:21 +00:00
|
|
|
outb(lsb, dev->iobase + DAS08JR_AO_LSB_REG(chan));
|
|
|
|
outb(msb, dev->iobase + DAS08JR_AO_MSB_REG(chan));
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
/* load DACs */
|
2015-06-05 17:30:22 +00:00
|
|
|
inb(dev->iobase + DAS08JR_AO_UPDATE_REG);
|
2012-08-31 19:41:42 +00:00
|
|
|
} else {
|
2015-06-05 17:30:24 +00:00
|
|
|
outb(lsb, dev->iobase + DAS08AOX_AO_LSB_REG(chan));
|
|
|
|
outb(msb, dev->iobase + DAS08AOX_AO_MSB_REG(chan));
|
2012-08-31 19:41:42 +00:00
|
|
|
/* load DACs */
|
staging: comedi: das08: rename DAS08AO_AO_UPDATE
"AOL", "AOM", and "AOH" boards have a jumper that controls whether
analog output channels are updated simultaneously or individually. When
set to update individually, individual channels are updated when the
high byte register is written. When set to update simultaneously,
channels are not updated until any of the analog output registers are
read. The driver doesn't know the jumper setting and is not interested
in the simultaneous update feature, so it updates a channel by writing
the low byte register, the high byte register, and then reading channel
0's low byte register.
The `DAS08AO_AO_UPDATE` macro contains the offset to the low byte
register for analog output channel 0 on the "AOL", "AOM", and "AOH"
boards, which the driver reads to update the analog outputs. Rename the
macro to `DAS08AOX_AO_UPDATE_REG` and add a comment.
Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
Reviewed-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2015-06-05 17:30:25 +00:00
|
|
|
inb(dev->iobase + DAS08AOX_AO_UPDATE_REG);
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
}
|
2012-08-31 19:41:43 +00:00
|
|
|
}
|
|
|
|
|
2014-08-25 23:04:36 +00:00
|
|
|
static int das08_ao_insn_write(struct comedi_device *dev,
|
|
|
|
struct comedi_subdevice *s,
|
|
|
|
struct comedi_insn *insn,
|
|
|
|
unsigned int *data)
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
{
|
2014-08-25 23:04:36 +00:00
|
|
|
unsigned int chan = CR_CHAN(insn->chanspec);
|
2014-08-25 23:04:37 +00:00
|
|
|
unsigned int val = s->readback[chan];
|
2014-08-25 23:04:36 +00:00
|
|
|
int i;
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
|
2014-08-25 23:04:37 +00:00
|
|
|
for (i = 0; i < insn->n; i++) {
|
|
|
|
val = data[i];
|
|
|
|
das08_ao_set_data(dev, chan, val);
|
|
|
|
}
|
|
|
|
s->readback[chan] = val;
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
|
2014-08-25 23:04:36 +00:00
|
|
|
return insn->n;
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
}
|
|
|
|
|
2009-04-09 20:07:03 +00:00
|
|
|
int das08_common_attach(struct comedi_device *dev, unsigned long iobase)
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
{
|
2015-06-18 17:54:46 +00:00
|
|
|
const struct das08_board_struct *board = dev->board_ptr;
|
2012-05-24 16:27:16 +00:00
|
|
|
struct das08_private_struct *devpriv = dev->private;
|
2009-03-17 02:05:14 +00:00
|
|
|
struct comedi_subdevice *s;
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
int ret;
|
2014-08-25 23:04:37 +00:00
|
|
|
int i;
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
|
|
|
|
dev->iobase = iobase;
|
|
|
|
|
2015-06-18 17:54:46 +00:00
|
|
|
dev->board_name = board->name;
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
|
2012-06-12 00:45:15 +00:00
|
|
|
ret = comedi_alloc_subdevices(dev, 6);
|
2012-06-12 18:59:33 +00:00
|
|
|
if (ret)
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
return ret;
|
|
|
|
|
2012-09-06 01:35:24 +00:00
|
|
|
s = &dev->subdevices[0];
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
/* ai */
|
2015-06-18 17:54:46 +00:00
|
|
|
if (board->ai_nbits) {
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
s->type = COMEDI_SUBD_AI;
|
2015-06-05 17:30:28 +00:00
|
|
|
/*
|
|
|
|
* XXX some boards actually have differential
|
2010-04-19 06:21:10 +00:00
|
|
|
* inputs instead of single ended.
|
|
|
|
* The driver does nothing with arefs though,
|
|
|
|
* so it's no big deal.
|
|
|
|
*/
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
s->subdev_flags = SDF_READABLE | SDF_GROUND;
|
|
|
|
s->n_chan = 8;
|
2015-06-18 17:54:46 +00:00
|
|
|
s->maxdata = (1 << board->ai_nbits) - 1;
|
|
|
|
s->range_table = das08_ai_lranges[board->ai_pg];
|
2015-06-05 17:30:31 +00:00
|
|
|
s->insn_read = das08_ai_insn_read;
|
2015-06-18 17:54:46 +00:00
|
|
|
devpriv->pg_gainlist = das08_ai_gainlists[board->ai_pg];
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
} else {
|
|
|
|
s->type = COMEDI_SUBD_UNUSED;
|
|
|
|
}
|
|
|
|
|
2012-09-06 01:35:24 +00:00
|
|
|
s = &dev->subdevices[1];
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
/* ao */
|
2015-06-18 17:54:46 +00:00
|
|
|
if (board->ao_nbits) {
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
s->type = COMEDI_SUBD_AO;
|
|
|
|
s->subdev_flags = SDF_WRITABLE;
|
|
|
|
s->n_chan = 2;
|
2015-06-18 17:54:46 +00:00
|
|
|
s->maxdata = (1 << board->ao_nbits) - 1;
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
s->range_table = &range_bipolar5;
|
2014-08-25 23:04:36 +00:00
|
|
|
s->insn_write = das08_ao_insn_write;
|
2014-08-25 23:04:37 +00:00
|
|
|
|
|
|
|
ret = comedi_alloc_subdev_readback(s);
|
|
|
|
if (ret)
|
|
|
|
return ret;
|
|
|
|
|
2015-03-05 20:21:15 +00:00
|
|
|
/* initialize all channels to 0V */
|
2014-08-25 23:04:37 +00:00
|
|
|
for (i = 0; i < s->n_chan; i++) {
|
|
|
|
s->readback[i] = s->maxdata / 2;
|
|
|
|
das08_ao_set_data(dev, i, s->readback[i]);
|
|
|
|
}
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
} else {
|
|
|
|
s->type = COMEDI_SUBD_UNUSED;
|
|
|
|
}
|
|
|
|
|
2012-09-06 01:35:24 +00:00
|
|
|
s = &dev->subdevices[2];
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
/* di */
|
2015-06-18 17:54:46 +00:00
|
|
|
if (board->di_nchan) {
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
s->type = COMEDI_SUBD_DI;
|
|
|
|
s->subdev_flags = SDF_READABLE;
|
2015-06-18 17:54:46 +00:00
|
|
|
s->n_chan = board->di_nchan;
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
s->maxdata = 1;
|
|
|
|
s->range_table = &range_digital;
|
2015-06-18 17:54:46 +00:00
|
|
|
s->insn_bits = board->is_jr ? das08jr_di_insn_bits :
|
2015-06-05 17:30:32 +00:00
|
|
|
das08_di_insn_bits;
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
} else {
|
|
|
|
s->type = COMEDI_SUBD_UNUSED;
|
|
|
|
}
|
|
|
|
|
2012-09-06 01:35:24 +00:00
|
|
|
s = &dev->subdevices[3];
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
/* do */
|
2015-06-18 17:54:46 +00:00
|
|
|
if (board->do_nchan) {
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
s->type = COMEDI_SUBD_DO;
|
2014-10-30 18:19:36 +00:00
|
|
|
s->subdev_flags = SDF_WRITABLE;
|
2015-06-18 17:54:46 +00:00
|
|
|
s->n_chan = board->do_nchan;
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
s->maxdata = 1;
|
|
|
|
s->range_table = &range_digital;
|
2015-06-18 17:54:46 +00:00
|
|
|
s->insn_bits = board->is_jr ? das08jr_do_insn_bits :
|
2015-06-05 17:30:33 +00:00
|
|
|
das08_do_insn_bits;
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
} else {
|
|
|
|
s->type = COMEDI_SUBD_UNUSED;
|
|
|
|
}
|
|
|
|
|
2012-09-06 01:35:24 +00:00
|
|
|
s = &dev->subdevices[4];
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
/* 8255 */
|
2015-06-18 17:54:46 +00:00
|
|
|
if (board->i8255_offset != 0) {
|
2023-09-13 17:07:05 +00:00
|
|
|
ret = subdev_8255_io_init(dev, s, board->i8255_offset);
|
2014-02-03 17:43:25 +00:00
|
|
|
if (ret)
|
|
|
|
return ret;
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
} else {
|
|
|
|
s->type = COMEDI_SUBD_UNUSED;
|
|
|
|
}
|
|
|
|
|
2015-02-23 21:57:42 +00:00
|
|
|
/* Counter subdevice (8254) */
|
2012-09-06 01:35:24 +00:00
|
|
|
s = &dev->subdevices[5];
|
2015-06-18 17:54:46 +00:00
|
|
|
if (board->i8254_offset) {
|
2023-09-13 17:07:02 +00:00
|
|
|
dev->pacer =
|
|
|
|
comedi_8254_io_alloc(dev->iobase + board->i8254_offset,
|
|
|
|
0, I8254_IO8, 0);
|
|
|
|
if (IS_ERR(dev->pacer))
|
|
|
|
return PTR_ERR(dev->pacer);
|
2015-02-23 21:57:42 +00:00
|
|
|
|
|
|
|
comedi_8254_subdevice_init(s, dev->pacer);
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
} else {
|
|
|
|
s->type = COMEDI_SUBD_UNUSED;
|
|
|
|
}
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
}
|
2010-04-19 06:21:10 +00:00
|
|
|
EXPORT_SYMBOL_GPL(das08_common_attach);
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
|
2012-05-24 16:27:13 +00:00
|
|
|
static int __init das08_init(void)
|
|
|
|
{
|
|
|
|
return 0;
|
2010-06-06 20:23:31 +00:00
|
|
|
}
|
2013-01-31 22:25:49 +00:00
|
|
|
module_init(das08_init);
|
2010-06-06 20:23:31 +00:00
|
|
|
|
2012-05-24 16:27:13 +00:00
|
|
|
static void __exit das08_exit(void)
|
2010-06-06 20:23:31 +00:00
|
|
|
{
|
|
|
|
}
|
2012-05-24 16:27:13 +00:00
|
|
|
module_exit(das08_exit);
|
Staging: comedi: add das08 drivers
Supports [Keithley Metrabyte] DAS08 (isa-das08), [ComputerBoards] DAS08
(isa-das08), DAS08-PGM (das08-pgm), DAS08-PGH (das08-pgh), DAS08-PGL
(das08-pgl), DAS08-AOH (das08-aoh), DAS08-AOL (das08-aol), DAS08-AOM
(das08-aom), DAS08/JR-AO (das08/jr-ao), DAS08/JR-16-AO (das08jr-16-ao),
PCI-DAS08 (das08), PC104-DAS08 (pc104-das08), DAS08/JR/16 (das08jr/16)
[ComputerBoards] PCM-DAS08 (pcm-das08)
From: David Schleef <ds@schleef.org>
Cc: Frank Mori Hess <fmhess@users.sourceforge.net>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-02-13 00:09:00 +00:00
|
|
|
|
2020-07-21 18:56:33 +00:00
|
|
|
MODULE_AUTHOR("Comedi https://www.comedi.org");
|
2015-06-05 17:30:35 +00:00
|
|
|
MODULE_DESCRIPTION("Comedi common DAS08 support module");
|
2010-06-06 20:23:29 +00:00
|
|
|
MODULE_LICENSE("GPL");
|