From: H Hartley Sweeten Date: Tue, 22 Mar 2016 18:10:51 +0000 (-0700) Subject: staging: comedi: ni_660x: remove spinlock 'dma_cfg_lock' X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=80c67b37fc27a3fc0542916798242e4af8148f28;p=linux-beck.git staging: comedi: ni_660x: remove spinlock 'dma_cfg_lock' This spinlock is only used to protect changes to the private data 'dma_cfg'. Before calling any function that would change the 'dma_cfg' the spinlock 'mite_channel_lock' is also locked. That spinlock is not unlocked until after the 'dma_cfg' change. Remove the redundant spinlock. Signed-off-by: H Hartley Sweeten Reviewed-by: Ian Abbott Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/staging/comedi/drivers/ni_660x.c b/drivers/staging/comedi/drivers/ni_660x.c index 85c793a458f8..3b57ce59273e 100644 --- a/drivers/staging/comedi/drivers/ni_660x.c +++ b/drivers/staging/comedi/drivers/ni_660x.c @@ -263,8 +263,6 @@ struct ni_660x_private { spinlock_t mite_channel_lock; /* prevents races between interrupt and comedi_poll */ spinlock_t interrupt_lock; - /* protects dma_cfg changes */ - spinlock_t dma_cfg_lock; unsigned int dma_cfg[NI660X_MAX_CHIPS]; unsigned int io_cfg[NI660X_NUM_PFI_CHANNELS]; u64 io_dir; @@ -313,9 +311,7 @@ static inline void ni_660x_set_dma_channel(struct comedi_device *dev, { struct ni_660x_private *devpriv = dev->private; unsigned int chip = counter->chip_index; - unsigned long flags; - spin_lock_irqsave(&devpriv->dma_cfg_lock, flags); devpriv->dma_cfg[chip] &= ~NI660X_DMA_CFG_SEL_MASK(mite_channel); devpriv->dma_cfg[chip] |= NI660X_DMA_CFG_SEL(mite_channel, counter->counter_index); @@ -323,7 +319,6 @@ static inline void ni_660x_set_dma_channel(struct comedi_device *dev, NI660X_DMA_CFG_RESET(mite_channel), NI660X_DMA_CFG); mmiowb(); - spin_unlock_irqrestore(&devpriv->dma_cfg_lock, flags); } static inline void ni_660x_unset_dma_channel(struct comedi_device *dev, @@ -332,14 +327,11 @@ static inline void ni_660x_unset_dma_channel(struct comedi_device *dev, { struct ni_660x_private *devpriv = dev->private; unsigned int chip = counter->chip_index; - unsigned long flags; - spin_lock_irqsave(&devpriv->dma_cfg_lock, flags); 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(); - spin_unlock_irqrestore(&devpriv->dma_cfg_lock, flags); } static int ni_660x_request_mite_channel(struct comedi_device *dev, @@ -500,7 +492,6 @@ static int ni_660x_allocate_private(struct comedi_device *dev) spin_lock_init(&devpriv->mite_channel_lock); spin_lock_init(&devpriv->interrupt_lock); - spin_lock_init(&devpriv->dma_cfg_lock); for (i = 0; i < NI660X_NUM_PFI_CHANNELS; ++i) devpriv->io_cfg[i] = NI_660X_PFI_OUTPUT_COUNTER;