Browse Source

[MTD] [NAND] Change NDFC driver to support 405 platforms too

This patch adds 405 platform support to the 440 NDFC driver. The new
AMCC 405EZ PPC is equipped with the same NDFC core as the 440EP(x)
and other will follow soon.

Signed-off-by: Stefan Roese <sr@denx.de>
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Stefan Roese 18 years ago
parent
commit
02d9291874
2 changed files with 10 additions and 2 deletions
  1. 2 2
      drivers/mtd/nand/Kconfig
  2. 8 0
      drivers/mtd/nand/ndfc.c

+ 2 - 2
drivers/mtd/nand/Kconfig

@@ -134,10 +134,10 @@ config MTD_NAND_S3C2410_HWECC
 
 
 config MTD_NAND_NDFC
 config MTD_NAND_NDFC
 	tristate "NDFC NanD Flash Controller"
 	tristate "NDFC NanD Flash Controller"
-	depends on 44x
+	depends on 4xx
 	select MTD_NAND_ECC_SMC
 	select MTD_NAND_ECC_SMC
 	help
 	help
-	 NDFC Nand Flash Controllers are integrated in EP44x SoCs
+	 NDFC Nand Flash Controllers are integrated in IBM/AMCC's 4xx SoCs
 
 
 config MTD_NAND_S3C2410_CLKSTOP
 config MTD_NAND_S3C2410_CLKSTOP
 	bool "S3C2410 NAND IDLE clock stop"
 	bool "S3C2410 NAND IDLE clock stop"

+ 8 - 0
drivers/mtd/nand/ndfc.c

@@ -24,7 +24,11 @@
 #include <linux/platform_device.h>
 #include <linux/platform_device.h>
 
 
 #include <asm/io.h>
 #include <asm/io.h>
+#ifdef CONFIG_40x
+#include <asm/ibm405.h>
+#else
 #include <asm/ibm44x.h>
 #include <asm/ibm44x.h>
+#endif
 
 
 struct ndfc_nand_mtd {
 struct ndfc_nand_mtd {
 	struct mtd_info			mtd;
 	struct mtd_info			mtd;
@@ -230,7 +234,11 @@ static int ndfc_nand_probe(struct platform_device *pdev)
 	struct ndfc_controller *ndfc = &ndfc_ctrl;
 	struct ndfc_controller *ndfc = &ndfc_ctrl;
 	unsigned long long phys = settings->ndfc_erpn | res->start;
 	unsigned long long phys = settings->ndfc_erpn | res->start;
 
 
+#ifndef CONFIG_PHYS_64BIT
+	ndfc->ndfcbase = ioremap((phys_addr_t)phys, res->end - res->start + 1);
+#else
 	ndfc->ndfcbase = ioremap64(phys, res->end - res->start + 1);
 	ndfc->ndfcbase = ioremap64(phys, res->end - res->start + 1);
+#endif
 	if (!ndfc->ndfcbase) {
 	if (!ndfc->ndfcbase) {
 		printk(KERN_ERR "NDFC: ioremap failed\n");
 		printk(KERN_ERR "NDFC: ioremap failed\n");
 		return -EIO;
 		return -EIO;