aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging
diff options
context:
space:
mode:
authorH Hartley Sweeten <hsweeten@visionengravers.com>2013-01-23 14:45:01 -0500
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-01-25 15:00:30 -0500
commit262736988d445cb1613aa936bfe343261627f899 (patch)
treebd4e85e8de4e4a78588702b0faac87b12e149f5b /drivers/staging
parent5458f3e7b5a8707a49948857d69b2eb2fa5931ac (diff)
staging: comedi: addi_apci_3501: cleanup apci3501_reset()
Rename the CamelCase local variables. Refactor the code a bit to remove the need for some of the local variables. Add a couple defines to the register map to help make the code more concise. 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')
-rw-r--r--drivers/staging/comedi/drivers/addi_apci_3501.c27
1 files changed, 15 insertions, 12 deletions
diff --git a/drivers/staging/comedi/drivers/addi_apci_3501.c b/drivers/staging/comedi/drivers/addi_apci_3501.c
index 906c37a34c37..d687081c80c7 100644
--- a/drivers/staging/comedi/drivers/addi_apci_3501.c
+++ b/drivers/staging/comedi/drivers/addi_apci_3501.c
@@ -9,6 +9,9 @@
9#define APCI3501_AO_CTRL_BIPOLAR (1 << 0) 9#define APCI3501_AO_CTRL_BIPOLAR (1 << 0)
10#define APCI3501_AO_STATUS_READY (1 << 8) 10#define APCI3501_AO_STATUS_READY (1 << 8)
11#define APCI3501_AO_DATA_REG 0x04 11#define APCI3501_AO_DATA_REG 0x04
12#define APCI3501_AO_DATA_CHAN(x) ((x) << 0)
13#define APCI3501_AO_DATA_VAL(x) ((x) << 8)
14#define APCI3501_AO_DATA_BIPOLAR (1 << 31)
12#define APCI3501_AO_TRIG_SCS_REG 0x08 15#define APCI3501_AO_TRIG_SCS_REG 0x08
13#define APCI3501_DO_REG 0x40 16#define APCI3501_DO_REG 0x40
14#define APCI3501_DI_REG 0x50 17#define APCI3501_DI_REG 0x50
@@ -219,28 +222,28 @@ static irqreturn_t apci3501_interrupt(int irq, void *d)
219 222
220static int apci3501_reset(struct comedi_device *dev) 223static int apci3501_reset(struct comedi_device *dev)
221{ 224{
222 int i_Count = 0, i_temp = 0; 225 unsigned int val;
223 unsigned int ul_Command1 = 0, ul_Polarity; 226 int chan;
224 int ret; 227 int ret;
225 228
229 /* Reset all digital outputs to "0" */
226 outl(0x0, dev->iobase + APCI3501_DO_REG); 230 outl(0x0, dev->iobase + APCI3501_DO_REG);
227 outl(1, dev->iobase + APCI3501_AO_CTRL_STATUS_REG);
228 231
229 ul_Polarity = 0x80000000; 232 /* Default all analog outputs to 0V (bipolar) */
233 outl(APCI3501_AO_CTRL_BIPOLAR,
234 dev->iobase + APCI3501_AO_CTRL_STATUS_REG);
235 val = APCI3501_AO_DATA_BIPOLAR | APCI3501_AO_DATA_VAL(0);
230 236
231 for (i_Count = 0; i_Count <= 7; i_Count++) { 237 /* Set all analog output channels */
238 for (chan = 0; chan < 8; chan++) {
232 ret = apci3501_wait_for_dac(dev); 239 ret = apci3501_wait_for_dac(dev);
233 if (ret) { 240 if (ret) {
234 dev_warn(dev->class_dev, 241 dev_warn(dev->class_dev,
235 "%s: DAC not-ready for channel %i\n", 242 "%s: DAC not-ready for channel %i\n",
236 __func__, i_Count); 243 __func__, chan);
237 } else { 244 } else {
238 /* Output the Value on the output channels. */ 245 outl(val | APCI3501_AO_DATA_CHAN(chan),
239 ul_Command1 = 246 dev->iobase + APCI3501_AO_DATA_REG);
240 (unsigned int) ((unsigned int) (i_Count & 0xFF) |
241 (unsigned int) ((i_temp << 0x8) & 0x7FFFFF00L) |
242 (unsigned int) (ul_Polarity));
243 outl(ul_Command1, dev->iobase + APCI3501_AO_DATA_REG);
244 } 247 }
245 } 248 }
246 249