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

Commit 5f6c2a95 authored by Ian Abbott's avatar Ian Abbott Committed by Greg Kroah-Hartman
Browse files

staging: comedi: addi_apci_2032: always initialize interrupt subdevice



Initialize the special interrupt subdevice as a digital input subdevice
even if the interrupt handler cannot be registered.  It's `insn_bits`
handler will still read the interrupt status register.  This hardware
status bits in this register might be valid even if they haven't been
enabled in the interrupt control register, but this needs to be checked.
In any case, initializing the subdevice as a digital input subdevice is
harmless.

Signed-off-by: default avatarIan Abbott <abbotti@mev.co.uk>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 5c2d4cba
Loading
Loading
Loading
Loading
+6 −7
Original line number Diff line number Diff line
@@ -377,6 +377,12 @@ static int apci2032_auto_attach(struct comedi_device *dev,

	/* Initialize the interrupt subdevice */
	s = &dev->subdevices[2];
	s->type		= COMEDI_SUBD_DI;
	s->subdev_flags	= SDF_READABLE;
	s->n_chan	= 2;
	s->maxdata	= 1;
	s->range_table	= &range_digital;
	s->insn_bits	= apci2032_int_insn_bits;
	if (dev->irq) {
		struct apci2032_int_private *subpriv;

@@ -386,18 +392,11 @@ static int apci2032_auto_attach(struct comedi_device *dev,
			return -ENOMEM;
		spin_lock_init(&subpriv->spinlock);
		s->private	= subpriv;
		s->type		= COMEDI_SUBD_DI;
		s->subdev_flags	= SDF_READABLE | SDF_CMD_READ;
		s->n_chan	= 2;
		s->len_chanlist = 2;
		s->maxdata	= 1;
		s->range_table	= &range_digital;
		s->insn_bits	= apci2032_int_insn_bits;
		s->do_cmdtest	= apci2032_int_cmdtest;
		s->do_cmd	= apci2032_int_cmd;
		s->cancel	= apci2032_int_cancel;
	} else {
		s->type		= COMEDI_SUBD_UNUSED;
	}

	return 0;