Commit c3d8605f authored by H Hartley Sweeten's avatar H Hartley Sweeten Committed by Greg Kroah-Hartman

staging: comedi: addi_apci_3xxx: absorb apci3xxx_do_insn_bits()

All the boards supported by this driver that have digital outputs use
the same 'do_bits' callback in the boardinfo. Absorb the function from
hwdrv_apci3xxx.c directly into the driver.

Remove the 'do_bits' callback from the boardinfo and use the function
directly to set the subdevice (*insn_bits).

None of the boards supported by this driver have a 'do_config', 'do_write',
or 'do_read' callback. Remove the unnecessary setting of the subdevice
callbacks.
Signed-off-by: default avatarH Hartley Sweeten <hsweeten@visionengravers.com>
Reviewed-by: default avatarIan Abbott <abbotti@mev.co.uk>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 5e72c7a5
...@@ -1283,25 +1283,3 @@ static int apci3xxx_di_insn_bits(struct comedi_device *dev, ...@@ -1283,25 +1283,3 @@ static int apci3xxx_di_insn_bits(struct comedi_device *dev,
return insn->n; return insn->n;
} }
static int apci3xxx_do_insn_bits(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn,
unsigned int *data)
{
struct addi_private *devpriv = dev->private;
unsigned int mask = data[0];
unsigned int bits = data[1];
s->state = inl(devpriv->iobase + 48) & 0xf;
if (mask) {
s->state &= ~mask;
s->state |= (bits & mask);
outl(s->state, devpriv->iobase + 48);
}
data[1] = s->state;
return insn->n;
}
...@@ -188,7 +188,6 @@ static const struct addi_board apci3xxx_boardtypes[] = { ...@@ -188,7 +188,6 @@ static const struct addi_board apci3xxx_boardtypes[] = {
.ai_config = i_APCI3XXX_InsnConfigAnalogInput, .ai_config = i_APCI3XXX_InsnConfigAnalogInput,
.ai_read = i_APCI3XXX_InsnReadAnalogInput, .ai_read = i_APCI3XXX_InsnReadAnalogInput,
.di_bits = apci3xxx_di_insn_bits, .di_bits = apci3xxx_di_insn_bits,
.do_bits = apci3xxx_do_insn_bits,
.ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO,
.ttl_bits = i_APCI3XXX_InsnBitsTTLIO, .ttl_bits = i_APCI3XXX_InsnBitsTTLIO,
.ttl_read = i_APCI3XXX_InsnReadTTLIO, .ttl_read = i_APCI3XXX_InsnReadTTLIO,
...@@ -214,7 +213,6 @@ static const struct addi_board apci3xxx_boardtypes[] = { ...@@ -214,7 +213,6 @@ static const struct addi_board apci3xxx_boardtypes[] = {
.ai_config = i_APCI3XXX_InsnConfigAnalogInput, .ai_config = i_APCI3XXX_InsnConfigAnalogInput,
.ai_read = i_APCI3XXX_InsnReadAnalogInput, .ai_read = i_APCI3XXX_InsnReadAnalogInput,
.di_bits = apci3xxx_di_insn_bits, .di_bits = apci3xxx_di_insn_bits,
.do_bits = apci3xxx_do_insn_bits,
.ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO,
.ttl_bits = i_APCI3XXX_InsnBitsTTLIO, .ttl_bits = i_APCI3XXX_InsnBitsTTLIO,
.ttl_read = i_APCI3XXX_InsnReadTTLIO, .ttl_read = i_APCI3XXX_InsnReadTTLIO,
...@@ -240,7 +238,6 @@ static const struct addi_board apci3xxx_boardtypes[] = { ...@@ -240,7 +238,6 @@ static const struct addi_board apci3xxx_boardtypes[] = {
.ai_config = i_APCI3XXX_InsnConfigAnalogInput, .ai_config = i_APCI3XXX_InsnConfigAnalogInput,
.ai_read = i_APCI3XXX_InsnReadAnalogInput, .ai_read = i_APCI3XXX_InsnReadAnalogInput,
.di_bits = apci3xxx_di_insn_bits, .di_bits = apci3xxx_di_insn_bits,
.do_bits = apci3xxx_do_insn_bits,
.ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO,
.ttl_bits = i_APCI3XXX_InsnBitsTTLIO, .ttl_bits = i_APCI3XXX_InsnBitsTTLIO,
.ttl_read = i_APCI3XXX_InsnReadTTLIO, .ttl_read = i_APCI3XXX_InsnReadTTLIO,
...@@ -266,7 +263,6 @@ static const struct addi_board apci3xxx_boardtypes[] = { ...@@ -266,7 +263,6 @@ static const struct addi_board apci3xxx_boardtypes[] = {
.ai_config = i_APCI3XXX_InsnConfigAnalogInput, .ai_config = i_APCI3XXX_InsnConfigAnalogInput,
.ai_read = i_APCI3XXX_InsnReadAnalogInput, .ai_read = i_APCI3XXX_InsnReadAnalogInput,
.di_bits = apci3xxx_di_insn_bits, .di_bits = apci3xxx_di_insn_bits,
.do_bits = apci3xxx_do_insn_bits,
.ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO,
.ttl_bits = i_APCI3XXX_InsnBitsTTLIO, .ttl_bits = i_APCI3XXX_InsnBitsTTLIO,
.ttl_read = i_APCI3XXX_InsnReadTTLIO, .ttl_read = i_APCI3XXX_InsnReadTTLIO,
...@@ -292,7 +288,6 @@ static const struct addi_board apci3xxx_boardtypes[] = { ...@@ -292,7 +288,6 @@ static const struct addi_board apci3xxx_boardtypes[] = {
.ai_config = i_APCI3XXX_InsnConfigAnalogInput, .ai_config = i_APCI3XXX_InsnConfigAnalogInput,
.ai_read = i_APCI3XXX_InsnReadAnalogInput, .ai_read = i_APCI3XXX_InsnReadAnalogInput,
.di_bits = apci3xxx_di_insn_bits, .di_bits = apci3xxx_di_insn_bits,
.do_bits = apci3xxx_do_insn_bits,
.ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO,
.ttl_bits = i_APCI3XXX_InsnBitsTTLIO, .ttl_bits = i_APCI3XXX_InsnBitsTTLIO,
.ttl_read = i_APCI3XXX_InsnReadTTLIO, .ttl_read = i_APCI3XXX_InsnReadTTLIO,
...@@ -318,7 +313,6 @@ static const struct addi_board apci3xxx_boardtypes[] = { ...@@ -318,7 +313,6 @@ static const struct addi_board apci3xxx_boardtypes[] = {
.ai_config = i_APCI3XXX_InsnConfigAnalogInput, .ai_config = i_APCI3XXX_InsnConfigAnalogInput,
.ai_read = i_APCI3XXX_InsnReadAnalogInput, .ai_read = i_APCI3XXX_InsnReadAnalogInput,
.di_bits = apci3xxx_di_insn_bits, .di_bits = apci3xxx_di_insn_bits,
.do_bits = apci3xxx_do_insn_bits,
.ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO,
.ttl_bits = i_APCI3XXX_InsnBitsTTLIO, .ttl_bits = i_APCI3XXX_InsnBitsTTLIO,
.ttl_read = i_APCI3XXX_InsnReadTTLIO, .ttl_read = i_APCI3XXX_InsnReadTTLIO,
...@@ -448,7 +442,6 @@ static const struct addi_board apci3xxx_boardtypes[] = { ...@@ -448,7 +442,6 @@ static const struct addi_board apci3xxx_boardtypes[] = {
.ai_read = i_APCI3XXX_InsnReadAnalogInput, .ai_read = i_APCI3XXX_InsnReadAnalogInput,
.ao_write = i_APCI3XXX_InsnWriteAnalogOutput, .ao_write = i_APCI3XXX_InsnWriteAnalogOutput,
.di_bits = apci3xxx_di_insn_bits, .di_bits = apci3xxx_di_insn_bits,
.do_bits = apci3xxx_do_insn_bits,
.ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO,
.ttl_bits = i_APCI3XXX_InsnBitsTTLIO, .ttl_bits = i_APCI3XXX_InsnBitsTTLIO,
.ttl_read = i_APCI3XXX_InsnReadTTLIO, .ttl_read = i_APCI3XXX_InsnReadTTLIO,
...@@ -478,7 +471,6 @@ static const struct addi_board apci3xxx_boardtypes[] = { ...@@ -478,7 +471,6 @@ static const struct addi_board apci3xxx_boardtypes[] = {
.ai_read = i_APCI3XXX_InsnReadAnalogInput, .ai_read = i_APCI3XXX_InsnReadAnalogInput,
.ao_write = i_APCI3XXX_InsnWriteAnalogOutput, .ao_write = i_APCI3XXX_InsnWriteAnalogOutput,
.di_bits = apci3xxx_di_insn_bits, .di_bits = apci3xxx_di_insn_bits,
.do_bits = apci3xxx_do_insn_bits,
.ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO,
.ttl_bits = i_APCI3XXX_InsnBitsTTLIO, .ttl_bits = i_APCI3XXX_InsnBitsTTLIO,
.ttl_read = i_APCI3XXX_InsnReadTTLIO, .ttl_read = i_APCI3XXX_InsnReadTTLIO,
...@@ -508,7 +500,6 @@ static const struct addi_board apci3xxx_boardtypes[] = { ...@@ -508,7 +500,6 @@ static const struct addi_board apci3xxx_boardtypes[] = {
.ai_read = i_APCI3XXX_InsnReadAnalogInput, .ai_read = i_APCI3XXX_InsnReadAnalogInput,
.ao_write = i_APCI3XXX_InsnWriteAnalogOutput, .ao_write = i_APCI3XXX_InsnWriteAnalogOutput,
.di_bits = apci3xxx_di_insn_bits, .di_bits = apci3xxx_di_insn_bits,
.do_bits = apci3xxx_do_insn_bits,
.ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO,
.ttl_bits = i_APCI3XXX_InsnBitsTTLIO, .ttl_bits = i_APCI3XXX_InsnBitsTTLIO,
.ttl_read = i_APCI3XXX_InsnReadTTLIO, .ttl_read = i_APCI3XXX_InsnReadTTLIO,
...@@ -538,7 +529,6 @@ static const struct addi_board apci3xxx_boardtypes[] = { ...@@ -538,7 +529,6 @@ static const struct addi_board apci3xxx_boardtypes[] = {
.ai_read = i_APCI3XXX_InsnReadAnalogInput, .ai_read = i_APCI3XXX_InsnReadAnalogInput,
.ao_write = i_APCI3XXX_InsnWriteAnalogOutput, .ao_write = i_APCI3XXX_InsnWriteAnalogOutput,
.di_bits = apci3xxx_di_insn_bits, .di_bits = apci3xxx_di_insn_bits,
.do_bits = apci3xxx_do_insn_bits,
.ttl_config = i_APCI3XXX_InsnConfigInitTTLIO, .ttl_config = i_APCI3XXX_InsnConfigInitTTLIO,
.ttl_bits = i_APCI3XXX_InsnBitsTTLIO, .ttl_bits = i_APCI3XXX_InsnBitsTTLIO,
.ttl_read = i_APCI3XXX_InsnReadTTLIO, .ttl_read = i_APCI3XXX_InsnReadTTLIO,
...@@ -562,7 +552,6 @@ static const struct addi_board apci3xxx_boardtypes[] = { ...@@ -562,7 +552,6 @@ static const struct addi_board apci3xxx_boardtypes[] = {
.ai_config = i_APCI3XXX_InsnConfigAnalogInput, .ai_config = i_APCI3XXX_InsnConfigAnalogInput,
.ai_read = i_APCI3XXX_InsnReadAnalogInput, .ai_read = i_APCI3XXX_InsnReadAnalogInput,
.di_bits = apci3xxx_di_insn_bits, .di_bits = apci3xxx_di_insn_bits,
.do_bits = apci3xxx_do_insn_bits,
}, },
[BOARD_APCI3002_16] = { [BOARD_APCI3002_16] = {
.pc_DriverName = "apci3002-16", .pc_DriverName = "apci3002-16",
...@@ -582,7 +571,6 @@ static const struct addi_board apci3xxx_boardtypes[] = { ...@@ -582,7 +571,6 @@ static const struct addi_board apci3xxx_boardtypes[] = {
.ai_config = i_APCI3XXX_InsnConfigAnalogInput, .ai_config = i_APCI3XXX_InsnConfigAnalogInput,
.ai_read = i_APCI3XXX_InsnReadAnalogInput, .ai_read = i_APCI3XXX_InsnReadAnalogInput,
.di_bits = apci3xxx_di_insn_bits, .di_bits = apci3xxx_di_insn_bits,
.do_bits = apci3xxx_do_insn_bits,
}, },
[BOARD_APCI3002_8] = { [BOARD_APCI3002_8] = {
.pc_DriverName = "apci3002-8", .pc_DriverName = "apci3002-8",
...@@ -602,7 +590,6 @@ static const struct addi_board apci3xxx_boardtypes[] = { ...@@ -602,7 +590,6 @@ static const struct addi_board apci3xxx_boardtypes[] = {
.ai_config = i_APCI3XXX_InsnConfigAnalogInput, .ai_config = i_APCI3XXX_InsnConfigAnalogInput,
.ai_read = i_APCI3XXX_InsnReadAnalogInput, .ai_read = i_APCI3XXX_InsnReadAnalogInput,
.di_bits = apci3xxx_di_insn_bits, .di_bits = apci3xxx_di_insn_bits,
.do_bits = apci3xxx_do_insn_bits,
}, },
[BOARD_APCI3002_4] = { [BOARD_APCI3002_4] = {
.pc_DriverName = "apci3002-4", .pc_DriverName = "apci3002-4",
...@@ -622,7 +609,6 @@ static const struct addi_board apci3xxx_boardtypes[] = { ...@@ -622,7 +609,6 @@ static const struct addi_board apci3xxx_boardtypes[] = {
.ai_config = i_APCI3XXX_InsnConfigAnalogInput, .ai_config = i_APCI3XXX_InsnConfigAnalogInput,
.ai_read = i_APCI3XXX_InsnReadAnalogInput, .ai_read = i_APCI3XXX_InsnReadAnalogInput,
.di_bits = apci3xxx_di_insn_bits, .di_bits = apci3xxx_di_insn_bits,
.do_bits = apci3xxx_do_insn_bits,
}, },
[BOARD_APCI3500] = { [BOARD_APCI3500] = {
.pc_DriverName = "apci3500", .pc_DriverName = "apci3500",
...@@ -642,6 +628,28 @@ static const struct addi_board apci3xxx_boardtypes[] = { ...@@ -642,6 +628,28 @@ static const struct addi_board apci3xxx_boardtypes[] = {
}, },
}; };
static int apci3xxx_do_insn_bits(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn,
unsigned int *data)
{
struct addi_private *devpriv = dev->private;
unsigned int mask = data[0];
unsigned int bits = data[1];
s->state = inl(devpriv->iobase + 48) & 0xf;
if (mask) {
s->state &= ~mask;
s->state |= (bits & mask);
outl(s->state, devpriv->iobase + 48);
}
data[1] = s->state;
return insn->n;
}
static int i_ADDIDATA_InsnReadEeprom(struct comedi_device *dev, static int i_ADDIDATA_InsnReadEeprom(struct comedi_device *dev,
struct comedi_subdevice *s, struct comedi_subdevice *s,
struct comedi_insn *insn, struct comedi_insn *insn,
...@@ -866,12 +874,7 @@ static int apci3xxx_auto_attach(struct comedi_device *dev, ...@@ -866,12 +874,7 @@ static int apci3xxx_auto_attach(struct comedi_device *dev,
s->len_chanlist = devpriv->s_EeParameters.i_NbrDoChannel; s->len_chanlist = devpriv->s_EeParameters.i_NbrDoChannel;
s->range_table = &range_digital; s->range_table = &range_digital;
s->io_bits = 0xf; /* all bits output */ s->io_bits = 0xf; /* all bits output */
s->insn_bits = apci3xxx_do_insn_bits;
/* insn_config - for digital output memory */
s->insn_config = board->do_config;
s->insn_write = board->do_write;
s->insn_bits = board->do_bits;
s->insn_read = board->do_read;
} else { } else {
s->type = COMEDI_SUBD_UNUSED; s->type = COMEDI_SUBD_UNUSED;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment