staging: comedi: drivers: remove remaining devpriv macros
The remaining comedi drivers that still have a devpriv macro are all pretty straight forward for removing the devpriv macro. This macro relies on a local variable having a specific name. Remove its use by replacing it with a local variable where used. The inline function alloc_private(), used to kzalloc the dev->private memory, returns non-zero if there is an error. Fix all the alloc_private() calls accordingly and remove any kernel messages or obvious comments that still exist in the drivers. Leave a comment in the skel 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
0e05c55226
commit
9a1a6cf8ae
@ -236,7 +236,7 @@ static int pci_8255_attach_pci(struct comedi_device *dev,
|
||||
dev->board_name = board->name;
|
||||
|
||||
ret = alloc_private(dev, sizeof(*devpriv));
|
||||
if (ret < 0)
|
||||
if (ret)
|
||||
return ret;
|
||||
devpriv = dev->private;
|
||||
|
||||
|
@ -192,7 +192,7 @@ static int pci6208_attach_pci(struct comedi_device *dev,
|
||||
dev->board_name = boardinfo->name;
|
||||
|
||||
ret = alloc_private(dev, sizeof(*devpriv));
|
||||
if (ret < 0)
|
||||
if (ret)
|
||||
return ret;
|
||||
devpriv = dev->private;
|
||||
|
||||
|
@ -1924,10 +1924,8 @@ static int pci9118_attach(struct comedi_device *dev,
|
||||
master = 1;
|
||||
|
||||
ret = alloc_private(dev, sizeof(*devpriv));
|
||||
if (ret < 0) {
|
||||
printk(" - Allocation failed!\n");
|
||||
return -ENOMEM;
|
||||
}
|
||||
if (ret)
|
||||
return ret;
|
||||
devpriv = dev->private;
|
||||
|
||||
pcidev = pci9118_find_pci(dev, it);
|
||||
|
@ -1274,7 +1274,7 @@ static int pci1710_attach_pci(struct comedi_device *dev,
|
||||
dev->board_name = this_board->name;
|
||||
|
||||
ret = alloc_private(dev, sizeof(*devpriv));
|
||||
if (ret < 0)
|
||||
if (ret)
|
||||
return ret;
|
||||
devpriv = dev->private;
|
||||
|
||||
|
@ -245,7 +245,7 @@ static int pci1723_attach_pci(struct comedi_device *dev,
|
||||
dev->board_name = dev->driver->driver_name;
|
||||
|
||||
ret = alloc_private(dev, sizeof(*devpriv));
|
||||
if (ret < 0)
|
||||
if (ret)
|
||||
return ret;
|
||||
devpriv = dev->private;
|
||||
|
||||
|
@ -1109,7 +1109,7 @@ static int pci_dio_attach_pci(struct comedi_device *dev,
|
||||
dev->board_name = this_board->name;
|
||||
|
||||
ret = alloc_private(dev, sizeof(*devpriv));
|
||||
if (ret < 0)
|
||||
if (ret)
|
||||
return ret;
|
||||
devpriv = dev->private;
|
||||
|
||||
|
@ -1334,15 +1334,15 @@ static int dio200_pci_common_attach(struct comedi_device *dev,
|
||||
static int dio200_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
{
|
||||
const struct dio200_board *thisboard = comedi_board(dev);
|
||||
struct dio200_private *devpriv;
|
||||
int ret;
|
||||
|
||||
dev_info(dev->class_dev, DIO200_DRIVER_NAME ": attach\n");
|
||||
|
||||
ret = alloc_private(dev, sizeof(struct dio200_private));
|
||||
if (ret < 0) {
|
||||
dev_err(dev->class_dev, "error! out of memory!\n");
|
||||
ret = alloc_private(dev, sizeof(*devpriv));
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
devpriv = dev->private;
|
||||
|
||||
/* Process options and reserve resources according to bus type. */
|
||||
if (is_isa_board(thisboard)) {
|
||||
@ -1377,6 +1377,7 @@ static int dio200_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
static int __devinit dio200_attach_pci(struct comedi_device *dev,
|
||||
struct pci_dev *pci_dev)
|
||||
{
|
||||
struct dio200_private *devpriv;
|
||||
int ret;
|
||||
|
||||
if (!DO_PCI)
|
||||
@ -1384,11 +1385,12 @@ static int __devinit dio200_attach_pci(struct comedi_device *dev,
|
||||
|
||||
dev_info(dev->class_dev, DIO200_DRIVER_NAME ": attach pci %s\n",
|
||||
pci_name(pci_dev));
|
||||
ret = alloc_private(dev, sizeof(struct dio200_private));
|
||||
if (ret < 0) {
|
||||
dev_err(dev->class_dev, "error! out of memory!\n");
|
||||
|
||||
ret = alloc_private(dev, sizeof(*devpriv));
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
devpriv = dev->private;
|
||||
|
||||
dev->board_ptr = dio200_find_pci_board(pci_dev);
|
||||
if (dev->board_ptr == NULL) {
|
||||
dev_err(dev->class_dev, "BUG! cannot determine board type!\n");
|
||||
|
@ -505,14 +505,16 @@ static int pc236_pci_common_attach(struct comedi_device *dev,
|
||||
static int pc236_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
{
|
||||
const struct pc236_board *thisboard = comedi_board(dev);
|
||||
struct pc236_private *devpriv;
|
||||
int ret;
|
||||
|
||||
dev_info(dev->class_dev, PC236_DRIVER_NAME ": attach\n");
|
||||
ret = alloc_private(dev, sizeof(struct pc236_private));
|
||||
if (ret < 0) {
|
||||
dev_err(dev->class_dev, "error! out of memory!\n");
|
||||
|
||||
ret = alloc_private(dev, sizeof(*devpriv));
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
devpriv = dev->private;
|
||||
|
||||
/* Process options according to bus type. */
|
||||
if (is_isa_board(thisboard)) {
|
||||
unsigned long iobase = it->options[0];
|
||||
@ -543,6 +545,7 @@ static int pc236_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
static int __devinit pc236_attach_pci(struct comedi_device *dev,
|
||||
struct pci_dev *pci_dev)
|
||||
{
|
||||
struct pc236_private *devpriv;
|
||||
int ret;
|
||||
|
||||
if (!DO_PCI)
|
||||
@ -550,11 +553,12 @@ static int __devinit pc236_attach_pci(struct comedi_device *dev,
|
||||
|
||||
dev_info(dev->class_dev, PC236_DRIVER_NAME ": attach pci %s\n",
|
||||
pci_name(pci_dev));
|
||||
ret = alloc_private(dev, sizeof(struct pc236_private));
|
||||
if (ret < 0) {
|
||||
dev_err(dev->class_dev, "error! out of memory!\n");
|
||||
|
||||
ret = alloc_private(dev, sizeof(*devpriv));
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
devpriv = dev->private;
|
||||
|
||||
dev->board_ptr = pc236_find_pci_board(pci_dev);
|
||||
if (dev->board_ptr == NULL) {
|
||||
dev_err(dev->class_dev, "BUG! cannot determine board type!\n");
|
||||
|
@ -1443,16 +1443,16 @@ static int pci224_attach_common(struct comedi_device *dev,
|
||||
|
||||
static int pci224_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
{
|
||||
struct pci224_private *devpriv;
|
||||
struct pci_dev *pci_dev;
|
||||
int ret;
|
||||
|
||||
dev_info(dev->class_dev, DRIVER_NAME ": attach\n");
|
||||
|
||||
ret = alloc_private(dev, sizeof(struct pci224_private));
|
||||
if (ret < 0) {
|
||||
dev_err(dev->class_dev, "error! out of memory!\n");
|
||||
ret = alloc_private(dev, sizeof(*devpriv));
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
devpriv = dev->private;
|
||||
|
||||
pci_dev = pci224_find_pci_dev(dev, it);
|
||||
if (!pci_dev)
|
||||
@ -1464,16 +1464,16 @@ static int pci224_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
static int __devinit
|
||||
pci224_attach_pci(struct comedi_device *dev, struct pci_dev *pci_dev)
|
||||
{
|
||||
struct pci224_private *devpriv;
|
||||
int ret;
|
||||
|
||||
dev_info(dev->class_dev, DRIVER_NAME ": attach_pci %s\n",
|
||||
pci_name(pci_dev));
|
||||
|
||||
ret = alloc_private(dev, sizeof(struct pci224_private));
|
||||
if (ret < 0) {
|
||||
dev_err(dev->class_dev, "error! out of memory!\n");
|
||||
ret = alloc_private(dev, sizeof(*devpriv));
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
devpriv = dev->private;
|
||||
|
||||
dev->board_ptr = pci224_find_pci_board(pci_dev);
|
||||
if (dev->board_ptr == NULL) {
|
||||
|
@ -2662,13 +2662,11 @@ static int pci230_alloc_private(struct comedi_device *dev)
|
||||
struct pci230_private *devpriv;
|
||||
int err;
|
||||
|
||||
/* sets dev->private to allocated memory */
|
||||
err = alloc_private(dev, sizeof(struct pci230_private));
|
||||
if (err) {
|
||||
dev_err(dev->class_dev, "error! out of memory!\n");
|
||||
err = alloc_private(dev, sizeof(*devpriv));
|
||||
if (err)
|
||||
return err;
|
||||
}
|
||||
devpriv = dev->private;
|
||||
|
||||
spin_lock_init(&devpriv->isr_spinlock);
|
||||
spin_lock_init(&devpriv->res_spinlock);
|
||||
spin_lock_init(&devpriv->ai_stop_spinlock);
|
||||
@ -2836,9 +2834,11 @@ static int pci230_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
|
||||
dev_info(dev->class_dev, "amplc_pci230: attach %s %d,%d\n",
|
||||
thisboard->name, it->options[0], it->options[1]);
|
||||
rc = pci230_alloc_private(dev); /* sets dev->private */
|
||||
|
||||
rc = pci230_alloc_private(dev);
|
||||
if (rc)
|
||||
return rc;
|
||||
|
||||
pci_dev = pci230_find_pci_dev(dev, it);
|
||||
if (!pci_dev)
|
||||
return -EIO;
|
||||
@ -2852,9 +2852,11 @@ static int __devinit pci230_attach_pci(struct comedi_device *dev,
|
||||
|
||||
dev_info(dev->class_dev, "amplc_pci230: attach pci %s\n",
|
||||
pci_name(pci_dev));
|
||||
rc = pci230_alloc_private(dev); /* sets dev->private */
|
||||
|
||||
rc = pci230_alloc_private(dev);
|
||||
if (rc)
|
||||
return rc;
|
||||
|
||||
dev->board_ptr = pci230_find_pci_board(pci_dev);
|
||||
if (dev->board_ptr == NULL) {
|
||||
dev_err(dev->class_dev,
|
||||
|
@ -428,6 +428,7 @@ static int das16cs_attach(struct comedi_device *dev,
|
||||
struct comedi_devconfig *it)
|
||||
{
|
||||
const struct das16cs_board *thisboard;
|
||||
struct das16cs_private *devpriv;
|
||||
struct pcmcia_device *link;
|
||||
struct comedi_subdevice *s;
|
||||
int ret;
|
||||
@ -451,8 +452,10 @@ static int das16cs_attach(struct comedi_device *dev,
|
||||
return ret;
|
||||
dev->irq = link->irq;
|
||||
|
||||
if (alloc_private(dev, sizeof(struct das16cs_private)) < 0)
|
||||
return -ENOMEM;
|
||||
ret = alloc_private(dev, sizeof(*devpriv));
|
||||
if (ret)
|
||||
return ret;
|
||||
devpriv = dev->private;
|
||||
|
||||
ret = comedi_alloc_subdevices(dev, 3);
|
||||
if (ret)
|
||||
|
@ -306,7 +306,7 @@ static int parport_attach(struct comedi_device *dev,
|
||||
return ret;
|
||||
|
||||
ret = alloc_private(dev, sizeof(*devpriv));
|
||||
if (ret < 0)
|
||||
if (ret)
|
||||
return ret;
|
||||
devpriv = dev->private;
|
||||
|
||||
|
@ -415,7 +415,7 @@ static int waveform_attach(struct comedi_device *dev,
|
||||
dev->board_name = dev->driver->driver_name;
|
||||
|
||||
ret = alloc_private(dev, sizeof(*devpriv));
|
||||
if (ret < 0)
|
||||
if (ret)
|
||||
return ret;
|
||||
devpriv = dev->private;
|
||||
|
||||
|
@ -707,8 +707,8 @@ static int daqboard2000_attach_pci(struct comedi_device *dev,
|
||||
dev->board_name = board->name;
|
||||
|
||||
result = alloc_private(dev, sizeof(*devpriv));
|
||||
if (result < 0)
|
||||
return -ENOMEM;
|
||||
if (result)
|
||||
return result;
|
||||
devpriv = dev->private;
|
||||
|
||||
result = comedi_pci_enable(pcidev, dev->driver->driver_name);
|
||||
|
@ -778,14 +778,18 @@ das08_find_pci_board(struct pci_dev *pdev)
|
||||
static int __devinit __maybe_unused
|
||||
das08_attach_pci(struct comedi_device *dev, struct pci_dev *pdev)
|
||||
{
|
||||
struct das08_private_struct *devpriv;
|
||||
unsigned long iobase;
|
||||
int ret;
|
||||
|
||||
if (!DO_PCI)
|
||||
return -EINVAL;
|
||||
ret = alloc_private(dev, sizeof(struct das08_private_struct));
|
||||
if (ret < 0)
|
||||
|
||||
ret = alloc_private(dev, sizeof(*devpriv));
|
||||
if (ret)
|
||||
return ret;
|
||||
devpriv = dev->private;
|
||||
|
||||
dev_info(dev->class_dev, "attach pci %s\n", pci_name(pdev));
|
||||
dev->board_ptr = das08_find_pci_board(pdev);
|
||||
if (dev->board_ptr == NULL) {
|
||||
@ -812,8 +816,8 @@ das08_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
int ret;
|
||||
unsigned long iobase;
|
||||
|
||||
ret = alloc_private(dev, sizeof(struct das08_private_struct));
|
||||
if (ret < 0)
|
||||
ret = alloc_private(dev, sizeof(*devpriv));
|
||||
if (ret)
|
||||
return ret;
|
||||
devpriv = dev->private;
|
||||
|
||||
|
@ -90,13 +90,15 @@ static int das08_cs_attach(struct comedi_device *dev,
|
||||
struct comedi_devconfig *it)
|
||||
{
|
||||
const struct das08_board_struct *thisboard = comedi_board(dev);
|
||||
struct das08_private_struct *devpriv;
|
||||
int ret;
|
||||
unsigned long iobase;
|
||||
struct pcmcia_device *link = cur_dev; /* XXX hack */
|
||||
|
||||
ret = alloc_private(dev, sizeof(struct das08_private_struct));
|
||||
if (ret < 0)
|
||||
ret = alloc_private(dev, sizeof(*devpriv));
|
||||
if (ret)
|
||||
return ret;
|
||||
devpriv = dev->private;
|
||||
|
||||
dev_info(dev->class_dev, "das08_cs: attach\n");
|
||||
/* deal with a pci board */
|
||||
|
@ -392,12 +392,12 @@ struct das16_private_struct {
|
||||
volatile short timer_running;
|
||||
volatile short timer_mode; /* true if using timer mode */
|
||||
};
|
||||
#define devpriv ((struct das16_private_struct *)(dev->private))
|
||||
|
||||
static int das16_cmd_test(struct comedi_device *dev, struct comedi_subdevice *s,
|
||||
struct comedi_cmd *cmd)
|
||||
{
|
||||
const struct das16_board *board = comedi_board(dev);
|
||||
struct das16_private_struct *devpriv = dev->private;
|
||||
int err = 0, tmp;
|
||||
int gain, start_chan, i;
|
||||
int mask;
|
||||
@ -540,6 +540,7 @@ static int das16_cmd_test(struct comedi_device *dev, struct comedi_subdevice *s,
|
||||
static unsigned int das16_suggest_transfer_size(struct comedi_device *dev,
|
||||
const struct comedi_cmd *cmd)
|
||||
{
|
||||
struct das16_private_struct *devpriv = dev->private;
|
||||
unsigned int size;
|
||||
unsigned int freq;
|
||||
|
||||
@ -581,6 +582,8 @@ static unsigned int das16_suggest_transfer_size(struct comedi_device *dev,
|
||||
static unsigned int das16_set_pacer(struct comedi_device *dev, unsigned int ns,
|
||||
int rounding_flags)
|
||||
{
|
||||
struct das16_private_struct *devpriv = dev->private;
|
||||
|
||||
i8253_cascade_ns_to_timer_2div(devpriv->clockbase, &(devpriv->divisor1),
|
||||
&(devpriv->divisor2), &ns,
|
||||
rounding_flags & TRIG_ROUND_MASK);
|
||||
@ -595,6 +598,7 @@ static unsigned int das16_set_pacer(struct comedi_device *dev, unsigned int ns,
|
||||
static int das16_cmd_exec(struct comedi_device *dev, struct comedi_subdevice *s)
|
||||
{
|
||||
const struct das16_board *board = comedi_board(dev);
|
||||
struct das16_private_struct *devpriv = dev->private;
|
||||
struct comedi_async *async = s->async;
|
||||
struct comedi_cmd *cmd = &async->cmd;
|
||||
unsigned int byte;
|
||||
@ -701,6 +705,7 @@ static int das16_cmd_exec(struct comedi_device *dev, struct comedi_subdevice *s)
|
||||
static int das16_cancel(struct comedi_device *dev, struct comedi_subdevice *s)
|
||||
{
|
||||
const struct das16_board *board = comedi_board(dev);
|
||||
struct das16_private_struct *devpriv = dev->private;
|
||||
unsigned long flags;
|
||||
|
||||
spin_lock_irqsave(&dev->spinlock, flags);
|
||||
@ -738,6 +743,7 @@ static int das16_ai_rinsn(struct comedi_device *dev, struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
const struct das16_board *board = comedi_board(dev);
|
||||
struct das16_private_struct *devpriv = dev->private;
|
||||
int i, n;
|
||||
int range;
|
||||
int chan;
|
||||
@ -848,10 +854,12 @@ static int das16_ao_winsn(struct comedi_device *dev, struct comedi_subdevice *s,
|
||||
*/
|
||||
static int disable_dma_on_even(struct comedi_device *dev)
|
||||
{
|
||||
struct das16_private_struct *devpriv = dev->private;
|
||||
int residue;
|
||||
int i;
|
||||
static const int disable_limit = 100;
|
||||
static const int enable_timeout = 100;
|
||||
|
||||
disable_dma(devpriv->dma_chan);
|
||||
residue = get_dma_residue(devpriv->dma_chan);
|
||||
for (i = 0; i < disable_limit && (residue % 2); ++i) {
|
||||
@ -877,6 +885,7 @@ static int disable_dma_on_even(struct comedi_device *dev)
|
||||
static void das16_interrupt(struct comedi_device *dev)
|
||||
{
|
||||
const struct das16_board *board = comedi_board(dev);
|
||||
struct das16_private_struct *devpriv = dev->private;
|
||||
unsigned long dma_flags, spin_flags;
|
||||
struct comedi_subdevice *s = dev->read_subdev;
|
||||
struct comedi_async *async;
|
||||
@ -973,6 +982,7 @@ static irqreturn_t das16_dma_interrupt(int irq, void *d)
|
||||
static void das16_timer_interrupt(unsigned long arg)
|
||||
{
|
||||
struct comedi_device *dev = (struct comedi_device *)arg;
|
||||
struct das16_private_struct *devpriv = dev->private;
|
||||
|
||||
das16_interrupt(dev);
|
||||
|
||||
@ -1001,6 +1011,7 @@ static void reg_dump(struct comedi_device *dev)
|
||||
static int das16_probe(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
{
|
||||
const struct das16_board *board = comedi_board(dev);
|
||||
struct das16_private_struct *devpriv = dev->private;
|
||||
int status;
|
||||
int diobits;
|
||||
|
||||
@ -1035,6 +1046,7 @@ static int das16_probe(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
|
||||
static int das1600_mode_detect(struct comedi_device *dev)
|
||||
{
|
||||
struct das16_private_struct *devpriv = dev->private;
|
||||
int status = 0;
|
||||
|
||||
status = inb(dev->iobase + DAS1600_STATUS_B);
|
||||
@ -1080,6 +1092,7 @@ static void das16_ai_munge(struct comedi_device *dev,
|
||||
static int das16_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
{
|
||||
const struct das16_board *board = comedi_board(dev);
|
||||
struct das16_private_struct *devpriv;
|
||||
struct comedi_subdevice *s;
|
||||
int ret;
|
||||
unsigned int irq;
|
||||
@ -1114,9 +1127,10 @@ static int das16_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
}
|
||||
}
|
||||
|
||||
ret = alloc_private(dev, sizeof(struct das16_private_struct));
|
||||
if (ret < 0)
|
||||
ret = alloc_private(dev, sizeof(*devpriv));
|
||||
if (ret)
|
||||
return ret;
|
||||
devpriv = dev->private;
|
||||
|
||||
if (board->size < 0x400) {
|
||||
printk(" 0x%04lx-0x%04lx\n", iobase, iobase + board->size);
|
||||
@ -1353,6 +1367,7 @@ static int das16_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
static void das16_detach(struct comedi_device *dev)
|
||||
{
|
||||
const struct das16_board *board = comedi_board(dev);
|
||||
struct das16_private_struct *devpriv = dev->private;
|
||||
|
||||
das16_reset(dev);
|
||||
if (dev->subdevices)
|
||||
|
@ -144,7 +144,6 @@ struct das16m1_private_struct {
|
||||
unsigned int divisor1; /* divides master clock to obtain conversion speed */
|
||||
unsigned int divisor2; /* divides master clock to obtain conversion speed */
|
||||
};
|
||||
#define devpriv ((struct das16m1_private_struct *)(dev->private))
|
||||
|
||||
static inline short munge_sample(short data)
|
||||
{
|
||||
@ -162,6 +161,7 @@ static void munge_sample_array(short *array, unsigned int num_elements)
|
||||
static int das16m1_cmd_test(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s, struct comedi_cmd *cmd)
|
||||
{
|
||||
struct das16m1_private_struct *devpriv = dev->private;
|
||||
unsigned int err = 0, tmp, i;
|
||||
|
||||
/* Step 1 : check if triggers are trivially valid */
|
||||
@ -271,6 +271,8 @@ static int das16m1_cmd_test(struct comedi_device *dev,
|
||||
static unsigned int das16m1_set_pacer(struct comedi_device *dev,
|
||||
unsigned int ns, int rounding_flags)
|
||||
{
|
||||
struct das16m1_private_struct *devpriv = dev->private;
|
||||
|
||||
i8253_cascade_ns_to_timer_2div(DAS16M1_XTAL, &(devpriv->divisor1),
|
||||
&(devpriv->divisor2), &ns,
|
||||
rounding_flags & TRIG_ROUND_MASK);
|
||||
@ -287,6 +289,7 @@ static unsigned int das16m1_set_pacer(struct comedi_device *dev,
|
||||
static int das16m1_cmd_exec(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s)
|
||||
{
|
||||
struct das16m1_private_struct *devpriv = dev->private;
|
||||
struct comedi_async *async = s->async;
|
||||
struct comedi_cmd *cmd = &async->cmd;
|
||||
unsigned int byte, i;
|
||||
@ -350,6 +353,8 @@ static int das16m1_cmd_exec(struct comedi_device *dev,
|
||||
|
||||
static int das16m1_cancel(struct comedi_device *dev, struct comedi_subdevice *s)
|
||||
{
|
||||
struct das16m1_private_struct *devpriv = dev->private;
|
||||
|
||||
devpriv->control_state &= ~INTE & ~PACER_MASK;
|
||||
outb(devpriv->control_state, dev->iobase + DAS16M1_INTR_CONTROL);
|
||||
|
||||
@ -360,6 +365,7 @@ static int das16m1_ai_rinsn(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct das16m1_private_struct *devpriv = dev->private;
|
||||
int i, n;
|
||||
int byte;
|
||||
const int timeout = 1000;
|
||||
@ -411,6 +417,7 @@ static int das16m1_do_wbits(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct das16m1_private_struct *devpriv = dev->private;
|
||||
unsigned int wbits;
|
||||
|
||||
/* only set bits that have been masked */
|
||||
@ -430,6 +437,7 @@ static int das16m1_do_wbits(struct comedi_device *dev,
|
||||
|
||||
static void das16m1_handler(struct comedi_device *dev, unsigned int status)
|
||||
{
|
||||
struct das16m1_private_struct *devpriv = dev->private;
|
||||
struct comedi_subdevice *s;
|
||||
struct comedi_async *async;
|
||||
struct comedi_cmd *cmd;
|
||||
@ -576,6 +584,7 @@ static int das16m1_irq_bits(unsigned int irq)
|
||||
static int das16m1_attach(struct comedi_device *dev,
|
||||
struct comedi_devconfig *it)
|
||||
{
|
||||
struct das16m1_private_struct *devpriv;
|
||||
struct comedi_subdevice *s;
|
||||
int ret;
|
||||
unsigned int irq;
|
||||
@ -585,9 +594,10 @@ static int das16m1_attach(struct comedi_device *dev,
|
||||
|
||||
iobase = it->options[0];
|
||||
|
||||
ret = alloc_private(dev, sizeof(struct das16m1_private_struct));
|
||||
if (ret < 0)
|
||||
ret = alloc_private(dev, sizeof(*devpriv));
|
||||
if (ret)
|
||||
return ret;
|
||||
devpriv = dev->private;
|
||||
|
||||
if (!request_region(iobase, DAS16M1_SIZE, dev->board_name)) {
|
||||
comedi_error(dev, "I/O port conflict\n");
|
||||
|
@ -454,8 +454,6 @@ struct das1800_private {
|
||||
short ao_update_bits; /* remembers the last write to the 'update' dac */
|
||||
};
|
||||
|
||||
#define devpriv ((struct das1800_private *)dev->private)
|
||||
|
||||
/* analog out range for boards with basic analog out */
|
||||
static const struct comedi_lrange range_ao_1 = {
|
||||
1,
|
||||
@ -501,6 +499,7 @@ static void munge_data(struct comedi_device *dev, uint16_t * array,
|
||||
static void das1800_handle_fifo_half_full(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s)
|
||||
{
|
||||
struct das1800_private *devpriv = dev->private;
|
||||
int numPoints = 0; /* number of points to read */
|
||||
struct comedi_cmd *cmd = &s->async->cmd;
|
||||
|
||||
@ -520,6 +519,7 @@ static void das1800_handle_fifo_half_full(struct comedi_device *dev,
|
||||
static void das1800_handle_fifo_not_empty(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s)
|
||||
{
|
||||
struct das1800_private *devpriv = dev->private;
|
||||
short dpnt;
|
||||
int unipolar;
|
||||
struct comedi_cmd *cmd = &s->async->cmd;
|
||||
@ -548,6 +548,7 @@ static void das1800_flush_dma_channel(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s,
|
||||
unsigned int channel, uint16_t *buffer)
|
||||
{
|
||||
struct das1800_private *devpriv = dev->private;
|
||||
unsigned int num_bytes, num_samples;
|
||||
struct comedi_cmd *cmd = &s->async->cmd;
|
||||
|
||||
@ -578,6 +579,7 @@ static void das1800_flush_dma_channel(struct comedi_device *dev,
|
||||
static void das1800_flush_dma(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s)
|
||||
{
|
||||
struct das1800_private *devpriv = dev->private;
|
||||
unsigned long flags;
|
||||
const int dual_dma = devpriv->irq_dma_bits & DMA_DUAL;
|
||||
|
||||
@ -609,6 +611,7 @@ static void das1800_flush_dma(struct comedi_device *dev,
|
||||
static void das1800_handle_dma(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s, unsigned int status)
|
||||
{
|
||||
struct das1800_private *devpriv = dev->private;
|
||||
unsigned long flags;
|
||||
const int dual_dma = devpriv->irq_dma_bits & DMA_DUAL;
|
||||
|
||||
@ -643,6 +646,8 @@ static void das1800_handle_dma(struct comedi_device *dev,
|
||||
|
||||
static int das1800_cancel(struct comedi_device *dev, struct comedi_subdevice *s)
|
||||
{
|
||||
struct das1800_private *devpriv = dev->private;
|
||||
|
||||
outb(0x0, dev->iobase + DAS1800_STATUS); /* disable conversions */
|
||||
outb(0x0, dev->iobase + DAS1800_CONTROL_B); /* disable interrupts and dma */
|
||||
outb(0x0, dev->iobase + DAS1800_CONTROL_A); /* disable and clear fifo and stop triggering */
|
||||
@ -656,6 +661,7 @@ static int das1800_cancel(struct comedi_device *dev, struct comedi_subdevice *s)
|
||||
/* the guts of the interrupt handler, that is shared with das1800_ai_poll */
|
||||
static void das1800_ai_handler(struct comedi_device *dev)
|
||||
{
|
||||
struct das1800_private *devpriv = dev->private;
|
||||
struct comedi_subdevice *s = &dev->subdevices[0];
|
||||
struct comedi_async *async = s->async;
|
||||
struct comedi_cmd *cmd = &async->cmd;
|
||||
@ -783,6 +789,7 @@ static int das1800_ai_do_cmdtest(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s,
|
||||
struct comedi_cmd *cmd)
|
||||
{
|
||||
struct das1800_private *devpriv = dev->private;
|
||||
int err = 0;
|
||||
unsigned int tmp_arg;
|
||||
int i;
|
||||
@ -1006,6 +1013,7 @@ static int control_c_bits(const struct comedi_cmd *cmd)
|
||||
/* loads counters with divisor1, divisor2 from private structure */
|
||||
static int das1800_set_frequency(struct comedi_device *dev)
|
||||
{
|
||||
struct das1800_private *devpriv = dev->private;
|
||||
int err = 0;
|
||||
|
||||
/* counter 1, mode 2 */
|
||||
@ -1026,6 +1034,7 @@ static int das1800_set_frequency(struct comedi_device *dev)
|
||||
static int setup_counters(struct comedi_device *dev,
|
||||
const struct comedi_cmd *cmd)
|
||||
{
|
||||
struct das1800_private *devpriv = dev->private;
|
||||
unsigned int period;
|
||||
|
||||
/* setup cascaded counters for conversion/scan frequency */
|
||||
@ -1107,6 +1116,7 @@ static unsigned int suggest_transfer_size(const struct comedi_cmd *cmd)
|
||||
/* sets up dma */
|
||||
static void setup_dma(struct comedi_device *dev, const struct comedi_cmd *cmd)
|
||||
{
|
||||
struct das1800_private *devpriv = dev->private;
|
||||
unsigned long lock_flags;
|
||||
const int dual_dma = devpriv->irq_dma_bits & DMA_DUAL;
|
||||
|
||||
@ -1174,6 +1184,7 @@ static void program_chanlist(struct comedi_device *dev,
|
||||
static int das1800_ai_do_cmd(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s)
|
||||
{
|
||||
struct das1800_private *devpriv = dev->private;
|
||||
int ret;
|
||||
int control_a, control_c;
|
||||
struct comedi_async *async = s->async;
|
||||
@ -1300,6 +1311,7 @@ static int das1800_ao_winsn(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct das1800_private *devpriv = dev->private;
|
||||
int chan = CR_CHAN(insn->chanspec);
|
||||
/* int range = CR_RANGE(insn->chanspec); */
|
||||
int update_chan = thisboard->ao_n_chan - 1;
|
||||
@ -1342,6 +1354,7 @@ static int das1800_do_wbits(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct das1800_private *devpriv = dev->private;
|
||||
unsigned int wbits;
|
||||
|
||||
/* only set bits that have been masked */
|
||||
@ -1361,6 +1374,7 @@ static int das1800_do_wbits(struct comedi_device *dev,
|
||||
static int das1800_init_dma(struct comedi_device *dev, unsigned int dma0,
|
||||
unsigned int dma1)
|
||||
{
|
||||
struct das1800_private *devpriv = dev->private;
|
||||
unsigned long flags;
|
||||
|
||||
/* need an irq to do dma */
|
||||
@ -1518,6 +1532,7 @@ static int das1800_probe(struct comedi_device *dev)
|
||||
static int das1800_attach(struct comedi_device *dev,
|
||||
struct comedi_devconfig *it)
|
||||
{
|
||||
struct das1800_private *devpriv;
|
||||
struct comedi_subdevice *s;
|
||||
unsigned long iobase = it->options[0];
|
||||
unsigned int irq = it->options[1];
|
||||
@ -1527,9 +1542,10 @@ static int das1800_attach(struct comedi_device *dev,
|
||||
int board;
|
||||
int retval;
|
||||
|
||||
/* allocate and initialize dev->private */
|
||||
if (alloc_private(dev, sizeof(struct das1800_private)) < 0)
|
||||
return -ENOMEM;
|
||||
retval = alloc_private(dev, sizeof(*devpriv));
|
||||
if (retval)
|
||||
return retval;
|
||||
devpriv = dev->private;
|
||||
|
||||
printk(KERN_DEBUG "comedi%d: %s: io 0x%lx", dev->minor,
|
||||
dev->driver->driver_name, iobase);
|
||||
@ -1699,11 +1715,13 @@ static int das1800_attach(struct comedi_device *dev,
|
||||
|
||||
static void das1800_detach(struct comedi_device *dev)
|
||||
{
|
||||
struct das1800_private *devpriv = dev->private;
|
||||
|
||||
if (dev->iobase)
|
||||
release_region(dev->iobase, DAS1800_SIZE);
|
||||
if (dev->irq)
|
||||
free_irq(dev->irq, dev);
|
||||
if (dev->private) {
|
||||
if (devpriv) {
|
||||
if (devpriv->iobase2)
|
||||
release_region(devpriv->iobase2, DAS1800_SIZE);
|
||||
if (devpriv->dma0)
|
||||
|
@ -104,7 +104,6 @@ struct das6402_private {
|
||||
|
||||
int das6402_ignoreirq;
|
||||
};
|
||||
#define devpriv ((struct das6402_private *)dev->private)
|
||||
|
||||
static void das6402_ai_fifo_dregs(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s)
|
||||
@ -152,6 +151,7 @@ static void das6402_setcounter(struct comedi_device *dev)
|
||||
static irqreturn_t intr_handler(int irq, void *d)
|
||||
{
|
||||
struct comedi_device *dev = d;
|
||||
struct das6402_private *devpriv = dev->private;
|
||||
struct comedi_subdevice *s = &dev->subdevices[0];
|
||||
|
||||
if (!dev->attached || devpriv->das6402_ignoreirq) {
|
||||
@ -196,6 +196,8 @@ static void das6402_ai_fifo_read(struct comedi_device *dev, short *data, int n)
|
||||
static int das6402_ai_cancel(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s)
|
||||
{
|
||||
struct das6402_private *devpriv = dev->private;
|
||||
|
||||
/*
|
||||
* This function should reset the board from whatever condition it
|
||||
* is in (i.e., acquiring data), to a non-active state.
|
||||
@ -217,6 +219,8 @@ static int das6402_ai_cancel(struct comedi_device *dev,
|
||||
static int das6402_ai_mode2(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s, comedi_trig * it)
|
||||
{
|
||||
struct das6402_private *devpriv = dev->private;
|
||||
|
||||
devpriv->das6402_ignoreirq = 1;
|
||||
dev_dbg(dev->class_dev, "Starting acquisition\n");
|
||||
outb_p(0x03, dev->iobase + 10); /* enable external trigging */
|
||||
@ -236,6 +240,7 @@ static int das6402_ai_mode2(struct comedi_device *dev,
|
||||
|
||||
static int board_init(struct comedi_device *dev)
|
||||
{
|
||||
struct das6402_private *devpriv = dev->private;
|
||||
BYTE b;
|
||||
|
||||
devpriv->das6402_ignoreirq = 1;
|
||||
@ -277,6 +282,7 @@ static int board_init(struct comedi_device *dev)
|
||||
static int das6402_attach(struct comedi_device *dev,
|
||||
struct comedi_devconfig *it)
|
||||
{
|
||||
struct das6402_private *devpriv;
|
||||
unsigned int irq;
|
||||
unsigned long iobase;
|
||||
int ret;
|
||||
@ -303,9 +309,11 @@ static int das6402_attach(struct comedi_device *dev,
|
||||
return ret;
|
||||
|
||||
dev->irq = irq;
|
||||
ret = alloc_private(dev, sizeof(struct das6402_private));
|
||||
if (ret < 0)
|
||||
|
||||
ret = alloc_private(dev, sizeof(*devpriv));
|
||||
if (ret)
|
||||
return ret;
|
||||
devpriv = dev->private;
|
||||
|
||||
ret = comedi_alloc_subdevices(dev, 1);
|
||||
if (ret)
|
||||
|
@ -241,8 +241,6 @@ struct das800_private {
|
||||
volatile int do_bits; /* digital output bits */
|
||||
};
|
||||
|
||||
#define devpriv ((struct das800_private *)dev->private)
|
||||
|
||||
static int das800_attach(struct comedi_device *dev,
|
||||
struct comedi_devconfig *it);
|
||||
static void das800_detach(struct comedi_device *dev);
|
||||
@ -367,6 +365,7 @@ static irqreturn_t das800_interrupt(int irq, void *d)
|
||||
short i; /* loop index */
|
||||
short dataPoint = 0;
|
||||
struct comedi_device *dev = d;
|
||||
struct das800_private *devpriv = dev->private;
|
||||
struct comedi_subdevice *s = dev->read_subdev; /* analog input subdevice */
|
||||
struct comedi_async *async;
|
||||
int status;
|
||||
@ -461,6 +460,7 @@ static irqreturn_t das800_interrupt(int irq, void *d)
|
||||
|
||||
static int das800_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
{
|
||||
struct das800_private *devpriv;
|
||||
struct comedi_subdevice *s;
|
||||
unsigned long iobase = it->options[0];
|
||||
unsigned int irq = it->options[1];
|
||||
@ -472,9 +472,10 @@ static int das800_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
if (irq)
|
||||
dev_dbg(dev->class_dev, "irq %u\n", irq);
|
||||
|
||||
/* allocate and initialize dev->private */
|
||||
if (alloc_private(dev, sizeof(struct das800_private)) < 0)
|
||||
return -ENOMEM;
|
||||
ret = alloc_private(dev, sizeof(*devpriv));
|
||||
if (ret)
|
||||
return ret;
|
||||
devpriv = dev->private;
|
||||
|
||||
if (iobase == 0) {
|
||||
dev_err(dev->class_dev,
|
||||
@ -569,6 +570,8 @@ static void das800_detach(struct comedi_device *dev)
|
||||
|
||||
static int das800_cancel(struct comedi_device *dev, struct comedi_subdevice *s)
|
||||
{
|
||||
struct das800_private *devpriv = dev->private;
|
||||
|
||||
devpriv->forever = 0;
|
||||
devpriv->count = 0;
|
||||
disable_das800(dev);
|
||||
@ -578,7 +581,9 @@ static int das800_cancel(struct comedi_device *dev, struct comedi_subdevice *s)
|
||||
/* enable_das800 makes the card start taking hardware triggered conversions */
|
||||
static void enable_das800(struct comedi_device *dev)
|
||||
{
|
||||
struct das800_private *devpriv = dev->private;
|
||||
unsigned long irq_flags;
|
||||
|
||||
spin_lock_irqsave(&dev->spinlock, irq_flags);
|
||||
/* enable fifo-half full interrupts for cio-das802/16 */
|
||||
if (thisboard->resolution == 16)
|
||||
@ -604,6 +609,7 @@ static int das800_ai_do_cmdtest(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s,
|
||||
struct comedi_cmd *cmd)
|
||||
{
|
||||
struct das800_private *devpriv = dev->private;
|
||||
int err = 0;
|
||||
int tmp;
|
||||
int gain, startChan;
|
||||
@ -710,6 +716,7 @@ static int das800_ai_do_cmdtest(struct comedi_device *dev,
|
||||
static int das800_ai_do_cmd(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s)
|
||||
{
|
||||
struct das800_private *devpriv = dev->private;
|
||||
int startChan, endChan, scan, gain;
|
||||
int conv_bits;
|
||||
unsigned long irq_flags;
|
||||
@ -793,6 +800,7 @@ static int das800_ai_rinsn(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s, struct comedi_insn *insn,
|
||||
unsigned int *data)
|
||||
{
|
||||
struct das800_private *devpriv = dev->private;
|
||||
int i, n;
|
||||
int chan;
|
||||
int range;
|
||||
@ -862,6 +870,7 @@ static int das800_do_wbits(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s, struct comedi_insn *insn,
|
||||
unsigned int *data)
|
||||
{
|
||||
struct das800_private *devpriv = dev->private;
|
||||
int wbits;
|
||||
unsigned long irq_flags;
|
||||
|
||||
@ -885,6 +894,7 @@ static int das800_do_wbits(struct comedi_device *dev,
|
||||
/* loads counters with divisor1, divisor2 from private structure */
|
||||
static int das800_set_frequency(struct comedi_device *dev)
|
||||
{
|
||||
struct das800_private *devpriv = dev->private;
|
||||
int err = 0;
|
||||
|
||||
if (i8254_load(dev->iobase + DAS800_8254, 0, 1, devpriv->divisor1, 2))
|
||||
|
@ -793,8 +793,9 @@ static int dmm32at_attach(struct comedi_device *dev,
|
||||
dev->irq = irq;
|
||||
}
|
||||
|
||||
if (alloc_private(dev, sizeof(*devpriv)) < 0)
|
||||
return -ENOMEM;
|
||||
ret = alloc_private(dev, sizeof(*devpriv));
|
||||
if (ret)
|
||||
return ret;
|
||||
devpriv = dev->private;
|
||||
|
||||
ret = comedi_alloc_subdevices(dev, 3);
|
||||
|
@ -233,8 +233,6 @@ struct dt2801_private {
|
||||
unsigned int ao_readback[2];
|
||||
};
|
||||
|
||||
#define devpriv ((struct dt2801_private *)dev->private)
|
||||
|
||||
/* These are the low-level routines:
|
||||
writecommand: write a command to the board
|
||||
writedata: write data byte
|
||||
@ -508,6 +506,8 @@ static int dt2801_ao_insn_read(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct dt2801_private *devpriv = dev->private;
|
||||
|
||||
data[0] = devpriv->ao_readback[CR_CHAN(insn->chanspec)];
|
||||
|
||||
return 1;
|
||||
@ -517,6 +517,8 @@ static int dt2801_ao_insn_write(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct dt2801_private *devpriv = dev->private;
|
||||
|
||||
dt2801_writecmd(dev, DT_C_WRITE_DAIM);
|
||||
dt2801_writedata(dev, CR_CHAN(insn->chanspec));
|
||||
dt2801_writedata2(dev, data[0]);
|
||||
@ -590,6 +592,7 @@ static int dt2801_dio_insn_config(struct comedi_device *dev,
|
||||
*/
|
||||
static int dt2801_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
{
|
||||
struct dt2801_private *devpriv;
|
||||
struct comedi_subdevice *s;
|
||||
unsigned long iobase;
|
||||
int board_code, type;
|
||||
@ -630,9 +633,10 @@ havetype:
|
||||
if (ret)
|
||||
goto out;
|
||||
|
||||
ret = alloc_private(dev, sizeof(struct dt2801_private));
|
||||
if (ret < 0)
|
||||
ret = alloc_private(dev, sizeof(*devpriv));
|
||||
if (ret)
|
||||
return ret;
|
||||
devpriv = dev->private;
|
||||
|
||||
dev->board_name = boardtype.name;
|
||||
|
||||
|
@ -226,8 +226,6 @@ struct dt2811_private {
|
||||
unsigned int ao_readback[2];
|
||||
};
|
||||
|
||||
#define devpriv ((struct dt2811_private *)dev->private)
|
||||
|
||||
static const struct comedi_lrange *dac_range_types[] = {
|
||||
&range_bipolar5,
|
||||
&range_bipolar2_5,
|
||||
@ -242,6 +240,7 @@ static irqreturn_t dt2811_interrupt(int irq, void *d)
|
||||
int lo, hi;
|
||||
int data;
|
||||
struct comedi_device *dev = d;
|
||||
struct dt2811_private *devpriv = dev->private;
|
||||
|
||||
if (!dev->attached) {
|
||||
comedi_error(dev, "spurious interrupt");
|
||||
@ -318,6 +317,7 @@ int dt2811_adtrig(kdev_t minor, comedi_adtrig *adtrig)
|
||||
static int dt2811_ao_insn(struct comedi_device *dev, struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct dt2811_private *devpriv = dev->private;
|
||||
int i;
|
||||
int chan;
|
||||
|
||||
@ -337,6 +337,7 @@ static int dt2811_ao_insn_read(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct dt2811_private *devpriv = dev->private;
|
||||
int i;
|
||||
int chan;
|
||||
|
||||
@ -397,6 +398,7 @@ static int dt2811_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
/* long flags; */
|
||||
|
||||
const struct dt2811_board *board = comedi_board(dev);
|
||||
struct dt2811_private *devpriv;
|
||||
int ret;
|
||||
struct comedi_subdevice *s;
|
||||
unsigned long iobase;
|
||||
@ -463,9 +465,10 @@ static int dt2811_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = alloc_private(dev, sizeof(struct dt2811_private));
|
||||
if (ret < 0)
|
||||
ret = alloc_private(dev, sizeof(*devpriv));
|
||||
if (ret)
|
||||
return ret;
|
||||
devpriv = dev->private;
|
||||
|
||||
switch (it->options[2]) {
|
||||
case 0:
|
||||
|
@ -68,8 +68,6 @@ struct dt2814_private {
|
||||
int curadchan;
|
||||
};
|
||||
|
||||
#define devpriv ((struct dt2814_private *)dev->private)
|
||||
|
||||
#define DT2814_TIMEOUT 10
|
||||
#define DT2814_MAX_SPEED 100000 /* Arbitrary 10 khz limit */
|
||||
|
||||
@ -200,6 +198,7 @@ static int dt2814_ai_cmdtest(struct comedi_device *dev,
|
||||
|
||||
static int dt2814_ai_cmd(struct comedi_device *dev, struct comedi_subdevice *s)
|
||||
{
|
||||
struct dt2814_private *devpriv = dev->private;
|
||||
struct comedi_cmd *cmd = &s->async->cmd;
|
||||
int chan;
|
||||
int trigvar;
|
||||
@ -221,6 +220,7 @@ static irqreturn_t dt2814_interrupt(int irq, void *d)
|
||||
{
|
||||
int lo, hi;
|
||||
struct comedi_device *dev = d;
|
||||
struct dt2814_private *devpriv = dev->private;
|
||||
struct comedi_subdevice *s;
|
||||
int data;
|
||||
|
||||
@ -258,6 +258,7 @@ static irqreturn_t dt2814_interrupt(int irq, void *d)
|
||||
|
||||
static int dt2814_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
{
|
||||
struct dt2814_private *devpriv;
|
||||
int i, irq;
|
||||
int ret;
|
||||
struct comedi_subdevice *s;
|
||||
@ -324,9 +325,10 @@ static int dt2814_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = alloc_private(dev, sizeof(struct dt2814_private));
|
||||
if (ret < 0)
|
||||
ret = alloc_private(dev, sizeof(*devpriv));
|
||||
if (ret)
|
||||
return ret;
|
||||
devpriv = dev->private;
|
||||
|
||||
s = &dev->subdevices[0];
|
||||
dev->read_subdev = s;
|
||||
|
@ -78,8 +78,6 @@ struct dt2815_private {
|
||||
unsigned int ao_readback[8];
|
||||
};
|
||||
|
||||
#define devpriv ((struct dt2815_private *)dev->private)
|
||||
|
||||
static int dt2815_wait_for_status(struct comedi_device *dev, int status)
|
||||
{
|
||||
int i;
|
||||
@ -95,6 +93,7 @@ static int dt2815_ao_insn_read(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct dt2815_private *devpriv = dev->private;
|
||||
int i;
|
||||
int chan = CR_CHAN(insn->chanspec);
|
||||
|
||||
@ -107,6 +106,7 @@ static int dt2815_ao_insn_read(struct comedi_device *dev,
|
||||
static int dt2815_ao_insn(struct comedi_device *dev, struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct dt2815_private *devpriv = dev->private;
|
||||
int i;
|
||||
int chan = CR_CHAN(insn->chanspec);
|
||||
unsigned int status;
|
||||
@ -162,6 +162,7 @@ static int dt2815_ao_insn(struct comedi_device *dev, struct comedi_subdevice *s,
|
||||
|
||||
static int dt2815_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
{
|
||||
struct dt2815_private *devpriv;
|
||||
struct comedi_subdevice *s;
|
||||
int i;
|
||||
const struct comedi_lrange *current_range_type, *voltage_range_type;
|
||||
@ -182,8 +183,10 @@ static int dt2815_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
if (alloc_private(dev, sizeof(struct dt2815_private)) < 0)
|
||||
return -ENOMEM;
|
||||
ret = alloc_private(dev, sizeof(*devpriv));
|
||||
if (ret)
|
||||
return ret;
|
||||
devpriv = dev->private;
|
||||
|
||||
s = &dev->subdevices[0];
|
||||
/* ao subdevice */
|
||||
|
@ -248,7 +248,6 @@ struct dt282x_private {
|
||||
int dma_dir;
|
||||
};
|
||||
|
||||
#define devpriv ((struct dt282x_private *)dev->private)
|
||||
#define boardtype (*(const struct dt282x_board *)dev->board_ptr)
|
||||
|
||||
/*
|
||||
@ -290,6 +289,7 @@ static int dt282x_grab_dma(struct comedi_device *dev, int dma1, int dma2);
|
||||
static void dt282x_munge(struct comedi_device *dev, short *buf,
|
||||
unsigned int nbytes)
|
||||
{
|
||||
struct dt282x_private *devpriv = dev->private;
|
||||
unsigned int i;
|
||||
unsigned short mask = (1 << boardtype.adbits) - 1;
|
||||
unsigned short sign = 1 << (boardtype.adbits - 1);
|
||||
@ -309,6 +309,7 @@ static void dt282x_munge(struct comedi_device *dev, short *buf,
|
||||
|
||||
static void dt282x_ao_dma_interrupt(struct comedi_device *dev)
|
||||
{
|
||||
struct dt282x_private *devpriv = dev->private;
|
||||
void *ptr;
|
||||
int size;
|
||||
int i;
|
||||
@ -341,6 +342,7 @@ static void dt282x_ao_dma_interrupt(struct comedi_device *dev)
|
||||
|
||||
static void dt282x_ai_dma_interrupt(struct comedi_device *dev)
|
||||
{
|
||||
struct dt282x_private *devpriv = dev->private;
|
||||
void *ptr;
|
||||
int size;
|
||||
int i;
|
||||
@ -393,6 +395,7 @@ static void dt282x_ai_dma_interrupt(struct comedi_device *dev)
|
||||
|
||||
static int prep_ai_dma(struct comedi_device *dev, int dma_index, int n)
|
||||
{
|
||||
struct dt282x_private *devpriv = dev->private;
|
||||
int dma_chan;
|
||||
unsigned long dma_ptr;
|
||||
unsigned long flags;
|
||||
@ -424,6 +427,7 @@ static int prep_ai_dma(struct comedi_device *dev, int dma_index, int n)
|
||||
|
||||
static int prep_ao_dma(struct comedi_device *dev, int dma_index, int n)
|
||||
{
|
||||
struct dt282x_private *devpriv = dev->private;
|
||||
int dma_chan;
|
||||
unsigned long dma_ptr;
|
||||
unsigned long flags;
|
||||
@ -447,6 +451,7 @@ static int prep_ao_dma(struct comedi_device *dev, int dma_index, int n)
|
||||
static irqreturn_t dt282x_interrupt(int irq, void *d)
|
||||
{
|
||||
struct comedi_device *dev = d;
|
||||
struct dt282x_private *devpriv = dev->private;
|
||||
struct comedi_subdevice *s;
|
||||
struct comedi_subdevice *s_ao;
|
||||
unsigned int supcsr, adcsr, dacsr;
|
||||
@ -525,6 +530,7 @@ static irqreturn_t dt282x_interrupt(int irq, void *d)
|
||||
static void dt282x_load_changain(struct comedi_device *dev, int n,
|
||||
unsigned int *chanlist)
|
||||
{
|
||||
struct dt282x_private *devpriv = dev->private;
|
||||
unsigned int i;
|
||||
unsigned int chan, range;
|
||||
|
||||
@ -548,6 +554,7 @@ static int dt282x_ai_insn_read(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct dt282x_private *devpriv = dev->private;
|
||||
int i;
|
||||
|
||||
/* XXX should we really be enabling the ad clock here? */
|
||||
@ -671,6 +678,7 @@ static int dt282x_ai_cmdtest(struct comedi_device *dev,
|
||||
static int dt282x_ai_cmd(struct comedi_device *dev, struct comedi_subdevice *s)
|
||||
{
|
||||
const struct dt282x_board *board = comedi_board(dev);
|
||||
struct dt282x_private *devpriv = dev->private;
|
||||
struct comedi_cmd *cmd = &s->async->cmd;
|
||||
int timer;
|
||||
|
||||
@ -733,6 +741,8 @@ static int dt282x_ai_cmd(struct comedi_device *dev, struct comedi_subdevice *s)
|
||||
|
||||
static void dt282x_disable_dma(struct comedi_device *dev)
|
||||
{
|
||||
struct dt282x_private *devpriv = dev->private;
|
||||
|
||||
if (devpriv->usedma) {
|
||||
disable_dma(devpriv->dma[0].chan);
|
||||
disable_dma(devpriv->dma[1].chan);
|
||||
@ -742,6 +752,8 @@ static void dt282x_disable_dma(struct comedi_device *dev)
|
||||
static int dt282x_ai_cancel(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s)
|
||||
{
|
||||
struct dt282x_private *devpriv = dev->private;
|
||||
|
||||
dt282x_disable_dma(dev);
|
||||
|
||||
devpriv->adcsr = 0;
|
||||
@ -794,6 +806,8 @@ static int dt282x_ao_insn_read(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct dt282x_private *devpriv = dev->private;
|
||||
|
||||
data[0] = devpriv->ao[CR_CHAN(insn->chanspec)];
|
||||
|
||||
return 1;
|
||||
@ -803,6 +817,7 @@ static int dt282x_ao_insn_write(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct dt282x_private *devpriv = dev->private;
|
||||
short d;
|
||||
unsigned int chan;
|
||||
|
||||
@ -908,6 +923,7 @@ static int dt282x_ao_cmdtest(struct comedi_device *dev,
|
||||
static int dt282x_ao_inttrig(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s, unsigned int x)
|
||||
{
|
||||
struct dt282x_private *devpriv = dev->private;
|
||||
int size;
|
||||
|
||||
if (x != 0)
|
||||
@ -937,6 +953,7 @@ static int dt282x_ao_inttrig(struct comedi_device *dev,
|
||||
|
||||
static int dt282x_ao_cmd(struct comedi_device *dev, struct comedi_subdevice *s)
|
||||
{
|
||||
struct dt282x_private *devpriv = dev->private;
|
||||
int timer;
|
||||
struct comedi_cmd *cmd = &s->async->cmd;
|
||||
|
||||
@ -973,6 +990,8 @@ static int dt282x_ao_cmd(struct comedi_device *dev, struct comedi_subdevice *s)
|
||||
static int dt282x_ao_cancel(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s)
|
||||
{
|
||||
struct dt282x_private *devpriv = dev->private;
|
||||
|
||||
dt282x_disable_dma(dev);
|
||||
|
||||
devpriv->dacsr = 0;
|
||||
@ -1003,6 +1022,7 @@ static int dt282x_dio_insn_config(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct dt282x_private *devpriv = dev->private;
|
||||
int mask;
|
||||
|
||||
mask = (CR_CHAN(insn->chanspec) < 8) ? 0x00ff : 0xff00;
|
||||
@ -1074,6 +1094,7 @@ enum { /* i/o base, irq, dma channels */
|
||||
|
||||
static int dt282x_grab_dma(struct comedi_device *dev, int dma1, int dma2)
|
||||
{
|
||||
struct dt282x_private *devpriv = dev->private;
|
||||
int ret;
|
||||
|
||||
devpriv->usedma = 0;
|
||||
@ -1135,6 +1156,7 @@ static int dt282x_grab_dma(struct comedi_device *dev, int dma1, int dma2)
|
||||
static int dt282x_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
{
|
||||
const struct dt282x_board *board = comedi_board(dev);
|
||||
struct dt282x_private *devpriv;
|
||||
int i, irq;
|
||||
int ret;
|
||||
struct comedi_subdevice *s;
|
||||
@ -1217,9 +1239,10 @@ static int dt282x_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
#endif
|
||||
}
|
||||
|
||||
ret = alloc_private(dev, sizeof(struct dt282x_private));
|
||||
if (ret < 0)
|
||||
ret = alloc_private(dev, sizeof(*devpriv));
|
||||
if (ret)
|
||||
return ret;
|
||||
devpriv = dev->private;
|
||||
|
||||
ret = dt282x_grab_dma(dev, it->options[opt_dma1],
|
||||
it->options[opt_dma2]);
|
||||
@ -1292,6 +1315,8 @@ static int dt282x_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
|
||||
static void dt282x_detach(struct comedi_device *dev)
|
||||
{
|
||||
struct dt282x_private *devpriv = dev->private;
|
||||
|
||||
if (dev->irq)
|
||||
free_irq(dev->irq, dev);
|
||||
if (dev->iobase)
|
||||
|
@ -257,8 +257,6 @@ struct dt3k_private {
|
||||
unsigned int ai_rear;
|
||||
};
|
||||
|
||||
#define devpriv ((struct dt3k_private *)dev->private)
|
||||
|
||||
static void dt3k_ai_empty_fifo(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s);
|
||||
static int dt3k_ns_to_timer(unsigned int timer_base, unsigned int *arg,
|
||||
@ -273,6 +271,7 @@ static void debug_intr_flags(unsigned int flags);
|
||||
|
||||
static int dt3k_send_cmd(struct comedi_device *dev, unsigned int cmd)
|
||||
{
|
||||
struct dt3k_private *devpriv = dev->private;
|
||||
int i;
|
||||
unsigned int status = 0;
|
||||
|
||||
@ -297,6 +296,8 @@ static unsigned int dt3k_readsingle(struct comedi_device *dev,
|
||||
unsigned int subsys, unsigned int chan,
|
||||
unsigned int gain)
|
||||
{
|
||||
struct dt3k_private *devpriv = dev->private;
|
||||
|
||||
writew(subsys, devpriv->io_addr + DPR_SubSys);
|
||||
|
||||
writew(chan, devpriv->io_addr + DPR_Params(0));
|
||||
@ -310,6 +311,8 @@ static unsigned int dt3k_readsingle(struct comedi_device *dev,
|
||||
static void dt3k_writesingle(struct comedi_device *dev, unsigned int subsys,
|
||||
unsigned int chan, unsigned int data)
|
||||
{
|
||||
struct dt3k_private *devpriv = dev->private;
|
||||
|
||||
writew(subsys, devpriv->io_addr + DPR_SubSys);
|
||||
|
||||
writew(chan, devpriv->io_addr + DPR_Params(0));
|
||||
@ -326,6 +329,7 @@ static int debug_n_ints;
|
||||
static irqreturn_t dt3k_interrupt(int irq, void *d)
|
||||
{
|
||||
struct comedi_device *dev = d;
|
||||
struct dt3k_private *devpriv = dev->private;
|
||||
struct comedi_subdevice *s;
|
||||
unsigned int status;
|
||||
|
||||
@ -377,6 +381,7 @@ static void debug_intr_flags(unsigned int flags)
|
||||
static void dt3k_ai_empty_fifo(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s)
|
||||
{
|
||||
struct dt3k_private *devpriv = dev->private;
|
||||
int front;
|
||||
int rear;
|
||||
int count;
|
||||
@ -550,6 +555,7 @@ static int dt3k_ns_to_timer(unsigned int timer_base, unsigned int *nanosec,
|
||||
|
||||
static int dt3k_ai_cmd(struct comedi_device *dev, struct comedi_subdevice *s)
|
||||
{
|
||||
struct dt3k_private *devpriv = dev->private;
|
||||
struct comedi_cmd *cmd = &s->async->cmd;
|
||||
int i;
|
||||
unsigned int chan, range, aref;
|
||||
@ -618,6 +624,7 @@ static int dt3k_ai_cmd(struct comedi_device *dev, struct comedi_subdevice *s)
|
||||
|
||||
static int dt3k_ai_cancel(struct comedi_device *dev, struct comedi_subdevice *s)
|
||||
{
|
||||
struct dt3k_private *devpriv = dev->private;
|
||||
int ret;
|
||||
|
||||
writew(SUBS_AI, devpriv->io_addr + DPR_SubSys);
|
||||
@ -648,6 +655,7 @@ static int dt3k_ai_insn(struct comedi_device *dev, struct comedi_subdevice *s,
|
||||
static int dt3k_ao_insn(struct comedi_device *dev, struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct dt3k_private *devpriv = dev->private;
|
||||
int i;
|
||||
unsigned int chan;
|
||||
|
||||
@ -664,6 +672,7 @@ static int dt3k_ao_insn_read(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct dt3k_private *devpriv = dev->private;
|
||||
int i;
|
||||
unsigned int chan;
|
||||
|
||||
@ -676,6 +685,8 @@ static int dt3k_ao_insn_read(struct comedi_device *dev,
|
||||
|
||||
static void dt3k_dio_config(struct comedi_device *dev, int bits)
|
||||
{
|
||||
struct dt3k_private *devpriv = dev->private;
|
||||
|
||||
/* XXX */
|
||||
writew(SUBS_DOUT, devpriv->io_addr + DPR_SubSys);
|
||||
|
||||
@ -739,6 +750,7 @@ static int dt3k_mem_insn_read(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct dt3k_private *devpriv = dev->private;
|
||||
unsigned int addr = CR_CHAN(insn->chanspec);
|
||||
int i;
|
||||
|
||||
@ -786,6 +798,7 @@ static struct pci_dev *dt3000_find_pci_dev(struct comedi_device *dev,
|
||||
|
||||
static int dt3000_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
{
|
||||
struct dt3k_private *devpriv;
|
||||
struct pci_dev *pcidev;
|
||||
struct comedi_subdevice *s;
|
||||
resource_size_t pci_base;
|
||||
@ -793,9 +806,10 @@ static int dt3000_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
|
||||
dev_dbg(dev->class_dev, "dt3000:\n");
|
||||
|
||||
ret = alloc_private(dev, sizeof(struct dt3k_private));
|
||||
if (ret < 0)
|
||||
ret = alloc_private(dev, sizeof(*devpriv));
|
||||
if (ret)
|
||||
return ret;
|
||||
devpriv = dev->private;
|
||||
|
||||
pcidev = dt3000_find_pci_dev(dev, it);
|
||||
if (!pcidev)
|
||||
@ -885,6 +899,7 @@ static int dt3000_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
static void dt3000_detach(struct comedi_device *dev)
|
||||
{
|
||||
struct pci_dev *pcidev = comedi_to_pci_dev(dev);
|
||||
struct dt3k_private *devpriv = dev->private;
|
||||
|
||||
if (dev->irq)
|
||||
free_irq(dev->irq, dev);
|
||||
|
@ -323,9 +323,6 @@ static const struct comedi_lrange dt9812_2pt5_aout_range = { 1, {
|
||||
|
||||
static struct slot_dt9812 dt9812[DT9812_NUM_SLOTS];
|
||||
|
||||
/* Useful shorthand access to private data */
|
||||
#define devpriv ((struct comedi_dt9812 *)dev->private)
|
||||
|
||||
static inline struct usb_dt9812 *to_dt9812_dev(struct kref *d)
|
||||
{
|
||||
return container_of(d, struct usb_dt9812, kref);
|
||||
@ -893,6 +890,7 @@ static struct usb_driver dt9812_usb_driver = {
|
||||
|
||||
static int dt9812_comedi_open(struct comedi_device *dev)
|
||||
{
|
||||
struct comedi_dt9812 *devpriv = dev->private;
|
||||
int result = -ENODEV;
|
||||
|
||||
down(&devpriv->slot->mutex);
|
||||
@ -947,6 +945,7 @@ static int dt9812_di_rinsn(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s, struct comedi_insn *insn,
|
||||
unsigned int *data)
|
||||
{
|
||||
struct comedi_dt9812 *devpriv = dev->private;
|
||||
int n;
|
||||
u8 bits = 0;
|
||||
|
||||
@ -960,6 +959,7 @@ static int dt9812_do_winsn(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s, struct comedi_insn *insn,
|
||||
unsigned int *data)
|
||||
{
|
||||
struct comedi_dt9812 *devpriv = dev->private;
|
||||
int n;
|
||||
u8 bits = 0;
|
||||
|
||||
@ -979,6 +979,7 @@ static int dt9812_ai_rinsn(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s, struct comedi_insn *insn,
|
||||
unsigned int *data)
|
||||
{
|
||||
struct comedi_dt9812 *devpriv = dev->private;
|
||||
int n;
|
||||
|
||||
for (n = 0; n < insn->n; n++) {
|
||||
@ -995,6 +996,7 @@ static int dt9812_ao_rinsn(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s, struct comedi_insn *insn,
|
||||
unsigned int *data)
|
||||
{
|
||||
struct comedi_dt9812 *devpriv = dev->private;
|
||||
int n;
|
||||
u16 value;
|
||||
|
||||
@ -1010,6 +1012,7 @@ static int dt9812_ao_winsn(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s, struct comedi_insn *insn,
|
||||
unsigned int *data)
|
||||
{
|
||||
struct comedi_dt9812 *devpriv = dev->private;
|
||||
int n;
|
||||
|
||||
for (n = 0; n < insn->n; n++)
|
||||
@ -1019,14 +1022,17 @@ static int dt9812_ao_winsn(struct comedi_device *dev,
|
||||
|
||||
static int dt9812_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
{
|
||||
struct comedi_dt9812 *devpriv;
|
||||
int i;
|
||||
struct comedi_subdevice *s;
|
||||
int ret;
|
||||
|
||||
dev->board_name = "dt9812";
|
||||
|
||||
if (alloc_private(dev, sizeof(struct comedi_dt9812)) < 0)
|
||||
return -ENOMEM;
|
||||
ret = alloc_private(dev, sizeof(*devpriv));
|
||||
if (ret)
|
||||
return ret;
|
||||
devpriv = dev->private;
|
||||
|
||||
/*
|
||||
* Special open routine, since USB unit may be unattached at
|
||||
|
@ -29,8 +29,6 @@ struct fl512_private {
|
||||
short ao_readback[2];
|
||||
};
|
||||
|
||||
#define devpriv ((struct fl512_private *) dev->private)
|
||||
|
||||
static const struct comedi_lrange range_fl512 = { 4, {
|
||||
BIP_RANGE(0.5),
|
||||
BIP_RANGE(1),
|
||||
@ -75,6 +73,7 @@ static int fl512_ao_insn(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s, struct comedi_insn *insn,
|
||||
unsigned int *data)
|
||||
{
|
||||
struct fl512_private *devpriv = dev->private;
|
||||
int n;
|
||||
int chan = CR_CHAN(insn->chanspec); /* get chan to write */
|
||||
unsigned long iobase = dev->iobase; /* get base address */
|
||||
@ -99,6 +98,7 @@ static int fl512_ao_insn_readback(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct fl512_private *devpriv = dev->private;
|
||||
int n;
|
||||
int chan = CR_CHAN(insn->chanspec);
|
||||
|
||||
@ -110,6 +110,7 @@ static int fl512_ao_insn_readback(struct comedi_device *dev,
|
||||
|
||||
static int fl512_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
{
|
||||
struct fl512_private *devpriv;
|
||||
unsigned long iobase;
|
||||
int ret;
|
||||
|
||||
@ -125,8 +126,11 @@ static int fl512_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
}
|
||||
dev->iobase = iobase;
|
||||
dev->board_name = "fl512";
|
||||
if (alloc_private(dev, sizeof(struct fl512_private)) < 0)
|
||||
return -ENOMEM;
|
||||
|
||||
ret = alloc_private(dev, sizeof(*devpriv));
|
||||
if (ret)
|
||||
return ret;
|
||||
devpriv = dev->private;
|
||||
|
||||
#if DEBUG
|
||||
printk(KERN_DEBUG "malloc ok\n");
|
||||
|
@ -506,7 +506,7 @@ static int icp_multi_attach_pci(struct comedi_device *dev,
|
||||
dev->board_name = dev->driver->driver_name;
|
||||
|
||||
ret = alloc_private(dev, sizeof(*devpriv));
|
||||
if (ret < 0)
|
||||
if (ret)
|
||||
return ret;
|
||||
devpriv = dev->private;
|
||||
|
||||
|
@ -156,7 +156,6 @@ struct pci20xxx_private {
|
||||
union pci20xxx_subdev_private subdev_private[PCI20000_MODULES];
|
||||
};
|
||||
|
||||
#define devpriv ((struct pci20xxx_private *)dev->private)
|
||||
#define CHAN (CR_CHAN(it->chanlist[0]))
|
||||
|
||||
static int pci20006_init(struct comedi_device *dev, struct comedi_subdevice *s,
|
||||
@ -196,6 +195,7 @@ static int pci20xxx_dio_init(struct comedi_device *dev,
|
||||
static int pci20xxx_attach(struct comedi_device *dev,
|
||||
struct comedi_devconfig *it)
|
||||
{
|
||||
struct pci20xxx_private *devpriv;
|
||||
unsigned char i;
|
||||
int ret;
|
||||
int id;
|
||||
@ -206,9 +206,10 @@ static int pci20xxx_attach(struct comedi_device *dev,
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = alloc_private(dev, sizeof(struct pci20xxx_private));
|
||||
if (ret < 0)
|
||||
ret = alloc_private(dev, sizeof(*devpriv));
|
||||
if (ret)
|
||||
return ret;
|
||||
devpriv = dev->private;
|
||||
|
||||
devpriv->ioaddr = (void __iomem *)(unsigned long)it->options[0];
|
||||
dev->board_name = "pci20kc";
|
||||
@ -541,6 +542,7 @@ static int pci20xxx_dio_insn_bits(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct pci20xxx_private *devpriv = dev->private;
|
||||
unsigned int mask = data[0];
|
||||
|
||||
s->state &= ~mask;
|
||||
@ -571,6 +573,7 @@ static int pci20xxx_dio_insn_bits(struct comedi_device *dev,
|
||||
static void pci20xxx_dio_config(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s)
|
||||
{
|
||||
struct pci20xxx_private *devpriv = dev->private;
|
||||
unsigned char control_01;
|
||||
unsigned char control_23;
|
||||
unsigned char buffer;
|
||||
@ -627,6 +630,8 @@ static void pci20xxx_dio_config(struct comedi_device *dev,
|
||||
#if 0
|
||||
static void pci20xxx_do(struct comedi_device *dev, struct comedi_subdevice *s)
|
||||
{
|
||||
struct pci20xxx_private *devpriv = dev->private;
|
||||
|
||||
/* XXX if the channel is configured for input, does this
|
||||
do bad things? */
|
||||
/* XXX it would be a good idea to only update the registers
|
||||
@ -641,9 +646,10 @@ static void pci20xxx_do(struct comedi_device *dev, struct comedi_subdevice *s)
|
||||
static unsigned int pci20xxx_di(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s)
|
||||
{
|
||||
/* XXX same note as above */
|
||||
struct pci20xxx_private *devpriv = dev->private;
|
||||
unsigned int bits;
|
||||
|
||||
/* XXX same note as above */
|
||||
bits = readb(devpriv->ioaddr + PCI20000_DIO_0);
|
||||
bits |= readb(devpriv->ioaddr + PCI20000_DIO_1) << 8;
|
||||
bits |= readb(devpriv->ioaddr + PCI20000_DIO_2) << 16;
|
||||
|
@ -762,11 +762,12 @@ static int jr3_pci_attach(struct comedi_device *dev,
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
result = alloc_private(dev, sizeof(struct jr3_pci_dev_private));
|
||||
if (result < 0)
|
||||
return -ENOMEM;
|
||||
card = NULL;
|
||||
result = alloc_private(dev, sizeof(*devpriv));
|
||||
if (result)
|
||||
return result;
|
||||
devpriv = dev->private;
|
||||
|
||||
card = NULL;
|
||||
init_timer(&devpriv->timer);
|
||||
while (1) {
|
||||
card = pci_get_device(PCI_VENDOR_ID_JR3, PCI_ANY_ID, card);
|
||||
|
@ -234,8 +234,6 @@ struct me_private_data {
|
||||
int ao_readback[4]; /* Mirror of analog output data */
|
||||
};
|
||||
|
||||
#define dev_private ((struct me_private_data *)dev->private)
|
||||
|
||||
/*
|
||||
* ------------------------------------------------------------------
|
||||
*
|
||||
@ -260,6 +258,7 @@ static int me_dio_insn_config(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct me_private_data *dev_private = dev->private;
|
||||
int bits;
|
||||
int mask = 1 << CR_CHAN(insn->chanspec);
|
||||
|
||||
@ -297,7 +296,9 @@ static int me_dio_insn_bits(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct me_private_data *dev_private = dev->private;
|
||||
unsigned int mask = data[0];
|
||||
|
||||
s->state &= ~mask;
|
||||
s->state |= (mask & data[1]);
|
||||
|
||||
@ -334,6 +335,7 @@ static int me_ai_insn_read(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct me_private_data *dev_private = dev->private;
|
||||
unsigned short value;
|
||||
int chan = CR_CHAN((&insn->chanspec)[0]);
|
||||
int rang = CR_RANGE((&insn->chanspec)[0]);
|
||||
@ -407,6 +409,8 @@ static int me_ai_insn_read(struct comedi_device *dev,
|
||||
/* Cancel analog input autoscan */
|
||||
static int me_ai_cancel(struct comedi_device *dev, struct comedi_subdevice *s)
|
||||
{
|
||||
struct me_private_data *dev_private = dev->private;
|
||||
|
||||
/* disable interrupts */
|
||||
|
||||
/* stop any running conversion */
|
||||
@ -443,6 +447,7 @@ static int me_ao_insn_write(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct me_private_data *dev_private = dev->private;
|
||||
int chan;
|
||||
int rang;
|
||||
int i;
|
||||
@ -494,6 +499,7 @@ static int me_ao_insn_read(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s, struct comedi_insn *insn,
|
||||
unsigned int *data)
|
||||
{
|
||||
struct me_private_data *dev_private = dev->private;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < insn->n; i++) {
|
||||
@ -516,6 +522,7 @@ static int me_ao_insn_read(struct comedi_device *dev,
|
||||
static int me2600_xilinx_download(struct comedi_device *dev,
|
||||
const u8 *data, size_t size)
|
||||
{
|
||||
struct me_private_data *dev_private = dev->private;
|
||||
unsigned int value;
|
||||
unsigned int file_length;
|
||||
unsigned int i;
|
||||
@ -599,6 +606,8 @@ static int me2600_upload_firmware(struct comedi_device *dev)
|
||||
/* Reset device */
|
||||
static int me_reset(struct comedi_device *dev)
|
||||
{
|
||||
struct me_private_data *dev_private = dev->private;
|
||||
|
||||
/* Reset board */
|
||||
writew(0x00, dev_private->me_regbase + ME_CONTROL_1);
|
||||
writew(0x00, dev_private->me_regbase + ME_CONTROL_2);
|
||||
@ -630,6 +639,7 @@ static const void *me_find_boardinfo(struct comedi_device *dev,
|
||||
static int me_attach_pci(struct comedi_device *dev, struct pci_dev *pcidev)
|
||||
{
|
||||
const struct me_board *board;
|
||||
struct me_private_data *dev_private;
|
||||
struct comedi_subdevice *s;
|
||||
resource_size_t plx_regbase_tmp;
|
||||
unsigned long plx_regbase_size_tmp;
|
||||
@ -648,9 +658,10 @@ static int me_attach_pci(struct comedi_device *dev, struct pci_dev *pcidev)
|
||||
dev->board_ptr = board;
|
||||
dev->board_name = board->name;
|
||||
|
||||
/* Allocate private memory */
|
||||
if (alloc_private(dev, sizeof(struct me_private_data)) < 0)
|
||||
return -ENOMEM;
|
||||
error = alloc_private(dev, sizeof(*dev_private));
|
||||
if (error)
|
||||
return error;
|
||||
dev_private = dev->private;
|
||||
|
||||
/* Enable PCI device and request PCI regions */
|
||||
if (comedi_pci_enable(pcidev, dev->board_name) < 0) {
|
||||
@ -775,6 +786,7 @@ static int me_attach_pci(struct comedi_device *dev, struct pci_dev *pcidev)
|
||||
static void me_detach(struct comedi_device *dev)
|
||||
{
|
||||
struct pci_dev *pcidev = comedi_to_pci_dev(dev);
|
||||
struct me_private_data *dev_private = dev->private;
|
||||
|
||||
if (dev_private) {
|
||||
if (dev_private->me_regbase) {
|
||||
|
@ -122,13 +122,12 @@ Configuration Options:
|
||||
#define MPC624_SPEED_6_875_Hz \
|
||||
(MPC624_OSR4 | MPC624_OSR3 | MPC624_OSR2 | MPC624_OSR1 | MPC624_OSR0)
|
||||
/* -------------------------------------------------------------------------- */
|
||||
struct skel_private {
|
||||
struct mpc624_private {
|
||||
|
||||
/* set by mpc624_attach() from driver's parameters */
|
||||
unsigned long int ulConvertionRate;
|
||||
};
|
||||
|
||||
#define devpriv ((struct skel_private *)dev->private)
|
||||
/* -------------------------------------------------------------------------- */
|
||||
static const struct comedi_lrange range_mpc624_bipolar1 = {
|
||||
1,
|
||||
@ -155,6 +154,7 @@ static int mpc624_ai_rinsn(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s, struct comedi_insn *insn,
|
||||
unsigned int *data)
|
||||
{
|
||||
struct mpc624_private *devpriv = dev->private;
|
||||
int n, i;
|
||||
unsigned long int data_in, data_out;
|
||||
unsigned char ucPort;
|
||||
@ -283,6 +283,7 @@ static int mpc624_ai_rinsn(struct comedi_device *dev,
|
||||
|
||||
static int mpc624_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
{
|
||||
struct mpc624_private *devpriv;
|
||||
struct comedi_subdevice *s;
|
||||
unsigned long iobase;
|
||||
int ret;
|
||||
@ -297,9 +298,10 @@ static int mpc624_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
dev->iobase = iobase;
|
||||
dev->board_name = "mpc624";
|
||||
|
||||
/* Private structure initialization */
|
||||
if (alloc_private(dev, sizeof(struct skel_private)) < 0)
|
||||
return -ENOMEM;
|
||||
ret = alloc_private(dev, sizeof(*devpriv));
|
||||
if (ret)
|
||||
return ret;
|
||||
devpriv = dev->private;
|
||||
|
||||
switch (it->options[1]) {
|
||||
case 0:
|
||||
|
@ -86,7 +86,6 @@ Devices: [Quanser Consulting] MultiQ-3 (multiq3)
|
||||
struct multiq3_private {
|
||||
unsigned int ao_readback[2];
|
||||
};
|
||||
#define devpriv ((struct multiq3_private *)dev->private)
|
||||
|
||||
static int multiq3_ai_insn_read(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s,
|
||||
@ -129,6 +128,7 @@ static int multiq3_ao_insn_read(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct multiq3_private *devpriv = dev->private;
|
||||
int i;
|
||||
int chan = CR_CHAN(insn->chanspec);
|
||||
|
||||
@ -142,6 +142,7 @@ static int multiq3_ao_insn_write(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct multiq3_private *devpriv = dev->private;
|
||||
int i;
|
||||
int chan = CR_CHAN(insn->chanspec);
|
||||
|
||||
@ -230,6 +231,7 @@ static void encoder_reset(struct comedi_device *dev)
|
||||
static int multiq3_attach(struct comedi_device *dev,
|
||||
struct comedi_devconfig *it)
|
||||
{
|
||||
struct multiq3_private *devpriv;
|
||||
int result = 0;
|
||||
unsigned long iobase;
|
||||
unsigned int irq;
|
||||
@ -256,9 +258,10 @@ static int multiq3_attach(struct comedi_device *dev,
|
||||
if (result)
|
||||
return result;
|
||||
|
||||
result = alloc_private(dev, sizeof(struct multiq3_private));
|
||||
if (result < 0)
|
||||
result = alloc_private(dev, sizeof(*devpriv));
|
||||
if (result)
|
||||
return result;
|
||||
devpriv = dev->private;
|
||||
|
||||
s = &dev->subdevices[0];
|
||||
/* ai subdevice */
|
||||
|
@ -112,12 +112,11 @@ struct ni6527_private {
|
||||
unsigned int filter_enable;
|
||||
};
|
||||
|
||||
#define devpriv ((struct ni6527_private *)dev->private)
|
||||
|
||||
static int ni6527_di_insn_config(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct ni6527_private *devpriv = dev->private;
|
||||
int chan = CR_CHAN(insn->chanspec);
|
||||
unsigned int interval;
|
||||
|
||||
@ -164,6 +163,8 @@ static int ni6527_di_insn_bits(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct ni6527_private *devpriv = dev->private;
|
||||
|
||||
data[1] = readb(devpriv->mite->daq_io_addr + Port_Register(0));
|
||||
data[1] |= readb(devpriv->mite->daq_io_addr + Port_Register(1)) << 8;
|
||||
data[1] |= readb(devpriv->mite->daq_io_addr + Port_Register(2)) << 16;
|
||||
@ -175,6 +176,8 @@ static int ni6527_do_insn_bits(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct ni6527_private *devpriv = dev->private;
|
||||
|
||||
if (data[0]) {
|
||||
s->state &= ~data[0];
|
||||
s->state |= (data[0] & data[1]);
|
||||
@ -202,6 +205,7 @@ static int ni6527_do_insn_bits(struct comedi_device *dev,
|
||||
static irqreturn_t ni6527_interrupt(int irq, void *d)
|
||||
{
|
||||
struct comedi_device *dev = d;
|
||||
struct ni6527_private *devpriv = dev->private;
|
||||
struct comedi_subdevice *s = &dev->subdevices[2];
|
||||
unsigned int status;
|
||||
|
||||
@ -281,6 +285,7 @@ static int ni6527_intr_cmdtest(struct comedi_device *dev,
|
||||
static int ni6527_intr_cmd(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s)
|
||||
{
|
||||
struct ni6527_private *devpriv = dev->private;
|
||||
/* struct comedi_cmd *cmd = &s->async->cmd; */
|
||||
|
||||
writeb(ClrEdge | ClrOverflow,
|
||||
@ -295,6 +300,8 @@ static int ni6527_intr_cmd(struct comedi_device *dev,
|
||||
static int ni6527_intr_cancel(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s)
|
||||
{
|
||||
struct ni6527_private *devpriv = dev->private;
|
||||
|
||||
writeb(0x00, devpriv->mite->daq_io_addr + Master_Interrupt_Control);
|
||||
|
||||
return 0;
|
||||
@ -312,6 +319,8 @@ static int ni6527_intr_insn_config(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct ni6527_private *devpriv = dev->private;
|
||||
|
||||
if (insn->n < 1)
|
||||
return -EINVAL;
|
||||
if (data[0] != INSN_CONFIG_CHANGE_NOTIFY)
|
||||
@ -351,12 +360,14 @@ ni6527_find_boardinfo(struct pci_dev *pcidev)
|
||||
static int __devinit ni6527_attach_pci(struct comedi_device *dev,
|
||||
struct pci_dev *pcidev)
|
||||
{
|
||||
struct ni6527_private *devpriv;
|
||||
struct comedi_subdevice *s;
|
||||
int ret;
|
||||
|
||||
ret = alloc_private(dev, sizeof(struct ni6527_private));
|
||||
if (ret < 0)
|
||||
ret = alloc_private(dev, sizeof(*devpriv));
|
||||
if (ret)
|
||||
return ret;
|
||||
devpriv = dev->private;
|
||||
|
||||
dev->board_ptr = ni6527_find_boardinfo(pcidev);
|
||||
if (!dev->board_ptr)
|
||||
@ -430,6 +441,8 @@ static int __devinit ni6527_attach_pci(struct comedi_device *dev,
|
||||
|
||||
static void ni6527_detach(struct comedi_device *dev)
|
||||
{
|
||||
struct ni6527_private *devpriv = dev->private;
|
||||
|
||||
if (devpriv && devpriv->mite && devpriv->mite->daq_io_addr)
|
||||
writeb(0x00,
|
||||
devpriv->mite->daq_io_addr + Master_Interrupt_Control);
|
||||
|
@ -211,9 +211,10 @@ static int __devinit ni_670x_attach_pci(struct comedi_device *dev,
|
||||
int i;
|
||||
|
||||
ret = alloc_private(dev, sizeof(*devpriv));
|
||||
if (ret < 0)
|
||||
if (ret)
|
||||
return ret;
|
||||
devpriv = dev->private;
|
||||
|
||||
dev->board_ptr = ni_670x_find_boardinfo(pcidev);
|
||||
if (!dev->board_ptr)
|
||||
return -ENODEV;
|
||||
|
@ -169,8 +169,6 @@ struct a2150_private {
|
||||
int config_bits; /* config register bits */
|
||||
};
|
||||
|
||||
#define devpriv ((struct a2150_private *)dev->private)
|
||||
|
||||
static int a2150_cancel(struct comedi_device *dev, struct comedi_subdevice *s);
|
||||
|
||||
static int a2150_get_timing(struct comedi_device *dev, unsigned int *period,
|
||||
@ -182,6 +180,8 @@ static int a2150_set_chanlist(struct comedi_device *dev,
|
||||
|
||||
static void ni_dump_regs(struct comedi_device *dev)
|
||||
{
|
||||
struct a2150_private *devpriv = dev->private;
|
||||
|
||||
printk("config bits 0x%x\n", devpriv->config_bits);
|
||||
printk("irq dma bits 0x%x\n", devpriv->irq_dma_bits);
|
||||
printk("status bits 0x%x\n", inw(dev->iobase + STATUS_REG));
|
||||
@ -196,6 +196,7 @@ static irqreturn_t a2150_interrupt(int irq, void *d)
|
||||
int status;
|
||||
unsigned long flags;
|
||||
struct comedi_device *dev = d;
|
||||
struct a2150_private *devpriv = dev->private;
|
||||
struct comedi_subdevice *s = dev->read_subdev;
|
||||
struct comedi_async *async;
|
||||
struct comedi_cmd *cmd;
|
||||
@ -300,6 +301,8 @@ static irqreturn_t a2150_interrupt(int irq, void *d)
|
||||
|
||||
static int a2150_cancel(struct comedi_device *dev, struct comedi_subdevice *s)
|
||||
{
|
||||
struct a2150_private *devpriv = dev->private;
|
||||
|
||||
/* disable dma on card */
|
||||
devpriv->irq_dma_bits &= ~DMA_INTR_EN_BIT & ~DMA_EN_BIT;
|
||||
outw(devpriv->irq_dma_bits, dev->iobase + IRQ_DMA_CNTRL_REG);
|
||||
@ -425,6 +428,7 @@ static int a2150_ai_cmdtest(struct comedi_device *dev,
|
||||
|
||||
static int a2150_ai_cmd(struct comedi_device *dev, struct comedi_subdevice *s)
|
||||
{
|
||||
struct a2150_private *devpriv = dev->private;
|
||||
struct comedi_async *async = s->async;
|
||||
struct comedi_cmd *cmd = &async->cmd;
|
||||
unsigned long lock_flags;
|
||||
@ -536,6 +540,7 @@ static int a2150_ai_cmd(struct comedi_device *dev, struct comedi_subdevice *s)
|
||||
static int a2150_ai_rinsn(struct comedi_device *dev, struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct a2150_private *devpriv = dev->private;
|
||||
unsigned int i, n;
|
||||
static const int timeout = 100000;
|
||||
static const int filter_delay = 36;
|
||||
@ -615,6 +620,7 @@ static int a2150_ai_rinsn(struct comedi_device *dev, struct comedi_subdevice *s,
|
||||
static int a2150_get_timing(struct comedi_device *dev, unsigned int *period,
|
||||
int flags)
|
||||
{
|
||||
struct a2150_private *devpriv = dev->private;
|
||||
int lub, glb, temp;
|
||||
int lub_divisor_shift, lub_index, glb_divisor_shift, glb_index;
|
||||
int i, j;
|
||||
@ -689,6 +695,8 @@ static int a2150_set_chanlist(struct comedi_device *dev,
|
||||
unsigned int start_channel,
|
||||
unsigned int num_channels)
|
||||
{
|
||||
struct a2150_private *devpriv = dev->private;
|
||||
|
||||
if (start_channel + num_channels > 4)
|
||||
return -1;
|
||||
|
||||
@ -727,6 +735,7 @@ static int a2150_probe(struct comedi_device *dev)
|
||||
|
||||
static int a2150_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
{
|
||||
struct a2150_private *devpriv;
|
||||
struct comedi_subdevice *s;
|
||||
unsigned long iobase = it->options[0];
|
||||
unsigned int irq = it->options[1];
|
||||
@ -749,9 +758,10 @@ static int a2150_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
}
|
||||
printk("\n");
|
||||
|
||||
/* allocate and initialize dev->private */
|
||||
if (alloc_private(dev, sizeof(struct a2150_private)) < 0)
|
||||
return -ENOMEM;
|
||||
ret = alloc_private(dev, sizeof(*devpriv));
|
||||
if (ret)
|
||||
return ret;
|
||||
devpriv = dev->private;
|
||||
|
||||
if (iobase == 0) {
|
||||
printk(" io base address required\n");
|
||||
@ -855,6 +865,8 @@ static int a2150_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
|
||||
static void a2150_detach(struct comedi_device *dev)
|
||||
{
|
||||
struct a2150_private *devpriv = dev->private;
|
||||
|
||||
if (dev->iobase) {
|
||||
outw(APD_BIT | DPD_BIT, dev->iobase + CONFIG_REG);
|
||||
release_region(dev->iobase, A2150_SIZE);
|
||||
|
@ -167,10 +167,10 @@ struct atao_private {
|
||||
unsigned int ao_readback[10];
|
||||
};
|
||||
|
||||
#define devpriv ((struct atao_private *)dev->private)
|
||||
|
||||
static void atao_reset(struct comedi_device *dev)
|
||||
{
|
||||
struct atao_private *devpriv = dev->private;
|
||||
|
||||
/* This is the reset sequence described in the manual */
|
||||
|
||||
devpriv->cfg1 = 0;
|
||||
@ -202,6 +202,7 @@ static void atao_reset(struct comedi_device *dev)
|
||||
static int atao_ao_winsn(struct comedi_device *dev, struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct atao_private *devpriv = dev->private;
|
||||
int i;
|
||||
int chan = CR_CHAN(insn->chanspec);
|
||||
short bits;
|
||||
@ -226,6 +227,7 @@ static int atao_ao_winsn(struct comedi_device *dev, struct comedi_subdevice *s,
|
||||
static int atao_ao_rinsn(struct comedi_device *dev, struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct atao_private *devpriv = dev->private;
|
||||
int i;
|
||||
int chan = CR_CHAN(insn->chanspec);
|
||||
|
||||
@ -254,6 +256,7 @@ static int atao_dio_insn_config(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct atao_private *devpriv = dev->private;
|
||||
int chan = CR_CHAN(insn->chanspec);
|
||||
unsigned int mask, bit;
|
||||
|
||||
@ -309,6 +312,7 @@ static int atao_calib_insn_write(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct atao_private *devpriv = dev->private;
|
||||
unsigned int bitstring, bit;
|
||||
unsigned int chan = CR_CHAN(insn->chanspec);
|
||||
|
||||
@ -331,6 +335,7 @@ static int atao_calib_insn_write(struct comedi_device *dev,
|
||||
static int atao_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
{
|
||||
const struct atao_board *board = comedi_board(dev);
|
||||
struct atao_private *devpriv;
|
||||
struct comedi_subdevice *s;
|
||||
unsigned long iobase;
|
||||
int ao_unipolar;
|
||||
@ -351,8 +356,10 @@ static int atao_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
|
||||
dev->board_name = board->name;
|
||||
|
||||
if (alloc_private(dev, sizeof(struct atao_private)) < 0)
|
||||
return -ENOMEM;
|
||||
ret = alloc_private(dev, sizeof(*devpriv));
|
||||
if (ret)
|
||||
return ret;
|
||||
devpriv = dev->private;
|
||||
|
||||
ret = comedi_alloc_subdevices(dev, 4);
|
||||
if (ret)
|
||||
|
@ -102,7 +102,6 @@ Devices: [National Instruments] AT-MIO-16 (atmio16), AT-MIO-16D (atmio16d)
|
||||
#define CLOCK_100_HZ 0x8F25
|
||||
/* Other miscellaneous defines */
|
||||
#define ATMIO16D_SIZE 32 /* bus address range */
|
||||
#define devpriv ((struct atmio16d_private *)dev->private)
|
||||
#define ATMIO16D_TIMEOUT 10
|
||||
|
||||
struct atmio16_board_t {
|
||||
@ -202,6 +201,7 @@ static void reset_counters(struct comedi_device *dev)
|
||||
|
||||
static void reset_atmio16d(struct comedi_device *dev)
|
||||
{
|
||||
struct atmio16d_private *devpriv = dev->private;
|
||||
int i;
|
||||
|
||||
/* now we need to initialize the board */
|
||||
@ -327,6 +327,7 @@ static int atmio16d_ai_cmdtest(struct comedi_device *dev,
|
||||
static int atmio16d_ai_cmd(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s)
|
||||
{
|
||||
struct atmio16d_private *devpriv = dev->private;
|
||||
struct comedi_cmd *cmd = &s->async->cmd;
|
||||
unsigned int timer, base_clock;
|
||||
unsigned int sample_count, tmp, chan, gain;
|
||||
@ -486,6 +487,7 @@ static int atmio16d_ai_insn_read(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct atmio16d_private *devpriv = dev->private;
|
||||
int i, t;
|
||||
int chan;
|
||||
int gain;
|
||||
@ -539,6 +541,7 @@ static int atmio16d_ao_insn_read(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct atmio16d_private *devpriv = dev->private;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < insn->n; i++)
|
||||
@ -550,6 +553,7 @@ static int atmio16d_ao_insn_write(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct atmio16d_private *devpriv = dev->private;
|
||||
int i;
|
||||
int chan;
|
||||
int d;
|
||||
@ -596,6 +600,7 @@ static int atmio16d_dio_insn_config(struct comedi_device *dev,
|
||||
struct comedi_insn *insn,
|
||||
unsigned int *data)
|
||||
{
|
||||
struct atmio16d_private *devpriv = dev->private;
|
||||
int i;
|
||||
int mask;
|
||||
|
||||
@ -651,6 +656,7 @@ static int atmio16d_attach(struct comedi_device *dev,
|
||||
struct comedi_devconfig *it)
|
||||
{
|
||||
const struct atmio16_board_t *board = comedi_board(dev);
|
||||
struct atmio16d_private *devpriv;
|
||||
unsigned int irq;
|
||||
unsigned long iobase;
|
||||
int ret;
|
||||
@ -672,9 +678,10 @@ static int atmio16d_attach(struct comedi_device *dev,
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = alloc_private(dev, sizeof(struct atmio16d_private));
|
||||
if (ret < 0)
|
||||
ret = alloc_private(dev, sizeof(*devpriv));
|
||||
if (ret)
|
||||
return ret;
|
||||
devpriv = dev->private;
|
||||
|
||||
/* reset the atmio16d hardware */
|
||||
reset_atmio16d(dev);
|
||||
|
@ -96,8 +96,6 @@ struct dio24_private {
|
||||
int data; /* number of data points left to be taken */
|
||||
};
|
||||
|
||||
#define devpriv ((struct dio24_private *)dev->private)
|
||||
|
||||
static struct comedi_driver driver_dio24 = {
|
||||
.driver_name = "ni_daq_dio24",
|
||||
.module = THIS_MODULE,
|
||||
@ -110,6 +108,7 @@ static struct comedi_driver driver_dio24 = {
|
||||
|
||||
static int dio24_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
{
|
||||
struct dio24_private *devpriv;
|
||||
struct comedi_subdevice *s;
|
||||
unsigned long iobase = 0;
|
||||
#ifdef incomplete
|
||||
@ -118,9 +117,10 @@ static int dio24_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
struct pcmcia_device *link;
|
||||
int ret;
|
||||
|
||||
/* allocate and initialize dev->private */
|
||||
if (alloc_private(dev, sizeof(struct dio24_private)) < 0)
|
||||
return -ENOMEM;
|
||||
ret = alloc_private(dev, sizeof(*devpriv));
|
||||
if (ret)
|
||||
return ret;
|
||||
devpriv = dev->private;
|
||||
|
||||
/* get base address, irq etc. based on bustype */
|
||||
switch (thisboard->bustype) {
|
||||
|
@ -487,8 +487,6 @@ static const int dma_buffer_size = 0xff00;
|
||||
/* 2 bytes per sample */
|
||||
static const int sample_size = 2;
|
||||
|
||||
#define devpriv ((struct labpc_private *)dev->private)
|
||||
|
||||
static inline int labpc_counter_load(struct comedi_device *dev,
|
||||
unsigned long base_address,
|
||||
unsigned int counter_number,
|
||||
@ -504,6 +502,7 @@ static inline int labpc_counter_load(struct comedi_device *dev,
|
||||
int labpc_common_attach(struct comedi_device *dev, unsigned long iobase,
|
||||
unsigned int irq, unsigned int dma_chan)
|
||||
{
|
||||
struct labpc_private *devpriv = dev->private;
|
||||
struct comedi_subdevice *s;
|
||||
int i;
|
||||
unsigned long isr_flags;
|
||||
@ -700,15 +699,19 @@ labpc_pci_find_boardinfo(struct pci_dev *pcidev)
|
||||
static int __devinit labpc_attach_pci(struct comedi_device *dev,
|
||||
struct pci_dev *pcidev)
|
||||
{
|
||||
struct labpc_private *devpriv;
|
||||
unsigned long iobase;
|
||||
unsigned int irq;
|
||||
int ret;
|
||||
|
||||
if (!IS_ENABLED(CONFIG_COMEDI_PCI_DRIVERS))
|
||||
return -ENODEV;
|
||||
ret = alloc_private(dev, sizeof(struct labpc_private));
|
||||
if (ret < 0)
|
||||
|
||||
ret = alloc_private(dev, sizeof(*devpriv));
|
||||
if (ret)
|
||||
return ret;
|
||||
devpriv = dev->private;
|
||||
|
||||
dev->board_ptr = labpc_pci_find_boardinfo(pcidev);
|
||||
if (!dev->board_ptr)
|
||||
return -ENODEV;
|
||||
@ -725,13 +728,16 @@ static int __devinit labpc_attach_pci(struct comedi_device *dev,
|
||||
|
||||
static int labpc_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
{
|
||||
struct labpc_private *devpriv;
|
||||
unsigned long iobase = 0;
|
||||
unsigned int irq = 0;
|
||||
unsigned int dma_chan = 0;
|
||||
int ret;
|
||||
|
||||
/* allocate and initialize dev->private */
|
||||
if (alloc_private(dev, sizeof(struct labpc_private)) < 0)
|
||||
return -ENOMEM;
|
||||
ret = alloc_private(dev, sizeof(*devpriv));
|
||||
if (ret)
|
||||
return ret;
|
||||
devpriv = dev->private;
|
||||
|
||||
/* get base address, irq etc. based on bustype */
|
||||
switch (thisboard->bustype) {
|
||||
@ -770,6 +776,7 @@ static int labpc_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
|
||||
void labpc_common_detach(struct comedi_device *dev)
|
||||
{
|
||||
struct labpc_private *devpriv = dev->private;
|
||||
struct comedi_subdevice *s;
|
||||
|
||||
if (dev->subdevices) {
|
||||
@ -797,6 +804,8 @@ EXPORT_SYMBOL_GPL(labpc_common_detach);
|
||||
|
||||
static void labpc_clear_adc_fifo(const struct comedi_device *dev)
|
||||
{
|
||||
struct labpc_private *devpriv = dev->private;
|
||||
|
||||
devpriv->write_byte(0x1, dev->iobase + ADC_CLEAR_REG);
|
||||
devpriv->read_byte(dev->iobase + ADC_FIFO_REG);
|
||||
devpriv->read_byte(dev->iobase + ADC_FIFO_REG);
|
||||
@ -804,6 +813,7 @@ static void labpc_clear_adc_fifo(const struct comedi_device *dev)
|
||||
|
||||
static int labpc_cancel(struct comedi_device *dev, struct comedi_subdevice *s)
|
||||
{
|
||||
struct labpc_private *devpriv = dev->private;
|
||||
unsigned long flags;
|
||||
|
||||
spin_lock_irqsave(&dev->spinlock, flags);
|
||||
@ -1096,6 +1106,7 @@ static int labpc_ai_cmdtest(struct comedi_device *dev,
|
||||
|
||||
static int labpc_ai_cmd(struct comedi_device *dev, struct comedi_subdevice *s)
|
||||
{
|
||||
struct labpc_private *devpriv = dev->private;
|
||||
int channel, range, aref;
|
||||
#ifdef CONFIG_ISA_DMA_API
|
||||
unsigned long irq_flags;
|
||||
@ -1363,6 +1374,7 @@ static int labpc_ai_cmd(struct comedi_device *dev, struct comedi_subdevice *s)
|
||||
static irqreturn_t labpc_interrupt(int irq, void *d)
|
||||
{
|
||||
struct comedi_device *dev = d;
|
||||
struct labpc_private *devpriv = dev->private;
|
||||
struct comedi_subdevice *s = dev->read_subdev;
|
||||
struct comedi_async *async;
|
||||
struct comedi_cmd *cmd;
|
||||
@ -1451,6 +1463,7 @@ static irqreturn_t labpc_interrupt(int irq, void *d)
|
||||
/* read all available samples from ai fifo */
|
||||
static int labpc_drain_fifo(struct comedi_device *dev)
|
||||
{
|
||||
struct labpc_private *devpriv = dev->private;
|
||||
unsigned int lsb, msb;
|
||||
short data;
|
||||
struct comedi_async *async = dev->read_subdev->async;
|
||||
@ -1486,6 +1499,7 @@ static int labpc_drain_fifo(struct comedi_device *dev)
|
||||
#ifdef CONFIG_ISA_DMA_API
|
||||
static void labpc_drain_dma(struct comedi_device *dev)
|
||||
{
|
||||
struct labpc_private *devpriv = dev->private;
|
||||
struct comedi_subdevice *s = dev->read_subdev;
|
||||
struct comedi_async *async = s->async;
|
||||
int status;
|
||||
@ -1539,6 +1553,8 @@ static void labpc_drain_dma(struct comedi_device *dev)
|
||||
|
||||
static void handle_isa_dma(struct comedi_device *dev)
|
||||
{
|
||||
struct labpc_private *devpriv = dev->private;
|
||||
|
||||
labpc_drain_dma(dev);
|
||||
|
||||
enable_dma(devpriv->dma_chan);
|
||||
@ -1553,6 +1569,8 @@ static void handle_isa_dma(struct comedi_device *dev)
|
||||
static void labpc_drain_dregs(struct comedi_device *dev)
|
||||
{
|
||||
#ifdef CONFIG_ISA_DMA_API
|
||||
struct labpc_private *devpriv = dev->private;
|
||||
|
||||
if (devpriv->current_transfer == isa_dma_transfer)
|
||||
labpc_drain_dma(dev);
|
||||
#endif
|
||||
@ -1563,6 +1581,7 @@ static void labpc_drain_dregs(struct comedi_device *dev)
|
||||
static int labpc_ai_rinsn(struct comedi_device *dev, struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct labpc_private *devpriv = dev->private;
|
||||
int i, n;
|
||||
int chan, range;
|
||||
int lsb, msb;
|
||||
@ -1652,6 +1671,7 @@ static int labpc_ai_rinsn(struct comedi_device *dev, struct comedi_subdevice *s,
|
||||
static int labpc_ao_winsn(struct comedi_device *dev, struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct labpc_private *devpriv = dev->private;
|
||||
int channel, range;
|
||||
unsigned long flags;
|
||||
int lsb, msb;
|
||||
@ -1693,6 +1713,8 @@ static int labpc_ao_winsn(struct comedi_device *dev, struct comedi_subdevice *s,
|
||||
static int labpc_ao_rinsn(struct comedi_device *dev, struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct labpc_private *devpriv = dev->private;
|
||||
|
||||
data[0] = devpriv->ao_value[CR_CHAN(insn->chanspec)];
|
||||
|
||||
return 1;
|
||||
@ -1702,6 +1724,8 @@ static int labpc_calib_read_insn(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct labpc_private *devpriv = dev->private;
|
||||
|
||||
data[0] = devpriv->caldac[CR_CHAN(insn->chanspec)];
|
||||
|
||||
return 1;
|
||||
@ -1721,6 +1745,8 @@ static int labpc_eeprom_read_insn(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct labpc_private *devpriv = dev->private;
|
||||
|
||||
data[0] = devpriv->eeprom_data[CR_CHAN(insn->chanspec)];
|
||||
|
||||
return 1;
|
||||
@ -1777,6 +1803,7 @@ static unsigned int labpc_suggest_transfer_size(const struct comedi_cmd *cmd)
|
||||
static void labpc_adc_timing(struct comedi_device *dev, struct comedi_cmd *cmd,
|
||||
enum scan_mode mode)
|
||||
{
|
||||
struct labpc_private *devpriv = dev->private;
|
||||
/* max value for 16 bit counter in mode 2 */
|
||||
const int max_counter_value = 0x10000;
|
||||
/* min value for 16 bit counter in mode 2 */
|
||||
@ -1883,6 +1910,7 @@ static int labpc_dio_mem_callback(int dir, int port, int data,
|
||||
static void labpc_serial_out(struct comedi_device *dev, unsigned int value,
|
||||
unsigned int value_width)
|
||||
{
|
||||
struct labpc_private *devpriv = dev->private;
|
||||
int i;
|
||||
|
||||
for (i = 1; i <= value_width; i++) {
|
||||
@ -1907,6 +1935,7 @@ static void labpc_serial_out(struct comedi_device *dev, unsigned int value,
|
||||
/* lowlevel read from eeprom */
|
||||
static unsigned int labpc_serial_in(struct comedi_device *dev)
|
||||
{
|
||||
struct labpc_private *devpriv = dev->private;
|
||||
unsigned int value = 0;
|
||||
int i;
|
||||
const int value_width = 8; /* number of bits wide values are */
|
||||
@ -1936,6 +1965,7 @@ static unsigned int labpc_serial_in(struct comedi_device *dev)
|
||||
static unsigned int labpc_eeprom_read(struct comedi_device *dev,
|
||||
unsigned int address)
|
||||
{
|
||||
struct labpc_private *devpriv = dev->private;
|
||||
unsigned int value;
|
||||
/* bits to tell eeprom to expect a read */
|
||||
const int read_instruction = 0x3;
|
||||
@ -1968,6 +1998,7 @@ static unsigned int labpc_eeprom_read(struct comedi_device *dev,
|
||||
static int labpc_eeprom_write(struct comedi_device *dev,
|
||||
unsigned int address, unsigned int value)
|
||||
{
|
||||
struct labpc_private *devpriv = dev->private;
|
||||
const int write_enable_instruction = 0x6;
|
||||
const int write_instruction = 0x2;
|
||||
const int write_length = 8; /* 8 bit write lengths to eeprom */
|
||||
@ -2025,6 +2056,7 @@ static int labpc_eeprom_write(struct comedi_device *dev,
|
||||
|
||||
static unsigned int labpc_eeprom_read_status(struct comedi_device *dev)
|
||||
{
|
||||
struct labpc_private *devpriv = dev->private;
|
||||
unsigned int value;
|
||||
const int read_status_instruction = 0x5;
|
||||
const int write_length = 8; /* 8 bit write lengths to eeprom */
|
||||
@ -2054,6 +2086,8 @@ static unsigned int labpc_eeprom_read_status(struct comedi_device *dev)
|
||||
static void write_caldac(struct comedi_device *dev, unsigned int channel,
|
||||
unsigned int value)
|
||||
{
|
||||
struct labpc_private *devpriv = dev->private;
|
||||
|
||||
if (value == devpriv->caldac[channel])
|
||||
return;
|
||||
devpriv->caldac[channel] = value;
|
||||
|
@ -127,13 +127,16 @@ static struct comedi_driver driver_labpc_cs = {
|
||||
|
||||
static int labpc_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
{
|
||||
struct labpc_private *devpriv;
|
||||
unsigned long iobase = 0;
|
||||
unsigned int irq = 0;
|
||||
struct pcmcia_device *link;
|
||||
int ret;
|
||||
|
||||
/* allocate and initialize dev->private */
|
||||
if (alloc_private(dev, sizeof(struct labpc_private)) < 0)
|
||||
return -ENOMEM;
|
||||
ret = alloc_private(dev, sizeof(*devpriv));
|
||||
if (ret)
|
||||
return ret;
|
||||
devpriv = dev->private;
|
||||
|
||||
/* get base address, irq etc. based on bustype */
|
||||
switch (thisboard->bustype) {
|
||||
|
@ -310,7 +310,6 @@ struct nidio96_private {
|
||||
struct mite_dma_descriptor_ring *di_mite_ring;
|
||||
spinlock_t mite_channel_lock;
|
||||
};
|
||||
#define devpriv ((struct nidio96_private *)dev->private)
|
||||
|
||||
static int ni_pcidio_cmdtest(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s,
|
||||
@ -332,6 +331,7 @@ static void ni_pcidio_print_status(unsigned int status);
|
||||
|
||||
static int ni_pcidio_request_di_mite_channel(struct comedi_device *dev)
|
||||
{
|
||||
struct nidio96_private *devpriv = dev->private;
|
||||
unsigned long flags;
|
||||
|
||||
spin_lock_irqsave(&devpriv->mite_channel_lock, flags);
|
||||
@ -355,6 +355,7 @@ static int ni_pcidio_request_di_mite_channel(struct comedi_device *dev)
|
||||
|
||||
static void ni_pcidio_release_di_mite_channel(struct comedi_device *dev)
|
||||
{
|
||||
struct nidio96_private *devpriv = dev->private;
|
||||
unsigned long flags;
|
||||
|
||||
spin_lock_irqsave(&devpriv->mite_channel_lock, flags);
|
||||
@ -384,6 +385,7 @@ static void ni_pcidio_event(struct comedi_device *dev,
|
||||
|
||||
static int ni_pcidio_poll(struct comedi_device *dev, struct comedi_subdevice *s)
|
||||
{
|
||||
struct nidio96_private *devpriv = dev->private;
|
||||
unsigned long irq_flags;
|
||||
int count;
|
||||
|
||||
@ -400,6 +402,7 @@ static int ni_pcidio_poll(struct comedi_device *dev, struct comedi_subdevice *s)
|
||||
static irqreturn_t nidio_interrupt(int irq, void *d)
|
||||
{
|
||||
struct comedi_device *dev = d;
|
||||
struct nidio96_private *devpriv = dev->private;
|
||||
struct comedi_subdevice *s = &dev->subdevices[0];
|
||||
struct comedi_async *async = s->async;
|
||||
struct mite_struct *mite = devpriv->mite;
|
||||
@ -609,6 +612,7 @@ static void ni_pcidio_print_status(unsigned int flags)
|
||||
#ifdef unused
|
||||
static void debug_int(struct comedi_device *dev)
|
||||
{
|
||||
struct nidio96_private *devpriv = dev->private;
|
||||
int a, b;
|
||||
static int n_int;
|
||||
struct timeval tv;
|
||||
@ -640,6 +644,8 @@ static int ni_pcidio_insn_config(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct nidio96_private *devpriv = dev->private;
|
||||
|
||||
if (insn->n != 1)
|
||||
return -EINVAL;
|
||||
switch (data[0]) {
|
||||
@ -668,6 +674,8 @@ static int ni_pcidio_insn_bits(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct nidio96_private *devpriv = dev->private;
|
||||
|
||||
if (data[0]) {
|
||||
s->state &= ~data[0];
|
||||
s->state |= (data[0] & data[1]);
|
||||
@ -793,6 +801,7 @@ static int ni_pcidio_ns_to_timer(int *nanosec, int round_mode)
|
||||
|
||||
static int ni_pcidio_cmd(struct comedi_device *dev, struct comedi_subdevice *s)
|
||||
{
|
||||
struct nidio96_private *devpriv = dev->private;
|
||||
struct comedi_cmd *cmd = &s->async->cmd;
|
||||
|
||||
/* XXX configure ports for input */
|
||||
@ -910,6 +919,7 @@ static int ni_pcidio_cmd(struct comedi_device *dev, struct comedi_subdevice *s)
|
||||
|
||||
static int setup_mite_dma(struct comedi_device *dev, struct comedi_subdevice *s)
|
||||
{
|
||||
struct nidio96_private *devpriv = dev->private;
|
||||
int retval;
|
||||
unsigned long flags;
|
||||
|
||||
@ -934,6 +944,8 @@ static int setup_mite_dma(struct comedi_device *dev, struct comedi_subdevice *s)
|
||||
static int ni_pcidio_inttrig(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s, unsigned int trignum)
|
||||
{
|
||||
struct nidio96_private *devpriv = dev->private;
|
||||
|
||||
if (trignum != 0)
|
||||
return -EINVAL;
|
||||
|
||||
@ -946,6 +958,8 @@ static int ni_pcidio_inttrig(struct comedi_device *dev,
|
||||
static int ni_pcidio_cancel(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s)
|
||||
{
|
||||
struct nidio96_private *devpriv = dev->private;
|
||||
|
||||
writeb(0x00,
|
||||
devpriv->mite->daq_io_addr + Master_DMA_And_Interrupt_Control);
|
||||
ni_pcidio_release_di_mite_channel(dev);
|
||||
@ -956,6 +970,7 @@ static int ni_pcidio_cancel(struct comedi_device *dev,
|
||||
static int ni_pcidio_change(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s, unsigned long new_size)
|
||||
{
|
||||
struct nidio96_private *devpriv = dev->private;
|
||||
int ret;
|
||||
|
||||
ret = mite_buf_change(devpriv->di_mite_ring, s->async);
|
||||
@ -970,6 +985,7 @@ static int ni_pcidio_change(struct comedi_device *dev,
|
||||
static int pci_6534_load_fpga(struct comedi_device *dev, int fpga_index,
|
||||
const u8 *data, size_t data_len)
|
||||
{
|
||||
struct nidio96_private *devpriv = dev->private;
|
||||
static const int timeout = 1000;
|
||||
int i;
|
||||
size_t j;
|
||||
@ -1033,8 +1049,10 @@ static int pci_6534_reset_fpga(struct comedi_device *dev, int fpga_index)
|
||||
|
||||
static int pci_6534_reset_fpgas(struct comedi_device *dev)
|
||||
{
|
||||
struct nidio96_private *devpriv = dev->private;
|
||||
int ret;
|
||||
int i;
|
||||
|
||||
writew(0x0, devpriv->mite->daq_io_addr + Firmware_Control_Register);
|
||||
for (i = 0; i < 3; ++i) {
|
||||
ret = pci_6534_reset_fpga(dev, i);
|
||||
@ -1047,6 +1065,8 @@ static int pci_6534_reset_fpgas(struct comedi_device *dev)
|
||||
|
||||
static void pci_6534_init_main_fpga(struct comedi_device *dev)
|
||||
{
|
||||
struct nidio96_private *devpriv = dev->private;
|
||||
|
||||
writel(0, devpriv->mite->daq_io_addr + FPGA_Control1_Register);
|
||||
writel(0, devpriv->mite->daq_io_addr + FPGA_Control2_Register);
|
||||
writel(0, devpriv->mite->daq_io_addr + FPGA_SCALS_Counter_Register);
|
||||
@ -1057,6 +1077,7 @@ static void pci_6534_init_main_fpga(struct comedi_device *dev)
|
||||
|
||||
static int pci_6534_upload_firmware(struct comedi_device *dev)
|
||||
{
|
||||
struct nidio96_private *devpriv = dev->private;
|
||||
int ret;
|
||||
const struct firmware *fw;
|
||||
static const char *const fw_file[3] = {
|
||||
@ -1102,13 +1123,16 @@ nidio_find_boardinfo(struct pci_dev *pcidev)
|
||||
static int __devinit nidio_attach_pci(struct comedi_device *dev,
|
||||
struct pci_dev *pcidev)
|
||||
{
|
||||
struct nidio96_private *devpriv;
|
||||
struct comedi_subdevice *s;
|
||||
int ret;
|
||||
unsigned int irq;
|
||||
|
||||
ret = alloc_private(dev, sizeof(struct nidio96_private));
|
||||
if (ret < 0)
|
||||
ret = alloc_private(dev, sizeof(*devpriv));
|
||||
if (ret)
|
||||
return ret;
|
||||
devpriv = dev->private;
|
||||
|
||||
spin_lock_init(&devpriv->mite_channel_lock);
|
||||
|
||||
dev->board_ptr = nidio_find_boardinfo(pcidev);
|
||||
@ -1184,6 +1208,8 @@ static int __devinit nidio_attach_pci(struct comedi_device *dev,
|
||||
|
||||
static void nidio_detach(struct comedi_device *dev)
|
||||
{
|
||||
struct nidio96_private *devpriv = dev->private;
|
||||
|
||||
if (dev->irq)
|
||||
free_irq(dev->irq, dev);
|
||||
if (devpriv) {
|
||||
|
@ -161,14 +161,13 @@ struct pcl711_private {
|
||||
unsigned int divisor2;
|
||||
};
|
||||
|
||||
#define devpriv ((struct pcl711_private *)dev->private)
|
||||
|
||||
static irqreturn_t pcl711_interrupt(int irq, void *d)
|
||||
{
|
||||
int lo, hi;
|
||||
int data;
|
||||
struct comedi_device *dev = d;
|
||||
const struct pcl711_board *board = comedi_board(dev);
|
||||
struct pcl711_private *devpriv = dev->private;
|
||||
struct comedi_subdevice *s = &dev->subdevices[0];
|
||||
|
||||
if (!dev->attached) {
|
||||
@ -264,6 +263,7 @@ ok:
|
||||
static int pcl711_ai_cmdtest(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s, struct comedi_cmd *cmd)
|
||||
{
|
||||
struct pcl711_private *devpriv = dev->private;
|
||||
int tmp;
|
||||
int err = 0;
|
||||
|
||||
@ -349,6 +349,7 @@ static int pcl711_ai_cmdtest(struct comedi_device *dev,
|
||||
|
||||
static int pcl711_ai_cmd(struct comedi_device *dev, struct comedi_subdevice *s)
|
||||
{
|
||||
struct pcl711_private *devpriv = dev->private;
|
||||
int timer1, timer2;
|
||||
struct comedi_cmd *cmd = &s->async->cmd;
|
||||
|
||||
@ -398,6 +399,7 @@ static int pcl711_ai_cmd(struct comedi_device *dev, struct comedi_subdevice *s)
|
||||
static int pcl711_ao_insn(struct comedi_device *dev, struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct pcl711_private *devpriv = dev->private;
|
||||
int n;
|
||||
int chan = CR_CHAN(insn->chanspec);
|
||||
|
||||
@ -417,6 +419,7 @@ static int pcl711_ao_insn_read(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct pcl711_private *devpriv = dev->private;
|
||||
int n;
|
||||
int chan = CR_CHAN(insn->chanspec);
|
||||
|
||||
@ -460,6 +463,7 @@ static int pcl711_do_insn_bits(struct comedi_device *dev,
|
||||
static int pcl711_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
{
|
||||
const struct pcl711_board *board = comedi_board(dev);
|
||||
struct pcl711_private *devpriv;
|
||||
int ret;
|
||||
unsigned long iobase;
|
||||
unsigned int irq;
|
||||
@ -499,9 +503,10 @@ static int pcl711_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = alloc_private(dev, sizeof(struct pcl711_private));
|
||||
if (ret < 0)
|
||||
ret = alloc_private(dev, sizeof(*devpriv));
|
||||
if (ret)
|
||||
return ret;
|
||||
devpriv = dev->private;
|
||||
|
||||
s = &dev->subdevices[0];
|
||||
/* AI subdevice */
|
||||
|
@ -152,11 +152,10 @@ struct pcl726_private {
|
||||
unsigned int ao_readback[12];
|
||||
};
|
||||
|
||||
#define devpriv ((struct pcl726_private *)dev->private)
|
||||
|
||||
static int pcl726_ao_insn(struct comedi_device *dev, struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct pcl726_private *devpriv = dev->private;
|
||||
int hi, lo;
|
||||
int n;
|
||||
int chan = CR_CHAN(insn->chanspec);
|
||||
@ -183,6 +182,7 @@ static int pcl726_ao_insn_read(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct pcl726_private *devpriv = dev->private;
|
||||
int chan = CR_CHAN(insn->chanspec);
|
||||
int n;
|
||||
|
||||
@ -226,6 +226,7 @@ static int pcl726_do_insn_bits(struct comedi_device *dev,
|
||||
static int pcl726_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
{
|
||||
const struct pcl726_board *board = comedi_board(dev);
|
||||
struct pcl726_private *devpriv;
|
||||
struct comedi_subdevice *s;
|
||||
unsigned long iobase;
|
||||
unsigned int iorange;
|
||||
@ -247,9 +248,10 @@ static int pcl726_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
|
||||
dev->board_name = board->name;
|
||||
|
||||
ret = alloc_private(dev, sizeof(struct pcl726_private));
|
||||
if (ret < 0)
|
||||
return -ENOMEM;
|
||||
ret = alloc_private(dev, sizeof(*devpriv));
|
||||
if (ret)
|
||||
return ret;
|
||||
devpriv = dev->private;
|
||||
|
||||
for (i = 0; i < 12; i++) {
|
||||
devpriv->bipolar[i] = 0;
|
||||
|
@ -369,8 +369,6 @@ struct pcl812_private {
|
||||
unsigned int ao_readback[2]; /* data for AO readback */
|
||||
};
|
||||
|
||||
#define devpriv ((struct pcl812_private *)dev->private)
|
||||
|
||||
/*
|
||||
==============================================================================
|
||||
*/
|
||||
@ -388,6 +386,7 @@ static int pcl812_ai_insn_read(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct pcl812_private *devpriv = dev->private;
|
||||
int n;
|
||||
int timeout, hi;
|
||||
|
||||
@ -465,6 +464,7 @@ static int pcl812_ao_insn_write(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct pcl812_private *devpriv = dev->private;
|
||||
int chan = CR_CHAN(insn->chanspec);
|
||||
int i;
|
||||
|
||||
@ -486,6 +486,7 @@ static int pcl812_ao_insn_read(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct pcl812_private *devpriv = dev->private;
|
||||
int chan = CR_CHAN(insn->chanspec);
|
||||
int i;
|
||||
|
||||
@ -533,6 +534,7 @@ static int pcl812_ai_cmdtest(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s, struct comedi_cmd *cmd)
|
||||
{
|
||||
const struct pcl812_board *board = comedi_board(dev);
|
||||
struct pcl812_private *devpriv = dev->private;
|
||||
int err = 0;
|
||||
unsigned int flags;
|
||||
int tmp, divisor1, divisor2;
|
||||
@ -639,6 +641,7 @@ static int pcl812_ai_cmdtest(struct comedi_device *dev,
|
||||
static int pcl812_ai_cmd(struct comedi_device *dev, struct comedi_subdevice *s)
|
||||
{
|
||||
const struct pcl812_board *board = comedi_board(dev);
|
||||
struct pcl812_private *devpriv = dev->private;
|
||||
unsigned int divisor1 = 0, divisor2 = 0, i, dma_flags, bytes;
|
||||
struct comedi_cmd *cmd = &s->async->cmd;
|
||||
|
||||
@ -789,6 +792,7 @@ static irqreturn_t interrupt_pcl812_ai_int(int irq, void *d)
|
||||
char err = 1;
|
||||
unsigned int mask, timeout;
|
||||
struct comedi_device *dev = d;
|
||||
struct pcl812_private *devpriv = dev->private;
|
||||
struct comedi_subdevice *s = &dev->subdevices[0];
|
||||
unsigned int next_chan;
|
||||
|
||||
@ -862,6 +866,7 @@ static void transfer_from_dma_buf(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s, short *ptr,
|
||||
unsigned int bufptr, unsigned int len)
|
||||
{
|
||||
struct pcl812_private *devpriv = dev->private;
|
||||
unsigned int i;
|
||||
|
||||
s->async->events = 0;
|
||||
@ -892,6 +897,7 @@ static void transfer_from_dma_buf(struct comedi_device *dev,
|
||||
static irqreturn_t interrupt_pcl812_ai_dma(int irq, void *d)
|
||||
{
|
||||
struct comedi_device *dev = d;
|
||||
struct pcl812_private *devpriv = dev->private;
|
||||
struct comedi_subdevice *s = &dev->subdevices[0];
|
||||
unsigned long dma_flags;
|
||||
int len, bufptr;
|
||||
@ -938,6 +944,7 @@ static irqreturn_t interrupt_pcl812_ai_dma(int irq, void *d)
|
||||
static irqreturn_t interrupt_pcl812(int irq, void *d)
|
||||
{
|
||||
struct comedi_device *dev = d;
|
||||
struct pcl812_private *devpriv = dev->private;
|
||||
|
||||
if (!dev->attached) {
|
||||
comedi_error(dev, "spurious interrupt");
|
||||
@ -954,6 +961,7 @@ static irqreturn_t interrupt_pcl812(int irq, void *d)
|
||||
*/
|
||||
static int pcl812_ai_poll(struct comedi_device *dev, struct comedi_subdevice *s)
|
||||
{
|
||||
struct pcl812_private *devpriv = dev->private;
|
||||
unsigned long flags;
|
||||
unsigned int top1, top2, i;
|
||||
|
||||
@ -1002,6 +1010,7 @@ static void setup_range_channel(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s,
|
||||
unsigned int rangechan, char wait)
|
||||
{
|
||||
struct pcl812_private *devpriv = dev->private;
|
||||
unsigned char chan_reg = CR_CHAN(rangechan); /* normal board */
|
||||
/* gain index */
|
||||
unsigned char gain_reg = CR_RANGE(rangechan) +
|
||||
@ -1063,8 +1072,9 @@ static void start_pacer(struct comedi_device *dev, int mode,
|
||||
static void free_resources(struct comedi_device *dev)
|
||||
{
|
||||
const struct pcl812_board *board = comedi_board(dev);
|
||||
struct pcl812_private *devpriv = dev->private;
|
||||
|
||||
if (dev->private) {
|
||||
if (devpriv) {
|
||||
if (devpriv->dmabuf[0])
|
||||
free_pages(devpriv->dmabuf[0], devpriv->dmapages[0]);
|
||||
if (devpriv->dmabuf[1])
|
||||
@ -1084,6 +1094,8 @@ static void free_resources(struct comedi_device *dev)
|
||||
static int pcl812_ai_cancel(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s)
|
||||
{
|
||||
struct pcl812_private *devpriv = dev->private;
|
||||
|
||||
if (devpriv->ai_dma)
|
||||
disable_dma(devpriv->dma);
|
||||
outb(0, dev->iobase + PCL812_CLRINT); /* clear INT request */
|
||||
@ -1100,6 +1112,7 @@ static int pcl812_ai_cancel(struct comedi_device *dev,
|
||||
static void pcl812_reset(struct comedi_device *dev)
|
||||
{
|
||||
const struct pcl812_board *board = comedi_board(dev);
|
||||
struct pcl812_private *devpriv = dev->private;
|
||||
|
||||
outb(0, dev->iobase + PCL812_MUX);
|
||||
outb(0 + devpriv->range_correction, dev->iobase + PCL812_GAIN);
|
||||
@ -1135,6 +1148,7 @@ static void pcl812_reset(struct comedi_device *dev)
|
||||
static int pcl812_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
{
|
||||
const struct pcl812_board *board = comedi_board(dev);
|
||||
struct pcl812_private *devpriv;
|
||||
int ret, subdev;
|
||||
unsigned long iobase;
|
||||
unsigned int irq;
|
||||
@ -1153,11 +1167,12 @@ static int pcl812_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
}
|
||||
dev->iobase = iobase;
|
||||
|
||||
ret = alloc_private(dev, sizeof(struct pcl812_private));
|
||||
if (ret < 0) {
|
||||
ret = alloc_private(dev, sizeof(*devpriv));
|
||||
if (ret) {
|
||||
free_resources(dev);
|
||||
return ret; /* Can't alloc mem */
|
||||
return ret;
|
||||
}
|
||||
devpriv = dev->private;
|
||||
|
||||
dev->board_name = board->name;
|
||||
|
||||
|
@ -126,8 +126,6 @@ struct pcl816_board {
|
||||
int i8254_osc_base; /* 1/frequency of on board oscilator in ns */
|
||||
};
|
||||
|
||||
#define devpriv ((struct pcl816_private *)dev->private)
|
||||
|
||||
#ifdef unused
|
||||
static int RTC_lock; /* RTC lock */
|
||||
static int RTC_timer_lock; /* RTC int lock */
|
||||
@ -259,6 +257,7 @@ static int pcl816_ai_insn_read(struct comedi_device *dev,
|
||||
static irqreturn_t interrupt_pcl816_ai_mode13_int(int irq, void *d)
|
||||
{
|
||||
struct comedi_device *dev = d;
|
||||
struct pcl816_private *devpriv = dev->private;
|
||||
struct comedi_subdevice *s = &dev->subdevices[0];
|
||||
int low, hi;
|
||||
int timeout = 50; /* wait max 50us */
|
||||
@ -315,6 +314,7 @@ static void transfer_from_dma_buf(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s, short *ptr,
|
||||
unsigned int bufptr, unsigned int len)
|
||||
{
|
||||
struct pcl816_private *devpriv = dev->private;
|
||||
int i;
|
||||
|
||||
s->async->events = 0;
|
||||
@ -350,6 +350,7 @@ static void transfer_from_dma_buf(struct comedi_device *dev,
|
||||
static irqreturn_t interrupt_pcl816_ai_mode13_dma(int irq, void *d)
|
||||
{
|
||||
struct comedi_device *dev = d;
|
||||
struct pcl816_private *devpriv = dev->private;
|
||||
struct comedi_subdevice *s = &dev->subdevices[0];
|
||||
int len, bufptr, this_dma_buf;
|
||||
unsigned long dma_flags;
|
||||
@ -398,6 +399,8 @@ static irqreturn_t interrupt_pcl816_ai_mode13_dma(int irq, void *d)
|
||||
static irqreturn_t interrupt_pcl816(int irq, void *d)
|
||||
{
|
||||
struct comedi_device *dev = d;
|
||||
struct pcl816_private *devpriv = dev->private;
|
||||
|
||||
DPRINTK("<I>");
|
||||
|
||||
if (!dev->attached) {
|
||||
@ -554,6 +557,7 @@ static int pcl816_ai_cmdtest(struct comedi_device *dev,
|
||||
static int pcl816_ai_cmd(struct comedi_device *dev, struct comedi_subdevice *s)
|
||||
{
|
||||
const struct pcl816_board *board = comedi_board(dev);
|
||||
struct pcl816_private *devpriv = dev->private;
|
||||
unsigned int divisor1 = 0, divisor2 = 0, dma_flags, bytes, dmairq;
|
||||
struct comedi_cmd *cmd = &s->async->cmd;
|
||||
unsigned int seglen;
|
||||
@ -682,6 +686,7 @@ static int pcl816_ai_cmd(struct comedi_device *dev, struct comedi_subdevice *s)
|
||||
|
||||
static int pcl816_ai_poll(struct comedi_device *dev, struct comedi_subdevice *s)
|
||||
{
|
||||
struct pcl816_private *devpriv = dev->private;
|
||||
unsigned long flags;
|
||||
unsigned int top1, top2, i;
|
||||
|
||||
@ -727,6 +732,8 @@ static int pcl816_ai_poll(struct comedi_device *dev, struct comedi_subdevice *s)
|
||||
static int pcl816_ai_cancel(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s)
|
||||
{
|
||||
struct pcl816_private *devpriv = dev->private;
|
||||
|
||||
/* DEBUG(printk("pcl816_ai_cancel()\n");) */
|
||||
|
||||
if (devpriv->irq_blocked > 0) {
|
||||
@ -932,6 +939,7 @@ setup_channel_list(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s, unsigned int *chanlist,
|
||||
unsigned int seglen)
|
||||
{
|
||||
struct pcl816_private *devpriv = dev->private;
|
||||
unsigned int i;
|
||||
|
||||
devpriv->ai_act_chanlist_len = seglen;
|
||||
@ -991,6 +999,7 @@ static int set_rtc_irq_bit(unsigned char bit)
|
||||
static int pcl816_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
{
|
||||
const struct pcl816_board *board = comedi_board(dev);
|
||||
struct pcl816_private *devpriv;
|
||||
int ret;
|
||||
unsigned long iobase;
|
||||
unsigned int irq, dma;
|
||||
@ -1015,9 +1024,10 @@ static int pcl816_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
ret = alloc_private(dev, sizeof(struct pcl816_private));
|
||||
if (ret < 0)
|
||||
return ret; /* Can't alloc mem */
|
||||
ret = alloc_private(dev, sizeof(*devpriv));
|
||||
if (ret)
|
||||
return ret;
|
||||
devpriv = dev->private;
|
||||
|
||||
dev->board_name = board->name;
|
||||
|
||||
@ -1216,6 +1226,7 @@ case COMEDI_SUBD_DO:
|
||||
static void pcl816_detach(struct comedi_device *dev)
|
||||
{
|
||||
const struct pcl816_board *board = comedi_board(dev);
|
||||
struct pcl816_private *devpriv = dev->private;
|
||||
|
||||
if (dev->private) {
|
||||
pcl816_ai_cancel(dev, devpriv->sub_ai);
|
||||
|
@ -326,8 +326,6 @@ static const unsigned int muxonechan[] = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0
|
||||
0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff
|
||||
};
|
||||
|
||||
#define devpriv ((struct pcl818_private *)dev->private)
|
||||
|
||||
/*
|
||||
==============================================================================
|
||||
*/
|
||||
@ -406,6 +404,7 @@ static int pcl818_ao_insn_read(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct pcl818_private *devpriv = dev->private;
|
||||
int n;
|
||||
int chan = CR_CHAN(insn->chanspec);
|
||||
|
||||
@ -419,6 +418,7 @@ static int pcl818_ao_insn_write(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct pcl818_private *devpriv = dev->private;
|
||||
int n;
|
||||
int chan = CR_CHAN(insn->chanspec);
|
||||
|
||||
@ -478,6 +478,7 @@ static int pcl818_do_insn_bits(struct comedi_device *dev,
|
||||
static irqreturn_t interrupt_pcl818_ai_mode13_int(int irq, void *d)
|
||||
{
|
||||
struct comedi_device *dev = d;
|
||||
struct pcl818_private *devpriv = dev->private;
|
||||
struct comedi_subdevice *s = &dev->subdevices[0];
|
||||
int low;
|
||||
int timeout = 50; /* wait max 50us */
|
||||
@ -537,6 +538,7 @@ conv_finish:
|
||||
static irqreturn_t interrupt_pcl818_ai_mode13_dma(int irq, void *d)
|
||||
{
|
||||
struct comedi_device *dev = d;
|
||||
struct pcl818_private *devpriv = dev->private;
|
||||
struct comedi_subdevice *s = &dev->subdevices[0];
|
||||
int i, len, bufptr;
|
||||
unsigned long flags;
|
||||
@ -616,6 +618,7 @@ static irqreturn_t interrupt_pcl818_ai_mode13_dma(int irq, void *d)
|
||||
static irqreturn_t interrupt_pcl818_ai_mode13_dma_rtc(int irq, void *d)
|
||||
{
|
||||
struct comedi_device *dev = d;
|
||||
struct pcl818_private *devpriv = dev->private;
|
||||
struct comedi_subdevice *s = &dev->subdevices[0];
|
||||
unsigned long tmp;
|
||||
unsigned int top1, top2, i, bufptr;
|
||||
@ -721,6 +724,7 @@ static irqreturn_t interrupt_pcl818_ai_mode13_dma_rtc(int irq, void *d)
|
||||
static irqreturn_t interrupt_pcl818_ai_mode13_fifo(int irq, void *d)
|
||||
{
|
||||
struct comedi_device *dev = d;
|
||||
struct pcl818_private *devpriv = dev->private;
|
||||
struct comedi_subdevice *s = &dev->subdevices[0];
|
||||
int i, len, lo;
|
||||
|
||||
@ -795,6 +799,7 @@ static irqreturn_t interrupt_pcl818_ai_mode13_fifo(int irq, void *d)
|
||||
static irqreturn_t interrupt_pcl818(int irq, void *d)
|
||||
{
|
||||
struct comedi_device *dev = d;
|
||||
struct pcl818_private *devpriv = dev->private;
|
||||
|
||||
if (!dev->attached) {
|
||||
comedi_error(dev, "premature interrupt");
|
||||
@ -861,6 +866,7 @@ static irqreturn_t interrupt_pcl818(int irq, void *d)
|
||||
static void pcl818_ai_mode13dma_int(int mode, struct comedi_device *dev,
|
||||
struct comedi_subdevice *s)
|
||||
{
|
||||
struct pcl818_private *devpriv = dev->private;
|
||||
unsigned int flags;
|
||||
unsigned int bytes;
|
||||
|
||||
@ -902,6 +908,7 @@ static void pcl818_ai_mode13dma_int(int mode, struct comedi_device *dev,
|
||||
static void pcl818_ai_mode13dma_rtc(int mode, struct comedi_device *dev,
|
||||
struct comedi_subdevice *s)
|
||||
{
|
||||
struct pcl818_private *devpriv = dev->private;
|
||||
unsigned int flags;
|
||||
short *pole;
|
||||
|
||||
@ -943,6 +950,7 @@ static void pcl818_ai_mode13dma_rtc(int mode, struct comedi_device *dev,
|
||||
static int pcl818_ai_cmd_mode(int mode, struct comedi_device *dev,
|
||||
struct comedi_subdevice *s)
|
||||
{
|
||||
struct pcl818_private *devpriv = dev->private;
|
||||
struct comedi_cmd *cmd = &s->async->cmd;
|
||||
int divisor1 = 0, divisor2 = 0;
|
||||
unsigned int seglen;
|
||||
@ -1063,6 +1071,7 @@ static int pcl818_ai_cmd_mode(int mode, struct comedi_device *dev,
|
||||
static int pcl818_ao_mode13(int mode, struct comedi_device *dev,
|
||||
struct comedi_subdevice *s, comedi_trig * it)
|
||||
{
|
||||
struct pcl818_private *devpriv = dev->private;
|
||||
int divisor1 = 0, divisor2 = 0;
|
||||
|
||||
if (!dev->irq) {
|
||||
@ -1222,6 +1231,7 @@ static void setup_channel_list(struct comedi_device *dev,
|
||||
unsigned int *chanlist, unsigned int n_chan,
|
||||
unsigned int seglen)
|
||||
{
|
||||
struct pcl818_private *devpriv = dev->private;
|
||||
int i;
|
||||
|
||||
devpriv->act_chanlist_len = seglen;
|
||||
@ -1259,6 +1269,7 @@ static int ai_cmdtest(struct comedi_device *dev, struct comedi_subdevice *s,
|
||||
struct comedi_cmd *cmd)
|
||||
{
|
||||
const struct pcl818_board *board = comedi_board(dev);
|
||||
struct pcl818_private *devpriv = dev->private;
|
||||
int err = 0;
|
||||
int tmp, divisor1 = 0, divisor2 = 0;
|
||||
|
||||
@ -1358,6 +1369,7 @@ static int ai_cmdtest(struct comedi_device *dev, struct comedi_subdevice *s,
|
||||
*/
|
||||
static int ai_cmd(struct comedi_device *dev, struct comedi_subdevice *s)
|
||||
{
|
||||
struct pcl818_private *devpriv = dev->private;
|
||||
struct comedi_cmd *cmd = &s->async->cmd;
|
||||
int retval;
|
||||
|
||||
@ -1397,6 +1409,8 @@ static int ai_cmd(struct comedi_device *dev, struct comedi_subdevice *s)
|
||||
static int pcl818_ai_cancel(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s)
|
||||
{
|
||||
struct pcl818_private *devpriv = dev->private;
|
||||
|
||||
if (devpriv->irq_blocked > 0) {
|
||||
dev_dbg(dev->class_dev, "pcl818_ai_cancel()\n");
|
||||
devpriv->irq_was_now_closed = 1;
|
||||
@ -1482,6 +1496,7 @@ static int pcl818_check(unsigned long iobase)
|
||||
static void pcl818_reset(struct comedi_device *dev)
|
||||
{
|
||||
const struct pcl818_board *board = comedi_board(dev);
|
||||
struct pcl818_private *devpriv = dev->private;
|
||||
|
||||
if (devpriv->usefifo) { /* FIFO shutdown */
|
||||
outb(0, dev->iobase + PCL818_FI_INTCLR);
|
||||
@ -1552,6 +1567,7 @@ static int set_rtc_irq_bit(unsigned char bit)
|
||||
static void rtc_dropped_irq(unsigned long data)
|
||||
{
|
||||
struct comedi_device *dev = (void *)data;
|
||||
struct pcl818_private *devpriv = dev->private;
|
||||
unsigned long flags, tmp;
|
||||
|
||||
switch (devpriv->int818_mode) {
|
||||
@ -1601,6 +1617,7 @@ static int rtc_setfreq_irq(int freq)
|
||||
static int pcl818_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
{
|
||||
const struct pcl818_board *board = comedi_board(dev);
|
||||
struct pcl818_private *devpriv;
|
||||
int ret;
|
||||
unsigned long iobase;
|
||||
unsigned int irq;
|
||||
@ -1608,9 +1625,10 @@ static int pcl818_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
unsigned long pages;
|
||||
struct comedi_subdevice *s;
|
||||
|
||||
ret = alloc_private(dev, sizeof(struct pcl818_private));
|
||||
if (ret < 0)
|
||||
return ret; /* Can't alloc mem */
|
||||
ret = alloc_private(dev, sizeof(*devpriv));
|
||||
if (ret)
|
||||
return ret;
|
||||
devpriv = dev->private;
|
||||
|
||||
/* claim our I/O space */
|
||||
iobase = it->options[0];
|
||||
@ -1892,7 +1910,9 @@ no_dma:
|
||||
|
||||
static void pcl818_detach(struct comedi_device *dev)
|
||||
{
|
||||
if (dev->private) {
|
||||
struct pcl818_private *devpriv = dev->private;
|
||||
|
||||
if (devpriv) {
|
||||
pcl818_ai_cancel(dev, devpriv->sub_ai);
|
||||
pcl818_reset(dev);
|
||||
if (devpriv->dma)
|
||||
|
@ -148,13 +148,12 @@ static void do_3724_config(struct comedi_device *dev,
|
||||
static void enable_chan(struct comedi_device *dev, struct comedi_subdevice *s,
|
||||
int chanspec)
|
||||
{
|
||||
struct priv_pcm3724 *priv = dev->private;
|
||||
struct comedi_subdevice *s_dio1 = &dev->subdevices[0];
|
||||
unsigned int mask;
|
||||
int gatecfg;
|
||||
struct priv_pcm3724 *priv;
|
||||
|
||||
gatecfg = 0;
|
||||
priv = dev->private;
|
||||
|
||||
mask = 1 << CR_CHAN(chanspec);
|
||||
if (s == s_dio1)
|
||||
@ -225,6 +224,7 @@ static int subdev_3724_insn_config(struct comedi_device *dev,
|
||||
static int pcm3724_attach(struct comedi_device *dev,
|
||||
struct comedi_devconfig *it)
|
||||
{
|
||||
struct priv_pcm3724 *priv;
|
||||
struct comedi_subdevice *s;
|
||||
unsigned long iobase;
|
||||
unsigned int iorange;
|
||||
@ -235,12 +235,10 @@ static int pcm3724_attach(struct comedi_device *dev,
|
||||
iobase = it->options[0];
|
||||
iorange = PCM3724_SIZE;
|
||||
|
||||
ret = alloc_private(dev, sizeof(struct priv_pcm3724));
|
||||
if (ret < 0)
|
||||
return -ENOMEM;
|
||||
|
||||
((struct priv_pcm3724 *)(dev->private))->dio_1 = 0;
|
||||
((struct priv_pcm3724 *)(dev->private))->dio_2 = 0;
|
||||
ret = alloc_private(dev, sizeof(*priv));
|
||||
if (ret)
|
||||
return ret;
|
||||
priv = dev->private;
|
||||
|
||||
printk(KERN_INFO "comedi%d: pcm3724: board=%s, 0x%03lx ", dev->minor,
|
||||
dev->board_name, iobase);
|
||||
|
@ -62,7 +62,6 @@ struct pcmad_priv_struct {
|
||||
int differential;
|
||||
int twos_comp;
|
||||
};
|
||||
#define devpriv ((struct pcmad_priv_struct *)dev->private)
|
||||
|
||||
#define TIMEOUT 100
|
||||
|
||||
@ -71,6 +70,7 @@ static int pcmad_ai_insn_read(struct comedi_device *dev,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
const struct pcmad_board_struct *board = comedi_board(dev);
|
||||
struct pcmad_priv_struct *devpriv = dev->private;
|
||||
int i;
|
||||
int chan;
|
||||
int n;
|
||||
@ -104,6 +104,7 @@ static int pcmad_ai_insn_read(struct comedi_device *dev,
|
||||
static int pcmad_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
{
|
||||
const struct pcmad_board_struct *board = comedi_board(dev);
|
||||
struct pcmad_priv_struct *devpriv;
|
||||
int ret;
|
||||
struct comedi_subdevice *s;
|
||||
unsigned long iobase;
|
||||
@ -121,9 +122,10 @@ static int pcmad_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = alloc_private(dev, sizeof(struct pcmad_priv_struct));
|
||||
if (ret < 0)
|
||||
ret = alloc_private(dev, sizeof(*devpriv));
|
||||
if (ret)
|
||||
return ret;
|
||||
devpriv = dev->private;
|
||||
|
||||
dev->board_name = board->name;
|
||||
|
||||
|
@ -79,8 +79,6 @@ struct pcmda12_private {
|
||||
int simultaneous_xfer_mode;
|
||||
};
|
||||
|
||||
#define devpriv ((struct pcmda12_private *)(dev->private))
|
||||
|
||||
static void zero_chans(struct comedi_device *dev)
|
||||
{ /* sets up an
|
||||
ASIC chip to defaults */
|
||||
@ -97,6 +95,7 @@ static void zero_chans(struct comedi_device *dev)
|
||||
static int ao_winsn(struct comedi_device *dev, struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct pcmda12_private *devpriv = dev->private;
|
||||
int i;
|
||||
int chan = CR_CHAN(insn->chanspec);
|
||||
|
||||
@ -139,6 +138,7 @@ static int ao_winsn(struct comedi_device *dev, struct comedi_subdevice *s,
|
||||
static int ao_rinsn(struct comedi_device *dev, struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct pcmda12_private *devpriv = dev->private;
|
||||
int i;
|
||||
int chan = CR_CHAN(insn->chanspec);
|
||||
|
||||
@ -155,6 +155,7 @@ static int ao_rinsn(struct comedi_device *dev, struct comedi_subdevice *s,
|
||||
static int pcmda12_attach(struct comedi_device *dev,
|
||||
struct comedi_devconfig *it)
|
||||
{
|
||||
struct pcmda12_private *devpriv;
|
||||
struct comedi_subdevice *s;
|
||||
unsigned long iobase;
|
||||
int ret;
|
||||
@ -172,14 +173,10 @@ static int pcmda12_attach(struct comedi_device *dev,
|
||||
|
||||
dev->board_name = dev->driver->driver_name;
|
||||
|
||||
/*
|
||||
* Allocate the private structure area. alloc_private() is a
|
||||
* convenient macro defined in comedidev.h.
|
||||
*/
|
||||
if (alloc_private(dev, sizeof(struct pcmda12_private)) < 0) {
|
||||
printk(KERN_ERR "cannot allocate private data structure\n");
|
||||
return -ENOMEM;
|
||||
}
|
||||
ret = alloc_private(dev, sizeof(*devpriv));
|
||||
if (ret)
|
||||
return ret;
|
||||
devpriv = dev->private;
|
||||
|
||||
devpriv->simultaneous_xfer_mode = it->options[1];
|
||||
|
||||
|
@ -229,11 +229,6 @@ struct pcmmio_private {
|
||||
struct pcmmio_subdev_private *sprivs;
|
||||
};
|
||||
|
||||
/*
|
||||
* most drivers define the following macro to make it easy to
|
||||
* access the private structure.
|
||||
*/
|
||||
#define devpriv ((struct pcmmio_private *)dev->private)
|
||||
#define subpriv ((struct pcmmio_subdev_private *)s->private)
|
||||
|
||||
/* DIO devices are slightly special. Although it is possible to
|
||||
@ -387,6 +382,8 @@ static int pcmmio_dio_insn_config(struct comedi_device *dev,
|
||||
|
||||
static void switch_page(struct comedi_device *dev, int asic, int page)
|
||||
{
|
||||
struct pcmmio_private *devpriv = dev->private;
|
||||
|
||||
if (asic < 0 || asic >= 1)
|
||||
return; /* paranoia */
|
||||
if (page < 0 || page >= NUM_PAGES)
|
||||
@ -403,6 +400,7 @@ static void switch_page(struct comedi_device *dev, int asic, int page)
|
||||
static void init_asics(struct comedi_device *dev)
|
||||
{ /* sets up an
|
||||
ASIC chip to defaults */
|
||||
struct pcmmio_private *devpriv = dev->private;
|
||||
int asic;
|
||||
|
||||
for (asic = 0; asic < 1; ++asic) {
|
||||
@ -440,6 +438,8 @@ static void init_asics(struct comedi_device *dev)
|
||||
#ifdef notused
|
||||
static void lock_port(struct comedi_device *dev, int asic, int port)
|
||||
{
|
||||
struct pcmmio_private *devpriv = dev->private;
|
||||
|
||||
if (asic < 0 || asic >= 1)
|
||||
return; /* paranoia */
|
||||
if (port < 0 || port >= PORTS_PER_ASIC)
|
||||
@ -454,6 +454,8 @@ static void lock_port(struct comedi_device *dev, int asic, int port)
|
||||
|
||||
static void unlock_port(struct comedi_device *dev, int asic, int port)
|
||||
{
|
||||
struct pcmmio_private *devpriv = dev->private;
|
||||
|
||||
if (asic < 0 || asic >= 1)
|
||||
return; /* paranoia */
|
||||
if (port < 0 || port >= PORTS_PER_ASIC)
|
||||
@ -468,6 +470,7 @@ static void unlock_port(struct comedi_device *dev, int asic, int port)
|
||||
static void pcmmio_stop_intr(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s)
|
||||
{
|
||||
struct pcmmio_private *devpriv = dev->private;
|
||||
int nports, firstport, asic, port;
|
||||
|
||||
asic = subpriv->dio.intr.asic;
|
||||
@ -490,6 +493,7 @@ static irqreturn_t interrupt_pcmmio(int irq, void *d)
|
||||
{
|
||||
int asic, got1 = 0;
|
||||
struct comedi_device *dev = (struct comedi_device *)d;
|
||||
struct pcmmio_private *devpriv = dev->private;
|
||||
int i;
|
||||
|
||||
for (asic = 0; asic < MAX_ASICS; ++asic) {
|
||||
@ -649,6 +653,8 @@ static irqreturn_t interrupt_pcmmio(int irq, void *d)
|
||||
static int pcmmio_start_intr(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s)
|
||||
{
|
||||
struct pcmmio_private *devpriv = dev->private;
|
||||
|
||||
if (!subpriv->dio.intr.continuous && subpriv->dio.intr.stop_count == 0) {
|
||||
/* An empty acquisition! */
|
||||
s->async->events |= COMEDI_CB_EOA;
|
||||
@ -976,6 +982,7 @@ static int ao_winsn(struct comedi_device *dev, struct comedi_subdevice *s,
|
||||
|
||||
static int pcmmio_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
{
|
||||
struct pcmmio_private *devpriv;
|
||||
struct comedi_subdevice *s;
|
||||
int sdev_no, chans_left, n_dio_subdevs, n_subdevs, port, asic,
|
||||
thisasic_chanct = 0;
|
||||
@ -998,15 +1005,10 @@ static int pcmmio_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
/*
|
||||
* Allocate the private structure area. alloc_private() is a
|
||||
* convenient macro defined in comedidev.h.
|
||||
*/
|
||||
if (alloc_private(dev, sizeof(struct pcmmio_private)) < 0) {
|
||||
printk(KERN_ERR "comedi%d: cannot allocate private data structure\n",
|
||||
dev->minor);
|
||||
return -ENOMEM;
|
||||
}
|
||||
ret = alloc_private(dev, sizeof(*devpriv));
|
||||
if (ret)
|
||||
return ret;
|
||||
devpriv = dev->private;
|
||||
|
||||
for (asic = 0; asic < MAX_ASICS; ++asic) {
|
||||
devpriv->asics[asic].num = asic;
|
||||
@ -1165,6 +1167,7 @@ static int pcmmio_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
|
||||
static void pcmmio_detach(struct comedi_device *dev)
|
||||
{
|
||||
struct pcmmio_private *devpriv = dev->private;
|
||||
int i;
|
||||
|
||||
if (dev->iobase)
|
||||
|
@ -194,11 +194,6 @@ struct pcmuio_private {
|
||||
struct pcmuio_subdev_private *sprivs;
|
||||
};
|
||||
|
||||
/*
|
||||
* most drivers define the following macro to make it easy to
|
||||
* access the private structure.
|
||||
*/
|
||||
#define devpriv ((struct pcmuio_private *)dev->private)
|
||||
#define subpriv ((struct pcmuio_subdev_private *)s->private)
|
||||
|
||||
/* DIO devices are slightly special. Although it is possible to
|
||||
@ -348,6 +343,7 @@ static int pcmuio_dio_insn_config(struct comedi_device *dev,
|
||||
static void switch_page(struct comedi_device *dev, int asic, int page)
|
||||
{
|
||||
const struct pcmuio_board *board = comedi_board(dev);
|
||||
struct pcmuio_private *devpriv = dev->private;
|
||||
|
||||
if (asic < 0 || asic >= board->num_asics)
|
||||
return; /* paranoia */
|
||||
@ -404,6 +400,7 @@ static void init_asics(struct comedi_device *dev)
|
||||
static void lock_port(struct comedi_device *dev, int asic, int port)
|
||||
{
|
||||
const struct pcmuio_board *board = comedi_board(dev);
|
||||
struct pcmuio_private *devpriv = dev->private;
|
||||
|
||||
if (asic < 0 || asic >= board->num_asics)
|
||||
return; /* paranoia */
|
||||
@ -419,6 +416,7 @@ static void lock_port(struct comedi_device *dev, int asic, int port)
|
||||
static void unlock_port(struct comedi_device *dev, int asic, int port)
|
||||
{
|
||||
const struct pcmuio_board *board = comedi_board(dev);
|
||||
struct pcmuio_private *devpriv = dev->private;
|
||||
|
||||
if (asic < 0 || asic >= board->num_asics)
|
||||
return; /* paranoia */
|
||||
@ -435,6 +433,7 @@ static void pcmuio_stop_intr(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s)
|
||||
{
|
||||
int nports, firstport, asic, port;
|
||||
struct pcmuio_private *devpriv = dev->private;
|
||||
|
||||
asic = subpriv->intr.asic;
|
||||
if (asic < 0)
|
||||
@ -456,6 +455,7 @@ static irqreturn_t interrupt_pcmuio(int irq, void *d)
|
||||
{
|
||||
int asic, got1 = 0;
|
||||
struct comedi_device *dev = (struct comedi_device *)d;
|
||||
struct pcmuio_private *devpriv = dev->private;
|
||||
int i;
|
||||
|
||||
for (asic = 0; asic < MAX_ASICS; ++asic) {
|
||||
@ -607,6 +607,8 @@ static irqreturn_t interrupt_pcmuio(int irq, void *d)
|
||||
static int pcmuio_start_intr(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s)
|
||||
{
|
||||
struct pcmuio_private *devpriv = dev->private;
|
||||
|
||||
if (!subpriv->intr.continuous && subpriv->intr.stop_count == 0) {
|
||||
/* An empty acquisition! */
|
||||
s->async->events |= COMEDI_CB_EOA;
|
||||
@ -748,6 +750,7 @@ pcmuio_cmdtest(struct comedi_device *dev, struct comedi_subdevice *s,
|
||||
static int pcmuio_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
{
|
||||
const struct pcmuio_board *board = comedi_board(dev);
|
||||
struct pcmuio_private *devpriv;
|
||||
struct comedi_subdevice *s;
|
||||
int sdev_no, chans_left, n_subdevs, port, asic, thisasic_chanct = 0;
|
||||
unsigned long iobase;
|
||||
@ -772,15 +775,10 @@ static int pcmuio_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
|
||||
dev->board_name = board->name;
|
||||
|
||||
/*
|
||||
* Allocate the private structure area. alloc_private() is a
|
||||
* convenient macro defined in comedidev.h.
|
||||
*/
|
||||
if (alloc_private(dev, sizeof(struct pcmuio_private)) < 0) {
|
||||
dev_warn(dev->class_dev,
|
||||
"cannot allocate private data structure\n");
|
||||
return -ENOMEM;
|
||||
}
|
||||
ret = alloc_private(dev, sizeof(*devpriv));
|
||||
if (ret)
|
||||
return ret;
|
||||
devpriv = dev->private;
|
||||
|
||||
for (asic = 0; asic < MAX_ASICS; ++asic) {
|
||||
devpriv->asics[asic].num = asic;
|
||||
@ -905,6 +903,7 @@ static int pcmuio_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
static void pcmuio_detach(struct comedi_device *dev)
|
||||
{
|
||||
const struct pcmuio_board *board = comedi_board(dev);
|
||||
struct pcmuio_private *devpriv = dev->private;
|
||||
int i;
|
||||
|
||||
if (dev->iobase)
|
||||
|
@ -1608,12 +1608,9 @@ static int rtd_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
comedi_debug = 1;
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Allocate the private structure area. alloc_private() is a
|
||||
* convenient macro defined in comedidev.h.
|
||||
*/
|
||||
if (alloc_private(dev, sizeof(struct rtdPrivate)) < 0)
|
||||
return -ENOMEM;
|
||||
ret = alloc_private(dev, sizeof(*devpriv));
|
||||
if (ret)
|
||||
return ret;
|
||||
devpriv = dev->private;
|
||||
|
||||
pcidev = rtd_find_pci(dev, it);
|
||||
|
@ -161,8 +161,6 @@ struct rti800_private {
|
||||
int muxgain_bits;
|
||||
};
|
||||
|
||||
#define devpriv ((struct rti800_private *)dev->private)
|
||||
|
||||
#define RTI800_TIMEOUT 100
|
||||
|
||||
static irqreturn_t rti800_interrupt(int irq, void *dev)
|
||||
@ -177,6 +175,7 @@ static int rti800_ai_insn_read(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct rti800_private *devpriv = dev->private;
|
||||
int i, t;
|
||||
int status;
|
||||
int chan = CR_CHAN(insn->chanspec);
|
||||
@ -229,6 +228,7 @@ static int rti800_ao_insn_read(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct rti800_private *devpriv = dev->private;
|
||||
int i;
|
||||
int chan = CR_CHAN(insn->chanspec);
|
||||
|
||||
@ -242,6 +242,7 @@ static int rti800_ao_insn_write(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct rti800_private *devpriv = dev->private;
|
||||
int chan = CR_CHAN(insn->chanspec);
|
||||
int d;
|
||||
int i;
|
||||
@ -303,6 +304,7 @@ static int rti800_do_insn_bits(struct comedi_device *dev,
|
||||
static int rti800_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
{
|
||||
const struct rti800_board *board = comedi_board(dev);
|
||||
struct rti800_private *devpriv;
|
||||
unsigned int irq;
|
||||
unsigned long iobase;
|
||||
int ret;
|
||||
@ -347,9 +349,10 @@ static int rti800_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = alloc_private(dev, sizeof(struct rti800_private));
|
||||
if (ret < 0)
|
||||
ret = alloc_private(dev, sizeof(*devpriv));
|
||||
if (ret)
|
||||
return ret;
|
||||
devpriv = dev->private;
|
||||
|
||||
devpriv->adc_mux = it->options[2];
|
||||
devpriv->adc_range = it->options[3];
|
||||
|
@ -55,12 +55,11 @@ struct rti802_private {
|
||||
unsigned int ao_readback[8];
|
||||
};
|
||||
|
||||
#define devpriv ((struct rti802_private *)dev->private)
|
||||
|
||||
static int rti802_ao_insn_read(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct rti802_private *devpriv = dev->private;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < insn->n; i++)
|
||||
@ -73,6 +72,7 @@ static int rti802_ao_insn_write(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct rti802_private *devpriv = dev->private;
|
||||
int i, d;
|
||||
int chan = CR_CHAN(insn->chanspec);
|
||||
|
||||
@ -89,6 +89,7 @@ static int rti802_ao_insn_write(struct comedi_device *dev,
|
||||
|
||||
static int rti802_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
{
|
||||
struct rti802_private *devpriv;
|
||||
struct comedi_subdevice *s;
|
||||
int i;
|
||||
unsigned long iobase;
|
||||
@ -104,8 +105,10 @@ static int rti802_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
|
||||
dev->board_name = "rti802";
|
||||
|
||||
if (alloc_private(dev, sizeof(struct rti802_private)))
|
||||
return -ENOMEM;
|
||||
ret = alloc_private(dev, sizeof(*devpriv));
|
||||
if (ret)
|
||||
return ret;
|
||||
devpriv = dev->private;
|
||||
|
||||
ret = comedi_alloc_subdevices(dev, 1);
|
||||
if (ret)
|
||||
|
@ -64,12 +64,6 @@ struct serial2002_private {
|
||||
struct serial2002_range_table_t in_range[32], out_range[32];
|
||||
};
|
||||
|
||||
/*
|
||||
* most drivers define the following macro to make it easy to
|
||||
* access the private structure.
|
||||
*/
|
||||
#define devpriv ((struct serial2002_private *)dev->private)
|
||||
|
||||
struct serial_data {
|
||||
enum { is_invalid, is_digital, is_channel } kind;
|
||||
int index;
|
||||
@ -344,6 +338,7 @@ static void serial_write(struct file *f, struct serial_data data)
|
||||
|
||||
static int serial_2002_open(struct comedi_device *dev)
|
||||
{
|
||||
struct serial2002_private *devpriv = dev->private;
|
||||
int result;
|
||||
char port[20];
|
||||
|
||||
@ -651,6 +646,8 @@ err_alloc_configs:
|
||||
|
||||
static void serial_2002_close(struct comedi_device *dev)
|
||||
{
|
||||
struct serial2002_private *devpriv = dev->private;
|
||||
|
||||
if (!IS_ERR(devpriv->tty) && devpriv->tty)
|
||||
filp_close(devpriv->tty, NULL);
|
||||
}
|
||||
@ -659,6 +656,7 @@ static int serial2002_di_rinsn(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct serial2002_private *devpriv = dev->private;
|
||||
int n;
|
||||
int chan;
|
||||
|
||||
@ -681,6 +679,7 @@ static int serial2002_do_winsn(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct serial2002_private *devpriv = dev->private;
|
||||
int n;
|
||||
int chan;
|
||||
|
||||
@ -700,6 +699,7 @@ static int serial2002_ai_rinsn(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct serial2002_private *devpriv = dev->private;
|
||||
int n;
|
||||
int chan;
|
||||
|
||||
@ -722,6 +722,7 @@ static int serial2002_ao_winsn(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct serial2002_private *devpriv = dev->private;
|
||||
int n;
|
||||
int chan;
|
||||
|
||||
@ -742,6 +743,7 @@ static int serial2002_ao_rinsn(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct serial2002_private *devpriv = dev->private;
|
||||
int n;
|
||||
int chan = CR_CHAN(insn->chanspec);
|
||||
|
||||
@ -755,6 +757,7 @@ static int serial2002_ei_rinsn(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct serial2002_private *devpriv = dev->private;
|
||||
int n;
|
||||
int chan;
|
||||
|
||||
@ -776,13 +779,18 @@ static int serial2002_ei_rinsn(struct comedi_device *dev,
|
||||
static int serial2002_attach(struct comedi_device *dev,
|
||||
struct comedi_devconfig *it)
|
||||
{
|
||||
struct serial2002_private *devpriv;
|
||||
struct comedi_subdevice *s;
|
||||
int ret;
|
||||
|
||||
dev_dbg(dev->class_dev, "serial2002: attach\n");
|
||||
dev->board_name = dev->driver->driver_name;
|
||||
if (alloc_private(dev, sizeof(struct serial2002_private)) < 0)
|
||||
return -ENOMEM;
|
||||
|
||||
ret = alloc_private(dev, sizeof(*devpriv));
|
||||
if (ret)
|
||||
return ret;
|
||||
devpriv = dev->private;
|
||||
|
||||
dev->open = serial_2002_open;
|
||||
dev->close = serial_2002_close;
|
||||
devpriv->port = it->options[0];
|
||||
|
@ -145,12 +145,6 @@ struct skel_private {
|
||||
unsigned int ao_readback[2];
|
||||
};
|
||||
|
||||
/*
|
||||
* most drivers define the following macro to make it easy to
|
||||
* access the private structure.
|
||||
*/
|
||||
#define devpriv ((struct skel_private *)dev->private)
|
||||
|
||||
/*
|
||||
* The struct comedi_driver structure tells the Comedi core module
|
||||
* which functions to call to configure/deconfigure (attach/detach)
|
||||
@ -211,6 +205,7 @@ static int skel_ns_to_timer(unsigned int *ns, int round);
|
||||
*/
|
||||
static int skel_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
{
|
||||
struct skel_private *devpriv;
|
||||
struct comedi_subdevice *s;
|
||||
int ret;
|
||||
|
||||
@ -229,12 +224,11 @@ static int skel_attach(struct comedi_device *dev, struct comedi_devconfig *it)
|
||||
*/
|
||||
dev->board_name = thisboard->name;
|
||||
|
||||
/*
|
||||
* Allocate the private structure area. alloc_private() is a
|
||||
* convenient macro defined in comedidev.h.
|
||||
*/
|
||||
if (alloc_private(dev, sizeof(struct skel_private)) < 0)
|
||||
return -ENOMEM;
|
||||
/* Allocate the private data */
|
||||
ret = alloc_private(dev, sizeof(*devpriv));
|
||||
if (ret)
|
||||
return ret;
|
||||
devpriv = dev->private;
|
||||
|
||||
ret = comedi_alloc_subdevices(dev, 3);
|
||||
if (ret)
|
||||
@ -504,6 +498,7 @@ static int skel_ns_to_timer(unsigned int *ns, int round)
|
||||
static int skel_ao_winsn(struct comedi_device *dev, struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct skel_private *devpriv = dev->private;
|
||||
int i;
|
||||
int chan = CR_CHAN(insn->chanspec);
|
||||
|
||||
@ -525,6 +520,7 @@ static int skel_ao_winsn(struct comedi_device *dev, struct comedi_subdevice *s,
|
||||
static int skel_ao_rinsn(struct comedi_device *dev, struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct skel_private *devpriv = dev->private;
|
||||
int i;
|
||||
int chan = CR_CHAN(insn->chanspec);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user