From: H Hartley Sweeten <hsweeten@visionengravers.com>
Date: Thu, 8 Jan 2015 00:19:31 +0000 (-0700)
Subject: staging: comedi: aio_iiro_16: introduce aio_iiro_enable_irq()
X-Git-Tag: firefly_0821_release~176^2~2320^2~552
X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=ffe1cb9a3ed83c753183015b31dfb6fc148403f7;p=firefly-linux-kernel-4.4.55.git

staging: comedi: aio_iiro_16: introduce aio_iiro_enable_irq()

This board supports interrupts on change of state of the digital inputs.

Introduce a helper function to enable/disable the interrupt. Use the new
helper function to ensure that interrupts are initially disabled during
the driver (*attach).

Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Reviewed-by: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---

diff --git a/drivers/staging/comedi/drivers/aio_iiro_16.c b/drivers/staging/comedi/drivers/aio_iiro_16.c
index 8cd5f116e15b..f84fb7446994 100644
--- a/drivers/staging/comedi/drivers/aio_iiro_16.c
+++ b/drivers/staging/comedi/drivers/aio_iiro_16.c
@@ -34,6 +34,14 @@
 #define AIO_IIRO_16_RELAY_8_15	0x04
 #define AIO_IIRO_16_INPUT_8_15	0x05
 
+static void aio_iiro_enable_irq(struct comedi_device *dev, bool enable)
+{
+	if (enable)
+		inb(dev->iobase + AIO_IIRO_16_IRQ);
+	else
+		outb(0, dev->iobase + AIO_IIRO_16_IRQ);
+}
+
 static int aio_iiro_16_do_insn_bits(struct comedi_device *dev,
 				    struct comedi_subdevice *s,
 				    struct comedi_insn *insn,
@@ -72,6 +80,8 @@ static int aio_iiro_16_attach(struct comedi_device *dev,
 	if (ret)
 		return ret;
 
+	aio_iiro_enable_irq(dev, false);
+
 	ret = comedi_alloc_subdevices(dev, 2);
 	if (ret)
 		return ret;