[PATCH] MTD: NAND: pxa3xx_nand: allow building as module
Mike Rapoport
mike at compulab.co.il
Mon Jan 19 06:27:11 EST 2009
Signed-off-by: Mike Rapoport <mike at compulab.co.il>
---
drivers/mtd/nand/Kconfig | 2 +-
drivers/mtd/nand/pxa3xx_nand.c | 10 ++++++++++
2 files changed, 11 insertions(+), 1 deletions(-)
diff --git a/drivers/mtd/nand/Kconfig b/drivers/mtd/nand/Kconfig
index 8b12e6e..d3966d0 100644
--- a/drivers/mtd/nand/Kconfig
+++ b/drivers/mtd/nand/Kconfig
@@ -334,7 +334,7 @@ config MTD_NAND_ATMEL_ECC_NONE
endchoice
config MTD_NAND_PXA3xx
- bool "Support for NAND flash devices on PXA3xx"
+ tristate "Support for NAND flash devices on PXA3xx"
depends on MTD_NAND && PXA3xx
help
This enables the driver for the NAND flash device found on
diff --git a/drivers/mtd/nand/pxa3xx_nand.c b/drivers/mtd/nand/pxa3xx_nand.c
index cc55cbc..628ba08 100644
--- a/drivers/mtd/nand/pxa3xx_nand.c
+++ b/drivers/mtd/nand/pxa3xx_nand.c
@@ -123,6 +123,7 @@ struct pxa3xx_nand_info {
struct clk *clk;
void __iomem *mmio_base;
+ struct resource *res;
unsigned int buf_start;
unsigned int buf_count;
@@ -1079,6 +1080,7 @@ static int pxa3xx_nand_probe(struct platform_device *pdev)
this = &info->nand_chip;
mtd->priv = info;
+ mtd->owner = THIS_MODULE;
info->clk = clk_get(&pdev->dev, NULL);
if (IS_ERR(info->clk)) {
@@ -1125,6 +1127,7 @@ static int pxa3xx_nand_probe(struct platform_device *pdev)
goto fail_put_clk;
}
+ info->res = r;
info->mmio_base = ioremap(r->start, r->end - r->start + 1);
if (info->mmio_base == NULL) {
dev_err(&pdev->dev, "ioremap() failed\n");
@@ -1199,6 +1202,13 @@ static int pxa3xx_nand_remove(struct platform_device *pdev)
info->data_buff, info->data_buff_phys);
} else
kfree(info->data_buff);
+
+ iounmap(info->mmio_base);
+ release_mem_region(info->res->start, info->res->end - info->res->start + 1);
+
+ clk_disable(info->clk);
+ clk_put(info->clk);
+
kfree(mtd);
return 0;
}
--
1.5.6.4
More information about the linux-mtd
mailing list