These macros rely on a local variable having a specific name.
Signed-off-by: H Hartley Sweeten <[email protected]>
Cc: Ian Abbott <[email protected]>
Cc: Greg Kroah-Hartman <[email protected]>
---
drivers/staging/comedi/drivers/adl_pci9111.c | 30 ++++++++++++----------------
1 file changed, 13 insertions(+), 17 deletions(-)
diff --git a/drivers/staging/comedi/drivers/adl_pci9111.c
b/drivers/staging/comedi/drivers/adl_pci9111.c
index 7131179..ad683a7 100644
--- a/drivers/staging/comedi/drivers/adl_pci9111.c
+++ b/drivers/staging/comedi/drivers/adl_pci9111.c
@@ -161,17 +161,6 @@ TODO:
dev->iobase + PCI9111_REGISTER_INTERRUPT_CONTROL); \
} while (0)
-#define pci9111_is_fifo_full() \
- ((inb(dev->iobase + PCI9111_RANGE_STATUS_REG)& \
- PCI9111_FIFO_FULL_MASK) == 0)
-
-#define pci9111_is_fifo_half_full() \
- ((inb(dev->iobase + PCI9111_RANGE_STATUS_REG)& \
- PCI9111_FIFO_HALF_FULL_MASK) == 0)
-
-#define pci9111_is_fifo_empty() \
- ((inb(dev->iobase + PCI9111_RANGE_STATUS_REG)& \
- PCI9111_FIFO_EMPTY_MASK) == 0)
static const struct comedi_lrange pci9111_hr_ai_range = {
5,
@@ -698,6 +687,7 @@ static irqreturn_t pci9111_interrupt(int irq, void
*p_device)
struct pci9111_private_data *dev_private = dev->private;
struct comedi_subdevice *s = dev->read_subdev;
struct comedi_async *async;
+ unsigned int status;
unsigned long irq_flags;
unsigned char intcsr;
@@ -729,7 +719,10 @@ static irqreturn_t pci9111_interrupt(int irq, void
*p_device)
(PLX9050_LINTI1_ENABLE | PLX9050_LINTI1_STATUS)) {
/* Interrupt comes from fifo_half-full signal */
- if (pci9111_is_fifo_full()) {
+ status = inb(dev->iobase + PCI9111_RANGE_STATUS_REG);
+
+ /* '0' means FIFO is full, data may have been lost */
+ if (!(status & PCI9111_FIFO_FULL_MASK)) {
spin_unlock_irqrestore(&dev->spinlock, irq_flags);
comedi_error(dev, PCI9111_DRIVER_NAME " fifo overflow");
pci9111_interrupt_clear();
@@ -740,7 +733,8 @@ static irqreturn_t pci9111_interrupt(int irq, void
*p_device)
return IRQ_HANDLED;
}
- if (pci9111_is_fifo_half_full()) {
+ /* '0' means FIFO is half-full */
+ if (!(status & PCI9111_FIFO_HALF_FULL_MASK)) {
unsigned int num_samples;
unsigned int bytes_written = 0;
@@ -844,14 +838,14 @@ static int pci9111_ai_insn_read(struct comedi_device *dev,
unsigned int maxdata = s->maxdata;
unsigned int invert = (maxdata + 1) >> 1;
unsigned int shift = (maxdata == 0xffff) ? 0 : 4;
- unsigned int current_range;
+ unsigned int status;
int timeout;
int i;
outb(chan, dev->iobase + PCI9111_AI_CHANNEL_REG);
- current_range = inb(dev->iobase + PCI9111_RANGE_STATUS_REG);
- if ((current_range & PCI9111_RANGE_MASK) != range) {
+ status = inb(dev->iobase + PCI9111_RANGE_STATUS_REG);
+ if ((status & PCI9111_RANGE_MASK) != range) {
outb(range & PCI9111_RANGE_MASK,
dev->iobase + PCI9111_AI_RANGE_REG);
}
@@ -864,7 +858,9 @@ static int pci9111_ai_insn_read(struct comedi_device *dev,
timeout = PCI9111_AI_INSTANT_READ_TIMEOUT;
while (timeout--) {
- if (!pci9111_is_fifo_empty())
+ status = inb(dev->iobase + PCI9111_RANGE_STATUS_REG);
+ /* '1' means FIFO is not empty */
+ if (status & PCI9111_FIFO_EMPTY_MASK)
goto conversion_done;
}
--
1.7.11
_______________________________________________
devel mailing list
[email protected]
http://driverdev.linuxdriverproject.org/mailman/listinfo/devel