|
@@ -79,19 +79,6 @@ I/O port base address can be found in the output of 'lspci -v'.
|
|
|
#include "comedi_fc.h"
|
|
|
#include "8255.h"
|
|
|
|
|
|
-#define _8255_SIZE 4
|
|
|
-
|
|
|
-#define _8255_DATA 0
|
|
|
-#define _8255_CR 3
|
|
|
-
|
|
|
-#define CR_C_LO_IO 0x01
|
|
|
-#define CR_B_IO 0x02
|
|
|
-#define CR_B_MODE 0x04
|
|
|
-#define CR_C_HI_IO 0x08
|
|
|
-#define CR_A_IO 0x10
|
|
|
-#define CR_A_MODE(a) ((a)<<5)
|
|
|
-#define CR_CW 0x80
|
|
|
-
|
|
|
struct subdev_8255_private {
|
|
|
unsigned long regbase;
|
|
|
int (*io)(struct comedi_device *, int, int, int, unsigned long);
|
|
@@ -130,18 +117,19 @@ static int subdev_8255_insn(struct comedi_device *dev,
|
|
|
mask = comedi_dio_update_state(s, data);
|
|
|
if (mask) {
|
|
|
if (mask & 0xff)
|
|
|
- spriv->io(dev, 1, _8255_DATA, s->state & 0xff, regbase);
|
|
|
+ spriv->io(dev, 1, I8255_DATA_A_REG,
|
|
|
+ s->state & 0xff, regbase);
|
|
|
if (mask & 0xff00)
|
|
|
- spriv->io(dev, 1, _8255_DATA + 1,
|
|
|
+ spriv->io(dev, 1, I8255_DATA_B_REG,
|
|
|
(s->state >> 8) & 0xff, regbase);
|
|
|
if (mask & 0xff0000)
|
|
|
- spriv->io(dev, 1, _8255_DATA + 2,
|
|
|
+ spriv->io(dev, 1, I8255_DATA_C_REG,
|
|
|
(s->state >> 16) & 0xff, regbase);
|
|
|
}
|
|
|
|
|
|
- v = spriv->io(dev, 0, _8255_DATA, 0, regbase);
|
|
|
- v |= (spriv->io(dev, 0, _8255_DATA + 1, 0, regbase) << 8);
|
|
|
- v |= (spriv->io(dev, 0, _8255_DATA + 2, 0, regbase) << 16);
|
|
|
+ v = spriv->io(dev, 0, I8255_DATA_A_REG, 0, regbase);
|
|
|
+ v |= (spriv->io(dev, 0, I8255_DATA_B_REG, 0, regbase) << 8);
|
|
|
+ v |= (spriv->io(dev, 0, I8255_DATA_C_REG, 0, regbase) << 16);
|
|
|
|
|
|
data[1] = v;
|
|
|
|
|
@@ -155,18 +143,18 @@ static void subdev_8255_do_config(struct comedi_device *dev,
|
|
|
unsigned long regbase = spriv->regbase;
|
|
|
int config;
|
|
|
|
|
|
- config = CR_CW;
|
|
|
+ config = I8255_CTRL_CW;
|
|
|
/* 1 in io_bits indicates output, 1 in config indicates input */
|
|
|
if (!(s->io_bits & 0x0000ff))
|
|
|
- config |= CR_A_IO;
|
|
|
+ config |= I8255_CTRL_A_IO;
|
|
|
if (!(s->io_bits & 0x00ff00))
|
|
|
- config |= CR_B_IO;
|
|
|
+ config |= I8255_CTRL_B_IO;
|
|
|
if (!(s->io_bits & 0x0f0000))
|
|
|
- config |= CR_C_LO_IO;
|
|
|
+ config |= I8255_CTRL_C_LO_IO;
|
|
|
if (!(s->io_bits & 0xf00000))
|
|
|
- config |= CR_C_HI_IO;
|
|
|
+ config |= I8255_CTRL_C_HI_IO;
|
|
|
|
|
|
- spriv->io(dev, 1, _8255_CR, config, regbase);
|
|
|
+ spriv->io(dev, 1, I8255_CTRL_REG, config, regbase);
|
|
|
}
|
|
|
|
|
|
static int subdev_8255_insn_config(struct comedi_device *dev,
|
|
@@ -286,7 +274,7 @@ static int dev_8255_attach(struct comedi_device *dev,
|
|
|
* comedi_config, the 'iobase' is the actual I/O port
|
|
|
* base address of the chip.
|
|
|
*/
|
|
|
- ret = __comedi_request_region(dev, iobase, _8255_SIZE);
|
|
|
+ ret = __comedi_request_region(dev, iobase, I8255_SIZE);
|
|
|
if (ret) {
|
|
|
s->type = COMEDI_SUBD_UNUSED;
|
|
|
} else {
|
|
@@ -309,7 +297,7 @@ static void dev_8255_detach(struct comedi_device *dev)
|
|
|
s = &dev->subdevices[i];
|
|
|
if (s->type != COMEDI_SUBD_UNUSED) {
|
|
|
spriv = s->private;
|
|
|
- release_region(spriv->regbase, _8255_SIZE);
|
|
|
+ release_region(spriv->regbase, I8255_SIZE);
|
|
|
}
|
|
|
}
|
|
|
}
|