45
45
#define PCI171X_RANGE_UNI BIT(4)
46
46
#define PCI171X_RANGE_GAIN (x ) (((x) & 0x7) << 0)
47
47
#define PCI171X_MUX_REG 0x04 /* W: A/D multiplexor control */
48
+ #define PCI171X_MUX_CHANH (x ) (((x) & 0xf) << 8)
49
+ #define PCI171X_MUX_CHANL (x ) (((x) & 0xf) << 0)
50
+ #define PCI171X_MUX_CHAN (x ) (PCI171X_MUX_CHANH(x) | PCI171X_MUX_CHANL(x))
48
51
#define PCI171X_STATUS_REG 0x06 /* R: status register */
49
52
#define PCI171X_STATUS_IRQ BIT(11) /* 1=IRQ occurred */
50
53
#define PCI171X_STATUS_FF BIT(10) /* 1=FIFO is full, fatal error */
@@ -179,7 +182,7 @@ struct pci1710_private {
179
182
unsigned int max_samples ;
180
183
unsigned int ctrl ; /* control register value */
181
184
unsigned int ctrl_ext ; /* used to switch from TRIG_EXT to TRIG_xxx */
182
- unsigned int mux_ext ; /* used to set the channel interval to scan */
185
+ unsigned int mux_scan ; /* used to set the channel interval to scan */
183
186
unsigned char ai_et ;
184
187
unsigned int act_chanlist [32 ]; /* list of scanned channel */
185
188
unsigned char saved_seglen ; /* len of the non-repeating chanlist */
@@ -279,7 +282,7 @@ static void pci171x_ai_setup_chanlist(struct comedi_device *dev,
279
282
rangeval |= PCI171X_RANGE_GAIN (range );
280
283
281
284
/* select channel and set range */
282
- outw (chan | (chan << 8 ), dev -> iobase + PCI171X_MUX_REG );
285
+ outw (PCI171X_MUX_CHAN (chan ), dev -> iobase + PCI171X_MUX_REG );
283
286
outw (rangeval , dev -> iobase + PCI171X_RANGE_REG );
284
287
285
288
devpriv -> act_chanlist [i ] = chan ;
@@ -288,8 +291,9 @@ static void pci171x_ai_setup_chanlist(struct comedi_device *dev,
288
291
devpriv -> act_chanlist [i ] = CR_CHAN (chanlist [i ]);
289
292
290
293
/* select channel interval to scan */
291
- devpriv -> mux_ext = first_chan | (last_chan << 8 );
292
- outw (devpriv -> mux_ext , dev -> iobase + PCI171X_MUX_REG );
294
+ devpriv -> mux_scan = PCI171X_MUX_CHANL (first_chan ) |
295
+ PCI171X_MUX_CHANH (last_chan );
296
+ outw (devpriv -> mux_scan , dev -> iobase + PCI171X_MUX_REG );
293
297
}
294
298
295
299
static int pci171x_ai_eoc (struct comedi_device * dev ,
@@ -551,7 +555,7 @@ static irqreturn_t interrupt_service_pci1710(int irq, void *d)
551
555
outb (0 , dev -> iobase + PCI171X_CLRFIFO_REG );
552
556
outb (0 , dev -> iobase + PCI171X_CLRINT_REG );
553
557
/* no sample on this interrupt; reset the channel interval */
554
- outw (devpriv -> mux_ext , dev -> iobase + PCI171X_MUX_REG );
558
+ outw (devpriv -> mux_scan , dev -> iobase + PCI171X_MUX_REG );
555
559
outw (devpriv -> ctrl , dev -> iobase + PCI171X_CTRL_REG );
556
560
comedi_8254_pacer_enable (dev -> pacer , 1 , 2 , true);
557
561
return IRQ_HANDLED ;
0 commit comments