mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-24 13:13:57 +08:00
staging: comedi: adl_pci6208: cleanup pci6208_ao_winsn()
Use the defines for the register map to make the code a bit clearer. Shorten or rename some of the local variables for the same reason. Only the last value written to the DAC needs to be cached in the ao_readback variable. Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Cc: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
5c67df8b98
commit
8366404bf1
@ -82,21 +82,24 @@ static int pci6208_ao_winsn(struct comedi_device *dev,
|
||||
struct comedi_insn *insn, unsigned int *data)
|
||||
{
|
||||
struct pci6208_private *devpriv = dev->private;
|
||||
int i = 0, Data_Read;
|
||||
unsigned short chan = CR_CHAN(insn->chanspec);
|
||||
int chan = CR_CHAN(insn->chanspec);
|
||||
unsigned long invert = 1 << (16 - 1);
|
||||
unsigned long out_value;
|
||||
unsigned long value = 0;
|
||||
unsigned short status;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < insn->n; i++) {
|
||||
out_value = data[i] ^ invert;
|
||||
do {
|
||||
Data_Read = (inw(dev->iobase) & 1);
|
||||
} while (Data_Read);
|
||||
outw(out_value, dev->iobase + (0x02 * chan));
|
||||
devpriv->ao_readback[chan] = out_value;
|
||||
}
|
||||
value = data[i] ^ invert;
|
||||
|
||||
return i;
|
||||
do {
|
||||
status = inw(dev->iobase + PCI6208_AO_STATUS);
|
||||
} while (status & PCI6208_AO_STATUS_DATA_SEND);
|
||||
|
||||
outw(value, dev->iobase + PCI6208_AO_CONTROL(chan));
|
||||
}
|
||||
devpriv->ao_readback[chan] = value;
|
||||
|
||||
return insn->n;
|
||||
}
|
||||
|
||||
static int pci6208_ao_rinsn(struct comedi_device *dev,
|
||||
|
Loading…
Reference in New Issue
Block a user