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

Commit 6347fc88 authored by Chase Southwood's avatar Chase Southwood Committed by Greg Kroah-Hartman
Browse files

staging: comedi: addi_apci_1564: add subdevice to check diagnostic status



This board provides VCC/CC diagnostic information, and it also supports
diagnostic interrupts.  However, as per Ian, these interrupts aren't very
useful and it is enough to simply provide an interface for accessing the
diagnostic status on-demand.  This patch adds a 2-channel digital input
subdevice with an insn_bits handler to access this information.

Signed-off-by: default avatarChase Southwood <chase.southwood@gmail.com>
Reviewed-by: default avatarIan Abbott <abbotti@mev.co.uk>
Cc: H Hartley Sweeten <hsweeten@visionengravers.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 0e1fc793
Loading
Loading
Loading
Loading
+22 −1
Original line number Diff line number Diff line
@@ -157,6 +157,18 @@ static int apci1564_do_insn_bits(struct comedi_device *dev,
	return insn->n;
}

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

	data[1] = inl(devpriv->amcc_iobase + APCI1564_DO_INT_STATUS_REG) & 3;

	return insn->n;
}

/*
 * Change-Of-State (COS) interrupt configuration
 *
@@ -373,7 +385,7 @@ static int apci1564_auto_attach(struct comedi_device *dev,
			dev->irq = pcidev->irq;
	}

	ret = comedi_alloc_subdevices(dev, 5);
	ret = comedi_alloc_subdevices(dev, 6);
	if (ret)
		return ret;

@@ -434,6 +446,15 @@ static int apci1564_auto_attach(struct comedi_device *dev,
	if (ret)
		return ret;

	/* Initialize the diagnostic status subdevice */
	s = &dev->subdevices[5];
	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 = apci1564_diag_insn_bits;

	return 0;
}