|
@@ -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;
|