From 9e041d2800536ec63a1f3fb203429c27f9bf7b7f Mon Sep 17 00:00:00 2001 From: H Hartley Sweeten Date: Mon, 4 Feb 2013 16:44:17 -0700 Subject: [PATCH] --- yaml --- r: 354380 b: refs/heads/master c: 6a911d8aa54bc79256e766580a19bbd91e76d48f h: refs/heads/master v: v3 --- [refs] | 2 +- .../staging/comedi/drivers/quatech_daqp_cs.c | 26 ++++++++++++------- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/[refs] b/[refs] index 6aac10aeef82..b6cecbbfae1f 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 62100fefbc4f7f45149df1f537de17b4acf01391 +refs/heads/master: 6a911d8aa54bc79256e766580a19bbd91e76d48f diff --git a/trunk/drivers/staging/comedi/drivers/quatech_daqp_cs.c b/trunk/drivers/staging/comedi/drivers/quatech_daqp_cs.c index dbb8593a8db8..f11104252c96 100644 --- a/trunk/drivers/staging/comedi/drivers/quatech_daqp_cs.c +++ b/trunk/drivers/staging/comedi/drivers/quatech_daqp_cs.c @@ -686,20 +686,28 @@ static int daqp_di_insn_bits(struct comedi_device *dev, return insn->n; } -/* Digital output routine */ - -static int daqp_do_insn_write(struct comedi_device *dev, - struct comedi_subdevice *s, - struct comedi_insn *insn, unsigned int *data) +static int daqp_do_insn_bits(struct comedi_device *dev, + struct comedi_subdevice *s, + struct comedi_insn *insn, + unsigned int *data) { struct daqp_private *devpriv = dev->private; + unsigned int mask = data[0]; + unsigned int bits = data[1]; if (devpriv->stop) return -EIO; - outw(data[0] & 0xf, dev->iobase + DAQP_DIGITAL_IO); + if (mask) { + s->state &= ~mask; + s->state |= (bits & mask); - return 1; + outb(s->state, dev->iobase + DAQP_DIGITAL_IO); + } + + data[1] = s->state; + + return insn->n; } static int daqp_auto_attach(struct comedi_device *dev, @@ -764,8 +772,8 @@ static int daqp_auto_attach(struct comedi_device *dev, s->type = COMEDI_SUBD_DO; s->subdev_flags = SDF_WRITEABLE; s->n_chan = 1; - s->len_chanlist = 1; - s->insn_write = daqp_do_insn_write; + s->maxdata = 1; + s->insn_bits = daqp_do_insn_bits; return 0; }