summaryrefslogtreecommitdiffstats
path: root/drivers/dma/pl330.c
diff options
context:
space:
mode:
authorMarek Szyprowski <m.szyprowski@samsung.com>2017-03-27 01:31:03 -0400
committerVinod Koul <vinod.koul@intel.com>2017-03-28 12:07:48 -0400
commite8bb4673596ea28fab287dbc417e8100d798cd40 (patch)
treed7eb031883d61b44e105a13ea51a5b95dcc06617 /drivers/dma/pl330.c
parentc1ae3cfa0e89fa1a7ecc4c99031f5e9ae99d9201 (diff)
dmaengine: pl330: remove pdata based initialization
This driver is now used only on platforms which support device tree, so it is safe to remove legacy platform data based initialization code. Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com> Reviewed-by: Ulf Hansson <ulf.hansson@linaro.org> Acked-by: Arnd Bergmann <arnd@arndb.de> For plat-samsung: Acked-by: Krzysztof Kozlowski <krzk@kernel.org> Signed-off-by: Vinod Koul <vinod.koul@intel.com>
Diffstat (limited to 'drivers/dma/pl330.c')
-rw-r--r--drivers/dma/pl330.c42
1 files changed, 8 insertions, 34 deletions
diff --git a/drivers/dma/pl330.c b/drivers/dma/pl330.c
index f37f4978dabb..8b0da7fa520d 100644
--- a/drivers/dma/pl330.c
+++ b/drivers/dma/pl330.c
@@ -22,7 +22,6 @@
22#include <linux/dma-mapping.h> 22#include <linux/dma-mapping.h>
23#include <linux/dmaengine.h> 23#include <linux/dmaengine.h>
24#include <linux/amba/bus.h> 24#include <linux/amba/bus.h>
25#include <linux/amba/pl330.h>
26#include <linux/scatterlist.h> 25#include <linux/scatterlist.h>
27#include <linux/of.h> 26#include <linux/of.h>
28#include <linux/of_dma.h> 27#include <linux/of_dma.h>
@@ -2077,18 +2076,6 @@ static void pl330_tasklet(unsigned long data)
2077 } 2076 }
2078} 2077}
2079 2078
2080bool pl330_filter(struct dma_chan *chan, void *param)
2081{
2082 u8 *peri_id;
2083
2084 if (chan->device->dev->driver != &pl330_driver.drv)
2085 return false;
2086
2087 peri_id = chan->private;
2088 return *peri_id == (unsigned long)param;
2089}
2090EXPORT_SYMBOL(pl330_filter);
2091
2092static struct dma_chan *of_dma_pl330_xlate(struct of_phandle_args *dma_spec, 2079static struct dma_chan *of_dma_pl330_xlate(struct of_phandle_args *dma_spec,
2093 struct of_dma *ofdma) 2080 struct of_dma *ofdma)
2094{ 2081{
@@ -2833,7 +2820,6 @@ static SIMPLE_DEV_PM_OPS(pl330_pm, pl330_suspend, pl330_resume);
2833static int 2820static int
2834pl330_probe(struct amba_device *adev, const struct amba_id *id) 2821pl330_probe(struct amba_device *adev, const struct amba_id *id)
2835{ 2822{
2836 struct dma_pl330_platdata *pdat;
2837 struct pl330_config *pcfg; 2823 struct pl330_config *pcfg;
2838 struct pl330_dmac *pl330; 2824 struct pl330_dmac *pl330;
2839 struct dma_pl330_chan *pch, *_p; 2825 struct dma_pl330_chan *pch, *_p;
@@ -2843,8 +2829,6 @@ pl330_probe(struct amba_device *adev, const struct amba_id *id)
2843 int num_chan; 2829 int num_chan;
2844 struct device_node *np = adev->dev.of_node; 2830 struct device_node *np = adev->dev.of_node;
2845 2831
2846 pdat = dev_get_platdata(&adev->dev);
2847
2848 ret = dma_set_mask_and_coherent(&adev->dev, DMA_BIT_MASK(32)); 2832 ret = dma_set_mask_and_coherent(&adev->dev, DMA_BIT_MASK(32));
2849 if (ret) 2833 if (ret)
2850 return ret; 2834 return ret;
@@ -2857,7 +2841,7 @@ pl330_probe(struct amba_device *adev, const struct amba_id *id)
2857 pd = &pl330->ddma; 2841 pd = &pl330->ddma;
2858 pd->dev = &adev->dev; 2842 pd->dev = &adev->dev;
2859 2843
2860 pl330->mcbufsz = pdat ? pdat->mcbuf_sz : 0; 2844 pl330->mcbufsz = 0;
2861 2845
2862 /* get quirk */ 2846 /* get quirk */
2863 for (i = 0; i < ARRAY_SIZE(of_quirks); i++) 2847 for (i = 0; i < ARRAY_SIZE(of_quirks); i++)
@@ -2901,10 +2885,7 @@ pl330_probe(struct amba_device *adev, const struct amba_id *id)
2901 INIT_LIST_HEAD(&pd->channels); 2885 INIT_LIST_HEAD(&pd->channels);
2902 2886
2903 /* Initialize channel parameters */ 2887 /* Initialize channel parameters */
2904 if (pdat) 2888 num_chan = max_t(int, pcfg->num_peri, pcfg->num_chan);
2905 num_chan = max_t(int, pdat->nr_valid_peri, pcfg->num_chan);
2906 else
2907 num_chan = max_t(int, pcfg->num_peri, pcfg->num_chan);
2908 2889
2909 pl330->num_peripherals = num_chan; 2890 pl330->num_peripherals = num_chan;
2910 2891
@@ -2916,11 +2897,8 @@ pl330_probe(struct amba_device *adev, const struct amba_id *id)
2916 2897
2917 for (i = 0; i < num_chan; i++) { 2898 for (i = 0; i < num_chan; i++) {
2918 pch = &pl330->peripherals[i]; 2899 pch = &pl330->peripherals[i];
2919 if (!adev->dev.of_node)
2920 pch->chan.private = pdat ? &pdat->peri_id[i] : NULL;
2921 else
2922 pch->chan.private = adev->dev.of_node;
2923 2900
2901 pch->chan.private = adev->dev.of_node;
2924 INIT_LIST_HEAD(&pch->submitted_list); 2902 INIT_LIST_HEAD(&pch->submitted_list);
2925 INIT_LIST_HEAD(&pch->work_list); 2903 INIT_LIST_HEAD(&pch->work_list);
2926 INIT_LIST_HEAD(&pch->completed_list); 2904 INIT_LIST_HEAD(&pch->completed_list);
@@ -2933,15 +2911,11 @@ pl330_probe(struct amba_device *adev, const struct amba_id *id)
2933 list_add_tail(&pch->chan.device_node, &pd->channels); 2911 list_add_tail(&pch->chan.device_node, &pd->channels);
2934 } 2912 }
2935 2913
2936 if (pdat) { 2914 dma_cap_set(DMA_MEMCPY, pd->cap_mask);
2937 pd->cap_mask = pdat->cap_mask; 2915 if (pcfg->num_peri) {
2938 } else { 2916 dma_cap_set(DMA_SLAVE, pd->cap_mask);
2939 dma_cap_set(DMA_MEMCPY, pd->cap_mask); 2917 dma_cap_set(DMA_CYCLIC, pd->cap_mask);
2940 if (pcfg->num_peri) { 2918 dma_cap_set(DMA_PRIVATE, pd->cap_mask);
2941 dma_cap_set(DMA_SLAVE, pd->cap_mask);
2942 dma_cap_set(DMA_CYCLIC, pd->cap_mask);
2943 dma_cap_set(DMA_PRIVATE, pd->cap_mask);
2944 }
2945 } 2919 }
2946 2920
2947 pd->device_alloc_chan_resources = pl330_alloc_chan_resources; 2921 pd->device_alloc_chan_resources = pl330_alloc_chan_resources;