summaryrefslogtreecommitdiff
path: root/drivers/mtd/nand/lpc32xx_slc.c
diff options
context:
space:
mode:
authorRoland Stigge <stigge@antcom.de>2012-08-16 17:15:34 +0400
committerDavid Woodhouse <David.Woodhouse@intel.com>2012-09-29 17:52:45 +0400
commitde20c22d2bf41f970a6300a89dd550f12121c126 (patch)
tree4a5639e2e07e1808698551573872498eaee443a0 /drivers/mtd/nand/lpc32xx_slc.c
parentaf69dcd3862ed174cf67637f4142c9c895862436 (diff)
downloadlinux-de20c22d2bf41f970a6300a89dd550f12121c126.tar.xz
mtd: lpc32xx_slc: Make driver independent of AMBA DMA engine driver
This patch makes the SLC NAND driver independent of the single AMBA DMA engine driver by using the platform data provided dma_filter callback. Signed-off-by: Roland Stigge <stigge@antcom.de> Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com> Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
Diffstat (limited to 'drivers/mtd/nand/lpc32xx_slc.c')
-rw-r--r--drivers/mtd/nand/lpc32xx_slc.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/drivers/mtd/nand/lpc32xx_slc.c b/drivers/mtd/nand/lpc32xx_slc.c
index c8c1d06b35ab..184035045208 100644
--- a/drivers/mtd/nand/lpc32xx_slc.c
+++ b/drivers/mtd/nand/lpc32xx_slc.c
@@ -37,7 +37,7 @@
#include <linux/of.h>
#include <linux/of_mtd.h>
#include <linux/of_gpio.h>
-#include <linux/amba/pl08x.h>
+#include <linux/mtd/lpc32xx_slc.h>
#define LPC32XX_MODNAME "lpc32xx-nand"
@@ -199,6 +199,7 @@ struct lpc32xx_nand_cfg_slc {
struct lpc32xx_nand_host {
struct nand_chip nand_chip;
+ struct lpc32xx_slc_platform_data *pdata;
struct clk *clk;
struct mtd_info mtd;
void __iomem *io_base;
@@ -719,9 +720,15 @@ static int lpc32xx_nand_dma_setup(struct lpc32xx_nand_host *host)
struct mtd_info *mtd = &host->mtd;
dma_cap_mask_t mask;
+ if (!host->pdata || !host->pdata->dma_filter) {
+ dev_err(mtd->dev.parent, "no DMA platform data\n");
+ return -ENOENT;
+ }
+
dma_cap_zero(mask);
dma_cap_set(DMA_SLAVE, mask);
- host->dma_chan = dma_request_channel(mask, pl08x_filter_id, "nand-slc");
+ host->dma_chan = dma_request_channel(mask, host->pdata->dma_filter,
+ "nand-slc");
if (!host->dma_chan) {
dev_err(mtd->dev.parent, "Failed to request DMA channel\n");
return -EBUSY;
@@ -819,6 +826,8 @@ static int __devinit lpc32xx_nand_probe(struct platform_device *pdev)
}
lpc32xx_wp_disable(host);
+ host->pdata = pdev->dev.platform_data;
+
mtd = &host->mtd;
chip = &host->nand_chip;
chip->priv = host;