| From 655c4d442d1213b617926cc6d54e2a9a793fb46b Mon Sep 17 00:00:00 2001 |
| From: Ian Abbott <abbotti@mev.co.uk> |
| Date: Mon, 14 Nov 2016 20:16:21 +0000 |
| Subject: staging: comedi: ni_mio_common: fix M Series ni_ai_insn_read() data mask |
| |
| From: Ian Abbott <abbotti@mev.co.uk> |
| |
| commit 655c4d442d1213b617926cc6d54e2a9a793fb46b upstream. |
| |
| For NI M Series cards, the Comedi `insn_read` handler for the AI |
| subdevice is broken due to ANDing the value read from the AI FIFO data |
| register with an incorrect mask. The incorrect mask clears all but the |
| most significant bit of the sample data. It should preserve all the |
| sample data bits. Correct it. |
| |
| Fixes: 817144ae7fda ("staging: comedi: ni_mio_common: remove unnecessary use of 'board->adbits'") |
| Signed-off-by: Ian Abbott <abbotti@mev.co.uk> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/staging/comedi/drivers/ni_mio_common.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- a/drivers/staging/comedi/drivers/ni_mio_common.c |
| +++ b/drivers/staging/comedi/drivers/ni_mio_common.c |
| @@ -1832,7 +1832,7 @@ static int ni_ai_insn_read(struct comedi |
| unsigned int *data) |
| { |
| struct ni_private *devpriv = dev->private; |
| - unsigned int mask = (s->maxdata + 1) >> 1; |
| + unsigned int mask = s->maxdata; |
| int i, n; |
| unsigned int signbits; |
| unsigned int d; |