diff options
Diffstat (limited to 'drivers/staging/comedi/drivers')
25 files changed, 89 insertions, 88 deletions
diff --git a/drivers/staging/comedi/drivers/adv_pci1710.c b/drivers/staging/comedi/drivers/adv_pci1710.c index 6a93b04f1fdf..dbff0f7e7cf5 100644 --- a/drivers/staging/comedi/drivers/adv_pci1710.c +++ b/drivers/staging/comedi/drivers/adv_pci1710.c @@ -317,7 +317,7 @@ static int pci1710_ai_read_sample(struct comedi_device *dev, chan = sample >> 12; if (chan != devpriv->act_chanlist[cur_chan]) { dev_err(dev->class_dev, - "A/D data droput: received from channel %d, expected %d\n", + "A/D data dropout: received from channel %d, expected %d\n", chan, devpriv->act_chanlist[cur_chan]); return -ENODATA; } diff --git a/drivers/staging/comedi/drivers/amplc_dio200_common.c b/drivers/staging/comedi/drivers/amplc_dio200_common.c index 8697dc02ffb4..0b2f04b02ebc 100644 --- a/drivers/staging/comedi/drivers/amplc_dio200_common.c +++ b/drivers/staging/comedi/drivers/amplc_dio200_common.c @@ -46,18 +46,6 @@ static unsigned char clk_gat_sce(unsigned int which, unsigned int chan, ((source & 030) << 3) | (source & 007); } -static unsigned char clk_sce(unsigned int which, unsigned int chan, - unsigned int source) -{ - return clk_gat_sce(which, chan, source); -} - -static unsigned char gat_sce(unsigned int which, unsigned int chan, - unsigned int source) -{ - return clk_gat_sce(which, chan, source); -} - /* * Periods of the internal clock sources in nanoseconds. */ @@ -489,7 +477,7 @@ static void dio200_subdev_8254_set_gate_src(struct comedi_device *dev, unsigned int offset = dio200_subdev_8254_offset(dev, s); dio200_write8(dev, DIO200_GAT_SCE(offset >> 3), - gat_sce((offset >> 2) & 1, chan, src)); + clk_gat_sce((offset >> 2) & 1, chan, src)); } static void dio200_subdev_8254_set_clock_src(struct comedi_device *dev, @@ -500,7 +488,7 @@ static void dio200_subdev_8254_set_clock_src(struct comedi_device *dev, unsigned int offset = dio200_subdev_8254_offset(dev, s); dio200_write8(dev, DIO200_CLK_SCE(offset >> 3), - clk_sce((offset >> 2) & 1, chan, src)); + clk_gat_sce((offset >> 2) & 1, chan, src)); } static int dio200_subdev_8254_config(struct comedi_device *dev, diff --git a/drivers/staging/comedi/drivers/amplc_pci230.c b/drivers/staging/comedi/drivers/amplc_pci230.c index 08ffe26c5d43..f7e673121864 100644 --- a/drivers/staging/comedi/drivers/amplc_pci230.c +++ b/drivers/staging/comedi/drivers/amplc_pci230.c @@ -2330,7 +2330,8 @@ static irqreturn_t pci230_interrupt(int irq, void *d) devpriv->intr_running = false; spin_unlock_irqrestore(&devpriv->isr_spinlock, irqflags); - comedi_handle_events(dev, s_ao); + if (s_ao) + comedi_handle_events(dev, s_ao); comedi_handle_events(dev, s_ai); return IRQ_HANDLED; @@ -2464,7 +2465,7 @@ static int pci230_auto_attach(struct comedi_device *dev, devpriv->adcg = 0; devpriv->adccon = PCI230_ADC_TRIG_NONE | PCI230_ADC_IM_SE | PCI230_ADC_IR_BIP; - outw(1 << 0, devpriv->daqio + PCI230_ADCEN); + outw(BIT(0), devpriv->daqio + PCI230_ADCEN); outw(devpriv->adcg, devpriv->daqio + PCI230_ADCG); outw(devpriv->adccon | PCI230_ADC_FIFO_RESET, devpriv->daqio + PCI230_ADCCON); diff --git a/drivers/staging/comedi/drivers/comedi_isadma.c b/drivers/staging/comedi/drivers/comedi_isadma.c index b77dc8d5d3ff..c729094298c2 100644 --- a/drivers/staging/comedi/drivers/comedi_isadma.c +++ b/drivers/staging/comedi/drivers/comedi_isadma.c @@ -172,6 +172,19 @@ struct comedi_isadma *comedi_isadma_alloc(struct comedi_device *dev, goto no_dma; dma->desc = desc; dma->n_desc = n_desc; + if (dev->hw_dev) { + dma->dev = dev->hw_dev; + } else { + /* Fall back to using the "class" device. */ + if (!dev->class_dev) + goto no_dma; + /* Need 24-bit mask for ISA DMA. */ + if (dma_coerce_mask_and_coherent(dev->class_dev, + DMA_BIT_MASK(24))) { + goto no_dma; + } + dma->dev = dev->class_dev; + } dma_chans[0] = dma_chan1; if (dma_chan2 == 0 || dma_chan2 == dma_chan1) @@ -192,7 +205,7 @@ struct comedi_isadma *comedi_isadma_alloc(struct comedi_device *dev, desc = &dma->desc[i]; desc->chan = dma_chans[i]; desc->maxsize = maxsize; - desc->virt_addr = dma_alloc_coherent(NULL, desc->maxsize, + desc->virt_addr = dma_alloc_coherent(dma->dev, desc->maxsize, &desc->hw_addr, GFP_KERNEL); if (!desc->virt_addr) @@ -224,7 +237,7 @@ void comedi_isadma_free(struct comedi_isadma *dma) for (i = 0; i < dma->n_desc; i++) { desc = &dma->desc[i]; if (desc->virt_addr) - dma_free_coherent(NULL, desc->maxsize, + dma_free_coherent(dma->dev, desc->maxsize, desc->virt_addr, desc->hw_addr); } diff --git a/drivers/staging/comedi/drivers/comedi_isadma.h b/drivers/staging/comedi/drivers/comedi_isadma.h index 2bd1329d727f..9d2b12db7e6e 100644 --- a/drivers/staging/comedi/drivers/comedi_isadma.h +++ b/drivers/staging/comedi/drivers/comedi_isadma.h @@ -10,6 +10,7 @@ #include <linux/types.h> struct comedi_device; +struct device; /* * These are used to avoid issues when <asm/dma.h> and the DMA_MODE_ @@ -38,6 +39,7 @@ struct comedi_isadma_desc { /** * struct comedi_isadma - ISA DMA data + * @dev: device to allocate non-coherent memory for * @desc: cookie for each DMA buffer * @n_desc: the number of cookies * @cur_dma: the current cookie in use @@ -45,6 +47,7 @@ struct comedi_isadma_desc { * @chan2: the second DMA channel requested */ struct comedi_isadma { + struct device *dev; struct comedi_isadma_desc *desc; int n_desc; int cur_dma; diff --git a/drivers/staging/comedi/drivers/das08.c b/drivers/staging/comedi/drivers/das08.c index 327ecf9aea30..65e5f2e6c122 100644 --- a/drivers/staging/comedi/drivers/das08.c +++ b/drivers/staging/comedi/drivers/das08.c @@ -236,9 +236,9 @@ static int das08_ai_insn_read(struct comedi_device *dev, * COMEDI 16-bit bipolar data value for 0V is 0x8000. */ if (msb & 0x80) - data[n] = (1 << 15) + magnitude; + data[n] = BIT(15) + magnitude; else - data[n] = (1 << 15) - magnitude; + data[n] = BIT(15) - magnitude; } else { dev_err(dev->class_dev, "bug! unknown ai encoding\n"); return -1; diff --git a/drivers/staging/comedi/drivers/dt2811.c b/drivers/staging/comedi/drivers/dt2811.c index 05207a519755..8a1f9efe7d4e 100644 --- a/drivers/staging/comedi/drivers/dt2811.c +++ b/drivers/staging/comedi/drivers/dt2811.c @@ -52,7 +52,7 @@ #define DT2811_ADCSR_ADBUSY BIT(5) /* r 1=A/D busy */ #define DT2811_ADCSR_CLRERROR BIT(4) #define DT2811_ADCSR_DMAENB BIT(3) /* r/w 1=dma ena */ -#define DT2811_ADCSR_INTENB BIT(2) /* r/w 1=interupts ena */ +#define DT2811_ADCSR_INTENB BIT(2) /* r/w 1=interrupts ena */ #define DT2811_ADCSR_ADMODE(x) (((x) & 0x3) << 0) #define DT2811_ADGCR_REG 0x01 /* r/w A/D Gain/Channel */ diff --git a/drivers/staging/comedi/drivers/dt282x.c b/drivers/staging/comedi/drivers/dt282x.c index 3be927f1d3a9..e15e33ed94ae 100644 --- a/drivers/staging/comedi/drivers/dt282x.c +++ b/drivers/staging/comedi/drivers/dt282x.c @@ -557,7 +557,8 @@ static irqreturn_t dt282x_interrupt(int irq, void *d) } #endif comedi_handle_events(dev, s); - comedi_handle_events(dev, s_ao); + if (s_ao) + comedi_handle_events(dev, s_ao); return IRQ_RETVAL(handled); } diff --git a/drivers/staging/comedi/drivers/dt9812.c b/drivers/staging/comedi/drivers/dt9812.c index 9f165f1cefa5..634f57730c1e 100644 --- a/drivers/staging/comedi/drivers/dt9812.c +++ b/drivers/staging/comedi/drivers/dt9812.c @@ -835,11 +835,8 @@ static void dt9812_detach(struct comedi_device *dev) if (!devpriv) return; - mutex_lock(&devpriv->mut); - + mutex_destroy(&devpriv->mut); usb_set_intfdata(intf, NULL); - - mutex_unlock(&devpriv->mut); } static struct comedi_driver dt9812_driver = { diff --git a/drivers/staging/comedi/drivers/dyna_pci10xx.c b/drivers/staging/comedi/drivers/dyna_pci10xx.c index e50536731d11..c224422bb126 100644 --- a/drivers/staging/comedi/drivers/dyna_pci10xx.c +++ b/drivers/staging/comedi/drivers/dyna_pci10xx.c @@ -54,7 +54,7 @@ static int dyna_pci10xx_ai_eoc(struct comedi_device *dev, unsigned int status; status = inw_p(dev->iobase); - if (status & (1 << 15)) + if (status & BIT(15)) return 0; return -EBUSY; } @@ -106,10 +106,6 @@ static int dyna_pci10xx_insn_write_ao(struct comedi_device *dev, { struct dyna_pci10xx_private *devpriv = dev->private; int n; - unsigned int chan, range; - - chan = CR_CHAN(insn->chanspec); - range = range_codes_pci1050_ai[CR_RANGE((insn->chanspec))]; mutex_lock(&devpriv->mutex); for (n = 0; n < insn->n; n++) { @@ -194,17 +190,15 @@ static int dyna_pci10xx_auto_attach(struct comedi_device *dev, s->n_chan = 16; s->maxdata = 0x0FFF; s->range_table = &range_pci1050_ai; - s->len_chanlist = 16; s->insn_read = dyna_pci10xx_insn_read_ai; /* analog output */ s = &dev->subdevices[1]; s->type = COMEDI_SUBD_AO; s->subdev_flags = SDF_WRITABLE; - s->n_chan = 16; + s->n_chan = 1; s->maxdata = 0x0FFF; s->range_table = &range_unipolar10; - s->len_chanlist = 16; s->insn_write = dyna_pci10xx_insn_write_ao; /* digital input */ @@ -214,7 +208,6 @@ static int dyna_pci10xx_auto_attach(struct comedi_device *dev, s->n_chan = 16; s->maxdata = 1; s->range_table = &range_digital; - s->len_chanlist = 16; s->insn_bits = dyna_pci10xx_di_insn_bits; /* digital output */ @@ -224,7 +217,6 @@ static int dyna_pci10xx_auto_attach(struct comedi_device *dev, s->n_chan = 16; s->maxdata = 1; s->range_table = &range_digital; - s->len_chanlist = 16; s->state = 0; s->insn_bits = dyna_pci10xx_do_insn_bits; diff --git a/drivers/staging/comedi/drivers/mite.c b/drivers/staging/comedi/drivers/mite.c index 61e03ad84123..cc9fc263573e 100644 --- a/drivers/staging/comedi/drivers/mite.c +++ b/drivers/staging/comedi/drivers/mite.c @@ -371,7 +371,6 @@ static unsigned int mite_get_status(struct mite_channel *mite_chan) writel(CHOR_CLRDONE, mite->mmio + MITE_CHOR(mite_chan->channel)); } - mmiowb(); spin_unlock_irqrestore(&mite->lock, flags); return status; } @@ -451,7 +450,6 @@ void mite_dma_arm(struct mite_channel *mite_chan) mite_chan->done = 0; /* arm */ writel(CHOR_START, mite->mmio + MITE_CHOR(mite_chan->channel)); - mmiowb(); spin_unlock_irqrestore(&mite->lock, flags); } EXPORT_SYMBOL_GPL(mite_dma_arm); @@ -560,7 +558,14 @@ void mite_prep_dma(struct mite_channel *mite_chan, } EXPORT_SYMBOL_GPL(mite_prep_dma); -static struct mite_channel *__mite_request_channel(struct mite *mite, +/** + * mite_request_channel_in_range() - Request a MITE dma channel. + * @mite: MITE device. + * @ring: MITE dma ring. + * @min_channel: minimum channel index to use. + * @max_channel: maximum channel index to use. + */ +struct mite_channel *mite_request_channel_in_range(struct mite *mite, struct mite_ring *ring, unsigned int min_channel, unsigned int max_channel) @@ -585,21 +590,6 @@ static struct mite_channel *__mite_request_channel(struct mite *mite, spin_unlock_irqrestore(&mite->lock, flags); return mite_chan; } - -/** - * mite_request_channel_in_range() - Request a MITE dma channel. - * @mite: MITE device. - * @ring: MITE dma ring. - * @min_channel: minimum channel index to use. - * @max_channel: maximum channel index to use. - */ -struct mite_channel *mite_request_channel_in_range(struct mite *mite, - struct mite_ring *ring, - unsigned int min_channel, - unsigned int max_channel) -{ - return __mite_request_channel(mite, ring, min_channel, max_channel); -} EXPORT_SYMBOL_GPL(mite_request_channel_in_range); /** @@ -610,7 +600,8 @@ EXPORT_SYMBOL_GPL(mite_request_channel_in_range); struct mite_channel *mite_request_channel(struct mite *mite, struct mite_ring *ring) { - return __mite_request_channel(mite, ring, 0, mite->num_channels - 1); + return mite_request_channel_in_range(mite, ring, 0, + mite->num_channels - 1); } EXPORT_SYMBOL_GPL(mite_request_channel); @@ -638,7 +629,6 @@ void mite_release_channel(struct mite_channel *mite_chan) CHCR_CLR_LC_IE | CHCR_CLR_CONT_RB_IE, mite->mmio + MITE_CHCR(mite_chan->channel)); mite_chan->ring = NULL; - mmiowb(); } spin_unlock_irqrestore(&mite->lock, flags); } diff --git a/drivers/staging/comedi/drivers/ni_660x.c b/drivers/staging/comedi/drivers/ni_660x.c index 405573e927cf..4ee9b260eab0 100644 --- a/drivers/staging/comedi/drivers/ni_660x.c +++ b/drivers/staging/comedi/drivers/ni_660x.c @@ -320,7 +320,6 @@ static inline void ni_660x_set_dma_channel(struct comedi_device *dev, ni_660x_write(dev, chip, devpriv->dma_cfg[chip] | NI660X_DMA_CFG_RESET(mite_channel), NI660X_DMA_CFG); - mmiowb(); } static inline void ni_660x_unset_dma_channel(struct comedi_device *dev, @@ -333,7 +332,6 @@ static inline void ni_660x_unset_dma_channel(struct comedi_device *dev, devpriv->dma_cfg[chip] &= ~NI660X_DMA_CFG_SEL_MASK(mite_channel); devpriv->dma_cfg[chip] |= NI660X_DMA_CFG_SEL_NONE(mite_channel); ni_660x_write(dev, chip, devpriv->dma_cfg[chip], NI660X_DMA_CFG); - mmiowb(); } static int ni_660x_request_mite_channel(struct comedi_device *dev, diff --git a/drivers/staging/comedi/drivers/ni_at_ao.c b/drivers/staging/comedi/drivers/ni_at_ao.c index aad0b295ee2b..814895d01ffa 100644 --- a/drivers/staging/comedi/drivers/ni_at_ao.c +++ b/drivers/staging/comedi/drivers/ni_at_ao.c @@ -244,7 +244,7 @@ static int atao_calib_insn_write(struct comedi_device *dev, /* write the channel and last data value to the caldac */ /* clock the bitstring to the caldac; MSB -> LSB */ - for (bit = 1 << 10; bit; bit >>= 1) { + for (bit = BIT(10); bit; bit >>= 1) { bits = (bit & bitstring) ? ATAO_CFG2_SDATA : 0; outw(bits, dev->iobase + ATAO_CFG2_REG); diff --git a/drivers/staging/comedi/drivers/ni_daq_700.c b/drivers/staging/comedi/drivers/ni_daq_700.c index b9e525b9beb9..81fd4c26a16f 100644 --- a/drivers/staging/comedi/drivers/ni_daq_700.c +++ b/drivers/staging/comedi/drivers/ni_daq_700.c @@ -239,7 +239,7 @@ static int daq700_auto_attach(struct comedi_device *dev, s->type = COMEDI_SUBD_AI; s->subdev_flags = SDF_READABLE | SDF_GROUND | SDF_DIFF; s->n_chan = 16; - s->maxdata = (1 << 12) - 1; + s->maxdata = BIT(12) - 1; s->range_table = &range_daq700_ai; s->insn_read = daq700_ai_rinsn; daq700_ai_config(dev, s); diff --git a/drivers/staging/comedi/drivers/ni_mio_common.c b/drivers/staging/comedi/drivers/ni_mio_common.c index b04dad8c7092..c175227009f1 100644 --- a/drivers/staging/comedi/drivers/ni_mio_common.c +++ b/drivers/staging/comedi/drivers/ni_mio_common.c @@ -547,7 +547,6 @@ static inline void ni_set_bitfield(struct comedi_device *dev, int reg, reg); break; } - mmiowb(); spin_unlock_irqrestore(&devpriv->soft_reg_copy_lock, flags); } @@ -2110,6 +2109,7 @@ static int ni_ai_cmdtest(struct comedi_device *dev, struct comedi_subdevice *s, if (cmd->scan_begin_src == TRIG_TIMER) { unsigned int tmp = cmd->scan_begin_arg; + cmd->scan_begin_arg = ni_timer_to_ns(dev, ni_ns_to_timer(dev, cmd->scan_begin_arg, @@ -2120,6 +2120,7 @@ static int ni_ai_cmdtest(struct comedi_device *dev, struct comedi_subdevice *s, if (cmd->convert_src == TRIG_TIMER) { if (!devpriv->is_611x && !devpriv->is_6143) { unsigned int tmp = cmd->convert_arg; + cmd->convert_arg = ni_timer_to_ns(dev, ni_ns_to_timer(dev, cmd->convert_arg, @@ -4398,9 +4399,13 @@ static int ni_calib_insn_write(struct comedi_device *dev, struct comedi_insn *insn, unsigned int *data) { - ni_write_caldac(dev, CR_CHAN(insn->chanspec), data[0]); + if (insn->n) { + /* only bother writing the last sample to the channel */ + ni_write_caldac(dev, CR_CHAN(insn->chanspec), + data[insn->n - 1]); + } - return 1; + return insn->n; } static int ni_calib_insn_read(struct comedi_device *dev, @@ -4409,10 +4414,12 @@ static int ni_calib_insn_read(struct comedi_device *dev, unsigned int *data) { struct ni_private *devpriv = dev->private; + unsigned int i; - data[0] = devpriv->caldacs[CR_CHAN(insn->chanspec)]; + for (i = 0; i < insn->n; i++) + data[0] = devpriv->caldacs[CR_CHAN(insn->chanspec)]; - return 1; + return insn->n; } static void caldac_setup(struct comedi_device *dev, struct comedi_subdevice *s) @@ -4505,9 +4512,15 @@ static int ni_eeprom_insn_read(struct comedi_device *dev, struct comedi_insn *insn, unsigned int *data) { - data[0] = ni_read_eeprom(dev, CR_CHAN(insn->chanspec)); + unsigned int val; + unsigned int i; - return 1; + if (insn->n) { + val = ni_read_eeprom(dev, CR_CHAN(insn->chanspec)); + for (i = 0; i < insn->n; i++) + data[i] = val; + } + return insn->n; } static int ni_m_series_eeprom_insn_read(struct comedi_device *dev, @@ -4516,10 +4529,12 @@ static int ni_m_series_eeprom_insn_read(struct comedi_device *dev, unsigned int *data) { struct ni_private *devpriv = dev->private; + unsigned int i; - data[0] = devpriv->eeprom_buffer[CR_CHAN(insn->chanspec)]; + for (i = 0; i < insn->n; i++) + data[i] = devpriv->eeprom_buffer[CR_CHAN(insn->chanspec)]; - return 1; + return insn->n; } static unsigned int ni_old_get_pfi_routing(struct comedi_device *dev, @@ -4784,7 +4799,7 @@ static int cs5529_do_conversion(struct comedi_device *dev, if (data) { *data = ni_ao_win_inw(dev, NI67XX_CAL_DATA_REG); /* cs5529 returns 16 bit signed data in bipolar mode */ - *data ^= (1 << 15); + *data ^= BIT(15); } return 0; } @@ -6193,7 +6208,7 @@ static int ni_E_init(struct comedi_device *dev, s->subdev_flags = SDF_READABLE | SDF_DIFF | SDF_INTERNAL; /* one channel for each analog output channel */ s->n_chan = board->n_aochan; - s->maxdata = (1 << 16) - 1; + s->maxdata = BIT(16) - 1; s->range_table = &range_unknown; /* XXX */ s->insn_read = cs5529_ai_insn_read; s->insn_config = NULL; diff --git a/drivers/staging/comedi/drivers/ni_pcidio.c b/drivers/staging/comedi/drivers/ni_pcidio.c index 4bdef87d5dd7..8f3864799c19 100644 --- a/drivers/staging/comedi/drivers/ni_pcidio.c +++ b/drivers/staging/comedi/drivers/ni_pcidio.c @@ -310,7 +310,6 @@ static int ni_pcidio_request_di_mite_channel(struct comedi_device *dev) writeb(primary_DMAChannel_bits(devpriv->di_mite_chan->channel) | secondary_DMAChannel_bits(devpriv->di_mite_chan->channel), dev->mmio + DMA_LINE_CONTROL_GROUP1); - mmiowb(); spin_unlock_irqrestore(&devpriv->mite_channel_lock, flags); return 0; } @@ -327,7 +326,6 @@ static void ni_pcidio_release_di_mite_channel(struct comedi_device *dev) writeb(primary_DMAChannel_bits(0) | secondary_DMAChannel_bits(0), dev->mmio + DMA_LINE_CONTROL_GROUP1); - mmiowb(); } spin_unlock_irqrestore(&devpriv->mite_channel_lock, flags); } diff --git a/drivers/staging/comedi/drivers/ni_routing/tools/Makefile b/drivers/staging/comedi/drivers/ni_routing/tools/Makefile index 1966850584d2..6e92a06a44cb 100644 --- a/drivers/staging/comedi/drivers/ni_routing/tools/Makefile +++ b/drivers/staging/comedi/drivers/ni_routing/tools/Makefile @@ -1,3 +1,4 @@ +# SPDX-License-Identifier: GPL-2.0 # this make file is simply to help autogenerate these files: # ni_route_values.h # ni_device_routes.h diff --git a/drivers/staging/comedi/drivers/ni_tio.c b/drivers/staging/comedi/drivers/ni_tio.c index 048cb35723ad..b264db32a411 100644 --- a/drivers/staging/comedi/drivers/ni_tio.c +++ b/drivers/staging/comedi/drivers/ni_tio.c @@ -234,7 +234,6 @@ static void ni_tio_set_bits_transient(struct ni_gpct *counter, regs[reg] &= ~mask; regs[reg] |= (value & mask); ni_tio_write(counter, regs[reg] | transient, reg); - mmiowb(); spin_unlock_irqrestore(&counter_dev->regs_lock, flags); } } @@ -1682,9 +1681,11 @@ int ni_tio_insn_write(struct comedi_device *dev, unsigned int cidx = counter->counter_index; unsigned int chip = counter->chip_index; unsigned int load_reg; + unsigned int load_val; if (insn->n < 1) return 0; + load_val = data[insn->n - 1]; switch (channel) { case 0: /* @@ -1697,7 +1698,7 @@ int ni_tio_insn_write(struct comedi_device *dev, * load register is already selected. */ load_reg = ni_tio_next_load_register(counter); - ni_tio_write(counter, data[0], load_reg); + ni_tio_write(counter, load_val, load_reg); ni_tio_set_bits_transient(counter, NITIO_CMD_REG(cidx), 0, 0, GI_LOAD); /* restore load reg */ @@ -1705,17 +1706,17 @@ int ni_tio_insn_write(struct comedi_device *dev, load_reg); break; case 1: - counter_dev->regs[chip][NITIO_LOADA_REG(cidx)] = data[0]; - ni_tio_write(counter, data[0], NITIO_LOADA_REG(cidx)); + counter_dev->regs[chip][NITIO_LOADA_REG(cidx)] = load_val; + ni_tio_write(counter, load_val, NITIO_LOADA_REG(cidx)); break; case 2: - counter_dev->regs[chip][NITIO_LOADB_REG(cidx)] = data[0]; - ni_tio_write(counter, data[0], NITIO_LOADB_REG(cidx)); + counter_dev->regs[chip][NITIO_LOADB_REG(cidx)] = load_val; + ni_tio_write(counter, load_val, NITIO_LOADB_REG(cidx)); break; default: return -EINVAL; } - return 0; + return insn->n; } EXPORT_SYMBOL_GPL(ni_tio_insn_write); diff --git a/drivers/staging/comedi/drivers/ni_usb6501.c b/drivers/staging/comedi/drivers/ni_usb6501.c index 1bb1cb651349..360e86a19fe3 100644 --- a/drivers/staging/comedi/drivers/ni_usb6501.c +++ b/drivers/staging/comedi/drivers/ni_usb6501.c @@ -562,14 +562,12 @@ static void ni6501_detach(struct comedi_device *dev) if (!devpriv) return; - mutex_lock(&devpriv->mut); + mutex_destroy(&devpriv->mut); usb_set_intfdata(intf, NULL); kfree(devpriv->usb_rx_buf); kfree(devpriv->usb_tx_buf); - - mutex_unlock(&devpriv->mut); } static struct comedi_driver ni6501_driver = { diff --git a/drivers/staging/comedi/drivers/quatech_daqp_cs.c b/drivers/staging/comedi/drivers/quatech_daqp_cs.c index 257b0daff01f..6daaacf7a26a 100644 --- a/drivers/staging/comedi/drivers/quatech_daqp_cs.c +++ b/drivers/staging/comedi/drivers/quatech_daqp_cs.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0 /* * quatech_daqp_cs.c * Quatech DAQP PCMCIA data capture cards COMEDI client driver diff --git a/drivers/staging/comedi/drivers/s626.c b/drivers/staging/comedi/drivers/s626.c index f5af6f4069dc..39049d3c56d7 100644 --- a/drivers/staging/comedi/drivers/s626.c +++ b/drivers/staging/comedi/drivers/s626.c @@ -108,7 +108,6 @@ static void s626_mc_enable(struct comedi_device *dev, { unsigned int val = (cmd << 16) | cmd; - mmiowb(); writel(val, dev->mmio + reg); } @@ -116,7 +115,6 @@ static void s626_mc_disable(struct comedi_device *dev, unsigned int cmd, unsigned int reg) { writel(cmd << 16, dev->mmio + reg); - mmiowb(); } static bool s626_mc_test(struct comedi_device *dev, diff --git a/drivers/staging/comedi/drivers/tests/ni_routes_test.c b/drivers/staging/comedi/drivers/tests/ni_routes_test.c index c6dc18f346e8..f809051820ac 100644 --- a/drivers/staging/comedi/drivers/tests/ni_routes_test.c +++ b/drivers/staging/comedi/drivers/tests/ni_routes_test.c @@ -282,7 +282,7 @@ void test_ni_sort_device_routes(void) void test_ni_find_route_set(void) { - unittest(ni_find_route_set(bad_dest, &DR) == NULL, + unittest(!ni_find_route_set(bad_dest, &DR), "check for nonexistent route_set\n"); unittest(ni_find_route_set(dest0, &DR) == &DR.routes[0], "find first route_set\n"); diff --git a/drivers/staging/comedi/drivers/usbdux.c b/drivers/staging/comedi/drivers/usbdux.c index de177418190f..0350f303d557 100644 --- a/drivers/staging/comedi/drivers/usbdux.c +++ b/drivers/staging/comedi/drivers/usbdux.c @@ -1226,7 +1226,7 @@ static int usbdux_pwm_period(struct comedi_device *dev, unsigned int period) { struct usbdux_private *devpriv = dev->private; - int fx2delay = 255; + int fx2delay; if (period < MIN_PWM_PERIOD) return -EAGAIN; @@ -1691,6 +1691,8 @@ static void usbdux_detach(struct comedi_device *dev) usbdux_free_usb_buffers(dev); mutex_unlock(&devpriv->mut); + + mutex_destroy(&devpriv->mut); } static struct comedi_driver usbdux_driver = { diff --git a/drivers/staging/comedi/drivers/usbduxfast.c b/drivers/staging/comedi/drivers/usbduxfast.c index 0d54f394dbd2..04bc488385e6 100644 --- a/drivers/staging/comedi/drivers/usbduxfast.c +++ b/drivers/staging/comedi/drivers/usbduxfast.c @@ -993,6 +993,8 @@ static void usbduxfast_detach(struct comedi_device *dev) kfree(devpriv->duxbuf); mutex_unlock(&devpriv->mut); + + mutex_destroy(&devpriv->mut); } static struct comedi_driver usbduxfast_driver = { diff --git a/drivers/staging/comedi/drivers/usbduxsigma.c b/drivers/staging/comedi/drivers/usbduxsigma.c index af5605a875e2..3cc40d2544be 100644 --- a/drivers/staging/comedi/drivers/usbduxsigma.c +++ b/drivers/staging/comedi/drivers/usbduxsigma.c @@ -1577,6 +1577,8 @@ static void usbduxsigma_detach(struct comedi_device *dev) usbduxsigma_free_usb_buffers(dev); mutex_unlock(&devpriv->mut); + + mutex_destroy(&devpriv->mut); } static struct comedi_driver usbduxsigma_driver = { |