From 901be1bbc8afa7406589d7a4a3ec2988bd184f4a Mon Sep 17 00:00:00 2001 From: H Hartley Sweeten Date: Tue, 13 Nov 2012 13:47:27 -0700 Subject: [PATCH] --- yaml --- r: 337886 b: refs/heads/master c: 0ff1fa77687052ff36aa141317c45f737057ce5d h: refs/heads/master v: v3 --- [refs] | 2 +- .../staging/comedi/drivers/addi_apci_1516.c | 38 +++++++++---------- 2 files changed, 18 insertions(+), 22 deletions(-) diff --git a/[refs] b/[refs] index ac325c53a30c..0cde019699e6 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 158b64973e7854cddefb1f56c3758ed8382f2bc8 +refs/heads/master: 0ff1fa77687052ff36aa141317c45f737057ce5d diff --git a/trunk/drivers/staging/comedi/drivers/addi_apci_1516.c b/trunk/drivers/staging/comedi/drivers/addi_apci_1516.c index 856bb192ca05..e3e4b0f0f5b0 100644 --- a/trunk/drivers/staging/comedi/drivers/addi_apci_1516.c +++ b/trunk/drivers/staging/comedi/drivers/addi_apci_1516.c @@ -52,7 +52,7 @@ #define APCI1516_WDOG_RELOAD_REG 0x04 #define APCI1516_WDOG_CTRL_REG 0x0c #define APCI1516_WDOG_CTRL_ENABLE (1 << 0) -#define APCI1516_WDOG_CTRL_SOFT_TRIG (1 << 9) +#define APCI1516_WDOG_CTRL_SW_TRIG (1 << 9) #define APCI1516_WDOG_STATUS_REG 0x10 struct apci1516_boardinfo { @@ -158,29 +158,25 @@ static int apci1516_wdog_insn_config(struct comedi_device *dev, return insn->n; } -static int i_APCI1516_StartStopWriteWatchdog(struct comedi_device *dev, - struct comedi_subdevice *s, - struct comedi_insn *insn, - unsigned int *data) +static int apci1516_wdog_insn_write(struct comedi_device *dev, + struct comedi_subdevice *s, + struct comedi_insn *insn, + unsigned int *data) { struct apci1516_private *devpriv = dev->private; + int i; - switch (data[0]) { - case 0: /* stop the watchdog */ - outw(0x0, devpriv->wdog_iobase + APCI1516_WDOG_CTRL_REG); - break; - case 1: /* start the watchdog */ - outw(APCI1516_WDOG_CTRL_ENABLE, - devpriv->wdog_iobase + APCI1516_WDOG_CTRL_REG); - break; - case 2: /* Software trigger */ - outw(APCI1516_WDOG_CTRL_ENABLE | APCI1516_WDOG_CTRL_SOFT_TRIG, - devpriv->wdog_iobase + APCI1516_WDOG_CTRL_REG); - break; - default: - printk("\nSpecified functionality does not exist\n"); + if (devpriv->ctrl == 0) { + dev_warn(dev->class_dev, "watchdog is disabled\n"); return -EINVAL; - } /* switch(data[0]) */ + } + + /* "ping" the watchdog */ + for (i = 0; i < insn->n; i++) { + outw(devpriv->ctrl | APCI1516_WDOG_CTRL_SW_TRIG, + devpriv->wdog_iobase + APCI1516_WDOG_CTRL_REG); + } + return insn->n; } @@ -290,7 +286,7 @@ static int __devinit apci1516_auto_attach(struct comedi_device *dev, s->subdev_flags = SDF_WRITEABLE; s->n_chan = 1; s->maxdata = 0xff; - s->insn_write = i_APCI1516_StartStopWriteWatchdog; + s->insn_write = apci1516_wdog_insn_write; s->insn_read = apci1516_wdog_insn_read; s->insn_config = apci1516_wdog_insn_config; } else {