Commit e8bb4673 authored by Marek Szyprowski's avatar Marek Szyprowski Committed by Vinod Koul

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: default avatarMarek Szyprowski <m.szyprowski@samsung.com>
Reviewed-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
Acked-by: default avatarArnd Bergmann <arnd@arndb.de>
For plat-samsung:
Acked-by: default avatarKrzysztof Kozlowski <krzk@kernel.org>
Signed-off-by: default avatarVinod Koul <vinod.koul@intel.com>
parent c1ae3cfa
...@@ -10,7 +10,6 @@ ...@@ -10,7 +10,6 @@
* published by the Free Software Foundation. * published by the Free Software Foundation.
*/ */
#include <linux/amba/pl330.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/types.h> #include <linux/types.h>
#include <linux/interrupt.h> #include <linux/interrupt.h>
......
...@@ -22,7 +22,6 @@ ...@@ -22,7 +22,6 @@
#include <linux/dma-mapping.h> #include <linux/dma-mapping.h>
#include <linux/dmaengine.h> #include <linux/dmaengine.h>
#include <linux/amba/bus.h> #include <linux/amba/bus.h>
#include <linux/amba/pl330.h>
#include <linux/scatterlist.h> #include <linux/scatterlist.h>
#include <linux/of.h> #include <linux/of.h>
#include <linux/of_dma.h> #include <linux/of_dma.h>
...@@ -2077,18 +2076,6 @@ static void pl330_tasklet(unsigned long data) ...@@ -2077,18 +2076,6 @@ static void pl330_tasklet(unsigned long data)
} }
} }
bool pl330_filter(struct dma_chan *chan, void *param)
{
u8 *peri_id;
if (chan->device->dev->driver != &pl330_driver.drv)
return false;
peri_id = chan->private;
return *peri_id == (unsigned long)param;
}
EXPORT_SYMBOL(pl330_filter);
static struct dma_chan *of_dma_pl330_xlate(struct of_phandle_args *dma_spec, static struct dma_chan *of_dma_pl330_xlate(struct of_phandle_args *dma_spec,
struct of_dma *ofdma) struct of_dma *ofdma)
{ {
...@@ -2833,7 +2820,6 @@ static SIMPLE_DEV_PM_OPS(pl330_pm, pl330_suspend, pl330_resume); ...@@ -2833,7 +2820,6 @@ static SIMPLE_DEV_PM_OPS(pl330_pm, pl330_suspend, pl330_resume);
static int static int
pl330_probe(struct amba_device *adev, const struct amba_id *id) pl330_probe(struct amba_device *adev, const struct amba_id *id)
{ {
struct dma_pl330_platdata *pdat;
struct pl330_config *pcfg; struct pl330_config *pcfg;
struct pl330_dmac *pl330; struct pl330_dmac *pl330;
struct dma_pl330_chan *pch, *_p; struct dma_pl330_chan *pch, *_p;
...@@ -2843,8 +2829,6 @@ pl330_probe(struct amba_device *adev, const struct amba_id *id) ...@@ -2843,8 +2829,6 @@ pl330_probe(struct amba_device *adev, const struct amba_id *id)
int num_chan; int num_chan;
struct device_node *np = adev->dev.of_node; struct device_node *np = adev->dev.of_node;
pdat = dev_get_platdata(&adev->dev);
ret = dma_set_mask_and_coherent(&adev->dev, DMA_BIT_MASK(32)); ret = dma_set_mask_and_coherent(&adev->dev, DMA_BIT_MASK(32));
if (ret) if (ret)
return ret; return ret;
...@@ -2857,7 +2841,7 @@ pl330_probe(struct amba_device *adev, const struct amba_id *id) ...@@ -2857,7 +2841,7 @@ pl330_probe(struct amba_device *adev, const struct amba_id *id)
pd = &pl330->ddma; pd = &pl330->ddma;
pd->dev = &adev->dev; pd->dev = &adev->dev;
pl330->mcbufsz = pdat ? pdat->mcbuf_sz : 0; pl330->mcbufsz = 0;
/* get quirk */ /* get quirk */
for (i = 0; i < ARRAY_SIZE(of_quirks); i++) 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,10 +2885,7 @@ pl330_probe(struct amba_device *adev, const struct amba_id *id)
INIT_LIST_HEAD(&pd->channels); INIT_LIST_HEAD(&pd->channels);
/* Initialize channel parameters */ /* Initialize channel parameters */
if (pdat) num_chan = max_t(int, pcfg->num_peri, pcfg->num_chan);
num_chan = max_t(int, pdat->nr_valid_peri, pcfg->num_chan);
else
num_chan = max_t(int, pcfg->num_peri, pcfg->num_chan);
pl330->num_peripherals = num_chan; pl330->num_peripherals = num_chan;
...@@ -2916,11 +2897,8 @@ pl330_probe(struct amba_device *adev, const struct amba_id *id) ...@@ -2916,11 +2897,8 @@ pl330_probe(struct amba_device *adev, const struct amba_id *id)
for (i = 0; i < num_chan; i++) { for (i = 0; i < num_chan; i++) {
pch = &pl330->peripherals[i]; pch = &pl330->peripherals[i];
if (!adev->dev.of_node)
pch->chan.private = pdat ? &pdat->peri_id[i] : NULL;
else
pch->chan.private = adev->dev.of_node;
pch->chan.private = adev->dev.of_node;
INIT_LIST_HEAD(&pch->submitted_list); INIT_LIST_HEAD(&pch->submitted_list);
INIT_LIST_HEAD(&pch->work_list); INIT_LIST_HEAD(&pch->work_list);
INIT_LIST_HEAD(&pch->completed_list); INIT_LIST_HEAD(&pch->completed_list);
...@@ -2933,15 +2911,11 @@ pl330_probe(struct amba_device *adev, const struct amba_id *id) ...@@ -2933,15 +2911,11 @@ pl330_probe(struct amba_device *adev, const struct amba_id *id)
list_add_tail(&pch->chan.device_node, &pd->channels); list_add_tail(&pch->chan.device_node, &pd->channels);
} }
if (pdat) { dma_cap_set(DMA_MEMCPY, pd->cap_mask);
pd->cap_mask = pdat->cap_mask; if (pcfg->num_peri) {
} else { dma_cap_set(DMA_SLAVE, pd->cap_mask);
dma_cap_set(DMA_MEMCPY, pd->cap_mask); dma_cap_set(DMA_CYCLIC, pd->cap_mask);
if (pcfg->num_peri) { dma_cap_set(DMA_PRIVATE, pd->cap_mask);
dma_cap_set(DMA_SLAVE, pd->cap_mask);
dma_cap_set(DMA_CYCLIC, pd->cap_mask);
dma_cap_set(DMA_PRIVATE, pd->cap_mask);
}
} }
pd->device_alloc_chan_resources = pl330_alloc_chan_resources; pd->device_alloc_chan_resources = pl330_alloc_chan_resources;
......
/* linux/include/linux/amba/pl330.h
*
* Copyright (C) 2010 Samsung Electronics Co. Ltd.
* Jaswinder Singh <jassi.brar@samsung.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*/
#ifndef __AMBA_PL330_H_
#define __AMBA_PL330_H_
#include <linux/dmaengine.h>
struct dma_pl330_platdata {
/*
* Number of valid peripherals connected to DMAC.
* This may be different from the value read from
* CR0, as the PL330 implementation might have 'holes'
* in the peri list or the peri could also be reached
* from another DMAC which the platform prefers.
*/
u8 nr_valid_peri;
/* Array of valid peripherals */
u8 *peri_id;
/* Operational capabilities */
dma_cap_mask_t cap_mask;
/* Bytes to allocate for MC buffer */
unsigned mcbuf_sz;
};
extern bool pl330_filter(struct dma_chan *chan, void *param);
#endif /* __AMBA_PL330_H_ */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment