summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorH Hartley Sweeten <hsweeten@visionengravers.com>2015-10-13 02:07:04 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2015-10-13 20:26:19 +0300
commit95ea3e760ef8e0c2171025429f989cf44075a91f (patch)
tree03aad4b33f79611b04f77e8b9be7b3906b2b106e
parent2845efb967ed9d1e430675ff67b2129a20bfedac (diff)
downloadlinux-95ea3e760ef8e0c2171025429f989cf44075a91f.tar.xz
staging: comedi: cb_das16_cs: fix ai mux register programming
The ai mux register is used program the hi/lo channels in a scan. According to the user manual, the hi and lo channels should be the same to sample one channel. Introduce some macros to set the appropriate bits in the ai mux register and fix the ai (*insn_read). 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>
-rw-r--r--drivers/staging/comedi/drivers/cb_das16_cs.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/staging/comedi/drivers/cb_das16_cs.c b/drivers/staging/comedi/drivers/cb_das16_cs.c
index ac77b86d07af..15d03a74fcd0 100644
--- a/drivers/staging/comedi/drivers/cb_das16_cs.c
+++ b/drivers/staging/comedi/drivers/cb_das16_cs.c
@@ -46,6 +46,10 @@
*/
#define DAS16CS_AI_DATA_REG 0x00
#define DAS16CS_AI_MUX_REG 0x02
+#define DAS16CS_AI_MUX_HI_CHAN(x) (((x) & 0xf) << 4)
+#define DAS16CS_AI_MUX_LO_CHAN(x) (((x) & 0xf) << 0)
+#define DAS16CS_AI_MUX_SINGLE_CHAN(x) (DAS16CS_AI_MUX_HI_CHAN(x) | \
+ DAS16CS_AI_MUX_LO_CHAN(x))
#define DAS16CS_MISC1_REG 0x04
#define DAS16CS_MISC2_REG 0x06
#define DAS16CS_TIMER_BASE 0x08
@@ -111,7 +115,8 @@ static int das16cs_ai_rinsn(struct comedi_device *dev,
int ret;
int i;
- outw(chan, dev->iobase + DAS16CS_AI_MUX_REG);
+ outw(DAS16CS_AI_MUX_SINGLE_CHAN(chan),
+ dev->iobase + DAS16CS_AI_MUX_REG);
devpriv->status1 &= ~0xf320;
devpriv->status1 |= (aref == AREF_DIFF) ? 0 : 0x0020;