aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/dma/bcm2835-dma.c10
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
43struct bcm2835_dmadev { 43struct 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
65struct bcm2835_chan { 64struct 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,
777static int bcm2835_dma_terminate_all(struct dma_chan *chan) 775static 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