diff options
Diffstat (limited to 'drivers/staging/comedi/drivers/unioxx5.c')
-rw-r--r-- | drivers/staging/comedi/drivers/unioxx5.c | 86 |
1 files changed, 45 insertions, 41 deletions
diff --git a/drivers/staging/comedi/drivers/unioxx5.c b/drivers/staging/comedi/drivers/unioxx5.c index dd3b1119319..96bb15ccccb 100644 --- a/drivers/staging/comedi/drivers/unioxx5.c +++ b/drivers/staging/comedi/drivers/unioxx5.c @@ -80,38 +80,38 @@ struct unioxx5_subd_priv { unsigned char usp_prev_cn_val[3]; /* previous channel value */ }; -static int unioxx5_attach(struct comedi_device * dev, struct comedi_devconfig * it); -static int unioxx5_subdev_write(struct comedi_device * dev, struct comedi_subdevice * subdev, - struct comedi_insn * insn, unsigned int * data); -static int unioxx5_subdev_read(struct comedi_device * dev, struct comedi_subdevice * subdev, - struct comedi_insn * insn, unsigned int * data); -static int unioxx5_insn_config(struct comedi_device * dev, struct comedi_subdevice * subdev, - struct comedi_insn * insn, unsigned int * data); -static int unioxx5_detach(struct comedi_device * dev); -static int __unioxx5_subdev_init(struct comedi_subdevice * subdev, int subdev_iobase, +static int unioxx5_attach(struct comedi_device *dev, struct comedi_devconfig *it); +static int unioxx5_subdev_write(struct comedi_device *dev, struct comedi_subdevice *subdev, + struct comedi_insn *insn, unsigned int *data); +static int unioxx5_subdev_read(struct comedi_device *dev, struct comedi_subdevice *subdev, + struct comedi_insn *insn, unsigned int *data); +static int unioxx5_insn_config(struct comedi_device *dev, struct comedi_subdevice *subdev, + struct comedi_insn *insn, unsigned int *data); +static int unioxx5_detach(struct comedi_device *dev); +static int __unioxx5_subdev_init(struct comedi_subdevice *subdev, int subdev_iobase, int minor); -static int __unioxx5_digital_write(struct unioxx5_subd_priv * usp, unsigned int * data, +static int __unioxx5_digital_write(struct unioxx5_subd_priv *usp, unsigned int *data, int channel, int minor); -static int __unioxx5_digital_read(struct unioxx5_subd_priv * usp, unsigned int * data, +static int __unioxx5_digital_read(struct unioxx5_subd_priv *usp, unsigned int *data, int channel, int minor); -//static void __unioxx5_digital_config(struct unioxx5_subd_priv* usp, int mode); -static int __unioxx5_analog_write(struct unioxx5_subd_priv * usp, unsigned int * data, +/* static void __unioxx5_digital_config(struct unioxx5_subd_priv* usp, int mode); */ +static int __unioxx5_analog_write(struct unioxx5_subd_priv *usp, unsigned int *data, int channel, int minor); -static int __unioxx5_analog_read(struct unioxx5_subd_priv * usp, unsigned int * data, +static int __unioxx5_analog_read(struct unioxx5_subd_priv *usp, unsigned int *data, int channel, int minor); static int __unioxx5_define_chan_offset(int chan_num); -static void __unioxx5_analog_config(struct unioxx5_subd_priv * usp, int channel); +static void __unioxx5_analog_config(struct unioxx5_subd_priv *usp, int channel); static struct comedi_driver unioxx5_driver = { - driver_name:DRIVER_NAME, - module:THIS_MODULE, - attach:unioxx5_attach, - detach:unioxx5_detach + .driver_name = DRIVER_NAME, + .module = THIS_MODULE, + .attach = unioxx5_attach, + .detach = unioxx5_detach }; COMEDI_INITCLEANUP(unioxx5_driver); -static int unioxx5_attach(struct comedi_device * dev, struct comedi_devconfig * it) +static int unioxx5_attach(struct comedi_device *dev, struct comedi_devconfig *it) { int iobase, i, n_subd; int id, num, ba; @@ -156,8 +156,8 @@ static int unioxx5_attach(struct comedi_device * dev, struct comedi_devconfig * return 0; } -static int unioxx5_subdev_read(struct comedi_device * dev, struct comedi_subdevice * subdev, - struct comedi_insn * insn, unsigned int * data) +static int unioxx5_subdev_read(struct comedi_device *dev, struct comedi_subdevice *subdev, + struct comedi_insn *insn, unsigned int *data) { struct unioxx5_subd_priv *usp = subdev->private; int channel, type; @@ -176,8 +176,8 @@ static int unioxx5_subdev_read(struct comedi_device * dev, struct comedi_subdevi return 1; } -static int unioxx5_subdev_write(struct comedi_device * dev, struct comedi_subdevice * subdev, - struct comedi_insn * insn, unsigned int * data) +static int unioxx5_subdev_write(struct comedi_device *dev, struct comedi_subdevice *subdev, + struct comedi_insn *insn, unsigned int *data) { struct unioxx5_subd_priv *usp = subdev->private; int channel, type; @@ -197,8 +197,8 @@ static int unioxx5_subdev_write(struct comedi_device * dev, struct comedi_subdev } /* for digital modules only */ -static int unioxx5_insn_config(struct comedi_device * dev, struct comedi_subdevice * subdev, - struct comedi_insn * insn, unsigned int * data) +static int unioxx5_insn_config(struct comedi_device *dev, struct comedi_subdevice *subdev, + struct comedi_insn *insn, unsigned int *data) { int channel_offset, flags, channel = CR_CHAN(insn->chanspec), type; struct unioxx5_subd_priv *usp = subdev->private; @@ -213,7 +213,8 @@ static int unioxx5_insn_config(struct comedi_device * dev, struct comedi_subdevi return -1; } - if ((channel_offset = __unioxx5_define_chan_offset(channel)) < 0) { + channel_offset = __unioxx5_define_chan_offset(channel); + if (channel_offset < 0) { printk(KERN_ERR "comedi%d: undefined channel %d. channel range is 0 .. 23\n", dev->minor, channel); @@ -247,7 +248,7 @@ static int unioxx5_insn_config(struct comedi_device * dev, struct comedi_subdevi return 0; } -static int unioxx5_detach(struct comedi_device * dev) +static int unioxx5_detach(struct comedi_device *dev) { int i; struct comedi_subdevice *subdev; @@ -264,7 +265,7 @@ static int unioxx5_detach(struct comedi_device * dev) } /* initializing subdevice with given address */ -static int __unioxx5_subdev_init(struct comedi_subdevice * subdev, int subdev_iobase, +static int __unioxx5_subdev_init(struct comedi_subdevice *subdev, int subdev_iobase, int minor) { struct unioxx5_subd_priv *usp; @@ -275,8 +276,9 @@ static int __unioxx5_subdev_init(struct comedi_subdevice * subdev, int subdev_io return -EIO; } - if ((usp = (struct unioxx5_subd_priv *) kzalloc(sizeof(*usp), - GFP_KERNEL)) == NULL) { + usp = (struct unioxx5_subd_priv *) kzalloc(sizeof(*usp), GFP_KERNEL); + + if (usp == NULL) { printk(KERN_ERR "comedi%d: erorr! --> out of memory!\n", minor); return -1; } @@ -309,7 +311,7 @@ static int __unioxx5_subdev_init(struct comedi_subdevice * subdev, int subdev_io usp->usp_module_type[i] = inb(subdev_iobase + 6); printk(" [%d] 0x%02x |", i, usp->usp_module_type[i]); - comedi_udelay(1); + udelay(1); } printk("\n"); @@ -330,13 +332,14 @@ static int __unioxx5_subdev_init(struct comedi_subdevice * subdev, int subdev_io return 0; } -static int __unioxx5_digital_write(struct unioxx5_subd_priv * usp, unsigned int * data, +static int __unioxx5_digital_write(struct unioxx5_subd_priv *usp, unsigned int *data, int channel, int minor) { int channel_offset, val; int mask = 1 << (channel & 0x07); - if ((channel_offset = __unioxx5_define_chan_offset(channel)) < 0) { + channel_offset = __unioxx5_define_chan_offset(channel); + if (channel_offset < 0) { printk(KERN_ERR "comedi%d: undefined channel %d. channel range is 0 .. 23\n", minor, channel); @@ -357,12 +360,13 @@ static int __unioxx5_digital_write(struct unioxx5_subd_priv * usp, unsigned int } /* function for digital reading */ -static int __unioxx5_digital_read(struct unioxx5_subd_priv * usp, unsigned int * data, +static int __unioxx5_digital_read(struct unioxx5_subd_priv *usp, unsigned int *data, int channel, int minor) { int channel_offset, mask = 1 << (channel & 0x07); - if ((channel_offset = __unioxx5_define_chan_offset(channel)) < 0) { + channel_offset = __unioxx5_define_chan_offset(channel); + if (channel_offset < 0) { printk(KERN_ERR "comedi%d: undefined channel %d. channel range is 0 .. 23\n", minor, channel); @@ -380,7 +384,7 @@ static int __unioxx5_digital_read(struct unioxx5_subd_priv * usp, unsigned int * } #if 0 /* not used? */ -static void __unioxx5_digital_config(struct unioxx5_subd_priv * usp, int mode) +static void __unioxx5_digital_config(struct unioxx5_subd_priv *usp, int mode) { int i, mask; @@ -396,7 +400,7 @@ static void __unioxx5_digital_config(struct unioxx5_subd_priv * usp, int mode) } #endif -static int __unioxx5_analog_write(struct unioxx5_subd_priv * usp, unsigned int * data, +static int __unioxx5_analog_write(struct unioxx5_subd_priv *usp, unsigned int *data, int channel, int minor) { int module, i; @@ -418,7 +422,7 @@ static int __unioxx5_analog_write(struct unioxx5_subd_priv * usp, unsigned int * /* saving major byte */ usp->usp_extra_data[module][i] = (unsigned char)((*data & 0xFF00) >> 8); - //while(!((inb(usp->usp_iobase + 0)) & TxBE)); + /* while(!((inb(usp->usp_iobase + 0)) & TxBE)); */ outb(module + 1, usp->usp_iobase + 5); /* sending module number to card(1 .. 12) */ outb('W', usp->usp_iobase + 6); /* sends (W)rite command to module */ @@ -431,7 +435,7 @@ static int __unioxx5_analog_write(struct unioxx5_subd_priv * usp, unsigned int * return 1; } -static int __unioxx5_analog_read(struct unioxx5_subd_priv * usp, unsigned int * data, +static int __unioxx5_analog_read(struct unioxx5_subd_priv *usp, unsigned int *data, int channel, int minor) { int module_no, read_ch; @@ -471,7 +475,7 @@ static int __unioxx5_analog_read(struct unioxx5_subd_priv * usp, unsigned int * } /* configure channels for analog i/o (even to output, odd to input) */ -static void __unioxx5_analog_config(struct unioxx5_subd_priv * usp, int channel) +static void __unioxx5_analog_config(struct unioxx5_subd_priv *usp, int channel) { int chan_a, chan_b, conf, channel_offset; |