Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e49242a4 authored by H Hartley Sweeten's avatar H Hartley Sweeten Committed by Greg Kroah-Hartman
Browse files

staging: comedi: das16m1: remove do_bits from private data



Use the subdevice 'state' variable instead of carrying the state of
the output channels in the private data.

Use comedi_dio_update_state() to handle the boilerplate code to update
the subdevice s->state.

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 8c32d5da
Loading
Loading
Loading
Loading
+6 −16
Original line number Diff line number Diff line
@@ -134,7 +134,6 @@ struct das16m1_private_struct {
	 * counter yet (loaded by first sample conversion) */
	u16 initial_hw_count;
	short ai_buffer[FIFO_SIZE];
	unsigned int do_bits;	/*  saves status of digital output bits */
	unsigned int divisor1;	/*  divides master clock to obtain conversion speed */
	unsigned int divisor2;	/*  divides master clock to obtain conversion speed */
	unsigned long extra_iobase;
@@ -393,22 +392,13 @@ static int das16m1_di_rbits(struct comedi_device *dev,

static int das16m1_do_wbits(struct comedi_device *dev,
			    struct comedi_subdevice *s,
			    struct comedi_insn *insn, unsigned int *data)
			    struct comedi_insn *insn,
			    unsigned int *data)
{
	struct das16m1_private_struct *devpriv = dev->private;
	unsigned int wbits;

	/*  only set bits that have been masked */
	data[0] &= 0xf;
	wbits = devpriv->do_bits;
	/*  zero bits that have been masked */
	wbits &= ~data[0];
	/*  set masked bits */
	wbits |= data[0] & data[1];
	devpriv->do_bits = wbits;
	data[1] = wbits;
	if (comedi_dio_update_state(s, data))
		outb(s->state, dev->iobase + DAS16M1_DIO);

	outb(devpriv->do_bits, dev->iobase + DAS16M1_DIO);
	data[1] = s->state;

	return insn->n;
}
@@ -649,7 +639,7 @@ static int das16m1_attach(struct comedi_device *dev,
	outb(TOTAL_CLEAR, dev->iobase + DAS16M1_8254_FIRST_CNTRL);

	/*  initialize digital output lines */
	outb(devpriv->do_bits, dev->iobase + DAS16M1_DIO);
	outb(0, dev->iobase + DAS16M1_DIO);

	/* set the interrupt level */
	if (dev->irq)