Re: [PATCH 5/5] dmaengine: bcm2835: Remove dead code

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 22-12-18, 08:28, Lukas Wunner wrote:
> The BCM2835 DMA driver deletes a channel from a list upon termination
> without having added it to a list first.  Moreover that operation is
> protected by a spinlock which isn't taken anywhere else.  These appear
> to be remnants of an older version of the driver which accidentally
> got mainlined.  Remove the dead code.
> 
> While at it remove an outdated comment claiming the driver only supports

Ditto, whenever you use also, while at it... think if this is a
candidate for splitting up.

A patch should do one thing only..

> cyclic transactions.  The driver has been supporting other transaction
> types for more than two years.
> 
> Signed-off-by: Lukas Wunner <lukas@xxxxxxxxx>
> Cc: Frank Pavlic <f.pavlic@xxxxxxxxx>
> Cc: Martin Sperl <kernel@xxxxxxxxxxxxxxxx>
> Cc: Florian Meier <florian.meier@xxxxxxxx>
> ---
>  drivers/dma/bcm2835-dma.c | 13 -------------
>  1 file changed, 13 deletions(-)
> 
> diff --git a/drivers/dma/bcm2835-dma.c b/drivers/dma/bcm2835-dma.c
> index e424e232a3d0..633be2ee7f33 100644
> --- a/drivers/dma/bcm2835-dma.c
> +++ b/drivers/dma/bcm2835-dma.c
> @@ -2,9 +2,6 @@
>  /*
>   * BCM2835 DMA engine support
>   *
> - * This driver only supports cyclic DMA transfers
> - * as needed for the I2S module.
> - *
>   * Author:      Florian Meier <florian.meier@xxxxxxxx>
>   *              Copyright 2013
>   *
> @@ -42,7 +39,6 @@
>  
>  struct bcm2835_dmadev {
>  	struct dma_device ddev;
> -	spinlock_t lock;
>  	void __iomem *base;
>  	struct device_dma_parameters dma_parms;
>  };
> @@ -64,7 +60,6 @@ struct bcm2835_cb_entry {
>  
>  struct bcm2835_chan {
>  	struct virt_dma_chan vc;
> -	struct list_head node;
>  
>  	struct dma_slave_config	cfg;
>  	unsigned int dreq;
> @@ -772,17 +767,11 @@ static int bcm2835_dma_slave_config(struct dma_chan *chan,
>  static int bcm2835_dma_terminate_all(struct dma_chan *chan)
>  {
>  	struct bcm2835_chan *c = to_bcm2835_dma_chan(chan);
> -	struct bcm2835_dmadev *d = to_bcm2835_dma_dev(c->vc.chan.device);
>  	unsigned long flags;
>  	LIST_HEAD(head);
>  
>  	spin_lock_irqsave(&c->vc.lock, flags);
>  
> -	/* Prevent this channel being scheduled */
> -	spin_lock(&d->lock);
> -	list_del_init(&c->node);
> -	spin_unlock(&d->lock);
> -
>  	/* stop DMA activity */
>  	if (c->desc) {
>  		vchan_terminate_vdesc(&c->desc->vd);
> @@ -815,7 +804,6 @@ static int bcm2835_dma_chan_init(struct bcm2835_dmadev *d, int chan_id,
>  
>  	c->vc.desc_free = bcm2835_dma_desc_free;
>  	vchan_init(&c->vc, &d->ddev);
> -	INIT_LIST_HEAD(&c->node);
>  
>  	c->chan_base = BCM2835_DMA_CHANIO(d->base, chan_id);
>  	c->ch = chan_id;
> @@ -918,7 +906,6 @@ static int bcm2835_dma_probe(struct platform_device *pdev)
>  	od->ddev.residue_granularity = DMA_RESIDUE_GRANULARITY_BURST;
>  	od->ddev.dev = &pdev->dev;
>  	INIT_LIST_HEAD(&od->ddev.channels);
> -	spin_lock_init(&od->lock);
>  
>  	platform_set_drvdata(pdev, od);
>  
> -- 
> 2.19.2

-- 
~Vinod



[Index of Archives]     [Linux Kernel]     [Linux ARM (vger)]     [Linux ARM MSM]     [Linux Omap]     [Linux Arm]     [Linux Tegra]     [Fedora ARM]     [Linux for Samsung SOC]     [eCos]     [Linux PCI]     [Linux Fastboot]     [Gcc Help]     [Git]     [DCCP]     [IETF Announce]     [Security]     [Linux MIPS]     [Yosemite Campsites]

  Powered by Linux