From 939cfc55ebe146d70845462ff8eb7b51c2f72041 Mon Sep 17 00:00:00 2001 From: H Hartley Sweeten Date: Wed, 23 Jan 2013 12:45:01 -0700 Subject: [PATCH] --- yaml --- r: 354175 b: refs/heads/master c: 262736988d445cb1613aa936bfe343261627f899 h: refs/heads/master i: 354173: bd50427e1dda00e0cd492f082db54c5528717f3b 354171: a2976cdbdaed7c42ae61d19316328eae2d13d36e 354167: 5cf4db9dc52303ff4008d2a4c2a0104a5794328f 354159: be7a5991c4407ffa02d5391367be8a539cbda8a3 354143: 2e5b46f80ad7ff3ba8b91bb08afffe4c0621adbd 354111: 6ebbaea3bb73423d6130bfe0aa5d1f1cc67113be 354047: da6a08ed8976cedd0527dad8298231bf61147b37 v: v3 --- [refs] | 2 +- .../staging/comedi/drivers/addi_apci_3501.c | 27 ++++++++++--------- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/[refs] b/[refs] index 95f11896dac1..78c74ed5db26 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 5458f3e7b5a8707a49948857d69b2eb2fa5931ac +refs/heads/master: 262736988d445cb1613aa936bfe343261627f899 diff --git a/trunk/drivers/staging/comedi/drivers/addi_apci_3501.c b/trunk/drivers/staging/comedi/drivers/addi_apci_3501.c index 906c37a34c37..d687081c80c7 100644 --- a/trunk/drivers/staging/comedi/drivers/addi_apci_3501.c +++ b/trunk/drivers/staging/comedi/drivers/addi_apci_3501.c @@ -9,6 +9,9 @@ #define APCI3501_AO_CTRL_BIPOLAR (1 << 0) #define APCI3501_AO_STATUS_READY (1 << 8) #define APCI3501_AO_DATA_REG 0x04 +#define APCI3501_AO_DATA_CHAN(x) ((x) << 0) +#define APCI3501_AO_DATA_VAL(x) ((x) << 8) +#define APCI3501_AO_DATA_BIPOLAR (1 << 31) #define APCI3501_AO_TRIG_SCS_REG 0x08 #define APCI3501_DO_REG 0x40 #define APCI3501_DI_REG 0x50 @@ -219,28 +222,28 @@ static irqreturn_t apci3501_interrupt(int irq, void *d) static int apci3501_reset(struct comedi_device *dev) { - int i_Count = 0, i_temp = 0; - unsigned int ul_Command1 = 0, ul_Polarity; + unsigned int val; + int chan; int ret; + /* Reset all digital outputs to "0" */ outl(0x0, dev->iobase + APCI3501_DO_REG); - outl(1, dev->iobase + APCI3501_AO_CTRL_STATUS_REG); - ul_Polarity = 0x80000000; + /* Default all analog outputs to 0V (bipolar) */ + outl(APCI3501_AO_CTRL_BIPOLAR, + dev->iobase + APCI3501_AO_CTRL_STATUS_REG); + val = APCI3501_AO_DATA_BIPOLAR | APCI3501_AO_DATA_VAL(0); - for (i_Count = 0; i_Count <= 7; i_Count++) { + /* Set all analog output channels */ + for (chan = 0; chan < 8; chan++) { ret = apci3501_wait_for_dac(dev); if (ret) { dev_warn(dev->class_dev, "%s: DAC not-ready for channel %i\n", - __func__, i_Count); + __func__, chan); } else { - /* Output the Value on the output channels. */ - ul_Command1 = - (unsigned int) ((unsigned int) (i_Count & 0xFF) | - (unsigned int) ((i_temp << 0x8) & 0x7FFFFF00L) | - (unsigned int) (ul_Polarity)); - outl(ul_Command1, dev->iobase + APCI3501_AO_DATA_REG); + outl(val | APCI3501_AO_DATA_CHAN(chan), + dev->iobase + APCI3501_AO_DATA_REG); } }