diff options
author | H Hartley Sweeten <hsweeten@visionengravers.com> | 2013-01-23 12:43:35 -0700 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2013-01-25 12:00:30 -0800 |
commit | 1bc5062a9796b2908f5c21c2bc3f50add7431fb8 (patch) | |
tree | 911f6b7ce4bb4aa00cb507950cc95f7a181e1086 /drivers/staging/comedi/drivers/addi_apci_3501.c | |
parent | staging: comedi: addi_apci_3501: remove dependency on addi_common.h (diff) | |
download | linux-dev-1bc5062a9796b2908f5c21c2bc3f50add7431fb8.tar.xz linux-dev-1bc5062a9796b2908f5c21c2bc3f50add7431fb8.zip |
staging: comedi: addi_apci_3501: start defining i/o map
Create, and use, defines for the analog output and digital i/o
registers.
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>
Diffstat (limited to 'drivers/staging/comedi/drivers/addi_apci_3501.c')
-rw-r--r-- | drivers/staging/comedi/drivers/addi_apci_3501.c | 30 |
1 files changed, 19 insertions, 11 deletions
diff --git a/drivers/staging/comedi/drivers/addi_apci_3501.c b/drivers/staging/comedi/drivers/addi_apci_3501.c index d345daa00f48..6207622467a6 100644 --- a/drivers/staging/comedi/drivers/addi_apci_3501.c +++ b/drivers/staging/comedi/drivers/addi_apci_3501.c @@ -2,6 +2,17 @@ #include "comedi_fc.h" #include "amcc_s5933.h" +/* + * PCI bar 1 register I/O map + */ +#define APCI3501_AO_CTRL_STATUS_REG 0x00 +#define APCI3501_AO_CTRL_BIPOLAR (1 << 0) +#define APCI3501_AO_STATUS_READY (1 << 8) +#define APCI3501_AO_DATA_REG 0x04 +#define APCI3501_AO_TRIG_SCS_REG 0x08 +#define APCI3501_DO_REG 0x40 +#define APCI3501_DI_REG 0x50 + struct apci3501_private { int i_IobaseAmcc; struct task_struct *tsk_Current; @@ -36,7 +47,7 @@ static int apci3501_di_insn_bits(struct comedi_device *dev, struct comedi_insn *insn, unsigned int *data) { - data[1] = inl(dev->iobase + APCI3501_DIGITAL_IP) & 0x3; + data[1] = inl(dev->iobase + APCI3501_DI_REG) & 0x3; return insn->n; } @@ -49,12 +60,12 @@ static int apci3501_do_insn_bits(struct comedi_device *dev, unsigned int mask = data[0]; unsigned int bits = data[1]; - s->state = inl(dev->iobase + APCI3501_DIGITAL_OP); + s->state = inl(dev->iobase + APCI3501_DO_REG); if (mask) { s->state &= ~mask; s->state |= (bits & mask); - outl(s->state, dev->iobase + APCI3501_DIGITAL_OP); + outl(s->state, dev->iobase + APCI3501_DO_REG); } data[1] = s->state; @@ -193,18 +204,17 @@ static int apci3501_reset(struct comedi_device *dev) int i_Count = 0, i_temp = 0; unsigned int ul_Command1 = 0, ul_Polarity, ul_DAC_Ready = 0; - outl(0x0, dev->iobase + APCI3501_DIGITAL_OP); - outl(1, dev->iobase + APCI3501_ANALOG_OUTPUT + - APCI3501_AO_VOLT_MODE); + outl(0x0, dev->iobase + APCI3501_DO_REG); + outl(1, dev->iobase + APCI3501_AO_CTRL_STATUS_REG); ul_Polarity = 0x80000000; for (i_Count = 0; i_Count <= 7; i_Count++) { - ul_DAC_Ready = inl(dev->iobase + APCI3501_ANALOG_OUTPUT); + ul_DAC_Ready = inl(dev->iobase + APCI3501_AO_CTRL_STATUS_REG); while (ul_DAC_Ready == 0) { ul_DAC_Ready = - inl(dev->iobase + APCI3501_ANALOG_OUTPUT); + inl(dev->iobase + APCI3501_AO_CTRL_STATUS_REG); ul_DAC_Ready = (ul_DAC_Ready >> 8) & 1; } @@ -214,9 +224,7 @@ static int apci3501_reset(struct comedi_device *dev) (unsigned int) ((unsigned int) (i_Count & 0xFF) | (unsigned int) ((i_temp << 0x8) & 0x7FFFFF00L) | (unsigned int) (ul_Polarity)); - outl(ul_Command1, - dev->iobase + APCI3501_ANALOG_OUTPUT + - APCI3501_AO_PROG); + outl(ul_Command1, dev->iobase + APCI3501_AO_DATA_REG); } } |