Staging: comedi: simply read and write functions in adl_pci8164
There are several read and write functions in adl_pci8164 that are essentially the same thing. They were created with a cut and paste. Change them to use a common function. Signed-off-by: Bill Pemberton <wfp5p@virginia.edu> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
Родитель
8605b3aa0c
Коммит
ba7834b3f3
|
@ -208,8 +208,16 @@ static int adl_pci8164_detach(struct comedi_device *dev)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int adl_pci8164_insn_read_msts(struct comedi_device *dev, struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
/*
|
||||
all the read commands are the same except for the addition a constant
|
||||
* const to the data for inw()
|
||||
*/
|
||||
static void adl_pci8164_insn_read(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn,
|
||||
unsigned int *data,
|
||||
char *action,
|
||||
unsigned short offset)
|
||||
{
|
||||
int axis, axis_reg;
|
||||
char *axisname;
|
||||
|
@ -238,127 +246,51 @@ static int adl_pci8164_insn_read_msts(struct comedi_device *dev, struct comedi_s
|
|||
axisname = "X";
|
||||
}
|
||||
|
||||
data[0] = inw(dev->iobase + axis_reg + PCI8164_MSTS);
|
||||
printk("comedi: pci8164 MSTS read -> %04X:%04X on axis %s\n", data[0],
|
||||
data[0] = inw(dev->iobase + axis_reg + offset);
|
||||
printk("comedi: pci8164 %s read -> %04X:%04X on axis %s\n", action, data[0],
|
||||
data[1], axisname);
|
||||
}
|
||||
|
||||
static int adl_pci8164_insn_read_msts(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn,
|
||||
unsigned int *data)
|
||||
{
|
||||
adl_pci8164_insn_read(dev, s, insn, data, "MSTS", PCI8164_MSTS);
|
||||
return 2;
|
||||
}
|
||||
|
||||
static int adl_pci8164_insn_read_ssts(struct comedi_device *dev, struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
int axis, axis_reg;
|
||||
char *axisname;
|
||||
|
||||
axis = CR_CHAN(insn->chanspec);
|
||||
|
||||
switch (axis) {
|
||||
case 0:
|
||||
axis_reg = PCI8164_AXIS_X;
|
||||
axisname = "X";
|
||||
break;
|
||||
case 1:
|
||||
axis_reg = PCI8164_AXIS_Y;
|
||||
axisname = "Y";
|
||||
break;
|
||||
case 2:
|
||||
axis_reg = PCI8164_AXIS_Z;
|
||||
axisname = "Z";
|
||||
break;
|
||||
case 3:
|
||||
axis_reg = PCI8164_AXIS_U;
|
||||
axisname = "U";
|
||||
break;
|
||||
default:
|
||||
axis_reg = PCI8164_AXIS_X;
|
||||
axisname = "X";
|
||||
}
|
||||
|
||||
data[0] = inw(dev->iobase + axis_reg + PCI8164_SSTS);
|
||||
printk("comedi: pci8164 SSTS read -> %04X:%04X on axis %s\n", data[0],
|
||||
data[1], axisname);
|
||||
|
||||
adl_pci8164_insn_read(dev, s, insn, data, "SSTS", PCI8164_SSTS);
|
||||
return 2;
|
||||
}
|
||||
|
||||
static int adl_pci8164_insn_read_buf0(struct comedi_device *dev, struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
int axis, axis_reg;
|
||||
char *axisname;
|
||||
|
||||
axis = CR_CHAN(insn->chanspec);
|
||||
|
||||
switch (axis) {
|
||||
case 0:
|
||||
axis_reg = PCI8164_AXIS_X;
|
||||
axisname = "X";
|
||||
break;
|
||||
case 1:
|
||||
axis_reg = PCI8164_AXIS_Y;
|
||||
axisname = "Y";
|
||||
break;
|
||||
case 2:
|
||||
axis_reg = PCI8164_AXIS_Z;
|
||||
axisname = "Z";
|
||||
break;
|
||||
case 3:
|
||||
axis_reg = PCI8164_AXIS_U;
|
||||
axisname = "U";
|
||||
break;
|
||||
default:
|
||||
axis_reg = PCI8164_AXIS_X;
|
||||
axisname = "X";
|
||||
}
|
||||
|
||||
data[0] = inw(dev->iobase + axis_reg + PCI8164_BUF0);
|
||||
printk("comedi: pci8164 BUF0 read -> %04X:%04X on axis %s\n", data[0],
|
||||
data[1], axisname);
|
||||
|
||||
adl_pci8164_insn_read(dev, s, insn, data, "BUF0", PCI8164_BUF0);
|
||||
return 2;
|
||||
}
|
||||
|
||||
static int adl_pci8164_insn_read_buf1(struct comedi_device *dev, struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
int axis, axis_reg;
|
||||
|
||||
char *axisname;
|
||||
|
||||
axis = CR_CHAN(insn->chanspec);
|
||||
|
||||
switch (axis) {
|
||||
case 0:
|
||||
axis_reg = PCI8164_AXIS_X;
|
||||
axisname = "X";
|
||||
break;
|
||||
case 1:
|
||||
axis_reg = PCI8164_AXIS_Y;
|
||||
axisname = "Y";
|
||||
break;
|
||||
case 2:
|
||||
axis_reg = PCI8164_AXIS_Z;
|
||||
axisname = "Z";
|
||||
break;
|
||||
case 3:
|
||||
axis_reg = PCI8164_AXIS_U;
|
||||
axisname = "U";
|
||||
break;
|
||||
default:
|
||||
axis_reg = PCI8164_AXIS_X;
|
||||
axisname = "X";
|
||||
}
|
||||
|
||||
data[0] = inw(dev->iobase + axis_reg + PCI8164_BUF1);
|
||||
printk("comedi: pci8164 BUF1 read -> %04X:%04X on axis %s\n", data[0],
|
||||
data[1], axisname);
|
||||
|
||||
adl_pci8164_insn_read(dev, s, insn, data, "BUF1", PCI8164_BUF1);
|
||||
return 2;
|
||||
}
|
||||
|
||||
static int adl_pci8164_insn_write_cmd(struct comedi_device *dev, struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
/*
|
||||
all the write commands are the same except for the addition a constant
|
||||
* const to the data for outw()
|
||||
*/
|
||||
static void adl_pci8164_insn_out(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn,
|
||||
unsigned int *data,
|
||||
char *action,
|
||||
unsigned short offset)
|
||||
{
|
||||
unsigned int axis, axis_reg;
|
||||
|
||||
|
@ -388,124 +320,39 @@ static int adl_pci8164_insn_write_cmd(struct comedi_device *dev, struct comedi_s
|
|||
axisname = "X";
|
||||
}
|
||||
|
||||
outw(data[0], dev->iobase + axis_reg + PCI8164_CMD);
|
||||
printk("comedi: pci8164 CMD write -> %04X:%04X on axis %s\n", data[0],
|
||||
data[1], axisname);
|
||||
outw(data[0], dev->iobase + axis_reg + offset);
|
||||
|
||||
printk("comedi: pci8164 %s write -> %04X:%04X on axis %s\n", action,
|
||||
data[0], data[1], axisname);
|
||||
|
||||
}
|
||||
|
||||
|
||||
static int adl_pci8164_insn_write_cmd(struct comedi_device *dev, struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
adl_pci8164_insn_out(dev, s, insn, data, "CMD", PCI8164_CMD);
|
||||
return 2;
|
||||
}
|
||||
|
||||
static int adl_pci8164_insn_write_otp(struct comedi_device *dev, struct comedi_subdevice *s,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
int axis, axis_reg;
|
||||
|
||||
char *axisname;
|
||||
|
||||
axis = CR_CHAN(insn->chanspec);
|
||||
|
||||
switch (axis) {
|
||||
case 0:
|
||||
axis_reg = PCI8164_AXIS_X;
|
||||
axisname = "X";
|
||||
break;
|
||||
case 1:
|
||||
axis_reg = PCI8164_AXIS_Y;
|
||||
axisname = "Y";
|
||||
break;
|
||||
case 2:
|
||||
axis_reg = PCI8164_AXIS_Z;
|
||||
axisname = "Z";
|
||||
break;
|
||||
case 3:
|
||||
axis_reg = PCI8164_AXIS_U;
|
||||
axisname = "U";
|
||||
break;
|
||||
default:
|
||||
axis_reg = PCI8164_AXIS_X;
|
||||
axisname = "X";
|
||||
}
|
||||
|
||||
outw(data[0], dev->iobase + axis_reg + PCI8164_OTP);
|
||||
printk("comedi: pci8164 OTP write -> %04X:%04X on axis %s\n", data[0],
|
||||
data[1], axisname);
|
||||
|
||||
adl_pci8164_insn_out(dev, s, insn, data, "OTP", PCI8164_OTP);
|
||||
return 2;
|
||||
}
|
||||
|
||||
static int adl_pci8164_insn_write_buf0(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s, struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
int axis, axis_reg;
|
||||
|
||||
char *axisname;
|
||||
|
||||
axis = CR_CHAN(insn->chanspec);
|
||||
|
||||
switch (axis) {
|
||||
case 0:
|
||||
axis_reg = PCI8164_AXIS_X;
|
||||
axisname = "X";
|
||||
break;
|
||||
case 1:
|
||||
axis_reg = PCI8164_AXIS_Y;
|
||||
axisname = "Y";
|
||||
break;
|
||||
case 2:
|
||||
axis_reg = PCI8164_AXIS_Z;
|
||||
axisname = "Z";
|
||||
break;
|
||||
case 3:
|
||||
axis_reg = PCI8164_AXIS_U;
|
||||
axisname = "U";
|
||||
break;
|
||||
default:
|
||||
axis_reg = PCI8164_AXIS_X;
|
||||
axisname = "X";
|
||||
}
|
||||
|
||||
outw(data[0], dev->iobase + axis_reg + PCI8164_BUF0);
|
||||
printk("comedi: pci8164 BUF0 write -> %04X:%04X on axis %s\n", data[0],
|
||||
data[1], axisname);
|
||||
|
||||
adl_pci8164_insn_out(dev, s, insn, data, "BUF0", PCI8164_BUF0);
|
||||
return 2;
|
||||
}
|
||||
|
||||
static int adl_pci8164_insn_write_buf1(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s, struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
int axis, axis_reg;
|
||||
|
||||
char *axisname;
|
||||
|
||||
axis = CR_CHAN(insn->chanspec);
|
||||
|
||||
switch (axis) {
|
||||
case 0:
|
||||
axis_reg = PCI8164_AXIS_X;
|
||||
axisname = "X";
|
||||
break;
|
||||
case 1:
|
||||
axis_reg = PCI8164_AXIS_Y;
|
||||
axisname = "Y";
|
||||
break;
|
||||
case 2:
|
||||
axis_reg = PCI8164_AXIS_Z;
|
||||
axisname = "Z";
|
||||
break;
|
||||
case 3:
|
||||
axis_reg = PCI8164_AXIS_U;
|
||||
axisname = "U";
|
||||
break;
|
||||
default:
|
||||
axis_reg = PCI8164_AXIS_X;
|
||||
axisname = "X";
|
||||
}
|
||||
|
||||
outw(data[0], dev->iobase + axis_reg + PCI8164_BUF1);
|
||||
printk("comedi: pci8164 BUF1 write -> %04X:%04X on axis %s\n", data[0],
|
||||
data[1], axisname);
|
||||
|
||||
adl_pci8164_insn_out(dev, s, insn, data, "BUF1", PCI8164_BUF1);
|
||||
return 2;
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче