The comedi core expects the (*insn_write) operations to write insn->n values and return the number of values actually wrote. Make this function work like the core expects. Also, remove the noise about invalid channels. Signed-off-by: H Hartley Sweeten <hsweeten@xxxxxxxxxxxxxxxxxxx> Cc: Ian Abbott <abbotti@xxxxxxxxx> Cc: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> --- drivers/staging/comedi/drivers/ni_labpc.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/drivers/staging/comedi/drivers/ni_labpc.c b/drivers/staging/comedi/drivers/ni_labpc.c index 0afcede..6461a46 100644 --- a/drivers/staging/comedi/drivers/ni_labpc.c +++ b/drivers/staging/comedi/drivers/ni_labpc.c @@ -1568,21 +1568,21 @@ static int labpc_eeprom_insn_write(struct comedi_device *dev, struct comedi_insn *insn, unsigned int *data) { - int channel = CR_CHAN(insn->chanspec); + unsigned int chan = CR_CHAN(insn->chanspec); int ret; + int i; - /* only allow writes to user area of eeprom */ - if (channel < 16 || channel > 127) { - dev_dbg(dev->class_dev, - "eeprom writes are only allowed to channels 16 through 127 (the pointer and user areas)\n"); + /* only allow writes to user area of eeprom */ + if (chan < 16 || chan > 127) return -EINVAL; - } - ret = labpc_eeprom_write(dev, channel, data[0]); - if (ret < 0) - return ret; + for (i = 0; i < insn->n; i++) { + ret = labpc_eeprom_write(dev, chan, data[i]); + if (ret) + return ret; + } - return 1; + return insn->n; } static int labpc_eeprom_insn_read(struct comedi_device *dev, -- 1.8.1.4 _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/devel