diff options
Diffstat (limited to 'drivers/staging/comedi/drivers/ni_labpc.c')
-rw-r--r-- | drivers/staging/comedi/drivers/ni_labpc.c | 35 |
1 files changed, 19 insertions, 16 deletions
diff --git a/drivers/staging/comedi/drivers/ni_labpc.c b/drivers/staging/comedi/drivers/ni_labpc.c index ab8f37022a3..897359d79e5 100644 --- a/drivers/staging/comedi/drivers/ni_labpc.c +++ b/drivers/staging/comedi/drivers/ni_labpc.c | |||
@@ -1241,7 +1241,9 @@ static int labpc_ai_cmd(struct comedi_device *dev, struct comedi_subdevice *s) | |||
1241 | else | 1241 | else |
1242 | channel = CR_CHAN(cmd->chanlist[0]); | 1242 | channel = CR_CHAN(cmd->chanlist[0]); |
1243 | /* munge channel bits for differential / scan disabled mode */ | 1243 | /* munge channel bits for differential / scan disabled mode */ |
1244 | if (labpc_ai_scan_mode(cmd) != MODE_SINGLE_CHAN && aref == AREF_DIFF) | 1244 | if ((labpc_ai_scan_mode(cmd) == MODE_SINGLE_CHAN || |
1245 | labpc_ai_scan_mode(cmd) == MODE_SINGLE_CHAN_INTERVAL) && | ||
1246 | aref == AREF_DIFF) | ||
1245 | channel *= 2; | 1247 | channel *= 2; |
1246 | devpriv->command1_bits |= ADC_CHAN_BITS(channel); | 1248 | devpriv->command1_bits |= ADC_CHAN_BITS(channel); |
1247 | devpriv->command1_bits |= thisboard->ai_range_code[range]; | 1249 | devpriv->command1_bits |= thisboard->ai_range_code[range]; |
@@ -1257,21 +1259,6 @@ static int labpc_ai_cmd(struct comedi_device *dev, struct comedi_subdevice *s) | |||
1257 | devpriv->write_byte(devpriv->command1_bits, | 1259 | devpriv->write_byte(devpriv->command1_bits, |
1258 | dev->iobase + COMMAND1_REG); | 1260 | dev->iobase + COMMAND1_REG); |
1259 | } | 1261 | } |
1260 | /* setup any external triggering/pacing (command4 register) */ | ||
1261 | devpriv->command4_bits = 0; | ||
1262 | if (cmd->convert_src != TRIG_EXT) | ||
1263 | devpriv->command4_bits |= EXT_CONVERT_DISABLE_BIT; | ||
1264 | /* XXX should discard first scan when using interval scanning | ||
1265 | * since manual says it is not synced with scan clock */ | ||
1266 | if (labpc_use_continuous_mode(cmd) == 0) { | ||
1267 | devpriv->command4_bits |= INTERVAL_SCAN_EN_BIT; | ||
1268 | if (cmd->scan_begin_src == TRIG_EXT) | ||
1269 | devpriv->command4_bits |= EXT_SCAN_EN_BIT; | ||
1270 | } | ||
1271 | /* single-ended/differential */ | ||
1272 | if (aref == AREF_DIFF) | ||
1273 | devpriv->command4_bits |= ADC_DIFF_BIT; | ||
1274 | devpriv->write_byte(devpriv->command4_bits, dev->iobase + COMMAND4_REG); | ||
1275 | 1262 | ||
1276 | devpriv->write_byte(cmd->chanlist_len, | 1263 | devpriv->write_byte(cmd->chanlist_len, |
1277 | dev->iobase + INTERVAL_COUNT_REG); | 1264 | dev->iobase + INTERVAL_COUNT_REG); |
@@ -1349,6 +1336,22 @@ static int labpc_ai_cmd(struct comedi_device *dev, struct comedi_subdevice *s) | |||
1349 | devpriv->command3_bits &= ~ADC_FNE_INTR_EN_BIT; | 1336 | devpriv->command3_bits &= ~ADC_FNE_INTR_EN_BIT; |
1350 | devpriv->write_byte(devpriv->command3_bits, dev->iobase + COMMAND3_REG); | 1337 | devpriv->write_byte(devpriv->command3_bits, dev->iobase + COMMAND3_REG); |
1351 | 1338 | ||
1339 | /* setup any external triggering/pacing (command4 register) */ | ||
1340 | devpriv->command4_bits = 0; | ||
1341 | if (cmd->convert_src != TRIG_EXT) | ||
1342 | devpriv->command4_bits |= EXT_CONVERT_DISABLE_BIT; | ||
1343 | /* XXX should discard first scan when using interval scanning | ||
1344 | * since manual says it is not synced with scan clock */ | ||
1345 | if (labpc_use_continuous_mode(cmd) == 0) { | ||
1346 | devpriv->command4_bits |= INTERVAL_SCAN_EN_BIT; | ||
1347 | if (cmd->scan_begin_src == TRIG_EXT) | ||
1348 | devpriv->command4_bits |= EXT_SCAN_EN_BIT; | ||
1349 | } | ||
1350 | /* single-ended/differential */ | ||
1351 | if (aref == AREF_DIFF) | ||
1352 | devpriv->command4_bits |= ADC_DIFF_BIT; | ||
1353 | devpriv->write_byte(devpriv->command4_bits, dev->iobase + COMMAND4_REG); | ||
1354 | |||
1352 | /* startup acquisition */ | 1355 | /* startup acquisition */ |
1353 | 1356 | ||
1354 | /* command2 reg */ | 1357 | /* command2 reg */ |