#define CR_CW 0x80
struct subdev_8255_private {
- unsigned long cb_arg;
- int (*cb_func) (int, int, int, unsigned long);
+ unsigned long iobase;
+ int (*io) (int, int, int, unsigned long);
int have_irq;
};
struct subdev_8255_private *spriv = s->private;
short d;
- d = spriv->cb_func(0, _8255_DATA, 0, spriv->cb_arg);
- d |= (spriv->cb_func(0, _8255_DATA + 1, 0, spriv->cb_arg) << 8);
+ d = spriv->io(0, _8255_DATA, 0, spriv->iobase);
+ d |= (spriv->io(0, _8255_DATA + 1, 0, spriv->iobase) << 8);
comedi_buf_put(s->async, d);
s->async->events |= COMEDI_CB_EOS;
s->state |= (data[0] & data[1]);
if (data[0] & 0xff)
- spriv->cb_func(1, _8255_DATA, s->state & 0xff,
- spriv->cb_arg);
+ spriv->io(1, _8255_DATA, s->state & 0xff,
+ spriv->iobase);
if (data[0] & 0xff00)
- spriv->cb_func(1, _8255_DATA + 1,
- (s->state >> 8) & 0xff, spriv->cb_arg);
+ spriv->io(1, _8255_DATA + 1,
+ (s->state >> 8) & 0xff, spriv->iobase);
if (data[0] & 0xff0000)
- spriv->cb_func(1, _8255_DATA + 2,
- (s->state >> 16) & 0xff, spriv->cb_arg);
+ spriv->io(1, _8255_DATA + 2,
+ (s->state >> 16) & 0xff, spriv->iobase);
}
- data[1] = spriv->cb_func(0, _8255_DATA, 0, spriv->cb_arg);
- data[1] |= (spriv->cb_func(0, _8255_DATA + 1, 0, spriv->cb_arg) << 8);
- data[1] |= (spriv->cb_func(0, _8255_DATA + 2, 0, spriv->cb_arg) << 16);
+ data[1] = spriv->io(0, _8255_DATA, 0, spriv->iobase);
+ data[1] |= (spriv->io(0, _8255_DATA + 1, 0, spriv->iobase) << 8);
+ data[1] |= (spriv->io(0, _8255_DATA + 2, 0, spriv->iobase) << 16);
return 2;
}
config |= CR_C_LO_IO;
if (!(s->io_bits & 0xf00000))
config |= CR_C_HI_IO;
- spriv->cb_func(1, _8255_CR, config, spriv->cb_arg);
+ spriv->io(1, _8255_CR, config, spriv->iobase);
}
static int subdev_8255_insn_config(struct comedi_device *dev,
return -ENOMEM;
s->private = spriv;
- spriv->cb_arg = arg;
+ spriv->iobase = arg;
if (cb == NULL)
- spriv->cb_func = subdev_8255_cb;
+ spriv->io = subdev_8255_cb;
else
- spriv->cb_func = cb;
+ spriv->io = cb;
s->insn_bits = subdev_8255_insn;
s->insn_config = subdev_8255_insn_config;
s = dev->subdevices + i;
if (s->type != COMEDI_SUBD_UNUSED) {
spriv = s->private;
- release_region(spriv->cb_arg, _8255_SIZE);
+ release_region(spriv->iobase, _8255_SIZE);
}
subdev_8255_cleanup(dev, s);
}