From 2f7b9a6fdb419fe62f43a79c33990e67583b32d8 Mon Sep 17 00:00:00 2001 From: H Hartley Sweeten Date: Mon, 10 Sep 2012 19:04:00 -0700 Subject: [PATCH] --- yaml --- r: 325143 b: refs/heads/master c: 8c7524e6f0b7d3ca70b957e032ee4f761c7deddf h: refs/heads/master i: 325141: b385803b9eb0fac8cacb8348b2b1903bd134c12d 325139: 10123c20dbf03c298a7993f359ac78e02a7872e8 325135: 7564c49091c47d01270fbd81c80df7d340a5728e v: v3 --- [refs] | 2 +- .../staging/comedi/drivers/adl_pci9111.c | 125 ++++++++---------- 2 files changed, 58 insertions(+), 69 deletions(-) diff --git a/[refs] b/[refs] index 8602479f29f3..38c7f64e4408 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 6b228d8a23515571cba52f16df7ac2630c45fd83 +refs/heads/master: 8c7524e6f0b7d3ca70b957e032ee4f761c7deddf diff --git a/trunk/drivers/staging/comedi/drivers/adl_pci9111.c b/trunk/drivers/staging/comedi/drivers/adl_pci9111.c index 209e9d073b18..721aaa24d8d8 100644 --- a/trunk/drivers/staging/comedi/drivers/adl_pci9111.c +++ b/trunk/drivers/staging/comedi/drivers/adl_pci9111.c @@ -89,45 +89,35 @@ a multiple of chanlist_len*convert_arg. #define PCI9111_8254_CLOCK_PERIOD_NS 500 -/* IO address map */ - -#define PCI9111_AI_FIFO_REG 0x00 -#define PCI9111_AO_REG 0x00 -#define PCI9111_DIO_REG 0x02 -#define PCI9111_REGISTER_EXTENDED_IO_PORTS 0x04 -#define PCI9111_AI_CHANNEL_REG 0x06 -#define PCI9111_REGISTER_AD_CHANNEL_READBACK 0x06 -#define PCI9111_AI_RANGE_REG 0x08 -#define PCI9111_RANGE_STATUS_REG 0x08 -#define PCI9111_AI_MODE_CTRL_REG 0x0A -#define PCI9111_AI_MODE_INT_RB_REG 0x0A -#define PCI9111_SOFTWARE_TRIGGER_REG 0x0E -#define PCI9111_INT_CTRL_REG 0x0C -#define PCI9111_8254_BASE_REG 0x40 -#define PCI9111_INT_CLR_REG 0x48 - -#define PCI9111_TRIGGER_MASK 0x0F -#define PCI9111_PTRG_OFF (0 << 3) -#define PCI9111_PTRG_ON (1 << 3) -#define PCI9111_EITS_EXTERNAL (1 << 2) -#define PCI9111_EITS_INTERNAL (0 << 2) -#define PCI9111_TPST_SOFTWARE_TRIGGER (0 << 1) -#define PCI9111_TPST_TIMER_PACER (1 << 1) -#define PCI9111_ASCAN_ON (1 << 0) -#define PCI9111_ASCAN_OFF (0 << 0) - -#define PCI9111_ISC0_SET_IRQ_ON_ENDING_OF_AD_CONVERSION (0 << 0) -#define PCI9111_ISC0_SET_IRQ_ON_FIFO_HALF_FULL (1 << 0) -#define PCI9111_ISC1_SET_IRQ_ON_TIMER_TICK (0 << 1) -#define PCI9111_ISC1_SET_IRQ_ON_EXT_TRG (1 << 1) -#define PCI9111_FFEN_SET_FIFO_ENABLE (0 << 2) -#define PCI9111_FFEN_SET_FIFO_DISABLE (1 << 2) - -#define PCI9111_RANGE_MASK 0x07 -#define PCI9111_FIFO_EMPTY_MASK 0x10 -#define PCI9111_FIFO_HALF_FULL_MASK 0x20 -#define PCI9111_FIFO_FULL_MASK 0x40 -#define PCI9111_AD_BUSY_MASK 0x80 +/* + * IO address map and bit defines + */ +#define PCI9111_AI_FIFO_REG 0x00 +#define PCI9111_AO_REG 0x00 +#define PCI9111_DIO_REG 0x02 +#define PCI9111_EDIO_REG 0x04 +#define PCI9111_AI_CHANNEL_REG 0x06 +#define PCI9111_AI_RANGE_STAT_REG 0x08 +#define PCI9111_AI_STAT_AD_BUSY (1 << 7) +#define PCI9111_AI_STAT_FF_FF (1 << 6) +#define PCI9111_AI_STAT_FF_HF (1 << 5) +#define PCI9111_AI_STAT_FF_EF (1 << 4) +#define PCI9111_AI_RANGE_MASK (7 << 0) +#define PCI9111_AI_TRIG_CTRL_REG 0x0a +#define PCI9111_AI_TRIG_CTRL_TRGEVENT (1 << 5) +#define PCI9111_AI_TRIG_CTRL_POTRG (1 << 4) +#define PCI9111_AI_TRIG_CTRL_PTRG (1 << 3) +#define PCI9111_AI_TRIG_CTRL_ETIS (1 << 2) +#define PCI9111_AI_TRIG_CTRL_TPST (1 << 1) +#define PCI9111_AI_TRIG_CTRL_ASCAN (1 << 0) +#define PCI9111_INT_CTRL_REG 0x0c +#define PCI9111_INT_CTRL_ISC2 (1 << 3) +#define PCI9111_INT_CTRL_FFEN (1 << 2) +#define PCI9111_INT_CTRL_ISC1 (1 << 1) +#define PCI9111_INT_CTRL_ISC0 (1 << 0) +#define PCI9111_SOFT_TRIG_REG 0x0e +#define PCI9111_8254_BASE_REG 0x40 +#define PCI9111_INT_CLR_REG 0x48 static const struct comedi_lrange pci9111_hr_ai_range = { 5, @@ -237,25 +227,24 @@ static void pci9111_trigger_source_set(struct comedi_device *dev, int flags; /* Read the current trigger mode control bits */ - flags = inb(dev->iobase + PCI9111_AI_MODE_INT_RB_REG); + flags = inb(dev->iobase + PCI9111_AI_TRIG_CTRL_REG); /* Mask off the EITS and TPST bits */ flags &= 0x9; switch (source) { case software: - flags |= PCI9111_EITS_INTERNAL | PCI9111_TPST_SOFTWARE_TRIGGER; break; case timer_pacer: - flags |= PCI9111_EITS_INTERNAL | PCI9111_TPST_TIMER_PACER; + flags |= PCI9111_AI_TRIG_CTRL_TPST; break; case external: - flags |= PCI9111_EITS_EXTERNAL; + flags |= PCI9111_AI_TRIG_CTRL_ETIS; break; } - outb(flags, dev->iobase + PCI9111_AI_MODE_CTRL_REG); + outb(flags, dev->iobase + PCI9111_AI_TRIG_CTRL_REG); } static void pci9111_pretrigger_set(struct comedi_device *dev, bool pretrigger) @@ -263,14 +252,14 @@ static void pci9111_pretrigger_set(struct comedi_device *dev, bool pretrigger) int flags; /* Read the current trigger mode control bits */ - flags = inb(dev->iobase + PCI9111_AI_MODE_INT_RB_REG); + flags = inb(dev->iobase + PCI9111_AI_TRIG_CTRL_REG); /* Mask off the PTRG bit */ flags &= 0x7; if (pretrigger) - flags |= PCI9111_PTRG_ON; + flags |= PCI9111_AI_TRIG_CTRL_PTRG; - outb(flags, dev->iobase + PCI9111_AI_MODE_CTRL_REG); + outb(flags, dev->iobase + PCI9111_AI_TRIG_CTRL_REG); } static void pci9111_autoscan_set(struct comedi_device *dev, bool autoscan) @@ -278,14 +267,14 @@ static void pci9111_autoscan_set(struct comedi_device *dev, bool autoscan) int flags; /* Read the current trigger mode control bits */ - flags = inb(dev->iobase + PCI9111_AI_MODE_INT_RB_REG); + flags = inb(dev->iobase + PCI9111_AI_TRIG_CTRL_REG); /* Mask off the ASCAN bit */ flags &= 0xe; if (autoscan) - flags |= PCI9111_ASCAN_ON; + flags |= PCI9111_AI_TRIG_CTRL_ASCAN; - outb(flags, dev->iobase + PCI9111_AI_MODE_CTRL_REG); + outb(flags, dev->iobase + PCI9111_AI_TRIG_CTRL_REG); } enum pci9111_ISC0_sources { @@ -305,7 +294,7 @@ static void pci9111_interrupt_source_set(struct comedi_device *dev, int flags; /* Read the current interrupt control bits */ - flags = inb(dev->iobase + PCI9111_AI_MODE_INT_RB_REG); + flags = inb(dev->iobase + PCI9111_AI_TRIG_CTRL_REG); /* Shift the bits so they are compatible with the write register */ flags >>= 4; /* Mask off the ISCx bits */ @@ -313,10 +302,10 @@ static void pci9111_interrupt_source_set(struct comedi_device *dev, /* Now set the new ISCx bits */ if (irq_0_source == irq_on_fifo_half_full) - flags |= PCI9111_ISC0_SET_IRQ_ON_FIFO_HALF_FULL; + flags |= PCI9111_INT_CTRL_ISC0; if (irq_1_source == irq_on_external_trigger) - flags |= PCI9111_ISC1_SET_IRQ_ON_EXT_TRG; + flags |= PCI9111_INT_CTRL_ISC1; outb(flags, dev->iobase + PCI9111_INT_CTRL_REG); } @@ -326,9 +315,9 @@ static void pci9111_fifo_reset(struct comedi_device *dev) unsigned long int_ctrl_reg = dev->iobase + PCI9111_INT_CTRL_REG; /* To reset the FIFO, set FFEN sequence as 0 -> 1 -> 0 */ - outb(PCI9111_FFEN_SET_FIFO_ENABLE, int_ctrl_reg); - outb(PCI9111_FFEN_SET_FIFO_DISABLE, int_ctrl_reg); - outb(PCI9111_FFEN_SET_FIFO_ENABLE, int_ctrl_reg); + outb(0, int_ctrl_reg); + outb(PCI9111_INT_CTRL_FFEN, int_ctrl_reg); + outb(0, int_ctrl_reg); } /* ------------------------------------------------------------------ */ @@ -576,8 +565,8 @@ static int pci9111_ai_do_cmd(struct comedi_device *dev, /* Set gain */ /* This is the same gain on every channel */ - outb(CR_RANGE(async_cmd->chanlist[0]) & PCI9111_RANGE_MASK, - dev->iobase + PCI9111_AI_RANGE_REG); + outb(CR_RANGE(async_cmd->chanlist[0]) & PCI9111_AI_RANGE_MASK, + dev->iobase + PCI9111_AI_RANGE_STAT_REG); /* Set counter */ @@ -711,10 +700,10 @@ static irqreturn_t pci9111_interrupt(int irq, void *p_device) (PLX9050_LINTI1_ENABLE | PLX9050_LINTI1_STATUS)) { /* Interrupt comes from fifo_half-full signal */ - status = inb(dev->iobase + PCI9111_RANGE_STATUS_REG); + status = inb(dev->iobase + PCI9111_AI_RANGE_STAT_REG); /* '0' means FIFO is full, data may have been lost */ - if (!(status & PCI9111_FIFO_FULL_MASK)) { + if (!(status & PCI9111_AI_STAT_FF_FF)) { spin_unlock_irqrestore(&dev->spinlock, irq_flags); comedi_error(dev, PCI9111_DRIVER_NAME " fifo overflow"); outb(0, dev->iobase + PCI9111_INT_CLR_REG); @@ -726,7 +715,7 @@ static irqreturn_t pci9111_interrupt(int irq, void *p_device) } /* '0' means FIFO is half-full */ - if (!(status & PCI9111_FIFO_HALF_FULL_MASK)) { + if (!(status & PCI9111_AI_STAT_FF_HF)) { unsigned int num_samples; unsigned int bytes_written = 0; @@ -833,24 +822,24 @@ static int pci9111_ai_insn_read(struct comedi_device *dev, outb(chan, dev->iobase + PCI9111_AI_CHANNEL_REG); - 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); + status = inb(dev->iobase + PCI9111_AI_RANGE_STAT_REG); + if ((status & PCI9111_AI_RANGE_MASK) != range) { + outb(range & PCI9111_AI_RANGE_MASK, + dev->iobase + PCI9111_AI_RANGE_STAT_REG); } pci9111_fifo_reset(dev); for (i = 0; i < insn->n; i++) { /* Generate a software trigger */ - outb(0, dev->iobase + PCI9111_SOFTWARE_TRIGGER_REG); + outb(0, dev->iobase + PCI9111_SOFT_TRIG_REG); timeout = PCI9111_AI_INSTANT_READ_TIMEOUT; while (timeout--) { - status = inb(dev->iobase + PCI9111_RANGE_STATUS_REG); + status = inb(dev->iobase + PCI9111_AI_RANGE_STAT_REG); /* '1' means FIFO is not empty */ - if (status & PCI9111_FIFO_EMPTY_MASK) + if (status & PCI9111_AI_STAT_FF_EF) goto conversion_done; }