diff options
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/dma/bcm2835-dma.c | 10 |
1 files changed, 0 insertions, 10 deletions
diff --git a/drivers/dma/bcm2835-dma.c b/drivers/dma/bcm2835-dma.c index 6d66e233a191..138bda32b266 100644 --- a/drivers/dma/bcm2835-dma.c +++ b/drivers/dma/bcm2835-dma.c | |||
| @@ -42,7 +42,6 @@ | |||
| 42 | 42 | ||
| 43 | struct bcm2835_dmadev { | 43 | struct bcm2835_dmadev { |
| 44 | struct dma_device ddev; | 44 | struct dma_device ddev; |
| 45 | spinlock_t lock; | ||
| 46 | void __iomem *base; | 45 | void __iomem *base; |
| 47 | struct device_dma_parameters dma_parms; | 46 | struct device_dma_parameters dma_parms; |
| 48 | }; | 47 | }; |
| @@ -64,7 +63,6 @@ struct bcm2835_cb_entry { | |||
| 64 | 63 | ||
| 65 | struct bcm2835_chan { | 64 | struct bcm2835_chan { |
| 66 | struct virt_dma_chan vc; | 65 | struct virt_dma_chan vc; |
| 67 | struct list_head node; | ||
| 68 | 66 | ||
| 69 | struct dma_slave_config cfg; | 67 | struct dma_slave_config cfg; |
| 70 | unsigned int dreq; | 68 | unsigned int dreq; |
| @@ -777,17 +775,11 @@ static int bcm2835_dma_slave_config(struct dma_chan *chan, | |||
| 777 | static int bcm2835_dma_terminate_all(struct dma_chan *chan) | 775 | static int bcm2835_dma_terminate_all(struct dma_chan *chan) |
| 778 | { | 776 | { |
| 779 | struct bcm2835_chan *c = to_bcm2835_dma_chan(chan); | 777 | struct bcm2835_chan *c = to_bcm2835_dma_chan(chan); |
| 780 | struct bcm2835_dmadev *d = to_bcm2835_dma_dev(c->vc.chan.device); | ||
| 781 | unsigned long flags; | 778 | unsigned long flags; |
| 782 | LIST_HEAD(head); | 779 | LIST_HEAD(head); |
| 783 | 780 | ||
| 784 | spin_lock_irqsave(&c->vc.lock, flags); | 781 | spin_lock_irqsave(&c->vc.lock, flags); |
| 785 | 782 | ||
| 786 | /* Prevent this channel being scheduled */ | ||
| 787 | spin_lock(&d->lock); | ||
| 788 | list_del_init(&c->node); | ||
| 789 | spin_unlock(&d->lock); | ||
| 790 | |||
| 791 | /* stop DMA activity */ | 783 | /* stop DMA activity */ |
| 792 | if (c->desc) { | 784 | if (c->desc) { |
| 793 | vchan_terminate_vdesc(&c->desc->vd); | 785 | vchan_terminate_vdesc(&c->desc->vd); |
| @@ -820,7 +812,6 @@ static int bcm2835_dma_chan_init(struct bcm2835_dmadev *d, int chan_id, | |||
| 820 | 812 | ||
| 821 | c->vc.desc_free = bcm2835_dma_desc_free; | 813 | c->vc.desc_free = bcm2835_dma_desc_free; |
| 822 | vchan_init(&c->vc, &d->ddev); | 814 | vchan_init(&c->vc, &d->ddev); |
| 823 | INIT_LIST_HEAD(&c->node); | ||
| 824 | 815 | ||
| 825 | c->chan_base = BCM2835_DMA_CHANIO(d->base, chan_id); | 816 | c->chan_base = BCM2835_DMA_CHANIO(d->base, chan_id); |
| 826 | c->ch = chan_id; | 817 | c->ch = chan_id; |
| @@ -923,7 +914,6 @@ static int bcm2835_dma_probe(struct platform_device *pdev) | |||
| 923 | od->ddev.residue_granularity = DMA_RESIDUE_GRANULARITY_BURST; | 914 | od->ddev.residue_granularity = DMA_RESIDUE_GRANULARITY_BURST; |
| 924 | od->ddev.dev = &pdev->dev; | 915 | od->ddev.dev = &pdev->dev; |
| 925 | INIT_LIST_HEAD(&od->ddev.channels); | 916 | INIT_LIST_HEAD(&od->ddev.channels); |
| 926 | spin_lock_init(&od->lock); | ||
| 927 | 917 | ||
| 928 | platform_set_drvdata(pdev, od); | 918 | platform_set_drvdata(pdev, od); |
| 929 | 919 | ||
